Update BlazeFireballGoal's code
This commit is contained in:
parent
832b5f7d2a
commit
5606096040
@ -34,6 +34,7 @@ import net.minecraft.world.entity.projectile.SmallFireball
|
|||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.core.util.TickList
|
||||||
import ru.dbotthepony.mc.otm.registry.MNames
|
import ru.dbotthepony.mc.otm.registry.MNames
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents
|
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -145,7 +146,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
|||||||
return 180
|
return 180
|
||||||
}
|
}
|
||||||
|
|
||||||
fun shootFireball(math: Float) {
|
private fun shootFireball(math: Float) {
|
||||||
if (level().isClientSide) return
|
if (level().isClientSide) return
|
||||||
|
|
||||||
val offset_dist = 1.4
|
val offset_dist = 1.4
|
||||||
@ -170,7 +171,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
|||||||
level().addFreshEntity(fireball)
|
level().addFreshEntity(fireball)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun shootMissile(math: Float) {
|
private fun shootMissile(math: Float) {
|
||||||
if (level().isClientSide) return
|
if (level().isClientSide) return
|
||||||
|
|
||||||
val offset_dist = 1.4
|
val offset_dist = 1.4
|
||||||
@ -285,7 +286,6 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
|||||||
|
|
||||||
mob.move(net.minecraft.world.entity.MoverType.SELF, dir.scale(1.8))
|
mob.move(net.minecraft.world.entity.MoverType.SELF, dir.scale(1.8))
|
||||||
|
|
||||||
|
|
||||||
if (mob.horizontalCollision) {
|
if (mob.horizontalCollision) {
|
||||||
mob.level().playSound(
|
mob.level().playSound(
|
||||||
null,
|
null,
|
||||||
@ -346,8 +346,12 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun tick() {
|
override fun tick() {
|
||||||
target?.let { mob.lookControl.setLookAt(it, 30.0f, 30.0f) }
|
var target = target
|
||||||
val target = mob.target ?: return
|
|
||||||
|
if (target != null)
|
||||||
|
mob.lookControl.setLookAt(target, 30.0f, 30.0f)
|
||||||
|
|
||||||
|
target = mob.target ?: return
|
||||||
|
|
||||||
if (moveCD > 0) {
|
if (moveCD > 0) {
|
||||||
moveCD--
|
moveCD--
|
||||||
@ -373,7 +377,7 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
|||||||
|
|
||||||
class BlazeFireballGoal(private val mob: Enforcer) : Goal() {
|
class BlazeFireballGoal(private val mob: Enforcer) : Goal() {
|
||||||
private var cooldown = 0
|
private var cooldown = 0
|
||||||
private var fireTick = 0
|
private val tickList = TickList()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
setFlags(EnumSet.of(Flag.LOOK))
|
setFlags(EnumSet.of(Flag.LOOK))
|
||||||
@ -383,47 +387,35 @@ class Enforcer(type: EntityType<Enforcer>, level: Level) : Monster(type,level) {
|
|||||||
return mob.target != null && !mob.isCharging
|
return mob.target != null && !mob.isCharging
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun canContinueToUse(): Boolean {
|
|
||||||
return canUse()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun tick() {
|
override fun tick() {
|
||||||
val target = mob.target ?: return
|
val target = mob.target ?: return
|
||||||
mob.lookControl.setLookAt(target, 30.0f, 30.0f)
|
mob.lookControl.setLookAt(target, 30.0f, 30.0f)
|
||||||
|
|
||||||
if (cooldown > 0) {
|
if (--cooldown <= 0) {
|
||||||
fireTick = 20
|
cooldown = Mth.nextInt(mob.random, MIN_COOLDOWN, MAX_COOLDOWN) + CYCLE_LENGTH
|
||||||
cooldown--
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fireTick > 0){
|
for (ticks in SHOOT_AT)
|
||||||
fireTick --
|
tickList.timer(ticks) {
|
||||||
|
|
||||||
|
|
||||||
if (fireTick >= 19){
|
|
||||||
mob.playSound(MSoundEvents.ENFORCER_BEEP, 1.0f, 1.0f)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (fireTick == 15){
|
|
||||||
mob.shootFireball(0.5f)
|
mob.shootFireball(0.5f)
|
||||||
//could have a better firing sound
|
//could have a better firing sound
|
||||||
mob.playSound(SoundEvents.BLAZE_SHOOT, 1.0f, 1.0f)
|
mob.playSound(SoundEvents.BLAZE_SHOOT, 1.0f, Mth.nextFloat(mob.random, 0.9f, 1.1f))
|
||||||
}
|
}
|
||||||
if (fireTick == 10){
|
|
||||||
mob.shootFireball(0.5f)
|
|
||||||
mob.playSound(SoundEvents.BLAZE_SHOOT, 1.0f, 1.0f)
|
|
||||||
}
|
|
||||||
if (fireTick == 5){
|
|
||||||
mob.shootFireball(0.5f)
|
|
||||||
mob.playSound(SoundEvents.BLAZE_SHOOT, 1.0f, 1.0f)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
tickList.tick()
|
||||||
} else {
|
}
|
||||||
cooldown = 5 + mob.random.nextInt(10)
|
|
||||||
}
|
override fun stop() {
|
||||||
|
super.stop()
|
||||||
|
cooldown = 0
|
||||||
|
tickList.clear()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val SHOOT_AT = intArrayOf(5, 10, 15)
|
||||||
|
private const val MIN_COOLDOWN = 5
|
||||||
|
private const val MAX_COOLDOWN = 15
|
||||||
|
private const val CYCLE_LENGTH = 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user