diff --git a/build.gradle b/build.gradle index e08b07c..a21d943 100644 --- a/build.gradle +++ b/build.gradle @@ -91,7 +91,7 @@ configurations { dependencies { implementation "net.neoforged:neoforge:${neo_version}" implementation "curse.maven:curios-1037991:5441959" - runtimeOnly("mezz.jei:jei-1.21-neoforge:19.0.0.7") + runtimeOnly("mezz.jei:jei-1.21-neoforge:${jei_version}") } diff --git a/gradle.properties b/gradle.properties index 9f93eaa..5b6106b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,6 +23,8 @@ neo_version_range=[21.0.10-beta,) loader_version_range=[2,) +jei_version = 19.4.0.28 + mod_id=modular_angelring mod_name=Modular Angel Ring 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 c8d5cfe..b48faca 100644 --- a/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingEvents.java +++ b/src/main/java/com/leclowndu93150/modular_angelring/events/AngelRingEvents.java @@ -66,7 +66,6 @@ public static void stopDrift(PlayerTickEvent.Pre event) { } } - @SubscribeEvent(priority = EventPriority.LOW) public static void newFlightSpeed(PlayerInteractEvent.RightClickItem event) { final float MAX_FLY_SPEED = 0.15F; diff --git a/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java b/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java new file mode 100644 index 0000000..6f3df14 --- /dev/null +++ b/src/main/java/com/leclowndu93150/modular_angelring/networking/KeyPressedPayload.java @@ -0,0 +1,24 @@ +package com.leclowndu93150.modular_angelring.networking; + +import com.leclowndu93150.modular_angelring.AngelRingMain; +import com.leclowndu93150.modular_angelring.render.AngelRingRenderer; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; + +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( + ByteBufCodecs.INT, + KeyPressedPayload::key, + KeyPressedPayload::new + ); + + @Override + public @NotNull Type type() { + return TYPE; + } +} diff --git a/src/main/java/com/leclowndu93150/modular_angelring/networking/NetworkingEvents.java b/src/main/java/com/leclowndu93150/modular_angelring/networking/NetworkingEvents.java new file mode 100644 index 0000000..69e1663 --- /dev/null +++ b/src/main/java/com/leclowndu93150/modular_angelring/networking/NetworkingEvents.java @@ -0,0 +1,16 @@ +package com.leclowndu93150.modular_angelring.networking; + +import com.leclowndu93150.modular_angelring.AngelRingMain; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; + +@EventBusSubscriber(modid = AngelRingMain.MODID, bus = EventBusSubscriber.Bus.MOD) +public final class NetworkingEvents { + @SubscribeEvent + public static void registerPayloads(RegisterPayloadHandlersEvent event) { + PayloadRegistrar registrar = event.registrar(AngelRingMain.MODID); + registrar.playToServer(KeyPressedPayload.TYPE, KeyPressedPayload.STREAM_CODEC, PayloadActions::keyPressedAction); + } +} diff --git a/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java b/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java new file mode 100644 index 0000000..4e6e8b1 --- /dev/null +++ b/src/main/java/com/leclowndu93150/modular_angelring/networking/PayloadActions.java @@ -0,0 +1,20 @@ +package com.leclowndu93150.modular_angelring.networking; + +import com.leclowndu93150.modular_angelring.AngelRingMain; +import com.leclowndu93150.modular_angelring.registry.KeyBindRegistry; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.neoforged.neoforge.network.handling.IPayloadContext; + +public final class PayloadActions { + public static void keyPressedAction(KeyPressedPayload payload, IPayloadContext ctx) { + // SERVER-SIDE + Player player = ctx.player(); + Level level = player.level(); + int key = payload.key(); + if (key == KeyBindRegistry.INERTIA_MODULE.get().getKey().getValue()) { + // do stuff if inertia module key was pressed + System.out.println("Inertia pressed"); + } + } +} 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 88912b3..cf72792 100644 --- a/src/main/java/com/leclowndu93150/modular_angelring/registry/KeyBindRegistry.java +++ b/src/main/java/com/leclowndu93150/modular_angelring/registry/KeyBindRegistry.java @@ -2,6 +2,7 @@ import com.leclowndu93150.modular_angelring.common.AngelRingItem; import com.leclowndu93150.modular_angelring.common.AngelRingModules; +import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload; import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.ChatFormatting; import net.minecraft.client.KeyMapping; @@ -18,6 +19,7 @@ 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; @@ -54,6 +56,8 @@ public static void onKey(InputEvent.Key event) { ItemStack angelRingStack = slotResult.get().stack(); Level level = player.level(); if (INERTIA_MODULE.get().consumeClick() && AngelRingModules.getInertiaModifier(angelRingStack)) { + // Send payload to server + PacketDistributor.sendToServer(new KeyPressedPayload(INERTIA_MODULE.get().getKey().getValue())); inertiaEnabled = !inertiaEnabled; if (inertiaEnabled) { player.displayClientMessage(Component.literal("Inertia Module: Enabled").withStyle(ChatFormatting.GREEN), true);