diff --git a/src/main/java/net/mcreator/superbwarfare/ModUtils.java b/src/main/java/net/mcreator/superbwarfare/ModUtils.java index dc19d3313..4fd0c766d 100644 --- a/src/main/java/net/mcreator/superbwarfare/ModUtils.java +++ b/src/main/java/net/mcreator/superbwarfare/ModUtils.java @@ -106,9 +106,9 @@ public class ModUtils { addNetworkMessage(ZoomMessage.class, ZoomMessage::encode, ZoomMessage::decode, ZoomMessage::handler); addNetworkMessage(DoubleJumpMessage.class, DoubleJumpMessage::encode, DoubleJumpMessage::decode, DoubleJumpMessage::handler); addNetworkMessage(GunsDataMessage.class, GunsDataMessage::encode, GunsDataMessage::decode, GunsDataMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); - addNetworkMessage(FireMessage.class, FireMessage::encode, FireMessage::new, FireMessage::handler); - addNetworkMessage(VehicleFireMessage.class, VehicleFireMessage::encode, VehicleFireMessage::new, VehicleFireMessage::handler); - addNetworkMessage(FireModeMessage.class, FireModeMessage::encode, FireModeMessage::new, FireModeMessage::handler); + addNetworkMessage(FireMessage.class, FireMessage::encode, FireMessage::decode, FireMessage::handler); + addNetworkMessage(VehicleFireMessage.class, VehicleFireMessage::encode, VehicleFireMessage::decode, VehicleFireMessage::handler); + addNetworkMessage(FireModeMessage.class, FireModeMessage::encode, FireModeMessage::decode, FireModeMessage::handler); addNetworkMessage(ReloadMessage.class, ReloadMessage::encode, ReloadMessage::decode, ReloadMessage::handler); addNetworkMessage(PlayerGunKillMessage.class, PlayerGunKillMessage::encode, PlayerGunKillMessage::decode, PlayerGunKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(ClientIndicatorMessage.class, ClientIndicatorMessage::encode, ClientIndicatorMessage::decode, ClientIndicatorMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); @@ -117,7 +117,7 @@ public class ModUtils { addNetworkMessage(AdjustMortarAngleMessage.class, AdjustMortarAngleMessage::encode, AdjustMortarAngleMessage::decode, AdjustMortarAngleMessage::handler); addNetworkMessage(InteractMessage.class, InteractMessage::encode, InteractMessage::decode, InteractMessage::handler); addNetworkMessage(DroneMovementMessage.class, DroneMovementMessage::encode, DroneMovementMessage::decode, DroneMovementMessage::handler); - addNetworkMessage(DroneFireMessage.class, DroneFireMessage::encode, DroneFireMessage::new, DroneFireMessage::handler); + addNetworkMessage(DroneFireMessage.class, DroneFireMessage::encode, DroneFireMessage::decode, DroneFireMessage::handler); addNetworkMessage(SimulationDistanceMessage.class, SimulationDistanceMessage::encode, SimulationDistanceMessage::decode, SimulationDistanceMessage::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(GunReforgeMessage.class, GunReforgeMessage::encode, GunReforgeMessage::decode, GunReforgeMessage::handler); addNetworkMessage(SetPerkLevelMessage.class, SetPerkLevelMessage::encode, SetPerkLevelMessage::decode, SetPerkLevelMessage::handler); diff --git a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java index a54c5edcc..8050f4ac1 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java @@ -268,9 +268,13 @@ public class LivingEventHandler { if (oldTags.getInt("bolt_action_time") > 0) { oldTags.putInt("bolt_action_anim", 0); } + + CompoundTag data = oldTags.getCompound("GunData"); + data.putInt("ReloadTime", 0); + oldStack.addTagElement("GunData", data); + oldTags.putBoolean("is_normal_reloading", false); oldTags.putBoolean("is_empty_reloading", false); - oldTags.putInt("gun_reloading_time", 0); if (oldTags.getDouble("iterative_time") != 0) { oldTags.putBoolean("force_stop", false); @@ -292,7 +296,6 @@ public class LivingEventHandler { capability.edit = false; capability.syncPlayerVariables(player); }); - } if (newStack.getItem() instanceof GunItem) { @@ -303,7 +306,10 @@ public class LivingEventHandler { } newStack.getOrCreateTag().putBoolean("is_normal_reloading", false); newStack.getOrCreateTag().putBoolean("is_empty_reloading", false); - newStack.getOrCreateTag().putInt("gun_reloading_time", 0); + + CompoundTag data = newStack.getOrCreateTag().getCompound("GunData"); + data.putInt("ReloadTime", 0); + newStack.addTagElement("GunData", data); if (newStack.getOrCreateTag().getDouble("iterative_time") != 0) { newStack.getOrCreateTag().putBoolean("force_stop", false); @@ -323,7 +329,7 @@ public class LivingEventHandler { int level = PerkHelper.getItemPerkLevel(ModPerks.KILLING_TALLY.get(), newStack); if (level != 0) { - newStack.getOrCreateTag().putInt("KillingTally", 0); + GunsTool.setPerkIntTag(newStack, "KillingTally", 0); } if (player.level() instanceof ServerLevel) { diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/DroneFireMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/DroneFireMessage.java index 9cfa640c6..e6a712d53 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/DroneFireMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/DroneFireMessage.java @@ -10,14 +10,15 @@ import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class DroneFireMessage { + private final int type; public DroneFireMessage(int type) { this.type = type; } - public DroneFireMessage(FriendlyByteBuf buffer) { - this.type = buffer.readInt(); + public static DroneFireMessage decode(FriendlyByteBuf buffer) { + return new DroneFireMessage(buffer.readInt()); } public static void encode(DroneFireMessage message, FriendlyByteBuf buffer) { diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java index a3f64b7c1..fb33fee06 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java @@ -45,8 +45,8 @@ public class FireMessage { this.type = type; } - public FireMessage(FriendlyByteBuf buffer) { - this.type = buffer.readInt(); + public static FireMessage decode(FriendlyByteBuf buffer) { + return new FireMessage(buffer.readInt()); } public static void encode(FireMessage message, FriendlyByteBuf buffer) { @@ -260,7 +260,7 @@ public class FireMessage { CompoundTag tag = heldItem.getOrCreateTag(); var perk = PerkHelper.getPerkByType(heldItem, Perk.Type.AMMO); float headshot = (float) tag.getDouble("headshot"); - float velocity = 2 * (float) tag.getDouble("speed") * (float)perkSpeed(heldItem); + float velocity = 2 * (float) tag.getDouble("speed") * (float) perkSpeed(heldItem); float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor"); double damage; boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom; @@ -329,7 +329,7 @@ public class FireMessage { ItemStack heldItem = player.getMainHandItem(); CompoundTag tag = heldItem.getOrCreateTag(); - float velocity = 2 * (float) tag.getDouble("speed") * (float)perkSpeed(heldItem); + float velocity = 2 * (float) tag.getDouble("speed") * (float) perkSpeed(heldItem); BocekArrowEntity arrow = new BocekArrowEntity(player, player.level()); arrow.setBaseDamage(0); diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java index e4c6bb862..41403b797 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java @@ -3,6 +3,7 @@ package net.mcreator.superbwarfare.network.message; import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModSounds; import net.mcreator.superbwarfare.init.ModTags; +import net.mcreator.superbwarfare.tools.GunsTool; import net.minecraft.core.Holder; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; @@ -22,8 +23,8 @@ public class FireModeMessage { this.type = type; } - public FireModeMessage(FriendlyByteBuf buffer) { - this.type = buffer.readInt(); + public static FireModeMessage decode(FriendlyByteBuf buffer) { + return new FireModeMessage(buffer.readInt()); } public static void encode(FireModeMessage message, FriendlyByteBuf buffer) { @@ -95,11 +96,10 @@ public class FireModeMessage { } } - if (mainHandItem.getItem() == ModItems.SENTINEL.get() && !player.isSpectator() && !(player.getCooldowns().isOnCooldown(mainHandItem.getItem())) - && mainHandItem.getOrCreateTag().getInt("gun_reloading_time") == 0 + && GunsTool.getGunIntTag(mainHandItem, "ReloadTime") == 0 && !mainHandItem.getOrCreateTag().getBoolean("sentinel_is_charging")) { int count = 0; diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java index 9d4ada47f..49b4372b3 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java @@ -3,6 +3,7 @@ package net.mcreator.superbwarfare.network.message; import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.network.ModVariables; +import net.mcreator.superbwarfare.tools.GunsTool; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; @@ -57,7 +58,7 @@ public class ReloadMessage { && stack.is(ModTags.Items.GUN) && !stack.getOrCreateTag().getBoolean("sentinel_is_charging") && !(player.getCooldowns().isOnCooldown(stack.getItem())) - && stack.getOrCreateTag().getInt("gun_reloading_time") == 0 + && GunsTool.getGunIntTag(stack, "ReloadTime") == 0 ) { CompoundTag tag = stack.getOrCreateTag(); diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/VehicleFireMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/VehicleFireMessage.java index 40e293114..cdeade6fd 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/VehicleFireMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/VehicleFireMessage.java @@ -2,21 +2,21 @@ package net.mcreator.superbwarfare.network.message; import net.mcreator.superbwarfare.entity.ICannonEntity; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class VehicleFireMessage { + private final int type; public VehicleFireMessage(int type) { this.type = type; } - public VehicleFireMessage(FriendlyByteBuf buffer) { - this.type = buffer.readInt(); + public static VehicleFireMessage decode(FriendlyByteBuf buffer) { + return new VehicleFireMessage(buffer.readInt()); } public static void encode(VehicleFireMessage message, FriendlyByteBuf buffer) { @@ -27,21 +27,19 @@ public class VehicleFireMessage { NetworkEvent.Context context = contextSupplier.get(); context.enqueueWork(() -> { if (context.getSender() != null) { - pressAction(context.getSender(), message.type); + var player = context.getSender(); + Level level = player.level(); + + if (!level.isLoaded(player.blockPosition())) { + return; + } + + if (player.getVehicle() instanceof ICannonEntity entity) { + entity.cannonShoot(player); + } } }); context.setPacketHandled(true); } - public static void pressAction(Player player, int type) { - Level level = player.level(); - - if (!level.isLoaded(player.blockPosition())) { - return; - } - - if (player.getVehicle() instanceof ICannonEntity entity) { - entity.cannonShoot(player); - } - } }