diff --git a/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java b/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java index 180a5564d..f14140064 100644 --- a/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java +++ b/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java @@ -1,23 +1,24 @@ package net.mcreator.target.client.screens; import net.mcreator.target.procedures.EntityRangeProcedure; -import net.mcreator.target.procedures.SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.RenderGuiEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber({Dist.CLIENT}) +@Mod.EventBusSubscriber(value = Dist.CLIENT) public class SpyglassRangeOverlay { + @SubscribeEvent(priority = EventPriority.NORMAL) public static void eventHandler(RenderGuiEvent.Pre event) { int w = event.getWindow().getGuiScaledWidth(); int h = event.getWindow().getGuiScaledHeight(); Player entity = Minecraft.getInstance().player; - if (SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure.execute(entity)) { + if (entity != null && entity.getMainHandItem().getItem() == Items.SPYGLASS) { event.getGuiGraphics().drawString( Minecraft.getInstance().font, EntityRangeProcedure.execute(entity), diff --git a/src/main/java/net/mcreator/target/event/ClientEventHandler.java b/src/main/java/net/mcreator/target/event/ClientEventHandler.java index 72a185f2e..ed701d2ae 100644 --- a/src/main/java/net/mcreator/target/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/target/event/ClientEventHandler.java @@ -1,9 +1,13 @@ package net.mcreator.target.event; +import net.mcreator.target.init.TargetModMobEffects; import net.mcreator.target.init.TargetModTags; import net.mcreator.target.network.TargetModVariables; +import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; @@ -23,6 +27,7 @@ public class ClientEventHandler { handleWeaponMove(living); handleWeaponZoom(living); handleWeaponFire(event, living); + handleShockCamera(event, living); } } @@ -311,4 +316,12 @@ public class ClientEventHandler { } } + private static void handleShockCamera(ViewportEvent.ComputeCameraAngles event, LivingEntity entity) { + if (entity.hasEffect(TargetModMobEffects.SHOCK.get()) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { + event.setYaw(Minecraft.getInstance().gameRenderer.getMainCamera().getYRot()); + event.setPitch(Minecraft.getInstance().gameRenderer.getMainCamera().getXRot()); + event.setRoll((float) Mth.nextDouble(RandomSource.create(), 8, 12)); + } + } + } diff --git a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java index e145bf331..c6ccf9d89 100644 --- a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java @@ -51,6 +51,7 @@ public class PlayerEventHandler { handleFireTime(player); handleGround(player); handlePrepareZoom(player); + handleSpecialWeaponAmmo(player); } } @@ -256,4 +257,15 @@ public class PlayerEventHandler { } } } + + private static void handleSpecialWeaponAmmo(Player player) { + ItemStack stack = player.getMainHandItem(); + + if (stack.getItem() == TargetModItems.RPG.get() && stack.getOrCreateTag().getDouble("ammo") == 1) { + stack.getOrCreateTag().putDouble("empty", 0); + } + if (stack.getItem() == TargetModItems.BOCEK.get() && stack.getOrCreateTag().getDouble("ammo") == 1) { + stack.getOrCreateTag().putDouble("empty", 0); + } + } } diff --git a/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java b/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java index 14149e2d2..a3219f9ca 100644 --- a/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java +++ b/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java @@ -1,11 +1,17 @@ package net.mcreator.target.mobeffect; -import net.mcreator.target.procedures.ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure; -import net.mcreator.target.procedures.ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure; +import net.mcreator.target.init.TargetModSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.phys.Vec3; public class ShockMobEffect extends MobEffect { public ShockMobEffect() { @@ -19,12 +25,30 @@ public class ShockMobEffect extends MobEffect { @Override public void addAttributeModifiers(LivingEntity entity, AttributeMap attributeMap, int amplifier) { - ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure.execute(entity.level(), entity.getX(), entity.getY(), entity.getZ()); + if (!entity.level().isClientSide()) { + entity.level().playSound(null, BlockPos.containing(entity.getX(), entity.getY(), entity.getZ()), TargetModSounds.SHOCK.get(), SoundSource.HOSTILE, 1, 1); + } else { + entity.level().playLocalSound(entity.getX(), entity.getY(), entity.getZ(), TargetModSounds.SHOCK.get(), SoundSource.HOSTILE, 1, 1, false); + } } @Override public void applyEffectTick(LivingEntity entity, int amplifier) { - ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure.execute(entity); + entity.setDeltaMovement(new Vec3(0, (entity.getDeltaMovement().y()), 0)); + + if (!entity.level().isClientSide()) { + entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, 10)); + } + + entity.setShiftKeyDown(true); + entity.setYRot((float) (entity.getYRot() + Mth.nextDouble(RandomSource.create(), -15, 15))); + entity.setXRot((float) Mth.nextDouble(RandomSource.create(), -20, -23)); + entity.setYBodyRot(entity.getYRot()); + entity.setYHeadRot(entity.getYRot()); + entity.yRotO = entity.getYRot(); + entity.xRotO = entity.getXRot(); + entity.yBodyRotO = entity.getYRot(); + entity.yHeadRotO = entity.getYRot(); } @Override diff --git a/src/main/java/net/mcreator/target/procedures/RpgemptyProcedure.java b/src/main/java/net/mcreator/target/procedures/RpgemptyProcedure.java deleted file mode 100644 index b5cffdc67..000000000 --- a/src/main/java/net/mcreator/target/procedures/RpgemptyProcedure.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.init.TargetModItems; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -import javax.annotation.Nullable; - -@Mod.EventBusSubscriber -public class RpgemptyProcedure { - @SubscribeEvent - public static void onPlayerTick(TickEvent.PlayerTickEvent event) { - if (event.phase == TickEvent.Phase.END) { - execute(event, event.player); - } - } - - public static void execute(Entity entity) { - execute(null, entity); - } - - private static void execute(@Nullable Event event, Entity entity) { - if (entity == null) - return; - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == TargetModItems.RPG.get() - && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("ammo") == 1) { - (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().putDouble("empty", 0); - } - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == TargetModItems.BOCEK.get() - && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("ammo") == 1) { - (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().putDouble("empty", 0); - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure.java b/src/main/java/net/mcreator/target/procedures/ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure.java deleted file mode 100644 index 578b36bb4..000000000 --- a/src/main/java/net/mcreator/target/procedures/ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraftforge.registries.ForgeRegistries; - -public class ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure { - public static void execute(LevelAccessor world, double x, double y, double z) { - if (world instanceof Level _level) { - if (!_level.isClientSide()) { - _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:shock")), SoundSource.HOSTILE, 1, 1); - } else { - _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:shock")), SoundSource.HOSTILE, 1, 1, false); - } - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure.java b/src/main/java/net/mcreator/target/procedures/ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure.java deleted file mode 100644 index 56759ffd6..000000000 --- a/src/main/java/net/mcreator/target/procedures/ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.phys.Vec3; - -public class ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure { - public static void execute(Entity entity) { - if (entity == null) - return; - entity.setDeltaMovement(new Vec3(0, (entity.getDeltaMovement().y()), 0)); - if (entity instanceof LivingEntity _entity && !_entity.level().isClientSide()) - _entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, 10)); - entity.setShiftKeyDown(true); - { - Entity _ent = entity; - _ent.setYRot((float) (entity.getYRot() + Mth.nextDouble(RandomSource.create(), -15, 15))); - _ent.setXRot((float) Mth.nextDouble(RandomSource.create(), -20, -23)); - _ent.setYBodyRot(_ent.getYRot()); - _ent.setYHeadRot(_ent.getYRot()); - _ent.yRotO = _ent.getYRot(); - _ent.xRotO = _ent.getXRot(); - if (_ent instanceof LivingEntity _entity) { - _entity.yBodyRotO = _entity.getYRot(); - _entity.yHeadRotO = _entity.getYRot(); - } - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/ShockcameraProcedure.java b/src/main/java/net/mcreator/target/procedures/ShockcameraProcedure.java deleted file mode 100644 index 01355bcaf..000000000 --- a/src/main/java/net/mcreator/target/procedures/ShockcameraProcedure.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.init.TargetModMobEffects; -import net.minecraft.client.CameraType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.phys.Vec3; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.ViewportEvent; -import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -import javax.annotation.Nullable; - -@Mod.EventBusSubscriber(value = Dist.CLIENT) -public class ShockcameraProcedure { - private static ViewportEvent.ComputeCameraAngles _provider = null; - - private static void setAngles(float yaw, float pitch, float roll) { - _provider.setYaw(yaw); - _provider.setPitch(pitch); - _provider.setRoll(roll); - } - - @SubscribeEvent - public static void computeCameraangles(ViewportEvent.ComputeCameraAngles event) { - _provider = event; - ClientLevel level = Minecraft.getInstance().level; - Entity entity = _provider.getCamera().getEntity(); - if (level != null && entity != null) { - Vec3 entPos = entity.getPosition((float) _provider.getPartialTick()); - execute(_provider, entity); - } - } - - public static void execute(Entity entity) { - execute(null, entity); - } - - private static void execute(@Nullable Event event, Entity entity) { - if (entity == null) - return; - if (entity instanceof LivingEntity _livEnt0 && _livEnt0.hasEffect(TargetModMobEffects.SHOCK.get()) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { - setAngles(Minecraft.getInstance().gameRenderer.getMainCamera().getYRot(), Minecraft.getInstance().gameRenderer.getMainCamera().getXRot(), (float) Mth.nextDouble(RandomSource.create(), 8, 12)); - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure.java b/src/main/java/net/mcreator/target/procedures/SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure.java deleted file mode 100644 index 96785c6a6..000000000 --- a/src/main/java/net/mcreator/target/procedures/SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; - -public class SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure { - public static boolean execute(Entity entity) { - if (entity == null) - return false; - return (entity instanceof LivingEntity _entUseItem0 ? _entUseItem0.getUseItem() : ItemStack.EMPTY).getItem() == Items.SPYGLASS; - } -}