From b80b5549932a04a826fb2d15eff316584c68fd4a Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Wed, 17 Jul 2024 18:15:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=A9=BF=E9=80=8F?= =?UTF-8?q?=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/entity/CannonShellEntity.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/mcreator/target/entity/CannonShellEntity.java b/src/main/java/net/mcreator/target/entity/CannonShellEntity.java index cce4320e4..a8d06c150 100644 --- a/src/main/java/net/mcreator/target/entity/CannonShellEntity.java +++ b/src/main/java/net/mcreator/target/entity/CannonShellEntity.java @@ -22,6 +22,8 @@ import net.minecraft.world.entity.projectile.ThrowableItemProjectile; import net.minecraft.world.item.Item; import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.network.NetworkHooks; @@ -34,6 +36,7 @@ public class CannonShellEntity extends ThrowableItemProjectile { private float explosionDamage = 0; private float fireProbability = 0; private int fireTime = 0; + private int durability = 40; public CannonShellEntity(EntityType type, Level world) { super(type, world); @@ -60,6 +63,11 @@ public class CannonShellEntity extends ThrowableItemProjectile { this(TargetModEntities.CANNON_SHELL.get(), level); } + public CannonShellEntity durability(int durability) { + this.durability = durability; + return this; + } + @Override public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); @@ -70,7 +78,6 @@ public class CannonShellEntity extends ThrowableItemProjectile { return TargetModItems.HE_5_INCHES.get(); } - @Override public void onHitEntity(EntityHitResult entityHitResult) { Entity entity = entityHitResult.getEntity(); @@ -99,13 +106,24 @@ public class CannonShellEntity extends ThrowableItemProjectile { int y = blockHitResult.getBlockPos().getY(); int z = blockHitResult.getBlockPos().getZ(); - float hardness = this.level().getBlockState(BlockPos.containing(x, y, z)).getDestroySpeed(this.level(), BlockPos.containing(x, y, z)); - - - if (!this.level().isClientSide() && this.level() instanceof ServerLevel) { - causeExplode(); + BlockState blockState = this.level().getBlockState(BlockPos.containing(x, y, z)); + if (blockState.is(Blocks.BEDROCK) || blockState.is(Blocks.BARRIER)) { + if (!this.level().isClientSide()) { + causeExplode(); + } + this.discard(); + return; + } + + float hardness = this.level().getBlockState(BlockPos.containing(x, y, z)).getBlock().defaultDestroyTime(); + this.durability -= (int) hardness; + + if (this.durability <= 0) { + if (!this.level().isClientSide()) { + causeExplode(); + } + this.discard(); } - this.discard(); } @Override @@ -124,8 +142,7 @@ public class CannonShellEntity extends ThrowableItemProjectile { } private void causeExplode() { - - if (Math.random() > fireProbability){ + if (Math.random() > fireProbability) { fireTime = 0; }