Skip to content

Commit c07ab0e

Browse files
committed
feat(compat): 添加了MythicMobs的O-RANGE目标选择器
refactor(api): 将API接口中的函数参数从Kotlin函数类型改为Java Function类型 chore(deps): 更新Nodens和RedisChannel依赖至最新版本 chore(version): 将项目版本更新至1.24.58 refactor(utils): 将`Vector.direction`函数的可见性从private改为internal
1 parent 5de1886 commit c07ab0e

File tree

11 files changed

+72
-14
lines changed

11 files changed

+72
-14
lines changed

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ dependencies {
8888
compileOnly("ink.ptms.core:v11200:11200")
8989
compileOnly("ink.ptms:nms-all:1.0.0")
9090

91-
compileOnly("org.gitee.nodens:Nodens:1.10.14:api")
92-
compileOnly("com.gitee.redischannel:RedisChannel:1.10.6:api")
91+
compileOnly("org.gitee.nodens:Nodens:latest.release:api")
92+
compileOnly("com.gitee.redischannel:RedisChannel:latest.release:api")
9393
compileOnly("ink.ptms.adyeshach:plugin:2.0.26:api")
9494
compileOnly("com.github.retrooper:packetevents-spigot:2.7.0")
9595
compileOnly("org.eldergod.ext:DragonCore:2.6.2.9")

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
group = org.gitee.orryx
2-
version = 1.23.58
2+
version = 1.24.58
33
org.gradle.jvmargs=-Dfile.encoding=UTF-8

src/main/kotlin/org/gitee/orryx/api/JobAPI.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,19 @@ import taboolib.common.LifeCycle
1111
import taboolib.common.platform.Awake
1212
import taboolib.common.platform.PlatformFactory
1313
import java.util.concurrent.CompletableFuture
14+
import java.util.function.Function
1415

1516
class JobAPI: IJobAPI {
1617

17-
override fun <T> modifyJob(player: Player, job: String?, function: (job: IPlayerJob) -> T): CompletableFuture<T?> {
18+
override fun <T> modifyJob(player: Player, job: String?, function: Function<IPlayerJob, T>): CompletableFuture<T?> {
1819
return player.orryxProfile { profile ->
19-
job?.let { player.job(profile.id, it, function) } ?: player.job(function)
20+
job?.let {
21+
player.job(profile.id, it) { job ->
22+
function.apply(job)
23+
}
24+
} ?: player.job { job ->
25+
function.apply(job)
26+
}
2027
}
2128
}
2229

src/main/kotlin/org/gitee/orryx/api/ProfileAPI.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ import java.util.function.Function
2424

2525
class ProfileAPI: IProfileAPI {
2626

27-
override fun <T> modifyProfile(player: Player, function: (skill: IPlayerProfile) -> T): CompletableFuture<T?> {
28-
return player.orryxProfileTo(function)
27+
override fun <T> modifyProfile(player: Player, function: Function<IPlayerProfile, T>): CompletableFuture<T?> {
28+
return player.orryxProfileTo {
29+
function.apply(it)
30+
}
2931
}
3032

3133
override fun isSuperBody(player: Player): Boolean {

src/main/kotlin/org/gitee/orryx/api/SkillAPI.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,23 @@ import taboolib.common.LifeCycle
1313
import taboolib.common.platform.Awake
1414
import taboolib.common.platform.PlatformFactory
1515
import java.util.concurrent.CompletableFuture
16+
import java.util.function.Function
1617

1718
class SkillAPI: ISkillAPI {
1819

1920
override fun <T> modifySkill(
2021
player: Player,
2122
skill: String,
2223
job: IPlayerJob?,
23-
function: (skill: IPlayerSkill) -> T
24+
function: Function<IPlayerSkill, T>
2425
): CompletableFuture<T?> {
2526
return job?.let {
26-
player.skill(it, skill, false, function)
27-
} ?: player.skill(skill, false, function)
27+
player.skill(it, skill, false) { skill ->
28+
function.apply(skill)
29+
}
30+
} ?: player.skill(skill, false) {
31+
function.apply(it)
32+
}
2833
}
2934

3035
override fun castSkill(player: Player, skill: String, level: Int) {

src/main/kotlin/org/gitee/orryx/api/interfaces/IJobAPI.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import org.bukkit.entity.Player
44
import org.gitee.orryx.core.job.IJob
55
import org.gitee.orryx.core.job.IPlayerJob
66
import java.util.concurrent.CompletableFuture
7+
import java.util.function.Function
78

89
interface IJobAPI {
910

@@ -15,7 +16,7 @@ interface IJobAPI {
1516
* @param function 获取到职业后执行
1617
* @return [function]的返回值
1718
* */
18-
fun <T> modifyJob(player: Player, job: String? = null, function: (job: IPlayerJob) -> T) : CompletableFuture<T?>
19+
fun <T> modifyJob(player: Player, job: String? = null, function: Function<IPlayerJob, T>) : CompletableFuture<T?>
1920

2021
fun getJob(job: String): IJob?
2122
}

src/main/kotlin/org/gitee/orryx/api/interfaces/IProfileAPI.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.gitee.orryx.api.interfaces
33
import org.bukkit.entity.Player
44
import org.gitee.orryx.api.events.damage.DamageType
55
import org.gitee.orryx.api.events.damage.OrryxDamageEvents
6+
import org.gitee.orryx.core.job.IPlayerJob
67
import org.gitee.orryx.core.profile.IPlayerProfile
78
import java.util.concurrent.CompletableFuture
89
import java.util.function.Consumer
@@ -17,7 +18,7 @@ interface IProfileAPI {
1718
* @param function 获取到玩家信息后执行
1819
* @return [function]的返回值
1920
* */
20-
fun <T> modifyProfile(player: Player, function: (skill: IPlayerProfile) -> T) : CompletableFuture<T?>
21+
fun <T> modifyProfile(player: Player, function: Function<IPlayerProfile, T>) : CompletableFuture<T?>
2122

2223
/**
2324
* 是否在霸体状态

src/main/kotlin/org/gitee/orryx/api/interfaces/ISkillAPI.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ package org.gitee.orryx.api.interfaces
22

33
import org.bukkit.entity.Player
44
import org.gitee.orryx.core.job.IPlayerJob
5+
import org.gitee.orryx.core.profile.IPlayerProfile
56
import org.gitee.orryx.core.skill.CastResult
67
import org.gitee.orryx.core.skill.IPlayerSkill
78
import org.gitee.orryx.core.skill.ISkill
89
import java.util.concurrent.CompletableFuture
10+
import java.util.function.Function
911

1012
interface ISkillAPI {
1113

@@ -18,7 +20,7 @@ interface ISkillAPI {
1820
* @param function 获取到职业后执行
1921
* @return [function]的返回值
2022
* */
21-
fun <T> modifySkill(player: Player, skill: String, job: IPlayerJob? = null, function: (skill: IPlayerSkill) -> T) : CompletableFuture<T?>
23+
fun <T> modifySkill(player: Player, skill: String, job: IPlayerJob? = null, function: Function<IPlayerSkill, T>) : CompletableFuture<T?>
2224

2325
fun castSkill(player: Player, skill: String, level: Int)
2426

src/main/kotlin/org/gitee/orryx/compat/mythicmobs/MechanicRegister.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import org.gitee.orryx.compat.mythicmobs.condition.MythicMobsJobCondition
88
import org.gitee.orryx.compat.mythicmobs.condition.MythicMobsLevelCondition
99
import org.gitee.orryx.compat.mythicmobs.condition.MythicMobsManaCondition
1010
import org.gitee.orryx.compat.mythicmobs.mechanic.MythicMobsCastMechanic
11+
import org.gitee.orryx.compat.mythicmobs.targeter.MythicMobsOrryxRangeTargeter
1112
import org.gitee.orryx.compat.mythicmobs.targeter.MythicMobsSelectorEntityTargeter
1213
import org.gitee.orryx.compat.mythicmobs.targeter.MythicMobsSelectorLocationTargeter
1314
import taboolib.common.platform.Ghost
@@ -40,6 +41,7 @@ object MechanicRegister {
4041
when (event.targeterName.uppercase()) {
4142
"O-SELECTORL" -> { event.register(MythicMobsSelectorLocationTargeter(event.config)) }
4243
"O-SELECTORE" -> { event.register(MythicMobsSelectorEntityTargeter(event.config)) }
44+
"O-RANGE" -> { event.register(MythicMobsOrryxRangeTargeter(event.config)) }
4345
}
4446
}
4547
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.gitee.orryx.compat.mythicmobs.targeter
2+
3+
import io.lumine.xikage.mythicmobs.MythicMobs
4+
import io.lumine.xikage.mythicmobs.adapters.AbstractEntity
5+
import io.lumine.xikage.mythicmobs.io.MythicLineConfig
6+
import io.lumine.xikage.mythicmobs.skills.SkillMetadata
7+
import io.lumine.xikage.mythicmobs.skills.targeters.IEntitySelector
8+
import org.gitee.orryx.utils.direction
9+
import taboolib.common.platform.Ghost
10+
11+
@Ghost
12+
class MythicMobsOrryxRangeTargeter(mlc: MythicLineConfig): IEntitySelector(mlc) {
13+
14+
private val radius = mlc.getDouble(arrayOf("radius", "r"), 1.0)
15+
private val offsetX = mlc.getDouble(arrayOf("offsetx", "ox"), 0.0)
16+
private val offsetY = mlc.getDouble(arrayOf("offsety", "oy"), 0.0)
17+
private val offsetZ = mlc.getDouble(arrayOf("offsetz", "oz"), 0.0)
18+
19+
override fun getEntities(data: SkillMetadata): HashSet<AbstractEntity?> {
20+
val am = data.caster
21+
val targets = HashSet<AbstractEntity?>()
22+
23+
val vector = am.entity.bukkitEntity.location.direction.direction(offsetX, offsetY, offsetZ, false)
24+
val newCenter = am.entity.bukkitEntity.location.clone().add(vector)
25+
26+
val radiusSq: Double = radius * radius
27+
for (p in MythicMobs.inst().entityManager.getPlayers(am.entity.world)) {
28+
if (p.world != am.entity.world) {
29+
continue
30+
}
31+
if (newCenter.distanceSquared(p.bukkitEntity.location) >= radiusSq) {
32+
continue
33+
}
34+
targets.add(p)
35+
}
36+
return targets
37+
}
38+
}

0 commit comments

Comments
 (0)