From 8cc0424d464aa744dc0cf7fbbfcd2fe93d2d36e4 Mon Sep 17 00:00:00 2001 From: Tschipp <11649893+Tschipp@users.noreply.github.com> Date: Fri, 28 Jun 2024 13:02:53 +0200 Subject: [PATCH] 1.20.6 works, except for forge --- .../java/tschipp/carryon/CarryOnCommon.java | 18 ++---- .../carryon/common/carry/CarryOnData.java | 4 ++ .../common/carry/CarryOnDataManager.java | 18 +++--- .../tschipp/carryon/mixin/InventoryMixin.java | 2 + .../tschipp/carryon/mixin/MinecraftMixin.java | 2 +- .../tschipp/carryon/mixin/PlayerMixin.java | 36 ++++++++++- .../carryon/networking/PacketBase.java | 10 ++-- .../ClientboundStartRidingPacket.java | 24 ++++---- .../ClientboundSyncCarryDataPacket.java | 6 ++ .../ClientboundSyncScriptsPacket.java | 25 ++++---- .../ServerboundCarryKeyPressedPacket.java | 24 ++++---- .../platform/services/IPlatformHelper.java | 7 ++- .../carryon/CarryOnFabricClientMod.java | 19 +++--- .../carryon/mixin/LevelRendererMixin.java | 7 ++- .../platform/FabricPlatformHelper.java | 30 ++++++---- Forge/build.gradle | 8 +-- .../config/forge/ConfigLoaderImpl.java | 32 +++++----- .../tschipp/carryon/events/ClientEvents.java | 6 +- .../carryon/events/ModClientEvents.java | 3 +- .../carryon/platform/ForgePlatformHelper.java | 23 +++---- .../java/tschipp/carryon/CarryOnNeoForge.java | 9 ++- .../config/neoforge/ConfigLoaderImpl.java | 34 ++++++----- .../tschipp/carryon/events/ClientEvents.java | 17 +++--- .../tschipp/carryon/events/CommonEvents.java | 23 +++---- .../tschipp/carryon/events/ModBusEvents.java | 5 +- .../carryon/events/ModClientEvents.java | 3 +- .../platform/NeoForgePlatformHelper.java | 60 +++++++------------ .../{mods.toml => neoforge.mods.toml} | 0 build.gradle | 2 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 4 ++ 32 files changed, 249 insertions(+), 216 deletions(-) create mode 100644 Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncCarryDataPacket.java rename NeoForge/src/main/resources/META-INF/{mods.toml => neoforge.mods.toml} (100%) diff --git a/Common/src/main/java/tschipp/carryon/CarryOnCommon.java b/Common/src/main/java/tschipp/carryon/CarryOnCommon.java index 4d4ff8a..5ae81f7 100644 --- a/Common/src/main/java/tschipp/carryon/CarryOnCommon.java +++ b/Common/src/main/java/tschipp/carryon/CarryOnCommon.java @@ -58,11 +58,9 @@ public class CarryOnCommon public static void registerServerPackets(Object... args) { Services.PLATFORM.registerServerboundPacket( - Constants.PACKET_ID_KEY_PRESSED, - 0, + ServerboundCarryKeyPressedPacket.TYPE, ServerboundCarryKeyPressedPacket.class, - ServerboundCarryKeyPressedPacket::write, - ServerboundCarryKeyPressedPacket::new, + ServerboundCarryKeyPressedPacket.CODEC, ServerboundCarryKeyPressedPacket::handle, args ); @@ -71,21 +69,17 @@ public class CarryOnCommon public static void registerClientPackets(Object... args) { Services.PLATFORM.registerClientboundPacket( - Constants.PACKET_ID_START_RIDING, - 1, + ClientboundStartRidingPacket.TYPE, ClientboundStartRidingPacket.class, - ClientboundStartRidingPacket::write, - ClientboundStartRidingPacket::new, + ClientboundStartRidingPacket.CODEC, ClientboundStartRidingPacket::handle, args ); Services.PLATFORM.registerClientboundPacket( - Constants.PACKET_ID_SYNC_SCRIPTS, - 2, + ClientboundSyncScriptsPacket.TYPE, ClientboundSyncScriptsPacket.class, - ClientboundSyncScriptsPacket::write, - ClientboundSyncScriptsPacket::new, + ClientboundSyncScriptsPacket.CODEC, ClientboundSyncScriptsPacket::handle, args ); diff --git a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java index 590e876..c6e3d00 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java @@ -202,6 +202,10 @@ public class CarryOnData { this.activeScript = null; } + public CarryOnData clone() { + return new CarryOnData(nbt.copy()); + } + public int getTick() { if(!this.nbt.contains("tick")) diff --git a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java index 5cb9f1a..10d7fa2 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java @@ -28,21 +28,21 @@ import net.minecraft.world.entity.player.Player; public class CarryOnDataManager { - public static final EntityDataAccessor CARRY_DATA_KEY = SynchedEntityData.defineId(Player.class, EntityDataSerializers.COMPOUND_TAG); - - public static CarryOnData getCarryData(Player player) { - CompoundTag data = player.getEntityData().get(CARRY_DATA_KEY); - return new CarryOnData(data.copy()); + return ((ICarrying)player).getCarryOnData(); } public static void setCarryData(Player player, CarryOnData data) { - data.setSelected(player.getInventory().selected); - CompoundTag nbt = data.getNbt(); - nbt.putInt("tick", player.tickCount); - player.getEntityData().set(CARRY_DATA_KEY, nbt); + ((ICarrying)player).setCarryOnData(data); + } + + public interface ICarrying { + + void setCarryOnData(CarryOnData data); + + CarryOnData getCarryOnData(); } } diff --git a/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java b/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java index c8e7a7c..ef70295 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java @@ -29,6 +29,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; @@ -38,6 +39,7 @@ import tschipp.carryon.common.carry.CarryOnDataManager; @Mixin(Inventory.class) public class InventoryMixin { + @Unique private static final ItemStack DUMMY_STACK = new ItemStack(Blocks.COBBLESTONE, 1); @Shadow diff --git a/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java b/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java index d51b5e3..36cf776 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java @@ -20,7 +20,7 @@ package tschipp.carryon.mixin; -import com.llamalad7.mixinextras.injector.WrapWithCondition; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Inventory; import org.spongepowered.asm.mixin.Mixin; diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java index 4fc0341..4a7458a 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java @@ -22,12 +22,17 @@ package tschipp.carryon.mixin; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -35,17 +40,42 @@ import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; @Mixin(Player.class) -public abstract class PlayerMixin extends LivingEntity { +public abstract class PlayerMixin extends LivingEntity implements CarryOnDataManager.ICarrying { + + @Unique + private static final EntityDataAccessor CARRY_DATA_KEY = SynchedEntityData.defineId(Player.class, EntityDataSerializers.COMPOUND_TAG); + + @Override + public void setCarryOnData(CarryOnData data) + { + data.setSelected(this.getInventory().selected); + CompoundTag nbt = data.getNbt(); + nbt.putInt("tick", tickCount); + this.getEntityData().set(CARRY_DATA_KEY, nbt); + } + + @Override + public CarryOnData getCarryOnData() + { + CompoundTag data = this.getEntityData().get(CARRY_DATA_KEY); + return new CarryOnData(data.copy()); + } + + @Shadow + public abstract Inventory getInventory(); + private PlayerMixin(EntityType type, Level level) { super(type, level); } + @Inject(method = "defineSynchedData(Lnet/minecraft/network/syncher/SynchedEntityData$Builder;)V", at = @At("RETURN")) private void onDefineSynchedData(SynchedEntityData.Builder builder, CallbackInfo ci) { - builder.define(CarryOnDataManager.CARRY_DATA_KEY, new CompoundTag()); + builder.define(CARRY_DATA_KEY, new CompoundTag()); } + @Inject(method = "addAdditionalSaveData(Lnet/minecraft/nbt/CompoundTag;)V", at = @At("RETURN")) private void onAddAdditionalSaveData(CompoundTag tag, CallbackInfo info) { @@ -58,7 +88,7 @@ public abstract class PlayerMixin extends LivingEntity { { if (tag.contains("CarryOnData")) { CarryOnData data = new CarryOnData(tag.getCompound("CarryOnData")); - CarryOnDataManager.setCarryData((Player) (Object) this, data); + setCarryOnData(data); } } diff --git a/Common/src/main/java/tschipp/carryon/networking/PacketBase.java b/Common/src/main/java/tschipp/carryon/networking/PacketBase.java index 13f4f81..f43a452 100644 --- a/Common/src/main/java/tschipp/carryon/networking/PacketBase.java +++ b/Common/src/main/java/tschipp/carryon/networking/PacketBase.java @@ -21,14 +21,14 @@ package tschipp.carryon.networking; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -public interface PacketBase -{ - void write(FriendlyByteBuf buf); +public interface PacketBase extends CustomPacketPayload { void handle(Player player); - - ResourceLocation id(); } diff --git a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java index 54ab354..7cac4e4 100644 --- a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java @@ -21,6 +21,10 @@ package tschipp.carryon.networking.clientbound; import net.minecraft.network.FriendlyByteBuf; +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 net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; @@ -29,17 +33,13 @@ import tschipp.carryon.networking.PacketBase; public record ClientboundStartRidingPacket(int iden, boolean ride) implements PacketBase { - public ClientboundStartRidingPacket(FriendlyByteBuf buf) - { - this(buf.readInt(), buf.readBoolean()); - } + public static final StreamCodec CODEC = StreamCodec.composite( + ByteBufCodecs.INT, ClientboundStartRidingPacket::iden, + ByteBufCodecs.BOOL, ClientboundStartRidingPacket::ride, + ClientboundStartRidingPacket::new + ); - @Override - public void write(FriendlyByteBuf buf) - { - buf.writeInt(iden); - buf.writeBoolean(ride); - } + public static final CustomPacketPayload.Type TYPE = new Type<>(Constants.PACKET_ID_START_RIDING); @Override public void handle(Player player) @@ -53,7 +53,7 @@ public record ClientboundStartRidingPacket(int iden, boolean ride) implements Pa } @Override - public ResourceLocation id() { - return Constants.PACKET_ID_START_RIDING; + public Type type() { + return TYPE; } } diff --git a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncCarryDataPacket.java b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncCarryDataPacket.java new file mode 100644 index 0000000..ba3cec7 --- /dev/null +++ b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncCarryDataPacket.java @@ -0,0 +1,6 @@ +package tschipp.carryon.networking.clientbound; + +import tschipp.carryon.common.carry.CarryOnData; + +public record ClientboundSyncCarryDataPacket(CarryOnData data) { +} diff --git a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java index ecac63f..727db6f 100644 --- a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java @@ -26,6 +26,11 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import tschipp.carryon.Constants; @@ -37,18 +42,12 @@ import java.util.List; public record ClientboundSyncScriptsPacket(Tag serialized) implements PacketBase { - public ClientboundSyncScriptsPacket(FriendlyByteBuf buf) - { - this(buf.readNbt().get("data")); - } + public static final StreamCodec CODEC = StreamCodec.composite( + ByteBufCodecs.TAG, ClientboundSyncScriptsPacket::serialized, + ClientboundSyncScriptsPacket::new + ); - @Override - public void write(FriendlyByteBuf buf) - { - CompoundTag tag = new CompoundTag(); - tag.put("data", serialized); - buf.writeNbt(tag); - } + public static final CustomPacketPayload.Type TYPE = new Type<>(Constants.PACKET_ID_SYNC_SCRIPTS); @Override public void handle(Player player) @@ -60,7 +59,7 @@ public record ClientboundSyncScriptsPacket(Tag serialized) implements PacketBase } @Override - public ResourceLocation id() { - return Constants.PACKET_ID_SYNC_SCRIPTS; + public Type type() { + return TYPE; } } diff --git a/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java b/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java index 76df3c6..460d418 100644 --- a/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java @@ -21,6 +21,10 @@ package tschipp.carryon.networking.serverbound; import net.minecraft.network.FriendlyByteBuf; +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 net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -28,19 +32,17 @@ import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; import tschipp.carryon.networking.PacketBase; +import tschipp.carryon.networking.clientbound.ClientboundStartRidingPacket; +import tschipp.carryon.networking.clientbound.ClientboundSyncScriptsPacket; public record ServerboundCarryKeyPressedPacket(boolean pressed) implements PacketBase { - public ServerboundCarryKeyPressedPacket(FriendlyByteBuf buf) - { - this(buf.readBoolean()); - } + public static final StreamCodec CODEC = StreamCodec.composite( + ByteBufCodecs.BOOL, ServerboundCarryKeyPressedPacket::pressed, + ServerboundCarryKeyPressedPacket::new + ); - @Override - public void write(FriendlyByteBuf buf) - { - buf.writeBoolean(pressed); - } + public static final CustomPacketPayload.Type TYPE = new Type<>(Constants.PACKET_ID_KEY_PRESSED); @Override public void handle(Player player) @@ -51,7 +53,7 @@ public record ServerboundCarryKeyPressedPacket(boolean pressed) implements Packe } @Override - public ResourceLocation id() { - return Constants.PACKET_ID_KEY_PRESSED; + public Type type() { + return TYPE; } } diff --git a/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java b/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java index fe0dc2f..71fe051 100644 --- a/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java +++ b/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java @@ -22,6 +22,9 @@ package tschipp.carryon.platform.services; import net.minecraft.core.HolderLookup; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -57,9 +60,9 @@ public interface IPlatformHelper { void registerConfig(BuiltConfig cfg); - void registerServerboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args); + void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args); - void registerClientboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args); + void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args); void sendPacketToServer(ResourceLocation id, PacketBase packet); diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java index 874be86..8577598 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java @@ -24,7 +24,11 @@ import net.fabricmc.api.ClientModInitializer; 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.ServerPlayNetworking; +import net.minecraft.core.RegistryAccess; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import tschipp.carryon.client.keybinds.CarryOnKeybinds; @@ -44,19 +48,16 @@ public class CarryOnFabricClientMod implements ClientModInitializer CarryOnCommon.registerClientPackets(); } - public static void sendPacketToServer(ResourceLocation id, PacketBase packet) + public static void sendPacketToServer(PacketBase packet) { - FriendlyByteBuf buf = PacketByteBufs.create(); - packet.write(buf); - ClientPlayNetworking.send(id, buf); + ClientPlayNetworking.send(packet); } - public static void registerClientboundPacket(ResourceLocation id, Function reader, BiConsumer handler) + public static void registerClientboundPacket(CustomPacketPayload.Type id, BiConsumer handler) { - ClientPlayNetworking.registerGlobalReceiver(id, (client, packetHandler, buf, responseSender) -> { - T packet = reader.apply(buf); - client.execute(() -> { - handler.accept(packet, client.player); + ClientPlayNetworking.registerGlobalReceiver(id, (T packet, ClientPlayNetworking.Context context) -> { + context.client().execute(() -> { + handler.accept(packet, context.player()); }); }); } diff --git a/Fabric/src/main/java/tschipp/carryon/mixin/LevelRendererMixin.java b/Fabric/src/main/java/tschipp/carryon/mixin/LevelRendererMixin.java index 970d9db..3005b58 100644 --- a/Fabric/src/main/java/tschipp/carryon/mixin/LevelRendererMixin.java +++ b/Fabric/src/main/java/tschipp/carryon/mixin/LevelRendererMixin.java @@ -20,6 +20,7 @@ package tschipp.carryon.mixin; +import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Camera; import net.minecraft.client.renderer.GameRenderer; @@ -35,9 +36,9 @@ import tschipp.carryon.client.render.CarriedObjectRender; @Mixin(LevelRenderer.class) public class LevelRendererMixin { - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V"), method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V") - private void onRenderLevel(PoseStack poseStack, float f, long l, boolean bl, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f matrix4f, CallbackInfo ci) + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleEngine;render(Lnet/minecraft/client/renderer/LightTexture;Lnet/minecraft/client/Camera;F)V"), method = "renderLevel(FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V") + private void onRenderLevel(float partialTick, long nanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f frustumMatrix, Matrix4f projectionMatrix, CallbackInfo ci, @Local PoseStack poseStack) { - CarriedObjectRender.drawThirdPerson(gameRenderer.getMinecraft().getFrameTime(), poseStack); + CarriedObjectRender.drawThirdPerson(gameRenderer.getMinecraft().getFrameTime(), poseStack.last().pose()); } } diff --git a/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java b/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java index 6b56e29..8ea3894 100644 --- a/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java +++ b/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java @@ -21,9 +21,16 @@ package tschipp.carryon.platform; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.PlayPayloadHandler; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.codec.StreamDecoder; +import net.minecraft.network.codec.StreamMemberEncoder; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -61,33 +68,34 @@ public class FabricPlatformHelper implements IPlatformHelper { } @Override - public void registerServerboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args) + public void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { - ServerPlayNetworking.registerGlobalReceiver(id, (server, player, packetHandler, buf, responseSender) -> { - T packet = reader.apply(buf); - server.execute(() -> { - handler.accept(packet, player); + PayloadTypeRegistry.playC2S().register(type, (StreamCodec)codec); + + ServerPlayNetworking.registerGlobalReceiver(type, (T packet, ServerPlayNetworking.Context context) -> { + context.server().execute(() -> { + handler.accept(packet, context.player()); }); }); } @Override - public void registerClientboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args) + public void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { - CarryOnFabricClientMod.registerClientboundPacket(id, reader, handler); + PayloadTypeRegistry.playS2C().register(type, (StreamCodec)codec); + + CarryOnFabricClientMod.registerClientboundPacket(type, handler); } @Override public void sendPacketToServer(ResourceLocation id, PacketBase packet) { - CarryOnFabricClientMod.sendPacketToServer(id, packet); + CarryOnFabricClientMod.sendPacketToServer(packet); } @Override public void sendPacketToPlayer(ResourceLocation id, PacketBase packet, ServerPlayer player) { - FriendlyByteBuf buf = PacketByteBufs.create(); - packet.write(buf); - ServerPlayNetworking.send(player, id, buf); + ServerPlayNetworking.send(player, packet); } } diff --git a/Forge/build.gradle b/Forge/build.gradle index 74d3553..c25d8a4 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -102,10 +102,10 @@ repositories { dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" compileOnly project(":Common") - implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}")) - implementation(jarJar("io.github.llamalad7:mixinextras-forge:${mixinextras_version}")) { - jarJar.ranged(it, "[${mixinextras_version},)") - } + compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}")) + runtimeOnly(annotationProcessor("io.github.llamalad7:mixinextras-forge:${mixinextras_version}")) + jarJar(group: 'io.github.llamalad7', name: 'mixinextras-forge', version: "[${mixinextras_version},)") + //implementation fg.deobf("net.darkhax.gamestages:GameStages-Forge-1.19.2:11.0.2") //implementation fg.deobf("net.darkhax.bookshelf:Bookshelf-Forge-1.19.3:17.0.2") annotationProcessor 'org.spongepowered:mixin:0.8.5-SNAPSHOT:processor' diff --git a/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java b/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java index fbdcfba..acc76c4 100644 --- a/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java +++ b/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java @@ -61,26 +61,26 @@ public class ConfigLoaderImpl { public static void onConfigLoad(ModConfigEvent.Loading loading) { loadConfig(loading.getConfig().getSpec()); - - DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { - ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); - }); - - DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { - ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); - }); +// +// DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { +// ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); +// }); +// +// DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { +// ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); +// }); } public static void onConfigReload(ModConfigEvent.Reloading loading) { loadConfig(loading.getConfig().getSpec()); - - DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { - ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); - }); - - DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { - ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); - }); +// +// DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { +// ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); +// }); +// +// DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { +// ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); +// }); } private static void loadConfig(IConfigSpec spec) { diff --git a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java index 7a13762..6eb97d3 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -42,10 +42,9 @@ import tschipp.carryon.client.render.CarryRenderHelper; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, modid = Constants.MOD_ID, value = Dist.CLIENT) +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, modid = Constants.MOD_ID) public class ClientEvents { - @OnlyIn(Dist.CLIENT) @SubscribeEvent public static void renderHand(RenderHandEvent event) { @@ -59,7 +58,6 @@ public class ClientEvents { event.setCanceled(true); } - @OnlyIn(Dist.CLIENT) @SubscribeEvent public static void onRenderLevel(RenderLevelStageEvent event) { @@ -67,7 +65,6 @@ public class ClientEvents { CarriedObjectRender.drawThirdPerson(event.getPartialTick(), event.getPoseStack()); } - @OnlyIn(Dist.CLIENT) @SubscribeEvent public static void onGuiInit(ScreenEvent.Init.Pre event) { @@ -91,7 +88,6 @@ public class ClientEvents { } } - @OnlyIn(Dist.CLIENT) @SubscribeEvent public static void onClientTick(ClientTickEvent.Post event) { diff --git a/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java index 04464cd..4524ddf 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java @@ -29,10 +29,9 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import tschipp.carryon.Constants; import tschipp.carryon.client.keybinds.CarryOnKeybinds; -@Mod.EventBusSubscriber(bus = Bus.MOD, modid = Constants.MOD_ID, value = Dist.CLIENT) +@Mod.EventBusSubscriber(bus = Bus.MOD, modid = Constants.MOD_ID) public class ModClientEvents { - @OnlyIn(Dist.CLIENT) @SubscribeEvent public static void registerKeybinds(RegisterKeyMappingsEvent event) { diff --git a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java index e178808..0d67a3d 100644 --- a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java +++ b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java @@ -21,6 +21,9 @@ package tschipp.carryon.platform; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -65,10 +68,10 @@ public class ForgePlatformHelper implements IPlatformHelper { } @Override - public void registerServerboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args) + public void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { BiConsumer serverHandler = (packet, ctx) -> { - if(ctx.getDirection().getReceptionSide().isServer()) + if(ctx.isServerSide()) { ctx.setPacketHandled(true); ctx.enqueueWork(() -> { @@ -77,18 +80,14 @@ public class ForgePlatformHelper implements IPlatformHelper { } }; - CarryOnForge.network.messageBuilder(clazz, numericalId, NetworkDirection.PLAY_TO_SERVER) - .encoder(writer) - .decoder(reader) - .consumerMainThread(serverHandler) - .add(); + CarryOnForge.network.messageBuilder(clazz).codec((StreamCodec) codec).consumerMainThread(serverHandler).add(); } @Override - public void registerClientboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args) + public void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { BiConsumer clientHandler = (packet, ctx) -> { - if(ctx.getDirection().getReceptionSide().isClient()) + if(ctx.isClientSide()) { ctx.setPacketHandled(true); ctx.enqueueWork(() -> { @@ -97,11 +96,7 @@ public class ForgePlatformHelper implements IPlatformHelper { } }; - CarryOnForge.network.messageBuilder(clazz, numericalId, NetworkDirection.PLAY_TO_CLIENT) - .encoder(writer) - .decoder(reader) - .consumerMainThread(clientHandler) - .add(); + CarryOnForge.network.messageBuilder(clazz).codec((StreamCodec)codec).consumerMainThread(clientHandler).add(); } diff --git a/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java b/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java index bce669f..96fafa2 100644 --- a/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java +++ b/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java @@ -25,8 +25,8 @@ import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent; -import net.neoforged.neoforge.network.registration.IPayloadRegistrar; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; import tschipp.carryon.config.neoforge.ConfigLoaderImpl; @Mod(Constants.MOD_ID) @@ -49,10 +49,9 @@ public class CarryOnNeoForge { { } - public void registerPackets(final RegisterPayloadHandlerEvent event) { + public void registerPackets(final RegisterPayloadHandlersEvent event) { - final IPayloadRegistrar registrar = event.registrar(Constants.MOD_ID) - .versioned("1.0.0"); + final PayloadRegistrar registrar = event.registrar("1.0.0"); CarryOnCommon.registerServerPackets(registrar); CarryOnCommon.registerClientPackets(registrar); diff --git a/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java b/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java index 02638c5..27a0d3f 100644 --- a/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java +++ b/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java @@ -26,20 +26,21 @@ import net.minecraft.client.Minecraft; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.DistExecutor; import net.neoforged.fml.ModLoadingContext; +import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.fml.config.IConfigSpec; import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.event.config.ModConfigEvent; import net.neoforged.neoforge.common.ModConfigSpec; import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import tschipp.carryon.Constants; import tschipp.carryon.config.*; import java.util.*; -@Mod.EventBusSubscriber(modid = Constants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = Constants.MOD_ID, bus = EventBusSubscriber.Bus.MOD) public class ConfigLoaderImpl { public static final Map CONFIGS = new HashMap<>(); @@ -57,24 +58,25 @@ public class ConfigLoaderImpl { @SubscribeEvent public static void onConfigLoad(ModConfigEvent.Loading loading) { loadConfig(loading.getConfig().getSpec()); - DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { - ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); - }); - DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { - ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); - }); +// DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { +// ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); +// }); +// +// DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { +// ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); +// }); } @SubscribeEvent public static void onConfigReload(ModConfigEvent.Reloading loading) { - loadConfig(loading.getConfig().getSpec()); - DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { - ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); - }); - - DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { - ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); - }); + loadConfig(loading.getConfig().getSpec()); +// DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> () -> { +// ConfigLoader.onConfigLoaded(Minecraft.getInstance().level.registryAccess()); +// }); +// +// DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> { +// ConfigLoader.onConfigLoaded(ServerLifecycleHooks.getCurrentServer().registryAccess()); +// }); } private static void loadConfig(IConfigSpec spec) { diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java index b923e2e..9f8b63b 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -28,11 +28,12 @@ import net.minecraft.world.entity.player.Player; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.RenderHandEvent; import net.neoforged.neoforge.client.event.RenderLevelStageEvent; import net.neoforged.neoforge.client.event.ScreenEvent; -import net.neoforged.neoforge.event.TickEvent; import tschipp.carryon.CarryOnCommonClient; import tschipp.carryon.Constants; import tschipp.carryon.client.render.CarriedObjectRender; @@ -40,7 +41,7 @@ import tschipp.carryon.client.render.CarryRenderHelper; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, modid = Constants.MOD_ID, value = Dist.CLIENT) +@EventBusSubscriber(bus = EventBusSubscriber.Bus.GAME, modid = Constants.MOD_ID, value = Dist.CLIENT) public class ClientEvents { @OnlyIn(Dist.CLIENT) @@ -62,7 +63,7 @@ public class ClientEvents { public static void onRenderLevel(RenderLevelStageEvent event) { if(event.getStage() == RenderLevelStageEvent.Stage.AFTER_PARTICLES) - CarriedObjectRender.drawThirdPerson(event.getPartialTick(), event.getPoseStack()); + CarriedObjectRender.drawThirdPerson(event.getPartialTick(), event.getPoseStack().last().pose()); } @OnlyIn(Dist.CLIENT) @@ -91,13 +92,9 @@ public class ClientEvents { @OnlyIn(Dist.CLIENT) @SubscribeEvent - public static void onClientTick(TickEvent.ClientTickEvent event) + public static void onClientTick(ClientTickEvent.Post event) { - if(event.phase == TickEvent.Phase.END) - { - CarryOnCommonClient.checkForKeybinds(); - CarryOnCommonClient.onCarryClientTick(); - } - + CarryOnCommonClient.checkForKeybinds(); + CarryOnCommonClient.onCarryClientTick(); } } diff --git a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java index 20138aa..c19bbe2 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -32,9 +32,11 @@ import net.minecraft.world.level.ServerLevelAccessor; import net.neoforged.bus.api.Event; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.util.BlockSnapshot; +import net.neoforged.neoforge.common.util.TriState; import net.neoforged.neoforge.event.*; import net.neoforged.neoforge.event.entity.living.LivingAttackEvent; import net.neoforged.neoforge.event.entity.living.MobSpawnEvent; @@ -42,6 +44,7 @@ import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; import net.neoforged.neoforge.event.entity.player.PlayerEvent; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.neoforge.event.tick.ServerTickEvent; import tschipp.carryon.CarryOnCommon; import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; @@ -52,7 +55,7 @@ import tschipp.carryon.common.carry.PlacementHandler; import tschipp.carryon.common.scripting.ScriptReloadListener; import tschipp.carryon.config.ConfigLoader; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, modid = Constants.MOD_ID) +@EventBusSubscriber(bus = EventBusSubscriber.Bus.GAME, modid = Constants.MOD_ID) public class CommonEvents { @SubscribeEvent(priority = EventPriority.HIGH) @@ -90,9 +93,10 @@ public class CommonEvents } else { PlacementHandler.tryPlaceEntity((ServerPlayer) player, pos, event.getFace(), (pPos, toPlace) -> { if (toPlace instanceof Mob mob) { - MobSpawnEvent.FinalizeSpawn checkSpawn = new MobSpawnEvent.FinalizeSpawn(mob, (ServerLevelAccessor) level, pPos.x, pPos.y, pPos.z, level.getCurrentDifficultyAt(new BlockPos((int) pPos.x, (int) pPos.y, (int) pPos.z)), MobSpawnType.EVENT, null, null, null); + mob.setPos(pPos.x, pPos.y, pPos.z); + MobSpawnEvent.PositionCheck checkSpawn = new MobSpawnEvent.PositionCheck(mob, (ServerLevelAccessor) level, MobSpawnType.EVENT, null); NeoForge.EVENT_BUS.post(checkSpawn); - return event.getResult() != Event.Result.DENY; + return checkSpawn.getResult() != MobSpawnEvent.PositionCheck.Result.FAIL; } return true; }); @@ -101,8 +105,8 @@ public class CommonEvents } if (success) { - event.setUseBlock(Event.Result.DENY); - event.setUseItem(Event.Result.DENY); + event.setUseBlock(TriState.FALSE); + event.setUseItem(TriState.FALSE); event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); } @@ -163,15 +167,14 @@ public class CommonEvents @SubscribeEvent public static void onTagsUpdate(TagsUpdatedEvent event) { - ConfigLoader.onConfigLoaded(); + ConfigLoader.onConfigLoaded(event.getRegistryAccess()); } @SubscribeEvent - public static void onServerTick(TickEvent.ServerTickEvent event) + public static void onServerTick(ServerTickEvent.Post event) { - if (event.phase == TickEvent.Phase.END) - for (ServerPlayer player : event.getServer().getPlayerList().getPlayers()) - CarryOnCommon.onCarryTick(player); + for (ServerPlayer player : event.getServer().getPlayerList().getPlayers()) + CarryOnCommon.onCarryTick(player); } @SubscribeEvent diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java index 39a744f..42b449b 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java @@ -23,6 +23,7 @@ package tschipp.carryon.events; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.InterModComms; +import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.InterModProcessEvent; import tschipp.carryon.Constants; @@ -31,7 +32,7 @@ import tschipp.carryon.common.config.ListHandler; import java.util.stream.Stream; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, modid = Constants.MOD_ID) +@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = Constants.MOD_ID) public class ModBusEvents { @SubscribeEvent(priority = EventPriority.LOW) @@ -68,7 +69,7 @@ public class ModBusEvents { ListHandler.addAllowedStacking(str); break; case "addModelOverride": - ModelOverrideHandler.addFromString(str); + //ModelOverrideHandler.addFromString(str); break; } diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java index 89300a4..fd8324f 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java @@ -23,12 +23,13 @@ package tschipp.carryon.events; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; import tschipp.carryon.Constants; import tschipp.carryon.client.keybinds.CarryOnKeybinds; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, modid = Constants.MOD_ID, value = Dist.CLIENT) +@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = Constants.MOD_ID, value = Dist.CLIENT) public class ModClientEvents { @OnlyIn(Dist.CLIENT) diff --git a/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java b/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java index b64f5cd..410896c 100644 --- a/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java +++ b/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java @@ -20,7 +20,12 @@ package tschipp.carryon.platform; +import io.netty.buffer.ByteBuf; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.codec.StreamDecoder; +import net.minecraft.network.codec.StreamMemberEncoder; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -28,12 +33,13 @@ import net.minecraft.world.entity.player.Player; import net.neoforged.fml.ModList; import net.neoforged.fml.loading.FMLLoader; import net.neoforged.neoforge.network.PacketDistributor; -import net.neoforged.neoforge.network.handling.IPlayPayloadHandler; -import net.neoforged.neoforge.network.registration.IPayloadRegistrar; +import net.neoforged.neoforge.network.handling.IPayloadHandler; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; import tschipp.carryon.CarryOnCommonClient; import tschipp.carryon.config.BuiltConfig; import tschipp.carryon.config.neoforge.ConfigLoaderImpl; import tschipp.carryon.networking.PacketBase; +import tschipp.carryon.networking.serverbound.ServerboundCarryKeyPressedPacket; import tschipp.carryon.platform.services.IPlatformHelper; import java.util.function.BiConsumer; @@ -64,61 +70,41 @@ public class NeoForgePlatformHelper implements IPlatformHelper { ConfigLoaderImpl.registerConfig(cfg); } - private record PacketBridge(T packet) implements CustomPacketPayload { - - @Override - public void write(FriendlyByteBuf pBuffer) { - packet.write(pBuffer); - } - - @Override - public ResourceLocation id() { - return packet.id(); - } - - public T original() { - return packet; - } - } - @Override - public void registerServerboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args) { - IPayloadRegistrar registrar = (IPayloadRegistrar) args[0]; + public void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { + PayloadRegistrar registrar = (PayloadRegistrar) args[0]; - IPlayPayloadHandler> serverHandler = (packet, ctx) -> { - ctx.workHandler().submitAsync(() -> { - handler.accept(packet.original(), ctx.player().get()); + IPayloadHandler serverHandler = (packet, ctx) -> { + ctx.enqueueWork(() -> { + handler.accept(packet, ctx.player()); }); }; - FriendlyByteBuf.Reader> modifiedReader = (buf) -> new PacketBridge(reader.apply(buf)); - - registrar.play(id, modifiedReader, han -> han.server(serverHandler)); + registrar.playToServer(type, (StreamCodec)codec, serverHandler); } @Override - public void registerClientboundPacket(ResourceLocation id, int numericalId, Class clazz, BiConsumer writer, Function reader, BiConsumer handler, Object... args) { - IPayloadRegistrar registrar = (IPayloadRegistrar) args[0]; + public void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) + { + PayloadRegistrar registrar = (PayloadRegistrar) args[0]; - IPlayPayloadHandler> clientHandler = (packet, ctx) -> { - ctx.workHandler().submitAsync(() -> { - handler.accept(packet.original(), CarryOnCommonClient.getPlayer()); + IPayloadHandler clientHandler = (packet, ctx) -> { + ctx.enqueueWork(() -> { + handler.accept(packet, CarryOnCommonClient.getPlayer()); }); }; - FriendlyByteBuf.Reader> modifiedReader = (buf) -> new PacketBridge(reader.apply(buf)); - - registrar.play(id, modifiedReader, han -> han.client(clientHandler)); + registrar.playToClient(type, (StreamCodec)codec, clientHandler); } @Override public void sendPacketToServer(ResourceLocation id, PacketBase packet) { - PacketDistributor.SERVER.noArg().send(new PacketBridge(packet)); + PacketDistributor.sendToServer(packet); } @Override public void sendPacketToPlayer(ResourceLocation id, PacketBase packet, ServerPlayer player) { - PacketDistributor.PLAYER.with(player).send(new PacketBridge(packet)); + PacketDistributor.sendToPlayer(player, packet); } } diff --git a/NeoForge/src/main/resources/META-INF/mods.toml b/NeoForge/src/main/resources/META-INF/neoforge.mods.toml similarity index 100% rename from NeoForge/src/main/resources/META-INF/mods.toml rename to NeoForge/src/main/resources/META-INF/neoforge.mods.toml diff --git a/build.gradle b/build.gradle index 47a58da..b3b3272 100644 --- a/build.gradle +++ b/build.gradle @@ -80,7 +80,7 @@ subprojects { "refmap_target": "${mod_id}." ] - filesMatching(['pack.mcmeta', 'fabric.mod.json', 'META-INF/mods.toml', '*.mixins.json']) { + filesMatching(['pack.mcmeta', 'fabric.mod.json', 'META-INF/mods.toml', 'META-INF/neoforge.mods.toml', '*.mixins.json']) { expand expandProps } inputs.properties(expandProps) diff --git a/gradle.properties b/gradle.properties index 14e46b0..ce93246 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,4 +34,4 @@ neogradle.subsystems.parchment.mappingsVersion=2024.06.16 org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -mixinextras_version=0.3.5 \ No newline at end of file +mixinextras_version=0.3.6 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bb6c191..8b580b9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 538c990..5fee9c3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,6 +3,10 @@ pluginManagement { gradlePluginPortal() mavenLocal() + maven { + url "https://plugins.gradle.org/m2/" + } + maven { name = 'Fabric' url = 'https://maven.fabricmc.net/'