From 3330e6f9229c5d5f6f48516b22ae0babaee521fc Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 18 May 2019 00:45:36 -0300 Subject: [PATCH] rework motd and 14.2 pre 2 --- gradle.properties | 4 +-- src/main/java/carpet/CarpetSettings.java | 4 ++- .../fakes/MinecraftServer_motdInterface.java | 6 +++++ .../mixins/MinecraftServer_motdMixin.java | 26 ++++++++++++++----- 4 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 src/main/java/carpet/fakes/MinecraftServer_motdInterface.java diff --git a/gradle.properties b/gradle.properties index 86ded629..2c9e0c6a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=1.14.2 Pre-Release 1 - yarn_mappings=1.14.2 Pre-Release 1+build.1 + minecraft_version=1.14.2 Pre-Release 2 + yarn_mappings=1.14.2 Pre-Release 2+build.2 loader_version=0.4.7+build.147 # Mod Properties diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index fb3f625d..be0958d0 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.FileNotFoundException; //import carpet.helpers.SpawnChunks; +import carpet.fakes.MinecraftServer_motdInterface; import carpet.utils.Messenger; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.dedicated.DedicatedServer; @@ -152,7 +153,8 @@ public class CarpetSettings .choices("100","0 10 50 100").setNotStrict(), rule("customMOTD", "creative","Sets a different motd message on client trying to connect to the server") .extraInfo("use '_' to use the startup setting from server.properties") - .choices("_","_").setNotStrict(), + .choices("_","_").setNotStrict().validate((s) -> + ((MinecraftServer_motdInterface)CarpetServer.minecraft_server).checkMOTD()), rule("rotatorBlock", "experimental", "Cactus in dispensers rotates blocks.") .extraInfo("Cactus in a dispenser gives the dispenser the ability to rotate the blocks " + "that are in front of it anti-clockwise if possible."), diff --git a/src/main/java/carpet/fakes/MinecraftServer_motdInterface.java b/src/main/java/carpet/fakes/MinecraftServer_motdInterface.java new file mode 100644 index 00000000..6cb05284 --- /dev/null +++ b/src/main/java/carpet/fakes/MinecraftServer_motdInterface.java @@ -0,0 +1,6 @@ +package carpet.fakes; + +public interface MinecraftServer_motdInterface +{ + String checkMOTD(); +} diff --git a/src/main/java/carpet/mixins/MinecraftServer_motdMixin.java b/src/main/java/carpet/mixins/MinecraftServer_motdMixin.java index 35fd5fe5..c177d465 100644 --- a/src/main/java/carpet/mixins/MinecraftServer_motdMixin.java +++ b/src/main/java/carpet/mixins/MinecraftServer_motdMixin.java @@ -1,6 +1,7 @@ package carpet.mixins; import carpet.CarpetSettings; +import carpet.fakes.MinecraftServer_motdInterface; import net.minecraft.server.MinecraftServer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -8,20 +9,33 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(MinecraftServer.class) -public class MinecraftServer_motdMixin +public abstract class MinecraftServer_motdMixin implements MinecraftServer_motdInterface { @Shadow private String motd; + @Shadow public abstract void setMotd(String string_1); + @Redirect(method = "run", at = @At( value = "FIELD", target = "Lnet/minecraft/server/MinecraftServer;motd:Ljava/lang/String;") ) - private String setMotd(MinecraftServer server) + private String setCustomMotd(MinecraftServer server) { - if ("_".equals(CarpetSettings.getString("customMOTD"))) - return motd; - else - return CarpetSettings.getString("customMOTD"); + return checkMOTD(); } + @Override + public String checkMOTD() + { + if ("_".equals(CarpetSettings.getString("customMOTD"))) + { + setMotd(motd); + return motd; + } + else + { + setMotd(CarpetSettings.getString("customMOTD")); + return CarpetSettings.getString("customMOTD"); + } + } }