diff --git a/build.gradle.kts b/build.gradle.kts index 4df05cc..e974c54 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,13 +6,13 @@ subprojects { plugins.apply("java-library") group = "ru.bk.oharass.freedomchat" - version = "1.7.7" + version = "1.7.8" description = "Liberate your server from the chat-reporting bourgeoisie! Disable chat signing server-side." tasks { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) + languageVersion.set(JavaLanguageVersion.of(25)) } } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 16f7c64..22c206f 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("dev.architectury.loom") version "1.13-SNAPSHOT" + id("net.fabricmc.fabric-loom") version "1.16-SNAPSHOT" id("com.gradleup.shadow") version "8.3.9" } @@ -13,31 +13,38 @@ repositories { } dependencies { - minecraft(group = "com.mojang", name = "minecraft", version = "1.21.11") - mappings(group = "net.fabricmc", name = "yarn", version = "1.21.11+build.1", classifier = "v2") - modImplementation(group = "net.fabricmc", name = "fabric-loader", version = "0.18.2") - modImplementation(group = "net.fabricmc.fabric-api", name = "fabric-api", version = "0.139.4+1.21.11") + minecraft(group = "com.mojang", name = "minecraft", version = "26.1.2") + implementation(group = "net.fabricmc", name = "fabric-loader", version = "0.19.2") + implementation(group = "net.fabricmc.fabric-api", name = "fabric-api", version = "0.147.0+26.1.2") shade(implementation(group = "org.spongepowered", name = "configurate-yaml", version = "4.2.0")) } tasks { processResources { filesMatching("fabric.mod.json") { - expand( + expand(mapOf( "version" to project.version, - "description" to project.description, - ) + "description" to project.description + )) } } - shadowJar { + + val shadowJarTask = named("shadowJar") { // Relocate configurate & its dependencies relocate("org.spongepowered.configurate", "ru.bk.oharass.freedomchat.lib.org.spongepowered.configurate") relocate("io.leangen.geantyref", "ru.bk.oharass.freedomchat.lib.io.leangen.geantyref") relocate("org.yaml.snakeyaml", "ru.bk.oharass.freedomchat.lib.org.yaml.snakeyaml") configurations = listOf(shade) - archiveClassifier.set("dev") + archiveClassifier.set("") } - remapJar { - inputFile.set(shadowJar.get().archiveFile) + + named("jar") { + enabled = false + } + shadowJarTask.configure { + archiveClassifier.set("") + } + assemble { + dependsOn(shadowJarTask) } } diff --git a/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java b/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java index 9c583ca..b5975f9 100644 --- a/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java +++ b/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java @@ -23,8 +23,8 @@ public class FreedomChat implements ModInitializer { public void onInitialize() { ServerLifecycleEvents.SERVER_STARTED.register(server -> { this.server = server; - if (!Boolean.getBoolean("im.evan.freedomchat.bypassprotocolcheck") && SharedConstants.getProtocolVersion() != 774) { - logger.warn("This version of FreedomChat only supports protocol version 774 (1.21.11). Please use the appropriate version of FreedomChat for your server"); + if (!Boolean.getBoolean("im.evan.freedomchat.bypassprotocolcheck") && SharedConstants.getProtocolVersion() != 775) { + logger.warn("This version of FreedomChat only supports protocol version 775 (26.1). Please use the appropriate version of FreedomChat for your server"); logger.warn("If you know what you are doing, set the im.evan.freedomchat.bypassprotocolcheck system property to true to bypass this check"); return; } diff --git a/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomHandler.java b/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomHandler.java index 0642221..fe76c52 100644 --- a/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomHandler.java +++ b/fabric/src/main/java/ru/bk/oharass/freedomchat/FreedomHandler.java @@ -4,20 +4,20 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.listener.ClientPlayPacketListener; -import net.minecraft.network.message.MessageType; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket; -import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket; -import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket; -import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket; -import net.minecraft.network.state.PlayStateFactories; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.server.ServerMetadata; -import net.minecraft.text.Text; +import net.minecraft.core.RegistryAccess; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.chat.ChatType; +import net.minecraft.network.chat.Component; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundLoginPacket; +import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket; +import net.minecraft.network.protocol.game.ClientboundSystemChatPacket; +import net.minecraft.network.protocol.game.GameProtocols; +import net.minecraft.network.protocol.status.ClientboundStatusResponsePacket; +import net.minecraft.network.protocol.status.ServerStatus; import ru.bk.oharass.freedomchat.rewrite.CustomServerMetadata; import java.util.Objects; @@ -27,16 +27,16 @@ @ChannelHandler.Sharable public class FreedomHandler extends MessageToByteEncoder> { private static final int STATUS_RESPONSE_PACKET_ID = 0x00; - private final PacketCodec> s2cPlayPacketCodec; + private final StreamCodec> s2cPlayPacketCodec; private final boolean rewriteChat; private final boolean claimSecureChatEnforced; private final boolean noChatReports; private final boolean bedrockOnly; public FreedomHandler(final FreedomChat freedom, final boolean rewriteChat, final boolean claimSecureChatEnforced, final boolean noChatReports, final boolean bedrockOnly) { - final DynamicRegistryManager registryAccess = freedom.getServer().getRegistryManager(); - final Function bufRegistryAccess = RegistryByteBuf.makeFactory(registryAccess); - this.s2cPlayPacketCodec = PlayStateFactories.S2C.bind(bufRegistryAccess).codec(); + final RegistryAccess registryAccess = freedom.getServer().registryAccess(); + final Function bufRegistryAccess = RegistryFriendlyByteBuf.decorator(registryAccess); + this.s2cPlayPacketCodec = GameProtocols.CLIENTBOUND_TEMPLATE.bind(bufRegistryAccess).codec(); this.rewriteChat = rewriteChat; this.claimSecureChatEnforced = claimSecureChatEnforced; this.noChatReports = noChatReports; @@ -45,42 +45,42 @@ public FreedomHandler(final FreedomChat freedom, final boolean rewriteChat, fina @Override public boolean acceptOutboundMessage(final Object msg) { - return (rewriteChat && msg instanceof ChatMessageS2CPacket packet && (!bedrockOnly || isBedrockPlayer(packet.sender()))) - || noChatReports && msg instanceof QueryResponseS2CPacket - || claimSecureChatEnforced && msg instanceof GameJoinS2CPacket; + return (rewriteChat && msg instanceof ClientboundPlayerChatPacket packet && (!bedrockOnly || isBedrockPlayer(packet.sender()))) + || noChatReports && msg instanceof ClientboundStatusResponsePacket + || claimSecureChatEnforced && msg instanceof ClientboundLoginPacket; } @Override protected void encode(final ChannelHandlerContext ctx, final Packet msg, final ByteBuf out) { - final PacketByteBuf fbb = new PacketByteBuf(out); + final FriendlyByteBuf fbb = new FriendlyByteBuf(out); - if (msg instanceof final ChatMessageS2CPacket packet) { + if (msg instanceof final ClientboundPlayerChatPacket packet) { encode(ctx, packet, fbb); - } else if (msg instanceof final QueryResponseS2CPacket packet) { + } else if (msg instanceof final ClientboundStatusResponsePacket packet) { encode(ctx, packet, fbb); - } else if (msg instanceof final GameJoinS2CPacket packet) { + } else if (msg instanceof final ClientboundLoginPacket packet) { encode(ctx, packet, fbb); } } - private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, final ChatMessageS2CPacket msg, final PacketByteBuf buf) { - final Text content = Objects.requireNonNullElseGet(msg.unsignedContent(), () -> Text.literal(msg.body().content())); + private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, final ClientboundPlayerChatPacket msg, final FriendlyByteBuf buf) { + final Component content = Objects.requireNonNullElseGet(msg.unsignedContent(), () -> Component.literal(msg.body().content())); - final MessageType.Parameters chatType = msg.serializedParameters(); - final Text decoratedContent = chatType.applyChatDecoration(content); + final ChatType.Bound chatType = msg.chatType(); + final Component decoratedContent = chatType.decorate(content); - final GameMessageS2CPacket system = new GameMessageS2CPacket(decoratedContent, false); + final ClientboundSystemChatPacket system = new ClientboundSystemChatPacket(decoratedContent, false); s2cPlayPacketCodec.encode(buf, system); } - private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, final GameJoinS2CPacket msg, final PacketByteBuf buf) { - final GameJoinS2CPacket rewritten = new GameJoinS2CPacket( - msg.playerEntityId(), + private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, final ClientboundLoginPacket msg, final FriendlyByteBuf buf) { + final ClientboundLoginPacket rewritten = new ClientboundLoginPacket( + msg.playerId(), msg.hardcore(), - msg.dimensionIds(), + msg.levels(), msg.maxPlayers(), - msg.viewDistance(), + msg.chunkRadius(), msg.simulationDistance(), msg.reducedDebugInfo(), msg.showDeathScreen(), @@ -91,20 +91,20 @@ private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, s2cPlayPacketCodec.encode(buf, rewritten); } - private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, final QueryResponseS2CPacket msg, final PacketByteBuf buf) { - final ServerMetadata status = msg.metadata(); + private void encode(@SuppressWarnings("unused") final ChannelHandlerContext ctx, final ClientboundStatusResponsePacket msg, final FriendlyByteBuf buf) { + final ServerStatus status = msg.status(); final CustomServerMetadata customStatus = new CustomServerMetadata( status.description(), status.players(), status.version(), status.favicon(), - status.secureChatEnforced(), + status.enforcesSecureChat(), true ); buf.writeVarInt(STATUS_RESPONSE_PACKET_ID); - buf.encodeAsJson(CustomServerMetadata.CODEC, customStatus); + buf.writeJsonWithCodec(CustomServerMetadata.CODEC, customStatus); } private boolean isBedrockPlayer(final UUID uuid) { diff --git a/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ClientConnectionMixin.java b/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ClientConnectionMixin.java index 67b4b9d..3fa496e 100644 --- a/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ClientConnectionMixin.java +++ b/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ClientConnectionMixin.java @@ -1,12 +1,12 @@ package ru.bk.oharass.freedomchat.mixins; import io.netty.channel.Channel; -import net.minecraft.network.ClientConnection; +import net.minecraft.network.Connection; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import ru.bk.oharass.freedomchat.access.ClientConnectionAccess; -@Mixin(ClientConnection.class) +@Mixin(Connection.class) public class ClientConnectionMixin implements ClientConnectionAccess { @Shadow private Channel channel; diff --git a/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/PlayerManagerMixin.java b/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/PlayerManagerMixin.java index 7d031b9..fcf5d16 100644 --- a/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/PlayerManagerMixin.java +++ b/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/PlayerManagerMixin.java @@ -1,10 +1,10 @@ package ru.bk.oharass.freedomchat.mixins; import io.netty.channel.ChannelPipeline; -import net.minecraft.network.ClientConnection; -import net.minecraft.server.PlayerManager; -import net.minecraft.server.network.ConnectedClientData; -import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.network.Connection; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.CommonListenerCookie; +import net.minecraft.server.players.PlayerList; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -12,11 +12,11 @@ import ru.bk.oharass.freedomchat.FreedomChat; import ru.bk.oharass.freedomchat.access.ServerCommonNetworkHandlerAccess; -@Mixin(PlayerManager.class) +@Mixin(PlayerList.class) public class PlayerManagerMixin { - @Inject(method = "onPlayerConnect", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;transitionInbound(Lnet/minecraft/network/state/NetworkState;Lnet/minecraft/network/listener/PacketListener;)V", shift = At.Shift.AFTER)) - public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData, CallbackInfo ci) { - final ChannelPipeline pipeline = ((ServerCommonNetworkHandlerAccess) player.networkHandler).getConnectionAccess().getChannel().pipeline(); + @Inject(method = "placeNewPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/Connection;setupInboundProtocol(Lnet/minecraft/network/ProtocolInfo;Lnet/minecraft/network/PacketListener;)V", shift = At.Shift.AFTER)) + public void onPlayerConnect(Connection connection, ServerPlayer player, CommonListenerCookie clientData, CallbackInfo ci) { + final ChannelPipeline pipeline = ((ServerCommonNetworkHandlerAccess) player.connection).getConnectionAccess().getChannel().pipeline(); pipeline.addAfter("packet_handler", "freedom_handler", FreedomChat.getHandler()); } } diff --git a/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ServerCommonNetworkHandlerMixin.java b/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ServerCommonNetworkHandlerMixin.java index 8945793..d674629 100644 --- a/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ServerCommonNetworkHandlerMixin.java +++ b/fabric/src/main/java/ru/bk/oharass/freedomchat/mixins/ServerCommonNetworkHandlerMixin.java @@ -1,18 +1,18 @@ package ru.bk.oharass.freedomchat.mixins; -import net.minecraft.network.ClientConnection; -import net.minecraft.server.network.ServerCommonNetworkHandler; +import net.minecraft.network.Connection; +import net.minecraft.server.network.ServerCommonPacketListenerImpl; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import ru.bk.oharass.freedomchat.access.ClientConnectionAccess; import ru.bk.oharass.freedomchat.access.ServerCommonNetworkHandlerAccess; -@Mixin(ServerCommonNetworkHandler.class) +@Mixin(ServerCommonPacketListenerImpl.class) public class ServerCommonNetworkHandlerMixin implements ServerCommonNetworkHandlerAccess { @Final @Shadow - protected ClientConnection connection; + protected Connection connection; @Override public ClientConnectionAccess getConnectionAccess() { diff --git a/fabric/src/main/java/ru/bk/oharass/freedomchat/rewrite/CustomServerMetadata.java b/fabric/src/main/java/ru/bk/oharass/freedomchat/rewrite/CustomServerMetadata.java index 866141e..f544c91 100644 --- a/fabric/src/main/java/ru/bk/oharass/freedomchat/rewrite/CustomServerMetadata.java +++ b/fabric/src/main/java/ru/bk/oharass/freedomchat/rewrite/CustomServerMetadata.java @@ -2,25 +2,25 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.screen.ScreenTexts; -import net.minecraft.server.ServerMetadata; -import net.minecraft.text.Text; -import net.minecraft.text.TextCodecs; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentSerialization; +import net.minecraft.network.protocol.status.ServerStatus; import java.util.Optional; -public record CustomServerMetadata(Text description, Optional players, - Optional version, Optional favicon, +public record CustomServerMetadata(Component description, Optional players, + Optional version, Optional favicon, boolean secureChatEnforced, boolean preventsChatReports) { public static final Codec CODEC = RecordCodecBuilder .create((instance) -> instance.group( - TextCodecs.CODEC.lenientOptionalFieldOf("description", ScreenTexts.EMPTY) + ComponentSerialization.CODEC.lenientOptionalFieldOf("description", CommonComponents.EMPTY) .forGetter(CustomServerMetadata::description), - ServerMetadata.Players.CODEC.lenientOptionalFieldOf("players") + ServerStatus.Players.CODEC.lenientOptionalFieldOf("players") .forGetter(CustomServerMetadata::players), - ServerMetadata.Version.CODEC.lenientOptionalFieldOf("version") + ServerStatus.Version.CODEC.lenientOptionalFieldOf("version") .forGetter(CustomServerMetadata::version), - ServerMetadata.Favicon.CODEC.lenientOptionalFieldOf("favicon") + ServerStatus.Favicon.CODEC.lenientOptionalFieldOf("favicon") .forGetter(CustomServerMetadata::favicon), Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", false) .forGetter(CustomServerMetadata::secureChatEnforced), @@ -28,19 +28,19 @@ public record CustomServerMetadata(Text description, Optional players() { + public Optional players() { return this.players; } - public Optional version() { + public Optional version() { return this.version; } - public Optional favicon() { + public Optional favicon() { return this.favicon; } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index f49b800..ac45a42 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -26,9 +26,9 @@ "freedomchat.mixins.json" ], "depends": { - "fabricloader": ">=0.15.11", - "fabric": "*", - "minecraft": ">=1.21", - "java": ">=21" + "fabricloader": ">=0.18.5", + "fabric-api": "*", + "minecraft": ">=26.1", + "java": ">=25" } } diff --git a/fabric/src/main/resources/freedomchat.mixins.json b/fabric/src/main/resources/freedomchat.mixins.json index edce112..bffbad9 100644 --- a/fabric/src/main/resources/freedomchat.mixins.json +++ b/fabric/src/main/resources/freedomchat.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "ru.bk.oharass.freedomchat.mixins", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ "ClientConnectionMixin", "PlayerManagerMixin", diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55..b1b8ef5 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 3735f26..b52fb7e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,8 +1,9 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=7197a12f450794931532469d4ff21a59ea2c1cd59a3ec3f89c035c3c420a6999 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 23d15a9..b9bb139 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index 5eed7ee..aa5f10b 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -23,8 +23,8 @@ @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +51,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/paper/build.gradle.kts b/paper/build.gradle.kts index d90d965..e24171a 100644 --- a/paper/build.gradle.kts +++ b/paper/build.gradle.kts @@ -1,17 +1,17 @@ plugins { - id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" - id("xyz.jpenilla.run-paper") version "2.3.1" + id("io.papermc.paperweight.userdev") version "2.0.0-beta.21" + id("xyz.jpenilla.run-paper") version "3.0.2" } paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.MOJANG_PRODUCTION dependencies { - paperweight.paperDevBundle("1.21.11-R0.1-SNAPSHOT") + paperweight.paperDevBundle("26.1.2.build.+") } tasks { runServer { - minecraftVersion("1.21.11") + minecraftVersion("26.1.2") } processResources { diff --git a/paper/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java b/paper/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java index 361d305..6a09f2f 100644 --- a/paper/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java +++ b/paper/src/main/java/ru/bk/oharass/freedomchat/FreedomChat.java @@ -1,6 +1,5 @@ package ru.bk.oharass.freedomchat; -import io.papermc.paper.util.MappingEnvironment; import net.kyori.adventure.key.Key; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.Listener; @@ -15,18 +14,12 @@ public class FreedomChat extends JavaPlugin implements Listener { @Override public void onEnable() { - if (!Boolean.getBoolean("im.evan.freedomchat.bypassprotocolcheck") && this.getServer().getUnsafe().getProtocolVersion() != 774) { - getLogger().warning("This version of FreedomChat only supports protocol version 774 (1.21.11). Please use the appropriate version of FreedomChat for your server"); + if (!Boolean.getBoolean("im.evan.freedomchat.bypassprotocolcheck") && this.getServer().getUnsafe().getProtocolVersion() != 775) { + getLogger().warning("This version of FreedomChat only supports protocol version 775 (26.1). Please use the appropriate version of FreedomChat for your server"); getLogger().warning("If you know what you are doing, set the im.evan.freedomchat.bypassprotocolcheck system property to true to bypass this check"); this.getServer().getPluginManager().disablePlugin(this); return; } - if (!Boolean.getBoolean("im.evan.freedomchat.bypassmappingscheck") && MappingEnvironment.reobf()) { - getLogger().warning("This version of FreedomChat only supports Mojang-mapped servers. Please use the Mojang-mapped server JAR"); - getLogger().warning("If you know what you are doing, set the im.evan.freedomchat.bypassmappingscheck system property to true to bypass this check"); - this.getServer().getPluginManager().disablePlugin(this); - return; - } this.saveDefaultConfig(); final FileConfiguration config = this.getConfig(); diff --git a/paper/src/main/resources/plugin.yml b/paper/src/main/resources/plugin.yml index e003d67..5e28b1d 100644 --- a/paper/src/main/resources/plugin.yml +++ b/paper/src/main/resources/plugin.yml @@ -8,5 +8,5 @@ authors: - "ocelotpotpie" - "pop4959" website: "https://github.com/ocelotpotpie/FreedomChat" -api-version: "1.21" +api-version: "26.1" folia-supported: true diff --git a/settings.gradle.kts b/settings.gradle.kts index 4e89c58..0a253e1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,4 @@ -import org.gradle.configurationcache.extensions.capitalized +import org.gradle.internal.extensions.stdlib.capitalized pluginManagement { repositories {