diff --git a/src/main/java/de/mari_023/pressalttomeow/PressAltToMeow.java b/src/main/java/de/mari_023/pressalttomeow/PressAltToMeow.java index 2dfda85..87063ab 100644 --- a/src/main/java/de/mari_023/pressalttomeow/PressAltToMeow.java +++ b/src/main/java/de/mari_023/pressalttomeow/PressAltToMeow.java @@ -2,8 +2,10 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; @@ -15,19 +17,21 @@ import java.util.WeakHashMap; public class PressAltToMeow implements ModInitializer { - public static final ResourceLocation NETWORK_CHANNEL = new ResourceLocation("pressalttomeow", "m"); private static final WeakHashMap LAST_MEOW = new WeakHashMap<>(); private static final Random RANDOM = new Random(); @Override public void onInitialize() { - ServerPlayNetworking.registerGlobalReceiver(NETWORK_CHANNEL, (server, player, handler, buf, packetSender) -> server.execute(() -> { + PayloadTypeRegistry.playC2S().register(MeowPayload.TYPE, MeowPayload.CODEC); + PayloadTypeRegistry.playS2C().register(MeowPayload.TYPE, MeowPayload.CODEC); + ServerPlayNetworking.registerGlobalReceiver(MeowPayload.TYPE, (payload, context) -> context.player().getServer().execute(() -> { + var player = context.player(); if (!player.isSpectator() && (!LAST_MEOW.containsKey(player) || System.currentTimeMillis() - LAST_MEOW.get(player) > 1000)) { playSound(player, defaultSounds()); LAST_MEOW.put(player, System.currentTimeMillis()); } })); - ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> ServerPlayNetworking.send(handler.player, PressAltToMeow.NETWORK_CHANNEL, PacketByteBufs.create())); + ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> ServerPlayNetworking.send(handler.player, new MeowPayload())); } private static void playSound(ServerPlayer player, SoundEvent soundEvent) { diff --git a/src/main/java/de/mari_023/pressalttomeow/client/PressAltToMeowClient.java b/src/main/java/de/mari_023/pressalttomeow/client/PressAltToMeowClient.java index 6f8fc61..020bfaf 100644 --- a/src/main/java/de/mari_023/pressalttomeow/client/PressAltToMeowClient.java +++ b/src/main/java/de/mari_023/pressalttomeow/client/PressAltToMeowClient.java @@ -1,14 +1,17 @@ package de.mari_023.pressalttomeow.client; import com.mojang.blaze3d.platform.InputConstants; +import de.mari_023.pressalttomeow.MeowPayload; import de.mari_023.pressalttomeow.PressAltToMeow; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.sounds.SoundSource; import org.lwjgl.glfw.GLFW; @@ -23,13 +26,13 @@ public void onInitializeClient() { ClientTickEvents.END_CLIENT_TICK.register(client -> { while (keyBinding.consumeClick()) { if (System.currentTimeMillis() - LAST_MEOW > 1000) { - if (isOnServer) ClientPlayNetworking.send(PressAltToMeow.NETWORK_CHANNEL, PacketByteBufs.create()); + if (isOnServer) ClientPlayNetworking.send(new MeowPayload()); else meow(); LAST_MEOW = System.currentTimeMillis(); } } }); - ClientPlayNetworking.registerGlobalReceiver(PressAltToMeow.NETWORK_CHANNEL, (client, handler, buf, packetSender) -> isOnServer = true); + ClientPlayNetworking.registerGlobalReceiver(MeowPayload.TYPE, (payload, context) -> isOnServer = true); } private void meow() {