From bcaac93ea6c405723f0efbd0e1cf2040bff22597 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Thu, 6 Nov 2025 13:24:30 -0700 Subject: [PATCH 1/4] Delete existing mixin. It was basically doing extra processing each time the server response was retrieved by another caller. --- src/main/java/serverutils/mixin/Mixins.java | 6 +--- .../MixinMinecraftServer_CustomMotd.java | 31 ------------------- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_CustomMotd.java diff --git a/src/main/java/serverutils/mixin/Mixins.java b/src/main/java/serverutils/mixin/Mixins.java index ae2526cb..1133f534 100644 --- a/src/main/java/serverutils/mixin/Mixins.java +++ b/src/main/java/serverutils/mixin/Mixins.java @@ -64,11 +64,7 @@ public enum Mixins implements IMixins { BYPASS_PLAYER_LIMIT(new MixinBuilder("Adds permission for bypassing player limit") .setPhase(Phase.EARLY) .setApplyIf(() -> mixins.bypassPlayerLimit) - .addCommonMixins("minecraft.MixinNetHandlerLoginServer")), - CUSTOM_MOTD(new MixinBuilder("Custom configurable MOTD with color codes and variables") - .setPhase(Phase.EARLY) - .setApplyIf(() -> motd.enabled) - .addServerMixins("minecraft.MixinMinecraftServer_CustomMotd")); + .addCommonMixins("minecraft.MixinNetHandlerLoginServer")); // spotless:on private final MixinBuilder builder; diff --git a/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_CustomMotd.java b/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_CustomMotd.java deleted file mode 100644 index 837867db..00000000 --- a/src/mixins/java/serverutils/mixins/early/minecraft/MixinMinecraftServer_CustomMotd.java +++ /dev/null @@ -1,31 +0,0 @@ -package serverutils.mixins.early.minecraft; - -import net.minecraft.network.ServerStatusResponse; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.IChatComponent; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import serverutils.ServerUtilitiesConfig; -import serverutils.lib.util.MOTDFormatter; - -@Mixin(MinecraftServer.class) -public class MixinMinecraftServer_CustomMotd { - - @Inject(method = "func_147134_at", at = @At("RETURN")) - private void serverutilities$applyCustomMotd(CallbackInfoReturnable cir) { - if (!ServerUtilitiesConfig.motd.enabled) { - return; - } - - ServerStatusResponse response = cir.getReturnValue(); - if (response != null) { - MinecraftServer server = (MinecraftServer) (Object) this; - IChatComponent customMotd = MOTDFormatter.buildMOTD(server); - response.func_151315_a(customMotd); // setServerMotd - } - } -} From 152113981ef3b573647afd9a1b5a3a47921131b2 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Thu, 6 Nov 2025 13:24:49 -0700 Subject: [PATCH 2/4] Add a task to routinely update the MOTD. --- .../java/serverutils/task/UpdateMOTDTask.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/serverutils/task/UpdateMOTDTask.java diff --git a/src/main/java/serverutils/task/UpdateMOTDTask.java b/src/main/java/serverutils/task/UpdateMOTDTask.java new file mode 100644 index 00000000..895ae613 --- /dev/null +++ b/src/main/java/serverutils/task/UpdateMOTDTask.java @@ -0,0 +1,29 @@ +package serverutils.task; + +import net.minecraft.util.IChatComponent; + +import serverutils.lib.data.Universe; +import serverutils.lib.math.Ticks; +import serverutils.lib.util.MOTDFormatter; + +public class UpdateMOTDTask extends Task { + + /** + * Create a new instance. + */ + public UpdateMOTDTask() { + // -- Runs every 5 seconds + super(Ticks.getFromMillis(5000L)); + } + + /** + * Update the MOTD text. + * + * @param universe The state of the universe. + */ + @Override + public void execute(Universe universe) { + IChatComponent motd = MOTDFormatter.buildMOTD(universe.server); + universe.server.func_147134_at().func_151315_a(motd); + } +} From 241e5b09f18d182b045799d43b925a99d760241e Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Thu, 6 Nov 2025 13:25:22 -0700 Subject: [PATCH 3/4] Register new task. --- src/main/java/serverutils/ServerUtilitiesCommon.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/serverutils/ServerUtilitiesCommon.java b/src/main/java/serverutils/ServerUtilitiesCommon.java index 1ed6d680..fd0281bc 100644 --- a/src/main/java/serverutils/ServerUtilitiesCommon.java +++ b/src/main/java/serverutils/ServerUtilitiesCommon.java @@ -88,6 +88,7 @@ import serverutils.task.CleanupTask; import serverutils.task.DecayTask; import serverutils.task.ShutdownTask; +import serverutils.task.UpdateMOTDTask; import serverutils.task.backup.BackupTask; public class ServerUtilitiesCommon { @@ -285,6 +286,9 @@ public void registerTasks() { && (auto_shutdown.enabled_singleplayer || universe.server.isDedicatedServer())) { universe.scheduleTask(new ShutdownTask()); } + if (motd.enabled) { + universe.scheduleTask(new UpdateMOTDTask()); + } } public boolean onReload(ServerReloadEvent event) { From d17f21dacab2ddf3721a2b0123367cbacdd620f6 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Thu, 6 Nov 2025 13:25:29 -0700 Subject: [PATCH 4/4] Initial MOTD setup code. --- src/main/java/serverutils/ServerUtilitiesCommon.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/serverutils/ServerUtilitiesCommon.java b/src/main/java/serverutils/ServerUtilitiesCommon.java index fd0281bc..bd4eb39c 100644 --- a/src/main/java/serverutils/ServerUtilitiesCommon.java +++ b/src/main/java/serverutils/ServerUtilitiesCommon.java @@ -2,6 +2,7 @@ import static serverutils.ServerUtilitiesConfig.auto_shutdown; import static serverutils.ServerUtilitiesConfig.backups; +import static serverutils.ServerUtilitiesConfig.motd; import static serverutils.ServerUtilitiesConfig.ranks; import static serverutils.ServerUtilitiesConfig.tasks; import static serverutils.ServerUtilitiesConfig.world; @@ -16,6 +17,7 @@ import net.minecraft.launchwrapper.Launch; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.IChatComponent; @@ -81,6 +83,7 @@ import serverutils.lib.math.Ticks; import serverutils.lib.net.MessageToClient; import serverutils.lib.util.InvUtils; +import serverutils.lib.util.MOTDFormatter; import serverutils.lib.util.ServerUtils; import serverutils.lib.util.permission.PermissionAPI; import serverutils.net.ServerUtilitiesNetHandler; @@ -257,7 +260,12 @@ public void onServerAboutToStart(FMLServerAboutToStartEvent event) { public void onServerStarting(FMLServerStartingEvent event) { ServerUtilitiesCommands.registerCommands(event); - + // -- Initial MOTD setup + if (motd.enabled) { + MinecraftServer server = event.getServer(); + IChatComponent motd = MOTDFormatter.buildMOTD(server); + server.func_147134_at().func_151315_a(motd); + } if (AuroraConfig.general.enable) { Aurora.start(event.getServer()); }