From b20fda2546acef5768589b655c7094abf7bb928d Mon Sep 17 00:00:00 2001 From: thepigcat Date: Thu, 18 Jul 2024 22:26:01 +0200 Subject: [PATCH] fix server issues --- build.gradle | 2 +- gradle.properties | 2 +- .../events/AngelRingClientEvents.java | 66 +++++++++++++++++++ .../events/AngelRingEvents.java | 13 +++- .../networking/KeyPressedPayload.java | 3 + .../networking/PayloadActions.java | 4 +- .../registry/KeyBindRegistry.java | 55 +--------------- 7 files changed, 84 insertions(+), 61 deletions(-) create mode 100644 src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingClientEvents.java diff --git a/build.gradle b/build.gradle index a21d943..01ceba2 100644 --- a/build.gradle +++ b/build.gradle @@ -90,7 +90,7 @@ configurations { dependencies { implementation "net.neoforged:neoforge:${neo_version}" - implementation "curse.maven:curios-1037991:5441959" + implementation "curse.maven:curios-1037991:5476603" runtimeOnly("mezz.jei:jei-1.21-neoforge:${jei_version}") } diff --git a/gradle.properties b/gradle.properties index d32fcaf..efb4b1a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,7 +31,7 @@ mod_name=Modular Angel Ring mod_license=All Rights Reserved -mod_version=1.0.5 +mod_version=1.0.6 mod_group_id=com.leclowndu93150.modular_angelring diff --git a/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingClientEvents.java b/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingClientEvents.java new file mode 100644 index 0000000..2db9234 --- /dev/null +++ b/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingClientEvents.java @@ -0,0 +1,66 @@ +package com.leclowndu93150.modular_angelring.events; + +import com.leclowndu93150.modular_angelring.AngelRingMain; +import com.leclowndu93150.modular_angelring.common.AngelRingModules; +import com.leclowndu93150.modular_angelring.common.EnabledModifiersComponent; +import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload; +import com.leclowndu93150.modular_angelring.registry.DataComponentRegistry; +import com.leclowndu93150.modular_angelring.registry.ItemRegistry; +import com.leclowndu93150.modular_angelring.registry.KeyBindRegistry; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.InputEvent; +import net.neoforged.neoforge.network.PacketDistributor; +import top.theillusivec4.curios.api.CuriosApi; +import top.theillusivec4.curios.api.SlotResult; + +import java.util.Optional; + +@EventBusSubscriber(modid = AngelRingMain.MODID, value = Dist.CLIENT) +public class AngelRingClientEvents { + @SubscribeEvent + public static void onKey(InputEvent.Key event) { + Player player = Minecraft.getInstance().player; + if (player == null) return; + Optional slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get())); + if (slotResult.isPresent()) { + ItemStack angelRingStack = slotResult.get().stack(); + EnabledModifiersComponent data = angelRingStack.getOrDefault(DataComponentRegistry.MODIFIERS_ENABLED, EnabledModifiersComponent.EMPTY); + Level level = player.level(); + if (KeyBindRegistry.INERTIA_MODULE.get().consumeClick() && AngelRingModules.getInertiaModifier(angelRingStack)) { + PacketDistributor.sendToServer(new KeyPressedPayload(0)); + // Needs to be inverted, since the data component has not yet synced to the client + if (!data.inertiaEnabled()) { + player.displayClientMessage(Component.literal("Inertia Module: Enabled").withStyle(ChatFormatting.GREEN), true); + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f); + } else { + player.displayClientMessage(Component.literal("Inertia Module: Disabled").withStyle(ChatFormatting.RED), true); + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.09f); + } + + } + + if (KeyBindRegistry.SPEED_MODULE.get().consumeClick() && angelRingStack.has(DataComponentRegistry.SPEED_MODIFIER)) { + PacketDistributor.sendToServer(new KeyPressedPayload(1)); + // Needs to be inverted, since the data component has not yet synced to the client + if (!data.speedModifierEnabled()) { + player.displayClientMessage(Component.literal("Speed Module: Enabled").withStyle(ChatFormatting.GREEN), true); + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f); + } else { + player.displayClientMessage(Component.literal("Speed Module: Disabled").withStyle(ChatFormatting.RED), true); + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.09f); + } + } + } + + } +} diff --git a/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingEvents.java b/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingEvents.java index 1689243..7fdddc3 100644 --- a/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingEvents.java +++ b/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingEvents.java @@ -2,24 +2,31 @@ import com.leclowndu93150.modular_angelring.AngelRingMain; import com.leclowndu93150.modular_angelring.common.AngelRingItem; +import com.leclowndu93150.modular_angelring.common.AngelRingModules; import com.leclowndu93150.modular_angelring.common.EnabledModifiersComponent; +import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload; import com.leclowndu93150.modular_angelring.networking.PayloadActions; import com.leclowndu93150.modular_angelring.registry.DataComponentRegistry; import com.leclowndu93150.modular_angelring.registry.ItemRegistry; +import com.leclowndu93150.modular_angelring.registry.KeyBindRegistry; import com.leclowndu93150.modular_angelring.utils.FlightSpeedPercentage; import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.InputEvent; import net.neoforged.neoforge.event.entity.player.PlayerEvent; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; import net.neoforged.neoforge.event.tick.PlayerTickEvent; +import net.neoforged.neoforge.network.PacketDistributor; import top.theillusivec4.curios.api.CuriosApi; import top.theillusivec4.curios.api.SlotResult; @@ -29,7 +36,7 @@ @EventBusSubscriber(modid = AngelRingMain.MODID) public class AngelRingEvents { - @SubscribeEvent(priority = EventPriority.LOW) + @SubscribeEvent public static void setRingBreakSpeed(PlayerEvent.BreakSpeed event) { Player player = event.getEntity(); Optional slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get())); @@ -45,7 +52,7 @@ public static void setRingBreakSpeed(PlayerEvent.BreakSpeed event) { } } - @SubscribeEvent(priority = EventPriority.LOW) + @SubscribeEvent public static void stopDrift(PlayerTickEvent.Pre event) { Player player = event.getEntity(); Optional slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get())); @@ -63,7 +70,7 @@ public static void stopDrift(PlayerTickEvent.Pre event) { } } - @SubscribeEvent(priority = EventPriority.LOW) + @SubscribeEvent public static void onPlayerTick(PlayerTickEvent.Pre event) { AngelRingItem.tickPlayer(event.getEntity()); } diff --git a/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java b/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java index 0e5de29..9d6855c 100644 --- a/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java +++ b/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java @@ -8,6 +8,9 @@ import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.NotNull; +/** + * @param key 0 = inertia, 1 = speed + */ public record KeyPressedPayload(int key) implements CustomPacketPayload { public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(AngelRingMain.MODID, "keypressed_payload")); public static final StreamCodec STREAM_CODEC = StreamCodec.composite( diff --git a/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java b/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java index 04386c3..79692e3 100644 --- a/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java +++ b/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java @@ -27,10 +27,10 @@ public static void keyPressedAction(KeyPressedPayload payload, IPayloadContext c if (slotResult.isPresent()) { ItemStack itemStack = slotResult.get().stack(); EnabledModifiersComponent data = itemStack.getOrDefault(DataComponentRegistry.MODIFIERS_ENABLED, EnabledModifiersComponent.EMPTY); - if (key == KeyBindRegistry.INERTIA_MODULE.get().getKey().getValue()) { + if (key == 0) { itemStack.set(DataComponentRegistry.MODIFIERS_ENABLED, new EnabledModifiersComponent(!data.inertiaEnabled(), data.speedModifierEnabled(), data.miningEnabled())); - } else if (key == KeyBindRegistry.SPEED_MODULE.get().getKey().getValue()) { + } else if (key == 1) { itemStack.set(DataComponentRegistry.MODIFIERS_ENABLED, new EnabledModifiersComponent(data.inertiaEnabled(), !data.speedModifierEnabled(), data.miningEnabled())); } diff --git a/src/main/java/com/leclowndu93150/modular_angelring/registry/KeyBindRegistry.java b/src/main/java/com/leclowndu93150/modular_angelring/registry/KeyBindRegistry.java index f903123..a343634 100644 --- a/src/main/java/com/leclowndu93150/modular_angelring/registry/KeyBindRegistry.java +++ b/src/main/java/com/leclowndu93150/modular_angelring/registry/KeyBindRegistry.java @@ -1,36 +1,21 @@ package com.leclowndu93150.modular_angelring.registry; -import com.leclowndu93150.modular_angelring.common.AngelRingModules; -import com.leclowndu93150.modular_angelring.common.EnabledModifiersComponent; -import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload; import com.leclowndu93150.modular_angelring.networking.NoKeyPressedPayload; import com.leclowndu93150.modular_angelring.networking.PayloadActions; import com.mojang.blaze3d.platform.InputConstants; -import net.minecraft.ChatFormatting; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.client.event.ClientTickEvent; -import net.neoforged.neoforge.client.event.InputEvent; import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; -import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.util.Lazy; import net.neoforged.neoforge.network.PacketDistributor; import org.lwjgl.glfw.GLFW; -import top.theillusivec4.curios.api.CuriosApi; -import top.theillusivec4.curios.api.SlotResult; - -import java.util.Optional; import static com.leclowndu93150.modular_angelring.AngelRingMain.MODID; @@ -42,52 +27,14 @@ public class KeyBindRegistry { public static final Lazy SPEED_MODULE = Lazy.of(() -> new KeyMapping( "Speed Module", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_K, "Modular Angel Ring")); - @SubscribeEvent public static void registerBindings(RegisterKeyMappingsEvent event) { event.register(SPEED_MODULE.get()); event.register(INERTIA_MODULE.get()); - NeoForge.EVENT_BUS.addListener(KeyBindRegistry::onKey); - } - - public static void onKey(InputEvent.Key event) { - Player player = Minecraft.getInstance().player; - if (player == null) return; - Optional slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get())); - if (slotResult.isPresent()) { - ItemStack angelRingStack = slotResult.get().stack(); - EnabledModifiersComponent data = angelRingStack.getOrDefault(DataComponentRegistry.MODIFIERS_ENABLED, EnabledModifiersComponent.EMPTY); - Level level = player.level(); - if (INERTIA_MODULE.get().consumeClick() && AngelRingModules.getInertiaModifier(angelRingStack)) { - PacketDistributor.sendToServer(new KeyPressedPayload(INERTIA_MODULE.get().getKey().getValue())); - // Needs to be inverted, since the data component has not yet synced to the client - if (!data.inertiaEnabled()) { - player.displayClientMessage(Component.literal("Inertia Module: Enabled").withStyle(ChatFormatting.GREEN), true); - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f); - } else { - player.displayClientMessage(Component.literal("Inertia Module: Disabled").withStyle(ChatFormatting.RED), true); - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.09f); - } - - } - - if (SPEED_MODULE.get().consumeClick() && angelRingStack.has(DataComponentRegistry.SPEED_MODIFIER)) { - PacketDistributor.sendToServer(new KeyPressedPayload(SPEED_MODULE.get().getKey().getValue())); - // Needs to be inverted, since the data component has not yet synced to the client - if (!data.speedModifierEnabled()) { - player.displayClientMessage(Component.literal("Speed Module: Enabled").withStyle(ChatFormatting.GREEN), true); - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f); - } else { - player.displayClientMessage(Component.literal("Speed Module: Disabled").withStyle(ChatFormatting.RED), true); - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.09f); - } - } - } - } @EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.GAME, value = Dist.CLIENT) - public static class clientGameStuff { + public static class Client { @SubscribeEvent public static void clientTick(ClientTickEvent.Post event) { Minecraft mc = Minecraft.getInstance();