diff --git a/Common/src/main/java/mezz/jei/common/Constants.java b/Common/src/main/java/mezz/jei/common/Constants.java index 2ac0971d1..a21bc2fba 100644 --- a/Common/src/main/java/mezz/jei/common/Constants.java +++ b/Common/src/main/java/mezz/jei/common/Constants.java @@ -13,7 +13,8 @@ public final class Constants { public static final RecipeType UNIVERSAL_RECIPE_TRANSFER_TYPE = RecipeType.create(ModIds.JEI_ID, "universal_recipe_transfer_handler", Object.class); public static final ResourceLocation LOCATION_JEI_GUI_TEXTURE_ATLAS = new ResourceLocation(ModIds.JEI_ID, "textures/atlas/gui.png"); - public static final ResourceLocation NETWORK_CHANNEL_ID = new ResourceLocation(ModIds.JEI_ID, "channel"); + public static final ResourceLocation TO_CLIENT_CHANNEL_ID = new ResourceLocation(ModIds.JEI_ID, "to_client"); + public static final ResourceLocation TO_SERVER_CHANNEL_ID = new ResourceLocation(ModIds.JEI_ID, "to_server"); /** * Ingredients with this tag will be hidden from JEI. diff --git a/Common/src/main/java/mezz/jei/common/platform/IPlatformHelper.java b/Common/src/main/java/mezz/jei/common/platform/IPlatformHelper.java index 91d355f4d..a0c3cc473 100644 --- a/Common/src/main/java/mezz/jei/common/platform/IPlatformHelper.java +++ b/Common/src/main/java/mezz/jei/common/platform/IPlatformHelper.java @@ -4,8 +4,6 @@ import net.minecraft.resources.ResourceKey; public interface IPlatformHelper { - IPlatformRegistry getRegistry(ResourceKey> key); - IPlatformItemStackHelper getItemStackHelper(); IPlatformFluidHelperInternal getFluidHelper(); diff --git a/Common/src/main/java/mezz/jei/common/platform/IPlatformRegistry.java b/Common/src/main/java/mezz/jei/common/platform/IPlatformRegistry.java deleted file mode 100644 index b0c7f88c4..000000000 --- a/Common/src/main/java/mezz/jei/common/platform/IPlatformRegistry.java +++ /dev/null @@ -1,23 +0,0 @@ -package mezz.jei.common.platform; - -import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; - -import java.util.Optional; -import java.util.stream.Stream; - -public interface IPlatformRegistry { - Stream getValues(); - - Stream> getHolderStream(); - - Optional getValue(ResourceLocation resourceLocation); - - int getId(T entry); - - Optional getValue(int id); - - boolean contains(T entry); - - Optional getRegistryName(T entry); -} diff --git a/Common/src/main/java/mezz/jei/common/util/ErrorUtil.java b/Common/src/main/java/mezz/jei/common/util/ErrorUtil.java index e87f0a3c0..62e192e45 100644 --- a/Common/src/main/java/mezz/jei/common/util/ErrorUtil.java +++ b/Common/src/main/java/mezz/jei/common/util/ErrorUtil.java @@ -4,8 +4,6 @@ import mezz.jei.api.ingredients.IIngredientType; import mezz.jei.api.recipe.RecipeType; import mezz.jei.api.runtime.IIngredientManager; -import mezz.jei.common.platform.IPlatformRegistry; -import mezz.jei.common.platform.Services; import net.minecraft.client.Minecraft; import net.minecraft.core.NonNullList; import net.minecraft.core.registries.Registries; @@ -33,7 +31,7 @@ public static String getItemStackInfo(@Nullable ItemStack itemStack) { return "null"; } Item item = itemStack.getItem(); - IPlatformRegistry itemRegistry = Services.PLATFORM.getRegistry(Registries.ITEM); + RegistryWrapper itemRegistry = RegistryWrapper.getRegistry(Registries.ITEM); final String itemName = itemRegistry.getRegistryName(item) .map(ResourceLocation::toString) @@ -44,7 +42,7 @@ public static String getItemStackInfo(@Nullable ItemStack itemStack) { if (block == null) { blockName = "null"; } else { - IPlatformRegistry blockRegistry = Services.PLATFORM.getRegistry(Registries.BLOCK); + RegistryWrapper blockRegistry = RegistryWrapper.getRegistry(Registries.BLOCK); blockName = blockRegistry.getRegistryName(block) .map(ResourceLocation::toString) .orElseGet(() -> block.getClass().getName()); diff --git a/Fabric/src/main/java/mezz/jei/fabric/platform/RegistryWrapper.java b/Common/src/main/java/mezz/jei/common/util/RegistryWrapper.java similarity index 74% rename from Fabric/src/main/java/mezz/jei/fabric/platform/RegistryWrapper.java rename to Common/src/main/java/mezz/jei/common/util/RegistryWrapper.java index 2dc8492ab..f3be51f34 100644 --- a/Fabric/src/main/java/mezz/jei/fabric/platform/RegistryWrapper.java +++ b/Common/src/main/java/mezz/jei/common/util/RegistryWrapper.java @@ -1,6 +1,5 @@ -package mezz.jei.fabric.platform; +package mezz.jei.common.util; -import mezz.jei.common.platform.IPlatformRegistry; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; @@ -10,16 +9,16 @@ import java.util.Optional; import java.util.stream.Stream; -public class RegistryWrapper implements IPlatformRegistry { - public static IPlatformRegistry getRegistry(ResourceKey> key) { +public class RegistryWrapper { + public static RegistryWrapper getRegistry(ResourceKey> key) { Registry> rootRegistry = BuiltInRegistries.REGISTRY; Registry registry = rootRegistry.get(key.location()); if (registry == null) { throw new NullPointerException("Could not find registry for key: " + key); } - IPlatformRegistry registryWrapper = new RegistryWrapper<>(registry); + RegistryWrapper registryWrapper = new RegistryWrapper<>(registry); @SuppressWarnings("unchecked") - IPlatformRegistry castPlatformRegistry = (IPlatformRegistry) registryWrapper; + RegistryWrapper castPlatformRegistry = (RegistryWrapper) registryWrapper; return castPlatformRegistry; } @@ -29,39 +28,32 @@ private RegistryWrapper(Registry registry) { this.registry = registry; } - @Override public Stream getValues() { return this.registry.stream(); } - @Override public Stream> getHolderStream() { return this.registry.holders(); } - @Override public Optional getValue(ResourceLocation resourceLocation) { T t = this.registry.get(resourceLocation); return Optional.ofNullable(t); } - @Override public int getId(T entry) { return this.registry.getId(entry); } - @Override public Optional getValue(int id) { return this.registry.getHolder(id) .map(Holder::value); } - @Override public boolean contains(T entry) { return this.registry.getKey(entry) != null; } - @Override public Optional getRegistryName(T entry) { return this.registry.getResourceKey(entry) .map(ResourceKey::location); diff --git a/Common/src/main/java/mezz/jei/common/util/StackHelper.java b/Common/src/main/java/mezz/jei/common/util/StackHelper.java index e14dcddc6..84082c08d 100644 --- a/Common/src/main/java/mezz/jei/common/util/StackHelper.java +++ b/Common/src/main/java/mezz/jei/common/util/StackHelper.java @@ -3,7 +3,6 @@ import mezz.jei.api.helpers.IStackHelper; import mezz.jei.api.ingredients.subtypes.ISubtypeManager; import mezz.jei.api.ingredients.subtypes.UidContext; -import mezz.jei.common.platform.Services; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -51,7 +50,7 @@ public static String getRegistryNameForStack(ItemStack stack) { ErrorUtil.checkNotEmpty(stack, "stack"); Item item = stack.getItem(); - return Services.PLATFORM + return RegistryWrapper .getRegistry(Registries.ITEM) .getRegistryName(item) .map(ResourceLocation::toString) diff --git a/Forge/src/main/java/mezz/jei/forge/JustEnoughItems.java b/Forge/src/main/java/mezz/jei/forge/JustEnoughItems.java index 298b01440..c1f10bb76 100644 --- a/Forge/src/main/java/mezz/jei/forge/JustEnoughItems.java +++ b/Forge/src/main/java/mezz/jei/forge/JustEnoughItems.java @@ -27,11 +27,11 @@ public JustEnoughItems() { ModLoadingContext modLoadingContext = ModLoadingContext.get(); IServerConfig serverConfig = ServerConfig.register(modLoadingContext); - NetworkHandler networkHandler = new NetworkHandler(Constants.NETWORK_CHANNEL_ID, 2); - JustEnoughItemsCommon jeiCommon = new JustEnoughItemsCommon(networkHandler, serverConfig); + NetworkHandler networkHandler = new NetworkHandler(serverConfig, 3); + JustEnoughItemsCommon jeiCommon = new JustEnoughItemsCommon(networkHandler); jeiCommon.register(subscriptions); - JustEnoughItemsClientSafeRunner clientSafeRunner = new JustEnoughItemsClientSafeRunner(networkHandler, subscriptions, serverConfig); + JustEnoughItemsClientSafeRunner clientSafeRunner = new JustEnoughItemsClientSafeRunner(networkHandler, subscriptions); DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> clientSafeRunner::registerClient); } } diff --git a/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClient.java b/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClient.java index e78212827..54eb3553a 100644 --- a/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClient.java +++ b/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClient.java @@ -2,9 +2,7 @@ import mezz.jei.api.IModPlugin; import mezz.jei.common.Internal; -import mezz.jei.common.config.IServerConfig; import mezz.jei.common.gui.textures.Textures; -import mezz.jei.common.network.ClientPacketRouter; import mezz.jei.forge.events.PermanentEventSubscriptions; import mezz.jei.forge.network.ConnectionToServer; import mezz.jei.forge.network.NetworkHandler; @@ -29,8 +27,7 @@ public class JustEnoughItemsClient { public JustEnoughItemsClient( NetworkHandler networkHandler, - PermanentEventSubscriptions subscriptions, - IServerConfig serverConfig + PermanentEventSubscriptions subscriptions ) { this.subscriptions = subscriptions; @@ -40,8 +37,7 @@ public JustEnoughItemsClient( InternalKeyMappings keyMappings = createKeyMappings(subscriptions); Internal.setKeyMappings(keyMappings); - ClientPacketRouter packetRouter = new ClientPacketRouter(serverConnection, serverConfig); - networkHandler.registerClientPacketHandler(packetRouter); + networkHandler.registerClientPacketHandler(serverConnection); List plugins = ForgePluginFinder.getModPlugins(); StartData startData = new StartData( diff --git a/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClientSafeRunner.java b/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClientSafeRunner.java index 212d82730..059bc6038 100644 --- a/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClientSafeRunner.java +++ b/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsClientSafeRunner.java @@ -1,26 +1,22 @@ package mezz.jei.forge; -import mezz.jei.common.config.IServerConfig; import mezz.jei.forge.events.PermanentEventSubscriptions; import mezz.jei.forge.network.NetworkHandler; public class JustEnoughItemsClientSafeRunner { private final NetworkHandler networkHandler; private final PermanentEventSubscriptions subscriptions; - private final IServerConfig serverConfig; public JustEnoughItemsClientSafeRunner( NetworkHandler networkHandler, - PermanentEventSubscriptions subscriptions, - IServerConfig serverConfig + PermanentEventSubscriptions subscriptions ) { this.networkHandler = networkHandler; this.subscriptions = subscriptions; - this.serverConfig = serverConfig; } public void registerClient() { - JustEnoughItemsClient jeiClient = new JustEnoughItemsClient(networkHandler, subscriptions, serverConfig); + JustEnoughItemsClient jeiClient = new JustEnoughItemsClient(networkHandler, subscriptions); jeiClient.register(); } } diff --git a/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsCommon.java b/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsCommon.java index c8b9efe52..6d647ea52 100644 --- a/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsCommon.java +++ b/Forge/src/main/java/mezz/jei/forge/JustEnoughItemsCommon.java @@ -1,8 +1,6 @@ package mezz.jei.forge; import mezz.jei.common.network.IConnectionToClient; -import mezz.jei.common.network.ServerPacketRouter; -import mezz.jei.common.config.IServerConfig; import mezz.jei.forge.events.PermanentEventSubscriptions; import mezz.jei.forge.network.ConnectionToClient; import mezz.jei.forge.network.NetworkHandler; @@ -10,11 +8,9 @@ public class JustEnoughItemsCommon { private final NetworkHandler networkHandler; - private final IServerConfig serverConfig; - public JustEnoughItemsCommon(NetworkHandler networkHandler, IServerConfig serverConfig) { + public JustEnoughItemsCommon(NetworkHandler networkHandler) { this.networkHandler = networkHandler; - this.serverConfig = serverConfig; } public void register(PermanentEventSubscriptions subscriptions) { @@ -22,8 +18,7 @@ public void register(PermanentEventSubscriptions subscriptions) { } private void commonSetup() { - IConnectionToClient connection = new ConnectionToClient(this.networkHandler); - ServerPacketRouter packetRouter = new ServerPacketRouter(connection, serverConfig); - this.networkHandler.registerServerPacketHandler(packetRouter); + IConnectionToClient connection = new ConnectionToClient(networkHandler); + this.networkHandler.registerServerPacketHandler(connection); } } diff --git a/Forge/src/main/java/mezz/jei/forge/network/ConnectionToClient.java b/Forge/src/main/java/mezz/jei/forge/network/ConnectionToClient.java index 999a2542f..e06685b64 100644 --- a/Forge/src/main/java/mezz/jei/forge/network/ConnectionToClient.java +++ b/Forge/src/main/java/mezz/jei/forge/network/ConnectionToClient.java @@ -1,28 +1,24 @@ package mezz.jei.forge.network; -import io.netty.buffer.Unpooled; import mezz.jei.common.network.IConnectionToClient; import mezz.jei.common.network.packets.PlayToClientPacket; -import net.minecraft.core.RegistryAccess; -import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.level.Level; -import net.minecraftforge.network.ICustomPacket; import net.minecraftforge.network.NetworkDirection; public class ConnectionToClient implements IConnectionToClient { + private final NetworkHandler networkHandler; + + public ConnectionToClient(NetworkHandler networkHandler) { + this.networkHandler = networkHandler; + } + @Override public > void sendPacketToClient(T packet, ServerPlayer player) { - @SuppressWarnings("resource") Level level = player.level(); - RegistryAccess registryAccess = level.registryAccess(); - RegistryFriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), registryAccess); - try { - packet.streamCodec().m_318638_(buf, packet); - ICustomPacket> payload = NetworkDirection.PLAY_TO_CLIENT.buildPacket(buf, packet.type().f_314054_()); - player.connection.send(payload.getThis()); - } finally { - buf.release(); - } + networkHandler.getClientChannel() + .ifPresent(clientChannel -> { + Packet payload = NetworkDirection.PLAY_TO_CLIENT.buildPacket(clientChannel, packet); + player.connection.send(payload); + }); } } diff --git a/Forge/src/main/java/mezz/jei/forge/network/ConnectionToServer.java b/Forge/src/main/java/mezz/jei/forge/network/ConnectionToServer.java index 176fef09a..ca2986ab6 100644 --- a/Forge/src/main/java/mezz/jei/forge/network/ConnectionToServer.java +++ b/Forge/src/main/java/mezz/jei/forge/network/ConnectionToServer.java @@ -10,11 +10,12 @@ import net.minecraft.network.Connection; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.protocol.Packet; -import net.minecraftforge.network.EventNetworkChannel; -import net.minecraftforge.network.ICustomPacket; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraftforge.network.Channel; import net.minecraftforge.network.NetworkDirection; import org.jetbrains.annotations.Nullable; +import java.util.Optional; import java.util.UUID; public final class ConnectionToServer implements IConnectionToServer { @@ -38,8 +39,7 @@ public boolean isJeiOnServer() { if (!id.equals(jeiOnServerCacheUuid)) { jeiOnServerCacheUuid = id; Connection connection = clientPacketListener.getConnection(); - EventNetworkChannel networkChannel = networkHandler.getChannel(); - jeiOnServerCacheValue = networkChannel.isRemotePresent(connection); + jeiOnServerCacheValue = networkHandler.isRemotePresent(connection); } return jeiOnServerCacheValue; } @@ -49,16 +49,11 @@ public > void sendPacketToServer(T packet) { Minecraft minecraft = Minecraft.getInstance(); ClientPacketListener netHandler = minecraft.getConnection(); if (netHandler != null && isJeiOnServer()) { - ClientLevel level = netHandler.getLevel(); - RegistryAccess registryAccess = level.registryAccess(); - RegistryFriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), registryAccess); - try { - packet.streamCodec().m_318638_(buf, packet); - ICustomPacket> payload = NetworkDirection.PLAY_TO_SERVER.buildPacket(buf, packet.type().f_314054_()); - netHandler.send(payload.getThis()); - } finally { - buf.release(); - } + networkHandler.getServerChannel() + .ifPresent(serverChannel -> { + Packet payload = NetworkDirection.PLAY_TO_SERVER.buildPacket(serverChannel, packet); + netHandler.send(payload); + }); } } } diff --git a/Forge/src/main/java/mezz/jei/forge/network/NetworkHandler.java b/Forge/src/main/java/mezz/jei/forge/network/NetworkHandler.java index d6137a754..363dfdbca 100644 --- a/Forge/src/main/java/mezz/jei/forge/network/NetworkHandler.java +++ b/Forge/src/main/java/mezz/jei/forge/network/NetworkHandler.java @@ -1,71 +1,109 @@ package mezz.jei.forge.network; -import mezz.jei.common.network.ClientPacketRouter; -import mezz.jei.common.network.ServerPacketRouter; +import mezz.jei.common.Constants; +import mezz.jei.common.config.IServerConfig; +import mezz.jei.common.network.ClientPacketContext; +import mezz.jei.common.network.IConnectionToClient; +import mezz.jei.common.network.IConnectionToServer; +import mezz.jei.common.network.ServerPacketContext; +import mezz.jei.common.network.packets.PacketCheatPermission; +import mezz.jei.common.network.packets.PacketDeletePlayerItem; +import mezz.jei.common.network.packets.PacketGiveItemStack; +import mezz.jei.common.network.packets.PacketRecipeTransfer; +import mezz.jei.common.network.packets.PacketRequestCheatPermission; +import mezz.jei.common.network.packets.PacketSetHotbarItemStack; +import mezz.jei.common.network.packets.PlayToClientPacket; +import mezz.jei.common.network.packets.PlayToServerPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.Connection; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.event.network.CustomPayloadEvent; +import net.minecraftforge.network.Channel; import net.minecraftforge.network.ChannelBuilder; -import net.minecraftforge.network.EventNetworkChannel; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import javax.annotation.Nullable; +import java.util.Optional; +import java.util.function.BiConsumer; + public class NetworkHandler { private static final Logger LOGGER = LogManager.getLogger(); - private final ResourceLocation channelId; - private final EventNetworkChannel channel; + private final IServerConfig serverConfig; + private final int protocolVersion; + private @Nullable Channel clientChannel; + private @Nullable Channel serverChannel; - public NetworkHandler(ResourceLocation channelId, int protocolVersion) { - this.channelId = channelId; - this.channel = ChannelBuilder.named(channelId) - .networkProtocolVersion(protocolVersion) - .optionalClient() - .optionalServer() - .eventNetworkChannel(); + public NetworkHandler(IServerConfig serverConfig, int protocolVersion) { + this.serverConfig = serverConfig; + this.protocolVersion = protocolVersion; } - public ResourceLocation getChannelId() { - return channelId; + public Optional> getClientChannel() { + return Optional.ofNullable(clientChannel); } - public EventNetworkChannel getChannel() { - return channel; + public Optional> getServerChannel() { + return Optional.ofNullable(serverChannel); } - public void registerServerPacketHandler(ServerPacketRouter packetRouter) { - channel.addListener(event -> { - CustomPayloadEvent.Context context = event.getSource(); - if (context.isServerSide()) { - ServerPlayer sender = context.getSender(); - if (sender == null) { - LOGGER.error("Packet error, the sender player is missing for event: {}", event); - return; - } - packetRouter.onPacket(event.getPayload(), sender); - context.setPacketHandled(true); - } - }); + public boolean isRemotePresent(Connection connection) { + return serverChannel != null && serverChannel.isRemotePresent(connection); + } + + public void registerServerPacketHandler(IConnectionToClient connection) { + serverChannel = ChannelBuilder.named(Constants.TO_SERVER_CHANNEL_ID) + .optional() + .networkProtocolVersion(protocolVersion) + .payloadChannel() + .play() + .serverbound() + .add(PacketDeletePlayerItem.TYPE, PacketDeletePlayerItem.STREAM_CODEC, wrapServerHandler(connection, PacketDeletePlayerItem::process)) + .add(PacketGiveItemStack.TYPE, PacketGiveItemStack.STREAM_CODEC, wrapServerHandler(connection, PacketGiveItemStack::process)) + .add(PacketRecipeTransfer.TYPE, PacketRecipeTransfer.STREAM_CODEC, wrapServerHandler(connection, PacketRecipeTransfer::process)) + .add(PacketSetHotbarItemStack.TYPE, PacketSetHotbarItemStack.STREAM_CODEC, wrapServerHandler(connection, PacketSetHotbarItemStack::process)) + .add(PacketRequestCheatPermission.TYPE, PacketRequestCheatPermission.STREAM_CODEC, wrapServerHandler(connection, PacketRequestCheatPermission::process)) + .build(); } @OnlyIn(Dist.CLIENT) - public void registerClientPacketHandler(ClientPacketRouter packetRouter) { - channel.addListener(event -> { - CustomPayloadEvent.Context context = event.getSource(); - if (context.isClientSide()) { - Minecraft minecraft = Minecraft.getInstance(); - LocalPlayer player = minecraft.player; - if (player == null) { - LOGGER.error("Packet error, the local player is missing for event: {}", event); - return; - } - packetRouter.onPacket(event.getPayload(), player); - context.setPacketHandled(true); + public void registerClientPacketHandler(IConnectionToServer connection) { + clientChannel = ChannelBuilder.named(Constants.TO_CLIENT_CHANNEL_ID) + .optional() + .networkProtocolVersion(protocolVersion) + .payloadChannel() + .play() + .clientbound() + .add(PacketCheatPermission.TYPE, PacketCheatPermission.STREAM_CODEC, wrapClientHandler(connection, PacketCheatPermission::process)) + .build(); + } + + private > BiConsumer wrapClientHandler(IConnectionToServer connection, BiConsumer consumer) { + return (t, payloadContext) -> { + LocalPlayer player = Minecraft.getInstance().player; + if (player != null) { + var clientPacketContext = new ClientPacketContext(player, connection); + consumer.accept(t, clientPacketContext); + } else { + LOGGER.debug("Tried to handle packet payload with no player: {}", t.type()); + } + }; + } + + private > BiConsumer wrapServerHandler(IConnectionToClient connection, BiConsumer consumer) { + return (t, payloadContext) -> { + ServerPlayer player = payloadContext.getSender(); + if (player != null) { + var serverPacketContext = new ServerPacketContext(player, serverConfig, connection); + consumer.accept(t, serverPacketContext); + } else { + LOGGER.debug("Tried to handle packet payload with no player: {}", t.type()); } - }); + }; } } diff --git a/Forge/src/main/java/mezz/jei/forge/platform/FluidHelper.java b/Forge/src/main/java/mezz/jei/forge/platform/FluidHelper.java index bc631d5c6..f0900fc88 100644 --- a/Forge/src/main/java/mezz/jei/forge/platform/FluidHelper.java +++ b/Forge/src/main/java/mezz/jei/forge/platform/FluidHelper.java @@ -12,6 +12,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Holder; +import net.minecraft.core.component.DataComponentPatch; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -21,12 +23,9 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.registries.ForgeRegistries; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -61,8 +60,9 @@ public long getAmount(FluidStack ingredient) { } @Override - public Optional getTag(FluidStack ingredient) { - return Optional.ofNullable(ingredient.getTag()); + public DataComponentPatch getComponentsPatch(FluidStack ingredient) { + // TODO: update when Forge has FluidStack DataComponents + return DataComponentPatch.EMPTY; } @Override @@ -128,15 +128,16 @@ public String apply(FluidStack fluidStack, UidContext context) { } @Override - public FluidStack create(Fluid fluid, long amount, @Nullable CompoundTag tag) { + public FluidStack create(Holder fluid, long amount) { int intAmount = (int) Math.min(amount, Integer.MAX_VALUE); - return new FluidStack(fluid, intAmount, tag); + return new FluidStack(fluid.value(), intAmount); } @Override - public FluidStack create(Fluid fluid, long amount) { + public FluidStack create(Holder fluid, long amount, DataComponentPatch components) { + // TODO: update when Forge has FluidStack DataComponents int intAmount = (int) Math.min(amount, Integer.MAX_VALUE); - return new FluidStack(fluid, intAmount); + return new FluidStack(fluid.value(), intAmount); } @Override @@ -153,8 +154,7 @@ public FluidStack normalize(FluidStack ingredient) { @Override public Optional getContainedFluid(ITypedIngredient ingredient) { - return ingredient.getItemStack() - .flatMap(i -> i.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).resolve()) - .map(c -> c.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE)); + // TODO: update when Forge has item capabilities for fluid containers + return Optional.empty(); } } diff --git a/Forge/src/main/java/mezz/jei/forge/platform/IngredientHelper.java b/Forge/src/main/java/mezz/jei/forge/platform/IngredientHelper.java index 6807c3ec9..685031049 100644 --- a/Forge/src/main/java/mezz/jei/forge/platform/IngredientHelper.java +++ b/Forge/src/main/java/mezz/jei/forge/platform/IngredientHelper.java @@ -35,7 +35,16 @@ public Ingredient createNbtIngredient(ItemStack stack, IStackHelper stackHelper) } @Override - public List getPotionContainers() { - return PotionBrewing.ALLOWED_CONTAINERS; + public Stream getPotionIngredients(PotionBrewing potionBrewing) { + return Stream.concat( + potionBrewing.containerMixes.stream(), + potionBrewing.potionMixes.stream() + ) + .map(PotionBrewing.Mix::ingredient); + } + + @Override + public List getPotionContainers(PotionBrewing potionBrewing) { + return potionBrewing.containers; } } diff --git a/Forge/src/main/java/mezz/jei/forge/platform/PlatformHelper.java b/Forge/src/main/java/mezz/jei/forge/platform/PlatformHelper.java index d4ff2a9c2..305fcea88 100644 --- a/Forge/src/main/java/mezz/jei/forge/platform/PlatformHelper.java +++ b/Forge/src/main/java/mezz/jei/forge/platform/PlatformHelper.java @@ -2,10 +2,7 @@ import mezz.jei.common.platform.IPlatformFluidHelperInternal; import mezz.jei.common.platform.IPlatformHelper; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.core.util.function.LazySupplier; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; import java.util.function.Supplier; @@ -20,11 +17,6 @@ public class PlatformHelper implements IPlatformHelper { private final Supplier ingredientHelper = new LazySupplier<>(IngredientHelper::new); private final Supplier modHelper = new LazySupplier<>(ModHelper::new); - @Override - public IPlatformRegistry getRegistry(ResourceKey> key) { - return RegistryWrapper.getRegistry(key); - } - @Override public ItemStackHelper getItemStackHelper() { return itemStackHelper.get(); diff --git a/Forge/src/main/java/mezz/jei/forge/platform/RegistryWrapper.java b/Forge/src/main/java/mezz/jei/forge/platform/RegistryWrapper.java deleted file mode 100644 index e17ecdf90..000000000 --- a/Forge/src/main/java/mezz/jei/forge/platform/RegistryWrapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package mezz.jei.forge.platform; - -import mezz.jei.common.platform.IPlatformRegistry; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.registries.ForgeRegistry; -import net.minecraftforge.registries.RegistryManager; - -import java.util.Optional; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -public class RegistryWrapper implements IPlatformRegistry { - public static IPlatformRegistry getRegistry(ResourceKey> key) { - ForgeRegistry registry = RegistryManager.ACTIVE.getRegistry(key.location()); - IPlatformRegistry registryWrapper = new RegistryWrapper<>(registry); - @SuppressWarnings("unchecked") - IPlatformRegistry castRegistry = (IPlatformRegistry) registryWrapper; - return castRegistry; - } - - private final ForgeRegistry forgeRegistry; - - private RegistryWrapper(ForgeRegistry forgeRegistry) { - this.forgeRegistry = forgeRegistry; - } - - @Override - public Stream getValues() { - return StreamSupport.stream(this.forgeRegistry.spliterator(), false); - } - - @Override - public Optional getValue(ResourceLocation resourceLocation) { - T value = this.forgeRegistry.getValue(resourceLocation); - return Optional.ofNullable(value); - } - - @Override - public int getId(T entry) { - return this.forgeRegistry.getID(entry); - } - - @Override - public Optional getValue(int id) { - T value = this.forgeRegistry.getValue(id); - return Optional.ofNullable(value); - } - - @Override - public boolean contains(T entry) { - return this.forgeRegistry.containsValue(entry); - } - - @Override - public Optional getRegistryName(T entry) { - return this.forgeRegistry.getResourceKey(entry) - .map(ResourceKey::location); - } -} diff --git a/Forge/src/main/resources/META-INF/accesstransformer.cfg b/Forge/src/main/resources/META-INF/accesstransformer.cfg index 64ebe2184..e9a25156d 100644 --- a/Forge/src/main/resources/META-INF/accesstransformer.cfg +++ b/Forge/src/main/resources/META-INF/accesstransformer.cfg @@ -11,7 +11,9 @@ public net.minecraft.client.gui.screens.recipebook.RecipeBookComponent f_100279_ public net.minecraft.client.gui.components.AbstractWidget m_93692_(Z)V # setFocused #potions -public net.minecraft.world.item.alchemy.PotionBrewing f_43496_ # containers +public net.minecraft.world.item.alchemy.PotionBrewing f_317135_ # containers +public net.minecraft.world.item.alchemy.PotionBrewing f_314332_ # containerMixes +public net.minecraft.world.item.alchemy.PotionBrewing f_316577_ # potionMixes # SmithingRecipe public net.minecraft.world.item.crafting.SmithingTransformRecipe f_265888_ # base diff --git a/Library/src/main/java/mezz/jei/library/plugins/debug/FluidSubtypeHandlerTest.java b/Library/src/main/java/mezz/jei/library/plugins/debug/FluidSubtypeHandlerTest.java index f44377e96..dcbe6cedb 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/debug/FluidSubtypeHandlerTest.java +++ b/Library/src/main/java/mezz/jei/library/plugins/debug/FluidSubtypeHandlerTest.java @@ -4,6 +4,7 @@ import mezz.jei.api.ingredients.subtypes.IIngredientSubtypeInterpreter; import mezz.jei.api.ingredients.subtypes.UidContext; import mezz.jei.common.platform.Services; +import mezz.jei.common.util.RegistryWrapper; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.material.Fluid; @@ -18,7 +19,7 @@ public FluidSubtypeHandlerTest(IIngredientTypeWithSubtypes type) { @Override public String apply(T fluidStack, UidContext context) { Fluid fluid = type.getBase(fluidStack); - return Services.PLATFORM + return RegistryWrapper .getRegistry(Registries.FLUID) .getRegistryName(fluid) .map(ResourceLocation::toString) diff --git a/Library/src/main/java/mezz/jei/library/plugins/debug/JeiDebugPlugin.java b/Library/src/main/java/mezz/jei/library/plugins/debug/JeiDebugPlugin.java index 51813d0ba..f689170ff 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/debug/JeiDebugPlugin.java +++ b/Library/src/main/java/mezz/jei/library/plugins/debug/JeiDebugPlugin.java @@ -22,11 +22,11 @@ import mezz.jei.api.runtime.IIngredientManager; import mezz.jei.api.runtime.IJeiRuntime; import mezz.jei.common.config.DebugConfig; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.common.platform.IPlatformScreenHelper; import mezz.jei.common.platform.Services; import mezz.jei.common.util.ErrorUtil; import mezz.jei.common.util.MathUtil; +import mezz.jei.common.util.RegistryWrapper; import mezz.jei.library.plugins.debug.ingredients.DebugIngredient; import mezz.jei.library.plugins.debug.ingredients.DebugIngredientHelper; import mezz.jei.library.plugins.debug.ingredients.DebugIngredientListFactory; @@ -241,7 +241,7 @@ private void registerRecipeCatalysts(IRecipeCatalystRegistration registratio registration.addRecipeCatalyst(DebugIngredient.TYPE, new DebugIngredient(7), DebugRecipeCategory.TYPE); registration.addRecipeCatalyst(fluidHelper.getFluidIngredientType(), fluidHelper.create(Fluids.WATER.defaultFluidState().holder(), bucketVolume), DebugRecipeCategory.TYPE); registration.addRecipeCatalyst(new ItemStack(Items.STICK), DebugRecipeCategory.TYPE); - IPlatformRegistry registry = Services.PLATFORM.getRegistry(Registries.ITEM); + RegistryWrapper registry = RegistryWrapper.getRegistry(Registries.ITEM); registry.getValues() .limit(300) .forEach(item -> { diff --git a/Library/src/main/java/mezz/jei/library/plugins/vanilla/VanillaPlugin.java b/Library/src/main/java/mezz/jei/library/plugins/vanilla/VanillaPlugin.java index f89afd089..ca74b51af 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/vanilla/VanillaPlugin.java +++ b/Library/src/main/java/mezz/jei/library/plugins/vanilla/VanillaPlugin.java @@ -30,9 +30,9 @@ import mezz.jei.common.gui.textures.Textures; import mezz.jei.common.platform.IPlatformFluidHelperInternal; import mezz.jei.common.platform.IPlatformRecipeHelper; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.common.platform.Services; import mezz.jei.common.util.ErrorUtil; +import mezz.jei.common.util.RegistryWrapper; import mezz.jei.common.util.StackHelper; import mezz.jei.library.plugins.vanilla.anvil.AnvilRecipeCategory; import mezz.jei.library.plugins.vanilla.anvil.AnvilRecipeMaker; @@ -180,7 +180,7 @@ private void registerFluidIngredients(IModIngredientRegistration registratio ISubtypeManager subtypeManager = registration.getSubtypeManager(); IColorHelper colorHelper = registration.getColorHelper(); - IPlatformRegistry registry = Services.PLATFORM.getRegistry(Registries.FLUID); + RegistryWrapper registry = RegistryWrapper.getRegistry(Registries.FLUID); List fluidIngredients = FluidStackListFactory.create(registry, platformFluidHelper); FluidIngredientHelper fluidIngredientHelper = new FluidIngredientHelper<>(subtypeManager, colorHelper, platformFluidHelper); FluidTankRenderer fluidTankRenderer = new FluidTankRenderer<>(platformFluidHelper); diff --git a/Library/src/main/java/mezz/jei/library/plugins/vanilla/anvil/AnvilRecipeMaker.java b/Library/src/main/java/mezz/jei/library/plugins/vanilla/anvil/AnvilRecipeMaker.java index e19c3145d..41d2a1cba 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/vanilla/anvil/AnvilRecipeMaker.java +++ b/Library/src/main/java/mezz/jei/library/plugins/vanilla/anvil/AnvilRecipeMaker.java @@ -4,9 +4,9 @@ import mezz.jei.api.recipe.vanilla.IVanillaRecipeFactory; import mezz.jei.api.runtime.IIngredientManager; import mezz.jei.common.platform.IPlatformItemStackHelper; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.common.platform.Services; import mezz.jei.common.util.ErrorUtil; +import mezz.jei.common.util.RegistryWrapper; import net.minecraft.client.Minecraft; import net.minecraft.core.registries.Registries; import net.minecraft.tags.ItemTags; @@ -86,7 +86,7 @@ private static Stream getBookEnchantmentRecipes( IVanillaRecipeFactory vanillaRecipeFactory, IIngredientManager ingredientManager ) { - IPlatformRegistry registry = Services.PLATFORM.getRegistry(Registries.ENCHANTMENT); + RegistryWrapper registry = RegistryWrapper.getRegistry(Registries.ENCHANTMENT); List enchantmentDatas = registry.getValues() .map(EnchantmentData::new) .toList(); diff --git a/Library/src/main/java/mezz/jei/library/plugins/vanilla/crafting/replacers/TippedArrowRecipeMaker.java b/Library/src/main/java/mezz/jei/library/plugins/vanilla/crafting/replacers/TippedArrowRecipeMaker.java index 8af732bf2..1636e093e 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/vanilla/crafting/replacers/TippedArrowRecipeMaker.java +++ b/Library/src/main/java/mezz/jei/library/plugins/vanilla/crafting/replacers/TippedArrowRecipeMaker.java @@ -3,8 +3,8 @@ import mezz.jei.api.constants.ModIds; import mezz.jei.api.helpers.IStackHelper; import mezz.jei.common.platform.IPlatformIngredientHelper; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.common.platform.Services; +import mezz.jei.common.util.RegistryWrapper; import net.minecraft.core.NonNullList; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; @@ -29,7 +29,7 @@ public static List> createRecipes(IStackHelper stac ItemStack arrowStack = new ItemStack(Items.ARROW); Ingredient arrowIngredient = Ingredient.of(arrowStack); - IPlatformRegistry potionRegistry = Services.PLATFORM.getRegistry(Registries.POTION); + RegistryWrapper potionRegistry = RegistryWrapper.getRegistry(Registries.POTION); IPlatformIngredientHelper ingredientHelper = Services.PLATFORM.getIngredientHelper(); return potionRegistry.getHolderStream() .map(potion -> { diff --git a/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/ItemStackHelper.java b/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/ItemStackHelper.java index aa1957656..01c1981cb 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/ItemStackHelper.java +++ b/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/ItemStackHelper.java @@ -10,9 +10,9 @@ import mezz.jei.common.config.IClientConfig; import mezz.jei.common.config.IJeiClientConfigs; import mezz.jei.common.platform.IPlatformItemStackHelper; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.common.platform.Services; import mezz.jei.common.util.ErrorUtil; +import mezz.jei.common.util.RegistryWrapper; import mezz.jei.common.util.StackHelper; import mezz.jei.common.util.TagUtil; import net.minecraft.core.registries.BuiltInRegistries; @@ -70,7 +70,7 @@ public String getDisplayModId(ItemStack ingredient) { IPlatformItemStackHelper itemStackHelper = Services.PLATFORM.getItemStackHelper(); return itemStackHelper.getCreatorModId(ingredient) .or(() -> - Services.PLATFORM + RegistryWrapper .getRegistry(Registries.ITEM) .getRegistryName(ingredient.getItem()) .map(ResourceLocation::getNamespace) @@ -91,7 +91,7 @@ public ResourceLocation getResourceLocation(ItemStack ingredient) { ErrorUtil.checkNotEmpty(ingredient); Item item = ingredient.getItem(); - return Services.PLATFORM + return RegistryWrapper .getRegistry(Registries.ITEM) .getRegistryName(item) .orElseThrow(() -> { @@ -125,7 +125,7 @@ public boolean isValidIngredient(ItemStack ingredient) { @Override public boolean isIngredientOnServer(ItemStack ingredient) { Item item = ingredient.getItem(); - IPlatformRegistry registry = Services.PLATFORM.getRegistry(Registries.ITEM); + RegistryWrapper registry = RegistryWrapper.getRegistry(Registries.ITEM); return registry.contains(item); } diff --git a/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidIngredientHelper.java b/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidIngredientHelper.java index 1fc366f49..5f019c139 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidIngredientHelper.java +++ b/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidIngredientHelper.java @@ -8,8 +8,7 @@ import mezz.jei.api.ingredients.subtypes.ISubtypeManager; import mezz.jei.api.ingredients.subtypes.UidContext; import mezz.jei.common.platform.IPlatformFluidHelperInternal; -import mezz.jei.common.platform.IPlatformRegistry; -import mezz.jei.common.platform.Services; +import mezz.jei.common.util.RegistryWrapper; import mezz.jei.common.util.TagUtil; import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponentPatch; @@ -32,14 +31,14 @@ public class FluidIngredientHelper implements IIngredientHelper { private final ISubtypeManager subtypeManager; private final IColorHelper colorHelper; private final IPlatformFluidHelperInternal platformFluidHelper; - private final IPlatformRegistry registry; + private final RegistryWrapper registry; private final IIngredientTypeWithSubtypes fluidType; public FluidIngredientHelper(ISubtypeManager subtypeManager, IColorHelper colorHelper, IPlatformFluidHelperInternal platformFluidHelper) { this.subtypeManager = subtypeManager; this.colorHelper = colorHelper; this.platformFluidHelper = platformFluidHelper; - this.registry = Services.PLATFORM.getRegistry(Registries.FLUID); + this.registry = RegistryWrapper.getRegistry(Registries.FLUID); this.fluidType = platformFluidHelper.getFluidIngredientType(); } diff --git a/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidStackListFactory.java b/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidStackListFactory.java index f7c8ed638..7cadc07b5 100644 --- a/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidStackListFactory.java +++ b/Library/src/main/java/mezz/jei/library/plugins/vanilla/ingredients/fluid/FluidStackListFactory.java @@ -1,7 +1,7 @@ package mezz.jei.library.plugins.vanilla.ingredients.fluid; import mezz.jei.api.helpers.IPlatformFluidHelper; -import mezz.jei.common.platform.IPlatformRegistry; +import mezz.jei.common.util.RegistryWrapper; import net.minecraft.world.level.material.Fluid; import java.util.List; @@ -11,7 +11,7 @@ private FluidStackListFactory() { } - public static List create(IPlatformRegistry registry, IPlatformFluidHelper helper) { + public static List create(RegistryWrapper registry, IPlatformFluidHelper helper) { return registry.getHolderStream() .filter(holder -> { Fluid fluid = holder.value(); diff --git a/Library/src/main/java/mezz/jei/library/util/BrewingRecipeMakerCommon.java b/Library/src/main/java/mezz/jei/library/util/BrewingRecipeMakerCommon.java index 0d30c7628..9b1173ff9 100644 --- a/Library/src/main/java/mezz/jei/library/util/BrewingRecipeMakerCommon.java +++ b/Library/src/main/java/mezz/jei/library/util/BrewingRecipeMakerCommon.java @@ -7,8 +7,8 @@ import mezz.jei.api.recipe.vanilla.IVanillaRecipeFactory; import mezz.jei.api.runtime.IIngredientManager; import mezz.jei.common.platform.IPlatformIngredientHelper; -import mezz.jei.common.platform.IPlatformRegistry; import mezz.jei.common.platform.Services; +import mezz.jei.common.util.RegistryWrapper; import mezz.jei.library.ingredients.IngredientSet; import mezz.jei.library.plugins.vanilla.brewing.PotionSubtypeInterpreter; import net.minecraft.core.Holder; @@ -37,7 +37,7 @@ public static Set getVanillaBrewingRecipes( PotionBrewing potionBrewing ) { Set recipes = new HashSet<>(); - IPlatformRegistry potionRegistry = Services.PLATFORM.getRegistry(Registries.POTION); + RegistryWrapper potionRegistry = RegistryWrapper.getRegistry(Registries.POTION); IIngredientHelper itemStackHelper = ingredientManager.getIngredientHelper(VanillaTypes.ITEM_STACK); IngredientSet knownPotions = getBaseKnownPotions(ingredientManager, potionRegistry, potionBrewing); @@ -63,7 +63,7 @@ public static Set getVanillaBrewingRecipes( return recipes; } - private static IngredientSet getBaseKnownPotions(IIngredientManager ingredientManager, IPlatformRegistry potionRegistry, PotionBrewing potionBrewing) { + private static IngredientSet getBaseKnownPotions(IIngredientManager ingredientManager, RegistryWrapper potionRegistry, PotionBrewing potionBrewing) { IPlatformIngredientHelper ingredientHelper = Services.PLATFORM.getIngredientHelper(); IIngredientHelper itemStackHelper = ingredientManager.getIngredientHelper(VanillaTypes.ITEM_STACK); diff --git a/NeoForge/src/main/java/mezz/jei/neoforge/network/NetworkHandler.java b/NeoForge/src/main/java/mezz/jei/neoforge/network/NetworkHandler.java index 12ce7c90d..7de7a2488 100644 --- a/NeoForge/src/main/java/mezz/jei/neoforge/network/NetworkHandler.java +++ b/NeoForge/src/main/java/mezz/jei/neoforge/network/NetworkHandler.java @@ -1,6 +1,6 @@ package mezz.jei.neoforge.network; -import mezz.jei.api.constants.ModIds; +import mezz.jei.common.Constants; import mezz.jei.common.config.IServerConfig; import mezz.jei.common.network.ClientPacketContext; import mezz.jei.common.network.IConnectionToClient; @@ -26,9 +26,6 @@ import java.util.function.BiConsumer; public class NetworkHandler { - private static final String TO_CLIENT_NAMESPACE = ModIds.JEI_ID + "_to_client"; - private static final String TO_SERVER_NAMESPACE = ModIds.JEI_ID + "_to_server"; - private final String protocolVersion; private final IServerConfig serverConfig; @@ -39,7 +36,7 @@ public NetworkHandler(String protocolVersion, IServerConfig serverConfig) { public void registerServerPacketHandler(IConnectionToClient connection, PermanentEventSubscriptions subscriptions) { subscriptions.register(RegisterPayloadHandlersEvent.class, ev -> { - var registrar = ev.registrar(TO_CLIENT_NAMESPACE) + var registrar = ev.registrar(Constants.TO_SERVER_CHANNEL_ID.toString()) .executesOn(HandlerThread.MAIN) .versioned(this.protocolVersion) .optional(); @@ -55,7 +52,7 @@ public void registerServerPacketHandler(IConnectionToClient connection, Permanen @OnlyIn(Dist.CLIENT) public void registerClientPacketHandler(IConnectionToServer connection, PermanentEventSubscriptions subscriptions) { subscriptions.register(RegisterPayloadHandlersEvent.class, ev -> { - var registrar = ev.registrar(TO_SERVER_NAMESPACE) + var registrar = ev.registrar(Constants.TO_CLIENT_CHANNEL_ID.toString()) .executesOn(HandlerThread.MAIN) .versioned(this.protocolVersion) .optional(); diff --git a/gradle.properties b/gradle.properties index 5e8717c9c..f4c00dc26 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,10 +34,9 @@ fabricLoaderVersion=0.15.10 fabricApiVersion=0.97.8+1.20.6 # Mappings -parchmentMinecraftVersion=1.20.3 -# TODO MC version should not be needed on both ends -parchmentVersionForge=1.20.3-2023.12.31-1.20.3 -parchmentVersionFabric=2023.12.31 +parchmentMinecraftVersion=1.20.6 +parchmentVersionForge=1.20.6-2024.06.02-1.20.6 +parchmentVersionFabric=2024.06.02 # Publishing curseProjectId=238222