From ab66a937e0c7281e137ebc4ce222305b85e1d184 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Wed, 17 Jul 2024 17:55:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=91=BD=E4=B8=AD=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/entity/CannonShellEntity.java | 16 +++++++++++++++- .../net/mcreator/target/entity/Mk42Entity.java | 16 ++++++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/mcreator/target/entity/CannonShellEntity.java b/src/main/java/net/mcreator/target/entity/CannonShellEntity.java index b06b54b5b..cce4320e4 100644 --- a/src/main/java/net/mcreator/target/entity/CannonShellEntity.java +++ b/src/main/java/net/mcreator/target/entity/CannonShellEntity.java @@ -1,8 +1,11 @@ package net.mcreator.target.entity; +import net.mcreator.target.TargetMod; import net.mcreator.target.init.TargetModDamageTypes; import net.mcreator.target.init.TargetModEntities; import net.mcreator.target.init.TargetModItems; +import net.mcreator.target.init.TargetModSounds; +import net.mcreator.target.network.message.ClientIndicatorMessage; import net.mcreator.target.tools.CustomExplosion; import net.mcreator.target.tools.ParticleTool; import net.minecraft.core.BlockPos; @@ -10,6 +13,8 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -20,6 +25,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PlayMessages; public class CannonShellEntity extends ThrowableItemProjectile { @@ -68,8 +74,16 @@ public class CannonShellEntity extends ThrowableItemProjectile { @Override public void onHitEntity(EntityHitResult entityHitResult) { Entity entity = entityHitResult.getEntity(); - entity.hurt(this.level().damageSources().thrown(this, this.getOwner()), this.damage); + entity.invulnerableTime = 0; + + if (this.getOwner() instanceof LivingEntity living) { + if (!living.level().isClientSide() && living instanceof ServerPlayer player) { + living.level().playSound(null, living.blockPosition(), TargetModSounds.INDICATION.get(), SoundSource.VOICE, 1, 1); + + TargetMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5)); + } + } if (this.level() instanceof ServerLevel) { causeExplode(); diff --git a/src/main/java/net/mcreator/target/entity/Mk42Entity.java b/src/main/java/net/mcreator/target/entity/Mk42Entity.java index a070e74df..8c6668751 100644 --- a/src/main/java/net/mcreator/target/entity/Mk42Entity.java +++ b/src/main/java/net/mcreator/target/entity/Mk42Entity.java @@ -240,6 +240,15 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity { cannonShoot(player); } + if (this.getPersistentData().getBoolean("shot")) { + gunner.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.recoilHorizon = 2 * Math.random() - 1; + capability.cannonFiring = 1; + capability.syncPlayerVariables(gunner); + }); + this.getPersistentData().putBoolean("shot", false); + } + this.refreshDimensions(); } @@ -280,12 +289,7 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity { } this.getPersistentData().putInt("fire_cooldown", 30); - - player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.recoilHorizon = 2 * Math.random() - 1; - capability.cannonFiring = 1; - capability.syncPlayerVariables(player); - }); + this.getPersistentData().putBoolean("shot", true); server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE, this.getX() + 5 * this.getLookAngle().x,