diff --git a/src/main/java/serverutils/ServerUtilitiesCommon.java b/src/main/java/serverutils/ServerUtilitiesCommon.java index 1ed6d680..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; @@ -88,6 +91,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 { @@ -256,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()); } @@ -285,6 +294,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) { 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/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); + } +} 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 - } - } -}