Misc code fixes in enforcer code

This commit is contained in:
DBotThePony 2025-03-17 23:39:27 +07:00
parent a9851e08b3
commit 62c05b3c3f
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -56,6 +56,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
.add(Attributes.KNOCKBACK_RESISTANCE, 1.0) .add(Attributes.KNOCKBACK_RESISTANCE, 1.0)
.add(Attributes.FOLLOW_RANGE, 32.0) .add(Attributes.FOLLOW_RANGE, 32.0)
} }
private val IS_CHARGING: EntityDataAccessor<Boolean> = private val IS_CHARGING: EntityDataAccessor<Boolean> =
SynchedEntityData.defineId(Enforcer::class.java, EntityDataSerializers.BOOLEAN) SynchedEntityData.defineId(Enforcer::class.java, EntityDataSerializers.BOOLEAN)
} }
@ -65,14 +66,12 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
builder.define(IS_CHARGING, false) builder.define(IS_CHARGING, false)
} }
fun setCharging(value: Boolean) { var isCharging: Boolean
get() = entityData.get(IS_CHARGING)
set(value) {
entityData.set(IS_CHARGING, value) entityData.set(IS_CHARGING, value)
} }
fun isCharging(): Boolean {
return entityData.get(IS_CHARGING)
}
override fun registerGoals() { override fun registerGoals() {
goalSelector.addGoal(7, LookAtPlayerGoal(this, Player::class.java, 8f)) goalSelector.addGoal(7, LookAtPlayerGoal(this, Player::class.java, 8f))
goalSelector.addGoal(3, NearestAttackableTargetGoal(this, LivingEntity::class.java, 10, true, true) { entity -> goalSelector.addGoal(3, NearestAttackableTargetGoal(this, LivingEntity::class.java, 10, true, true) { entity ->
@ -200,7 +199,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
private var target: LivingEntity? = null private var target: LivingEntity? = null
init { init {
setFlags(EnumSet.of(Goal.Flag.MOVE)) setFlags(EnumSet.of(Flag.MOVE))
} }
private var chargeTime = 0 private var chargeTime = 0
@ -208,8 +207,6 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
private val maxChargeTime = 40 private val maxChargeTime = 40
private var chargeDir: Vec3? = null private var chargeDir: Vec3? = null
private var cooldown = 0 private var cooldown = 0
private val minCooldown = 35
private val maxCooldown = 60
private var isCharging = false private var isCharging = false
override fun canUse(): Boolean { override fun canUse(): Boolean {
@ -227,7 +224,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
} }
override fun start() { override fun start() {
mob.setCharging(true) mob.isCharging = true
mob.playSound(MSoundEvents.ENFORCER_ALERT, 1.0f, 1.0f) mob.playSound(MSoundEvents.ENFORCER_ALERT, 1.0f, 1.0f)
chargeTime = 0 chargeTime = 0
mob.navigation.stop() mob.navigation.stop()
@ -315,13 +312,18 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
} }
override fun stop() { override fun stop() {
mob.setCharging(false) mob.isCharging = false
mob.setDeltaMovement(Vec3.ZERO) mob.deltaMovement = Vec3.ZERO
chargeTime = 0 chargeTime = 0
chargeDir = null chargeDir = null
isCharging = false isCharging = false
mob.chargeState.stop() mob.chargeState.stop()
} }
companion object {
private const val minCooldown = 35
private const val maxCooldown = 60
}
} }
class StayNearGoal(private val mob: Enforcer) : Goal() { class StayNearGoal(private val mob: Enforcer) : Goal() {
@ -330,7 +332,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
private var movePos: Vec3? = null private var movePos: Vec3? = null
override fun canUse(): Boolean { override fun canUse(): Boolean {
return mob.target != null && !mob.isCharging() return mob.target != null && !mob.isCharging
} }
override fun canContinueToUse(): Boolean { override fun canContinueToUse(): Boolean {
@ -373,11 +375,11 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
private var fireTick = 0 private var fireTick = 0
init { init {
setFlags(EnumSet.of(Goal.Flag.LOOK)) setFlags(EnumSet.of(Flag.LOOK))
} }
override fun canUse(): Boolean { override fun canUse(): Boolean {
return mob.target != null && !mob.isCharging() return mob.target != null && !mob.isCharging
} }
override fun canContinueToUse(): Boolean { override fun canContinueToUse(): Boolean {