diff --git a/src/main/java/net/mcreator/target/block/JumpPadBlock.java b/src/main/java/net/mcreator/target/block/JumpPadBlock.java index 7597ebbb1..87614abc7 100644 --- a/src/main/java/net/mcreator/target/block/JumpPadBlock.java +++ b/src/main/java/net/mcreator/target/block/JumpPadBlock.java @@ -1,5 +1,6 @@ package net.mcreator.target.block; +import net.mcreator.target.entity.Mk42Entity; import net.mcreator.target.entity.Target1Entity; import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.network.TargetModVariables; @@ -77,7 +78,7 @@ public class JumpPadBlock extends Block { super.entityInside(blockstate, level, pos, entity); // 禁止套娃 - if (entity instanceof Target1Entity) return; + if (entity instanceof Target1Entity || entity instanceof Mk42Entity) return; boolean zooming = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> c.zooming).orElse(false); diff --git a/src/main/java/net/mcreator/target/entity/Mk42Entity.java b/src/main/java/net/mcreator/target/entity/Mk42Entity.java index 2dbe69818..8085cc2d9 100644 --- a/src/main/java/net/mcreator/target/entity/Mk42Entity.java +++ b/src/main/java/net/mcreator/target/entity/Mk42Entity.java @@ -63,7 +63,7 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity { public Mk42Entity(EntityType type, Level world) { super(type, world); xpReward = 0; - setNoAi(true); + setNoAi(false); setPersistenceRequired(); } @@ -362,20 +362,52 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity { } } +// @Override +// public void travel(Vec3 dir) { +// if (this.getFirstPassenger() == null) return; +// Entity gunner = this.getFirstPassenger(); +// if (this.isVehicle()) { +// this.setYRot(gunner.getYRot()); +// this.yRotO = this.getYRot(); +// this.setXRot(Mth.clamp(gunner.getXRot() - 1.35f, -85, 15)); +// this.setRot(this.getYRot(), this.getXRot()); +// this.yBodyRot = gunner.getYRot(); +// this.yHeadRot = gunner.getYRot(); +// } +// } + @Override public void travel(Vec3 dir) { - if (this.getFirstPassenger() == null) return; - Entity gunner = this.getFirstPassenger(); + Entity entity = this.getPassengers().isEmpty() ? null : (Entity) this.getPassengers().get(0); if (this.isVehicle()) { - this.setYRot(gunner.getYRot()); + this.setYRot(entity.getYRot()); this.yRotO = this.getYRot(); - this.setXRot(Mth.clamp(gunner.getXRot() - 1.35f, -85, 15)); + this.setXRot(Mth.clamp(entity.getXRot() - 1.35f, -85, 15)); this.setRot(this.getYRot(), this.getXRot()); - this.yBodyRot = gunner.getYRot(); - this.yHeadRot = gunner.getYRot(); + this.yBodyRot = entity.getYRot(); + this.yHeadRot = entity.getYRot(); + this.setMaxUpStep(1.0F); + if (entity instanceof LivingEntity passenger) { + this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED)); + float forward = passenger.zza; + float strafe = passenger.xxa; + super.travel(new Vec3(strafe, 0, forward)); + } + double d1 = this.getX() - this.xo; + double d0 = this.getZ() - this.zo; + float f1 = (float) Math.sqrt(d1 * d1 + d0 * d0) * 4; + if (f1 > 1.0F) + f1 = 1.0F; + this.walkAnimation.setSpeed(this.walkAnimation.speed() + (f1 - this.walkAnimation.speed()) * 0.4F); + this.walkAnimation.position(this.walkAnimation.position() + this.walkAnimation.speed()); + this.calculateEntityAnimation(true); + return; } + this.setMaxUpStep(0.5F); + super.travel(dir); } + @Override public EntityDimensions getDimensions(Pose p_33597_) { return super.getDimensions(p_33597_).scale((float) 1);