diff --git a/build.gradle.kts b/build.gradle.kts index ef600fe..7099930 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,18 +28,8 @@ base { java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) -repositories { - exclusiveContent { - forRepository { maven("https://cursemaven.com") } - filter { includeGroup("curse.maven") } - } -} - dependencies { minecraft(libs.forge.platform) - - // Just for in-dev convenience. Mod doesn't use any JEI APIs. - runtimeOnly(fg.deobf(libs.forge.jei.get())) } minecraft { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ddf7613..faef566 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,16 +1,15 @@ [versions] -minecraft = "1.20.1" -parchment = "2023.08.13" +minecraft = "1.20.2" +parchment = "1.20.1-2023.09.03" -forge-platform = "1.20.1-47.1.0" +forge-platform = "1.20.2-48.0.39" [plugins] forgegradle = { id = "net.minecraftforge.gradle", version = "[6.0,6.2)" } parchment = { id = "org.parchmentmc.librarian.forgegradle", version = "1.+" } -spotless = { id = "com.diffplug.spotless", version = "6.20.0" } +spotless = { id = "com.diffplug.spotless", version = "6.22.0" } [libraries] minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" } forge-platform = { group = "net.minecraftforge", name = "forge", version.ref = "forge-platform" } -forge-jei = { group = "curse.maven", name = "jei-238222", version = "4690097" } diff --git a/src/main/java/li/cil/bedrockores/common/network/Network.java b/src/main/java/li/cil/bedrockores/common/network/Network.java index 5fe7625..f5eed21 100644 --- a/src/main/java/li/cil/bedrockores/common/network/Network.java +++ b/src/main/java/li/cil/bedrockores/common/network/Network.java @@ -6,21 +6,22 @@ import li.cil.bedrockores.common.network.message.InfoResponseMessage; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.ChannelBuilder; import net.minecraftforge.network.NetworkDirection; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.simple.SimpleChannel; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.SimpleChannel; import java.util.function.Function; public final class Network { - private static final String PROTOCOL_VERSION = "1"; + private static final int PROTOCOL_VERSION = 1; - public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel( - new ResourceLocation(Constants.MOD_ID, "main"), - () -> PROTOCOL_VERSION, - PROTOCOL_VERSION::equals, - PROTOCOL_VERSION::equals - ); + private static final PacketDistributor.PacketTarget TO_SERVER = PacketDistributor.SERVER.noArg(); + + public static final SimpleChannel INSTANCE = ChannelBuilder + .named(new ResourceLocation(Constants.MOD_ID, "main")) + .networkProtocolVersion(PROTOCOL_VERSION) + .simpleChannel(); // --------------------------------------------------------------------- // @@ -34,7 +35,7 @@ public static void initialize() { } public static void sendToServer(final T message) { - Network.INSTANCE.sendToServer(message); + Network.INSTANCE.send(message, TO_SERVER); } // --------------------------------------------------------------------- // @@ -43,7 +44,7 @@ private static void registerMessage(final Class t INSTANCE.messageBuilder(type, getNextPacketId(), direction) .encoder(AbstractMessage::toBytes) .decoder(decoder) - .consumerNetworkThread(AbstractMessage::handleMessage) + .consumerNetworkThread(AbstractMessage::handleMessageAsync) .add(); } diff --git a/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessage.java b/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessage.java index a52a63e..01f0c25 100644 --- a/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessage.java +++ b/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessage.java @@ -5,11 +5,10 @@ import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.event.network.CustomPayloadEvent; import org.apache.commons.lang3.NotImplementedException; import javax.annotation.Nullable; -import java.util.function.Supplier; public abstract class AbstractMessage { protected AbstractMessage() { @@ -21,8 +20,8 @@ protected AbstractMessage(final FriendlyByteBuf buffer) { // --------------------------------------------------------------------- // - public static boolean handleMessage(final AbstractMessage message, final Supplier contextSupplied) { - message.handleMessage(contextSupplied); + public static boolean handleMessageAsync(final AbstractMessage message, final CustomPayloadEvent.Context context) { + message.handleMessageAsync(context); return true; } @@ -32,17 +31,16 @@ public static boolean handleMessage(final AbstractMessage message, final Supplie // --------------------------------------------------------------------- // - protected void handleMessage(final Supplier contextSupplier) { - final NetworkEvent.Context context = contextSupplier.get(); + protected void handleMessageAsync(final CustomPayloadEvent.Context context) { context.enqueueWork(() -> handleMessage(context)); } - protected void handleMessage(final NetworkEvent.Context context) { + protected void handleMessage(final CustomPayloadEvent.Context context) { throw new NotImplementedException("Message implements neither asynchronous nor synchronous handleMessage() method."); } @Nullable - protected static Level getLevel(final NetworkEvent.Context context) { + protected static Level getLevel(final CustomPayloadEvent.Context context) { if (context.getDirection().getReceptionSide().isClient()) { return getClientLevel(); } else { @@ -51,7 +49,7 @@ protected static Level getLevel(final NetworkEvent.Context context) { } @Nullable - private static Level getServerLevel(final NetworkEvent.Context context) { + private static Level getServerLevel(final CustomPayloadEvent.Context context) { final var sender = context.getSender(); return sender != null ? sender.level() : null; } diff --git a/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessageWithPosition.java b/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessageWithPosition.java index 725b646..0ea3306 100644 --- a/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessageWithPosition.java +++ b/src/main/java/li/cil/bedrockores/common/network/message/AbstractMessageWithPosition.java @@ -5,7 +5,7 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.event.network.CustomPayloadEvent; import java.util.function.Consumer; @@ -22,7 +22,7 @@ protected AbstractMessageWithPosition(final FriendlyByteBuf buffer) { // --------------------------------------------------------------------- // - protected void withBlockEntity(final NetworkEvent.Context context, final Class type, final Consumer callback) { + protected void withBlockEntity(final CustomPayloadEvent.Context context, final Class type, final Consumer callback) { final Level level = getLevel(context); if (level != null) { withBlockEntity(level, type, callback); diff --git a/src/main/java/li/cil/bedrockores/common/network/message/InfoRequestMessage.java b/src/main/java/li/cil/bedrockores/common/network/message/InfoRequestMessage.java index e9084fd..58f9869 100644 --- a/src/main/java/li/cil/bedrockores/common/network/message/InfoRequestMessage.java +++ b/src/main/java/li/cil/bedrockores/common/network/message/InfoRequestMessage.java @@ -4,7 +4,7 @@ import li.cil.bedrockores.common.network.Network; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.event.network.CustomPayloadEvent; public final class InfoRequestMessage extends AbstractMessageWithPosition { public InfoRequestMessage(final BlockPos position) { @@ -19,7 +19,7 @@ public InfoRequestMessage(final FriendlyByteBuf buffer) { // AbstractMessage @Override - public void handleMessage(final NetworkEvent.Context context) { + public void handleMessage(final CustomPayloadEvent.Context context) { withBlockEntity(context, BlockEntityWithInfo.class, blockEntity -> Network.INSTANCE.reply(new InfoResponseMessage(blockEntity.getBlockPos(), blockEntity.getLookAtInfo()), context)); } diff --git a/src/main/java/li/cil/bedrockores/common/network/message/InfoResponseMessage.java b/src/main/java/li/cil/bedrockores/common/network/message/InfoResponseMessage.java index 1dfbba9..e73d2fe 100644 --- a/src/main/java/li/cil/bedrockores/common/network/message/InfoResponseMessage.java +++ b/src/main/java/li/cil/bedrockores/common/network/message/InfoResponseMessage.java @@ -4,12 +4,13 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; -import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.event.network.CustomPayloadEvent; import javax.annotation.Nullable; public final class InfoResponseMessage extends AbstractMessageWithPosition { - @Nullable private Component info; + @Nullable + private Component info; // --------------------------------------------------------------------- // @@ -47,7 +48,7 @@ public void toBytes(final FriendlyByteBuf buffer) { } @Override - public void handleMessage(final NetworkEvent.Context context) { + public void handleMessage(final CustomPayloadEvent.Context context) { withBlockEntity(context, BlockEntityWithInfo.class, blockEntity -> blockEntity.setInfoClient(info)); } }