diff --git a/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java b/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java index 6bf2c98bd..10b7bcb14 100644 --- a/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java +++ b/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java @@ -7,14 +7,19 @@ import net.mcreator.target.client.renderer.item.HuntingRifleItemRenderer; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.item.AnimatedItem; -import net.mcreator.target.procedures.HrrelodingProcedure; +import net.mcreator.target.procedures.WeaponDrawProcedure; +import net.mcreator.target.tools.GunInfo; +import net.mcreator.target.tools.GunReload; import net.mcreator.target.tools.GunsTool; import net.mcreator.target.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; @@ -159,7 +164,41 @@ public class HuntingRifle extends GunItem implements GeoItem, AnimatedItem { @Override public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(itemstack, world, entity, slot, selected); - HrrelodingProcedure.execute(entity, itemstack); + + var itemTag = itemstack.getOrCreateTag(); + double id = itemTag.getDouble("id"); + + var mainHandItem = entity instanceof LivingEntity living ? living.getMainHandItem() : ItemStack.EMPTY; + var mainHandItemTag = mainHandItem.getOrCreateTag(); + + if (mainHandItemTag.getDouble("id") != itemTag.getDouble("id")) { + itemTag.putDouble("emptyreload", 0); + itemTag.putDouble("reloading", 0); + itemTag.putDouble("reloadtime", 0); + } + if (itemTag.getDouble("reloading") == 1 && itemTag.getDouble("ammo") == 0) { + if (itemTag.getDouble("reloadtime") == 61) { + entity.getPersistentData().putDouble("id", id); + if (!entity.level().isClientSide() && entity.getServer() != null) { + entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, + entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:hunting_rifle_reload player @s ~ ~ ~ 100 1"); + } + } + if (mainHandItem.getItem() == itemstack.getItem() + && mainHandItemTag.getDouble("id") == id) { + if (itemTag.getDouble("reloadtime") > 0) { + itemTag.putDouble("reloadtime", (itemTag.getDouble("reloadtime") - 1)); + } + } else { + itemTag.putDouble("emptyreload", 0); + itemTag.putDouble("reloading", 0); + itemTag.putDouble("reloadtime", 0); + } + if (itemTag.getDouble("reloadtime") == 1 && mainHandItemTag.getDouble("id") == id) { + GunReload.reload(entity, GunInfo.Type.SNIPER); + } + } + WeaponDrawProcedure.execute(entity, itemstack); } public static ItemStack getGunInstance() { diff --git a/src/main/java/net/mcreator/target/item/gun/Trachelium.java b/src/main/java/net/mcreator/target/item/gun/Trachelium.java index e8131ccaf..7bdc0e617 100644 --- a/src/main/java/net/mcreator/target/item/gun/Trachelium.java +++ b/src/main/java/net/mcreator/target/item/gun/Trachelium.java @@ -7,17 +7,18 @@ import net.mcreator.target.client.renderer.item.TracheliumItemRenderer; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.item.AnimatedItem; -import net.mcreator.target.procedures.ReloadingProcedure; -import net.mcreator.target.tools.GunsTool; -import net.mcreator.target.tools.RarityTool; -import net.mcreator.target.tools.TooltipTool; +import net.mcreator.target.procedures.WeaponDrawLightProcedure; +import net.mcreator.target.tools.*; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; @@ -161,8 +162,39 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(itemstack, world, entity, slot, selected); - // TODO 把这坨procedure删了 - ReloadingProcedure.execute(entity, itemstack); + var itemTag = itemstack.getOrCreateTag(); + double id = itemTag.getDouble("id"); + var mainHandItem = entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY; + var mainHandItemTag = mainHandItem.getOrCreateTag(); + + if (mainHandItemTag.getDouble("id") != itemTag.getDouble("id")) { + itemTag.putDouble("emptyreload", 0); + itemTag.putDouble("reloading", 0); + itemTag.putDouble("reloadtime", 0); + } + if (itemTag.getDouble("reloading") == 1) { + if (itemTag.getDouble("reloadtime") == 57) { + entity.getPersistentData().putDouble("id", id); + if (!entity.level().isClientSide() && entity.getServer() != null) { + entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, + entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:trachelium_reload player @s ~ ~ ~ 100 1"); + } + } + if (mainHandItem.getItem() == itemstack.getItem() + && mainHandItemTag.getDouble("id") == id) { + if (itemTag.getDouble("reloadtime") > 0) { + itemTag.putDouble("reloadtime", (itemTag.getDouble("reloadtime") - 1)); + } + } else { + itemTag.putDouble("reloading", 0); + itemTag.putDouble("emptyreload", 0); + itemTag.putDouble("reloadtime", 0); + } + if (itemTag.getDouble("reloadtime") == 1 && mainHandItemTag.getDouble("id") == id) { + GunReload.reload(entity, GunInfo.Type.HANDGUN); + } + } + WeaponDrawLightProcedure.execute(entity, itemstack); } @Override diff --git a/src/main/java/net/mcreator/target/procedures/HrrelodingProcedure.java b/src/main/java/net/mcreator/target/procedures/HrrelodingProcedure.java deleted file mode 100644 index 14f3ae777..000000000 --- a/src/main/java/net/mcreator/target/procedures/HrrelodingProcedure.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.tools.GunInfo; -import net.mcreator.target.tools.GunReload; -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -public class HrrelodingProcedure { - public static void execute(Entity entity, ItemStack itemstack) { - if (entity == null) - return; - double id = 0; - double ammo1 = 0; - double ammo2 = 0; - id = itemstack.getOrCreateTag().getDouble("id"); - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") != itemstack.getOrCreateTag().getDouble("id")) { - itemstack.getOrCreateTag().putDouble("emptyreload", 0); - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("reloadtime", 0); - } - if (itemstack.getOrCreateTag().getDouble("reloading") == 1 && itemstack.getOrCreateTag().getDouble("ammo") == 0) { - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 61) { - entity.getPersistentData().putDouble("id", id); - { - if (!entity.level().isClientSide() && entity.getServer() != null) { - entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, - entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:hunting_rifle_reload player @s ~ ~ ~ 100 1"); - } - } - } - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem() - && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { - if (itemstack.getOrCreateTag().getDouble("reloadtime") > 0) { - itemstack.getOrCreateTag().putDouble("reloadtime", (itemstack.getOrCreateTag().getDouble("reloadtime") - 1)); - } - } else { - itemstack.getOrCreateTag().putDouble("emptyreload", 0); - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("reloadtime", 0); - } - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 1 && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER); - } - } - WeaponDrawProcedure.execute(entity, itemstack); - } -} diff --git a/src/main/java/net/mcreator/target/procedures/ReloadingProcedure.java b/src/main/java/net/mcreator/target/procedures/ReloadingProcedure.java deleted file mode 100644 index 310bd28b2..000000000 --- a/src/main/java/net/mcreator/target/procedures/ReloadingProcedure.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.tools.GunInfo; -import net.mcreator.target.tools.GunReload; -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -public class ReloadingProcedure { - public static void execute(Entity entity, ItemStack itemstack) { - if (entity == null) - return; - double id = 0; - double ammo1 = 0; - id = itemstack.getOrCreateTag().getDouble("id"); - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") != itemstack.getOrCreateTag().getDouble("id")) { - itemstack.getOrCreateTag().putDouble("emptyreload", 0); - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("reloadtime", 0); - } - if (itemstack.getOrCreateTag().getDouble("reloading") == 1) { - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 57) { - entity.getPersistentData().putDouble("id", id); - { - Entity _ent = entity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:trachelium_reload player @s ~ ~ ~ 100 1"); - } - } - } - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem() - && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { - if (itemstack.getOrCreateTag().getDouble("reloadtime") > 0) { - itemstack.getOrCreateTag().putDouble("reloadtime", (itemstack.getOrCreateTag().getDouble("reloadtime") - 1)); - } - } else { - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("emptyreload", 0); - itemstack.getOrCreateTag().putDouble("reloadtime", 0); - } - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 1 && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.HANDGUN); - } - } - WeaponDrawLightProcedure.execute(entity, itemstack); - } -}