diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16bf9b016..32d2f74c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '17' + java-version: '21' - name: Setup Gradle uses: gradle/gradle-build-action@v2 diff --git a/README.md b/README.md index 83e8f0c82..35476e412 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ For more information, see the wiki article on [Why LuckPerms?](https://luckperms LuckPerms uses Gradle to handle dependencies & building. #### Requirements -* Java 17 JDK or newer +* Java 21 JDK or newer * Git #### Compiling from source diff --git a/common/build.gradle b/common/build.gradle index c2b3f51f7..d3e5e9966 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -15,8 +15,8 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.1' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.1' testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.1' - testImplementation 'org.mockito:mockito-core:4.11.0' - testImplementation 'org.mockito:mockito-junit-jupiter:4.11.0' + testImplementation 'org.mockito:mockito-core:5.11.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' testImplementation 'com.h2database:h2:2.1.214' api project(':api') diff --git a/fabric/build.gradle b/fabric/build.gradle index 3afe790d0..954f29c1e 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -13,9 +13,9 @@ repositories { dependencies { // https://modmuss50.me/fabric.html - minecraft 'com.mojang:minecraft:1.20.4' - mappings 'net.fabricmc:yarn:1.20.4+build.1:v2' - modImplementation 'net.fabricmc:fabric-loader:0.15.1' + minecraft 'com.mojang:minecraft:1.20.5' + mappings 'net.fabricmc:yarn:1.20.5+build.1:v2' + modImplementation 'net.fabricmc:fabric-loader:0.15.10' Set apiModules = [ 'fabric-api-base', @@ -25,7 +25,7 @@ dependencies { ] apiModules.forEach { - modImplementation(fabricApi.module(it, '0.91.2+1.20.4')) + modImplementation(fabricApi.module(it, '0.97.6+1.20.5')) } include(modImplementation('me.lucko:fabric-permissions-api:0.3.1')) diff --git a/fabric/src/main/java/me/lucko/luckperms/fabric/FabricSenderFactory.java b/fabric/src/main/java/me/lucko/luckperms/fabric/FabricSenderFactory.java index eb7b7bb00..528621da8 100644 --- a/fabric/src/main/java/me/lucko/luckperms/fabric/FabricSenderFactory.java +++ b/fabric/src/main/java/me/lucko/luckperms/fabric/FabricSenderFactory.java @@ -33,6 +33,7 @@ import me.lucko.luckperms.fabric.mixin.ServerCommandSourceAccessor; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.luckperms.api.util.Tristate; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.server.command.CommandOutput; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; @@ -117,6 +118,6 @@ public class FabricSenderFactory extends SenderFactory { private static final Identifier CHANNEL = new Identifier(AbstractPluginMessageMessenger.CHANNEL); private final LPFabricPlugin plugin; @@ -54,7 +58,9 @@ public class PluginMessageMessenger extends AbstractPluginMessageMessenger imple } public void init() { - ServerPlayNetworking.registerGlobalReceiver(CHANNEL, this); + PayloadTypeRegistry.playS2C().register(PluginMessagePayload.ID, PluginMessagePayload.CODEC); + PayloadTypeRegistry.playC2S().register(PluginMessagePayload.ID, PluginMessagePayload.CODEC); + ServerPlayNetworking.registerGlobalReceiver(PluginMessagePayload.ID, this); } @Override @@ -77,9 +83,7 @@ public class PluginMessageMessenger extends AbstractPluginMessageMessenger imple return; } - PacketByteBuf packetBuf = PacketByteBufs.create(); - packetBuf.writeBytes(buf); - ServerPlayNetworking.send(p, CHANNEL, packetBuf); + ServerPlayNetworking.send(p, new PluginMessagePayload(buf)); SchedulerTask t = taskRef.getAndSet(null); if (t != null) { @@ -90,10 +94,32 @@ public class PluginMessageMessenger extends AbstractPluginMessageMessenger imple } @Override - public void receive(MinecraftServer server, ServerPlayerEntity entity, ServerPlayNetworkHandler netHandler, PacketByteBuf packetBuf, PacketSender packetSender) { - byte[] buf = new byte[packetBuf.readableBytes()]; - packetBuf.readBytes(buf); + public void receive(PluginMessagePayload payload, ServerPlayNetworking.Context context) { + handleIncomingMessage(payload.data); + } - handleIncomingMessage(buf); + public static class PluginMessagePayload implements CustomPayload { + public static final CustomPayload.Id ID = new CustomPayload.Id<>(CHANNEL); + public static final PacketCodec CODEC = PacketCodec.of(PluginMessagePayload::write, PluginMessagePayload::new).cast(); + + private final byte[] data; + + private PluginMessagePayload(byte[] data) { + this.data = data; + } + + private PluginMessagePayload(PacketByteBuf buf) { + this.data = new byte[buf.readableBytes()]; + buf.readBytes(this.data); + } + + private void write(PacketByteBuf buf) { + buf.writeBytes(this.data); + } + + @Override + public Id getId() { + return ID; + } } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917..e6441136f 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a80b22ce5..b82aa23a4 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.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME