From 199b935b6389e6875e79b0ea1a920b0414589f58 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sat, 11 May 2024 02:47:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=86=99=E5=BC=80=E7=81=AB=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/init/TargetModKeyMappings.java | 2 +- .../target/network/FireModeMessage.java | 65 +++++++++++--- .../procedures/ChangefiremodeProcedure.java | 89 ------------------- 3 files changed, 54 insertions(+), 102 deletions(-) delete mode 100644 src/main/java/net/mcreator/target/procedures/ChangefiremodeProcedure.java diff --git a/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java b/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java index f4bc885c1..29aef80b8 100644 --- a/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java +++ b/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java @@ -57,7 +57,7 @@ public class TargetModKeyMappings { super.setDown(isDown); if (isDownOld != isDown && isDown) { TargetMod.PACKET_HANDLER.sendToServer(new FireModeMessage(0, 0)); - FireModeMessage.pressAction(Minecraft.getInstance().player, 0, 0); + FireModeMessage.pressAction(Minecraft.getInstance().player, 0); } isDownOld = isDown; } diff --git a/src/main/java/net/mcreator/target/network/FireModeMessage.java b/src/main/java/net/mcreator/target/network/FireModeMessage.java index fc4c366a9..5db88ea47 100644 --- a/src/main/java/net/mcreator/target/network/FireModeMessage.java +++ b/src/main/java/net/mcreator/target/network/FireModeMessage.java @@ -1,10 +1,17 @@ package net.mcreator.target.network; import net.mcreator.target.TargetMod; -import net.mcreator.target.procedures.ChangefiremodeProcedure; +import net.mcreator.target.init.TargetModItems; +import net.mcreator.target.init.TargetModSounds; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; @@ -33,23 +40,57 @@ public class FireModeMessage { public static void handler(FireModeMessage message, Supplier contextSupplier) { NetworkEvent.Context context = contextSupplier.get(); - context.enqueueWork(() -> { - pressAction(context.getSender(), message.type, message.pressedms); - }); + context.enqueueWork(() -> pressAction(context.getSender(), message.type)); context.setPacketHandled(true); } - public static void pressAction(Player entity, int type, int pressedms) { - Level world = entity.level(); - double x = entity.getX(); - double y = entity.getY(); - double z = entity.getZ(); + public static void pressAction(Player player, int type) { + if (player == null) return; // security measure to prevent arbitrary chunk generation - if (!world.hasChunkAt(entity.blockPosition())) + if (!player.level().hasChunkAt(player.blockPosition())) return; if (type == 0) { + changeFireMode(player); + } + } - ChangefiremodeProcedure.execute(entity); + private static void setFireMode(Player player, CompoundTag tag, int mode) { + if (player.getServer() == null) return; + var text = switch (mode) { + case 0 -> "Semi"; + case 1 -> "Burst"; + case 2 -> "Auto"; + default -> ""; + }; + + player.displayClientMessage(Component.literal(text), true); + player.level().playSound(null, player.blockPosition(), TargetModSounds.FIRERATE.get(), SoundSource.PLAYERS, 10, 1); + + tag.putDouble("firemode", mode); + tag.putDouble("cg", 10); + } + + public static void changeFireMode(Player player) { + ItemStack mainHandItem = player.getMainHandItem(); + CompoundTag tag = mainHandItem.getOrCreateTag(); + Item item = mainHandItem.getItem(); + int fireMode = (int) tag.getDouble("firemode"); + + if (item == TargetModItems.AK_47.get() + || item == TargetModItems.M_4.get() + || item == TargetModItems.AA_12.get() + || item == TargetModItems.HK_416.get() + || item == TargetModItems.RPK.get() + || item == TargetModItems.MK_14.get()) { + setFireMode(player, tag, fireMode == 0 ? 2 : 0); + } + if (item == TargetModItems.VECTOR.get()) { + setFireMode(player, tag, (fireMode + 1) % 3); + } + if (item == TargetModItems.SENTINEL.get() && !(player.getCooldowns().isOnCooldown(item)) && tag.getDouble("charging") == 0) { + tag.putDouble("charging", 1); + tag.putDouble("cid", (Mth.nextDouble(RandomSource.create(), 1, 1919810))); + tag.putDouble("chargingtime", 128); } } diff --git a/src/main/java/net/mcreator/target/procedures/ChangefiremodeProcedure.java b/src/main/java/net/mcreator/target/procedures/ChangefiremodeProcedure.java deleted file mode 100644 index 0915d98ea..000000000 --- a/src/main/java/net/mcreator/target/procedures/ChangefiremodeProcedure.java +++ /dev/null @@ -1,89 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.init.TargetModItems; -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.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; - -public class ChangefiremodeProcedure { - public static void execute(Entity entity) { - if (entity == null) - return; - ItemStack usehand = ItemStack.EMPTY; - usehand = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY); - if (usehand.getItem() == TargetModItems.AK_47.get() || usehand.getItem() == TargetModItems.M_4.get() || usehand.getItem() == TargetModItems.AA_12.get() || usehand.getItem() == TargetModItems.HK_416.get() - || usehand.getItem() == TargetModItems.RPK.get() || usehand.getItem() == TargetModItems.MK_14.get()) { - if (usehand.getOrCreateTag().getDouble("firemode") == 2) { - usehand.getOrCreateTag().putDouble("firemode", 0); - usehand.getOrCreateTag().putDouble("cg", 10); - { - 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:firerate player @s ~ ~ ~ 10 1"); - } - } - if (entity instanceof Player _player && !_player.level().isClientSide()) - _player.displayClientMessage(Component.literal("Semi"), true); - } else if (usehand.getOrCreateTag().getDouble("firemode") == 0) { - usehand.getOrCreateTag().putDouble("firemode", 2); - usehand.getOrCreateTag().putDouble("cg", 10); - { - 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:firerate player @s ~ ~ ~ 10 1"); - } - } - if (entity instanceof Player _player && !_player.level().isClientSide()) - _player.displayClientMessage(Component.literal("Auto"), true); - } - } - if (usehand.getItem() == TargetModItems.VECTOR.get()) { - if (usehand.getOrCreateTag().getDouble("firemode") == 0) { - usehand.getOrCreateTag().putDouble("firemode", 1); - usehand.getOrCreateTag().putDouble("cg", 10); - { - 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:firerate player @s ~ ~ ~ 10 1"); - } - } - if (entity instanceof Player _player && !_player.level().isClientSide()) - _player.displayClientMessage(Component.literal("Burst"), true); - } else if (usehand.getOrCreateTag().getDouble("firemode") == 1) { - usehand.getOrCreateTag().putDouble("firemode", 2); - usehand.getOrCreateTag().putDouble("cg", 10); - { - 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:firerate player @s ~ ~ ~ 10 1"); - } - } - if (entity instanceof Player _player && !_player.level().isClientSide()) - _player.displayClientMessage(Component.literal("Auto"), true); - } else if (usehand.getOrCreateTag().getDouble("firemode") == 2) { - usehand.getOrCreateTag().putDouble("firemode", 0); - usehand.getOrCreateTag().putDouble("cg", 10); - { - 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:firerate player @s ~ ~ ~ 10 1"); - } - } - if (entity instanceof Player _player && !_player.level().isClientSide()) - _player.displayClientMessage(Component.literal("Semi"), true); - } - } - if (usehand.getItem() == TargetModItems.SENTINEL.get() && !(entity instanceof Player _plrCldCheck36 && _plrCldCheck36.getCooldowns().isOnCooldown(usehand.getItem())) && usehand.getOrCreateTag().getDouble("charging") == 0) { - usehand.getOrCreateTag().putDouble("charging", 1); - usehand.getOrCreateTag().putDouble("cid", (Mth.nextDouble(RandomSource.create(), 1, 1919810))); - usehand.getOrCreateTag().putDouble("chargingtime", 128); - } - } -}