diff --git a/lophine-server/minecraft-patches/features/0046-Add-config-to-enable-tick-command.patch b/lophine-server/minecraft-patches/features/0046-Add-config-to-enable-tick-command.patch index 0b660e2..ead962b 100644 --- a/lophine-server/minecraft-patches/features/0046-Add-config-to-enable-tick-command.patch +++ b/lophine-server/minecraft-patches/features/0046-Add-config-to-enable-tick-command.patch @@ -3,10 +3,10 @@ From: Helvetica Volubi Date: Fri, 5 Jun 2026 15:09:29 +0800 Subject: [PATCH] Add config to enable tick command -only freeze/unfreeze/step/query can run when enabled +only freeze/unfreeze/step/query/rate can run when enabled diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java -index ff90abb47203c03636d3175f2b3efcf43517b3b0..276349d778c2e6f0b1081eec4851bad5d25db237 100644 +index ff90abb47203c03636d3175f2b3efcf43517b3b0..a2db29aa47a4b7213d4956f02f6e83122ccfdbd1 100644 --- a/io/papermc/paper/threadedregions/RegionizedServer.java +++ b/io/papermc/paper/threadedregions/RegionizedServer.java @@ -239,6 +239,11 @@ public final class RegionizedServer { @@ -21,7 +21,22 @@ index ff90abb47203c03636d3175f2b3efcf43517b3b0..276349d778c2e6f0b1081eec4851bad5 // expire invalid click command callbacks io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.ADVENTURE_CLICK_MANAGER.handleQueue((int)this.tickCount); // Paper // Folia - region threading - moved to global tick io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.DIALOG_CLICK_MANAGER.handleQueue((int)this.tickCount); // Paper // Folia - region threading - moved to global tick -@@ -415,7 +420,7 @@ public final class RegionizedServer { +@@ -265,6 +270,14 @@ public final class RegionizedServer { + this.globalTick(world, tickCount); + } + ++ // Lophine start - Add a config to enable tick command ++ if (fun.bm.lophine.carpet.config.modules.GeneralCompatConfig.commandTick) { ++ net.minecraft.server.ServerTickRateManager rateManager = MinecraftServer.getServer().tickRateManager(); ++ rateManager.reduceSprintTicks(); ++ rateManager.endTickWork(); ++ } ++ // Lophine end - Add a config to enable tick command ++ + // tick connections + this.tickConnections(); + +@@ -415,7 +428,7 @@ public final class RegionizedServer { } private void tickTime(final ServerLevel world, final long tickCount) { @@ -31,10 +46,48 @@ index ff90abb47203c03636d3175f2b3efcf43517b3b0..276349d778c2e6f0b1081eec4851bad5 } } diff --git a/io/papermc/paper/threadedregions/TickRegionScheduler.java b/io/papermc/paper/threadedregions/TickRegionScheduler.java -index 58e557923dfe6cee39ec45e7f5aa43a5ded9f107..5f4f80c1d4003254fd840f71d86908603b57bfa2 100644 +index 58e557923dfe6cee39ec45e7f5aa43a5ded9f107..57a35d7a801621fc461e896eb2bba533d9d5bc1b 100644 --- a/io/papermc/paper/threadedregions/TickRegionScheduler.java +++ b/io/papermc/paper/threadedregions/TickRegionScheduler.java -@@ -559,6 +559,11 @@ public final class TickRegionScheduler { +@@ -40,8 +40,8 @@ public final class TickRegionScheduler { + } + } + +- public static final int TICK_RATE = 20; +- public static final long TIME_BETWEEN_TICKS = 1_000_000_000L / TICK_RATE; // ns ++ public static float TICK_RATE = 20; // Lophine - Add tick command support ++ public static long TIME_BETWEEN_TICKS = (long) (1_000_000_000L / TICK_RATE); // ns // Lophine - Add tick command support + // Folia start - watchdog + public static final FoliaWatchdogThread WATCHDOG_THREAD = new FoliaWatchdogThread(); + static { +@@ -509,8 +509,24 @@ public final class TickRegionScheduler { + final long cpuStart = MEASURE_CPU_TIME ? THREAD_MX_BEAN.getCurrentThreadCpuTime() : 0L; + final long tickStart = System.nanoTime(); + +- // use max(), don't assume that tickStart >= scheduledStart +- final long tickCount = Math.max(1L, this.tickSchedule.getPeriodsAhead(TIME_BETWEEN_TICKS, tickStart)); ++ // Lophine start - Add a config to enable tick command ++ final long tickCount; ++ if (fun.bm.lophine.carpet.config.modules.GeneralCompatConfig.commandTick) { ++ net.minecraft.server.ServerTickRateManager rateManager = MinecraftServer.getServer().tickRateManager(); ++ if (rateManager.isSprinting() && rateManager.checkShouldSprintThisTick()) { ++ TICK_RATE = net.minecraft.server.commands.TickCommand.MAX_TICKRATE; ++ TIME_BETWEEN_TICKS = (long) (1_000_000_000L / TICK_RATE); ++ tickCount = 1; ++ } else { ++ TICK_RATE = rateManager.tickrate(); ++ TIME_BETWEEN_TICKS = (long) (1_000_000_000L / TICK_RATE); ++ tickCount = Math.max(1L, this.tickSchedule.getPeriodsAhead(TIME_BETWEEN_TICKS, tickStart)); ++ } ++ } else { ++ // use max(), don't assume that tickStart >= scheduledStart ++ tickCount = Math.max(1L, this.tickSchedule.getPeriodsAhead(TIME_BETWEEN_TICKS, tickStart)); ++ } ++ // Lophine end - Add a config to enable tick command + + if (!this.tryMarkTicking()) { + if (!this.cancelled.get()) { +@@ -559,6 +575,11 @@ public final class TickRegionScheduler { try { // next start isn't updated until the end of this tick this.tickRegion(tickCount, tickStart, scheduledEnd); @@ -63,27 +116,54 @@ index 6823c41c08ca1a1baf9257fc861ae97bbcbe3a50..0fa14f60310b063f419620539fd40898 TimeCommand.register(this.dispatcher, context); TitleCommand.register(this.dispatcher, context); //TriggerCommand.register(this.dispatcher); // Folia - region threading - TODO later +diff --git a/net/minecraft/server/ServerTickRateManager.java b/net/minecraft/server/ServerTickRateManager.java +index eeb2f88723b37bb3cada04bf3098dd46f0ed7316..8432d0ce22ddc9c9bfa98901e403697f40e53c99 100644 +--- a/net/minecraft/server/ServerTickRateManager.java ++++ b/net/minecraft/server/ServerTickRateManager.java +@@ -110,7 +110,7 @@ public class ServerTickRateManager extends TickRateManager { + return false; + } else if (this.remainingSprintTicks > 0L) { + this.sprintTickStartTime = System.nanoTime(); +- this.remainingSprintTicks--; ++ // this.remainingSprintTicks--; // Luminol - Add tick command support + return true; + } else { + this.finishTickSprint(); +@@ -118,6 +118,12 @@ public class ServerTickRateManager extends TickRateManager { + } + } + ++ // Lophine start - Add tick command support ++ public void reduceSprintTicks() { ++ this.remainingSprintTicks--; ++ } ++ // Lophine end - Add tick command support ++ + public void endTickWork() { + this.sprintTimeSpend = this.sprintTimeSpend + (System.nanoTime() - this.sprintTickStartTime); + } diff --git a/net/minecraft/server/commands/TickCommand.java b/net/minecraft/server/commands/TickCommand.java -index e8d6a67143f3f0b4813e51bb273498bc404899b9..64b685b219b930a1bb7f85db9947f4d1ca9df093 100644 +index e8d6a67143f3f0b4813e51bb273498bc404899b9..4421658e4061299dea2ff72a77506214cc9045d8 100644 --- a/net/minecraft/server/commands/TickCommand.java +++ b/net/minecraft/server/commands/TickCommand.java -@@ -23,14 +23,14 @@ public class TickCommand { +@@ -15,7 +15,7 @@ import net.minecraft.server.ServerTickRateManager; + import net.minecraft.util.TimeUtil; + + public class TickCommand { +- private static final float MAX_TICKRATE = 10000.0F; ++ public static final float MAX_TICKRATE = 10000.0F; // Lophine - Add tick command support + private static final String DEFAULT_TICKRATE = String.valueOf(20); + + public static void register(final CommandDispatcher dispatcher) { +@@ -23,7 +23,7 @@ public class TickCommand { Commands.literal("tick") .requires(Commands.hasPermission(Commands.LEVEL_ADMINS)) .then(Commands.literal("query").executes(c -> tickQuery(c.getSource()))) - .then( -+/* .then( ++ .then( // Lophine - Add tick rate support Commands.literal("rate") .then( Commands.argument("rate", FloatArgumentType.floatArg(1.0F, 10000.0F)) - .suggests((c, b) -> SharedSuggestionProvider.suggest(new String[]{DEFAULT_TICKRATE}, b)) - .executes(c -> setTickingRate(c.getSource(), FloatArgumentType.getFloat(c, "rate"))) - ) -- ) -+ )*/ - .then( - Commands.literal("step") - .executes(c -> step(c.getSource(), 1)) @@ -41,7 +41,7 @@ public class TickCommand { .executes(c -> step(c.getSource(), IntegerArgumentType.getInteger(c, "time"))) ) diff --git a/lophine-server/minecraft-patches/features/0084-Server-I18n.patch b/lophine-server/minecraft-patches/features/0084-Server-I18n.patch index 6880f58..b33ecb3 100644 --- a/lophine-server/minecraft-patches/features/0084-Server-I18n.patch +++ b/lophine-server/minecraft-patches/features/0084-Server-I18n.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Server I18n diff --git a/net/minecraft/locale/Language.java b/net/minecraft/locale/Language.java -index 47cd33bce908744e64356b585853d6a8ecf82443..bb4011d3c6a1d2a5aa66e68fe719cd5eea2c0dd2 100644 +index 47cd33bce908744e64356b585853d6a8ecf82443..9e6f89ac7cf730bfc3c15d5a4f648c550cf72e22 100644 --- a/net/minecraft/locale/Language.java +++ b/net/minecraft/locale/Language.java @@ -37,6 +37,7 @@ public abstract class Language { Map loadedData = new HashMap<>(); BiConsumer output = loadedData::put; parseTranslations(output, "/assets/minecraft/lang/en_us.json"); -+ fun.bm.lophine.utils.ServerI18nUtil.loadLophineI18nDefault(output); // Lophine - Server I18n ++ fun.bm.lophine.utils.ServerI18nUtil.loadLophineI18n(output); // Lophine - Server I18n deprecatedInfo.applyToMap(loadedData); final Map storage = Map.copyOf(loadedData); return new Language() { diff --git a/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch b/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch index b30b0d7..3055778 100644 --- a/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch +++ b/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config to enable save-all command diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java -index 276349d778c2e6f0b1081eec4851bad5d25db237..79ef1e69ec364beec69b37c6850c038cdba73b4c 100644 +index a2db29aa47a4b7213d4956f02f6e83122ccfdbd1..6fb3c88463ff69bddb7d8dcde0e5339567d3e1c6 100644 --- a/io/papermc/paper/threadedregions/RegionizedServer.java +++ b/io/papermc/paper/threadedregions/RegionizedServer.java @@ -265,6 +265,8 @@ public final class RegionizedServer { diff --git a/lophine-server/minecraft-patches/features/0093-Add-tick-rate-support.patch b/lophine-server/minecraft-patches/features/0093-Add-tick-rate-support.patch deleted file mode 100644 index bba3cec..0000000 --- a/lophine-server/minecraft-patches/features/0093-Add-tick-rate-support.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Helvetica Volubi -Date: Wed, 21 Jan 2026 21:28:21 +0800 -Subject: [PATCH] Add tick rate support - - -diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java -index 79ef1e69ec364beec69b37c6850c038cdba73b4c..6fb3c88463ff69bddb7d8dcde0e5339567d3e1c6 100644 ---- a/io/papermc/paper/threadedregions/RegionizedServer.java -+++ b/io/papermc/paper/threadedregions/RegionizedServer.java -@@ -272,6 +272,14 @@ public final class RegionizedServer { - this.globalTick(world, tickCount); - } - -+ // Lophine start - Add a config to enable tick command -+ if (fun.bm.lophine.carpet.config.modules.GeneralCompatConfig.commandTick) { -+ net.minecraft.server.ServerTickRateManager rateManager = MinecraftServer.getServer().tickRateManager(); -+ rateManager.reduceSprintTicks(); -+ rateManager.endTickWork(); -+ } -+ // Lophine end - Add a config to enable tick command -+ - // tick connections - this.tickConnections(); - -diff --git a/io/papermc/paper/threadedregions/TickRegionScheduler.java b/io/papermc/paper/threadedregions/TickRegionScheduler.java -index 5f4f80c1d4003254fd840f71d86908603b57bfa2..57a35d7a801621fc461e896eb2bba533d9d5bc1b 100644 ---- a/io/papermc/paper/threadedregions/TickRegionScheduler.java -+++ b/io/papermc/paper/threadedregions/TickRegionScheduler.java -@@ -40,8 +40,8 @@ public final class TickRegionScheduler { - } - } - -- public static final int TICK_RATE = 20; -- public static final long TIME_BETWEEN_TICKS = 1_000_000_000L / TICK_RATE; // ns -+ public static float TICK_RATE = 20; // Lophine - Add tick command support -+ public static long TIME_BETWEEN_TICKS = (long) (1_000_000_000L / TICK_RATE); // ns // Lophine - Add tick command support - // Folia start - watchdog - public static final FoliaWatchdogThread WATCHDOG_THREAD = new FoliaWatchdogThread(); - static { -@@ -509,8 +509,24 @@ public final class TickRegionScheduler { - final long cpuStart = MEASURE_CPU_TIME ? THREAD_MX_BEAN.getCurrentThreadCpuTime() : 0L; - final long tickStart = System.nanoTime(); - -- // use max(), don't assume that tickStart >= scheduledStart -- final long tickCount = Math.max(1L, this.tickSchedule.getPeriodsAhead(TIME_BETWEEN_TICKS, tickStart)); -+ // Lophine start - Add a config to enable tick command -+ final long tickCount; -+ if (fun.bm.lophine.carpet.config.modules.GeneralCompatConfig.commandTick) { -+ net.minecraft.server.ServerTickRateManager rateManager = MinecraftServer.getServer().tickRateManager(); -+ if (rateManager.isSprinting() && rateManager.checkShouldSprintThisTick()) { -+ TICK_RATE = net.minecraft.server.commands.TickCommand.MAX_TICKRATE; -+ TIME_BETWEEN_TICKS = (long) (1_000_000_000L / TICK_RATE); -+ tickCount = 1; -+ } else { -+ TICK_RATE = rateManager.tickrate(); -+ TIME_BETWEEN_TICKS = (long) (1_000_000_000L / TICK_RATE); -+ tickCount = Math.max(1L, this.tickSchedule.getPeriodsAhead(TIME_BETWEEN_TICKS, tickStart)); -+ } -+ } else { -+ // use max(), don't assume that tickStart >= scheduledStart -+ tickCount = Math.max(1L, this.tickSchedule.getPeriodsAhead(TIME_BETWEEN_TICKS, tickStart)); -+ } -+ // Lophine end - Add a config to enable tick command - - if (!this.tryMarkTicking()) { - if (!this.cancelled.get()) { -diff --git a/net/minecraft/server/ServerTickRateManager.java b/net/minecraft/server/ServerTickRateManager.java -index eeb2f88723b37bb3cada04bf3098dd46f0ed7316..8432d0ce22ddc9c9bfa98901e403697f40e53c99 100644 ---- a/net/minecraft/server/ServerTickRateManager.java -+++ b/net/minecraft/server/ServerTickRateManager.java -@@ -110,7 +110,7 @@ public class ServerTickRateManager extends TickRateManager { - return false; - } else if (this.remainingSprintTicks > 0L) { - this.sprintTickStartTime = System.nanoTime(); -- this.remainingSprintTicks--; -+ // this.remainingSprintTicks--; // Luminol - Add tick command support - return true; - } else { - this.finishTickSprint(); -@@ -118,6 +118,12 @@ public class ServerTickRateManager extends TickRateManager { - } - } - -+ // Lophine start - Add tick command support -+ public void reduceSprintTicks() { -+ this.remainingSprintTicks--; -+ } -+ // Lophine end - Add tick command support -+ - public void endTickWork() { - this.sprintTimeSpend = this.sprintTimeSpend + (System.nanoTime() - this.sprintTickStartTime); - } -diff --git a/net/minecraft/server/commands/TickCommand.java b/net/minecraft/server/commands/TickCommand.java -index 64b685b219b930a1bb7f85db9947f4d1ca9df093..4421658e4061299dea2ff72a77506214cc9045d8 100644 ---- a/net/minecraft/server/commands/TickCommand.java -+++ b/net/minecraft/server/commands/TickCommand.java -@@ -15,7 +15,7 @@ import net.minecraft.server.ServerTickRateManager; - import net.minecraft.util.TimeUtil; - - public class TickCommand { -- private static final float MAX_TICKRATE = 10000.0F; -+ public static final float MAX_TICKRATE = 10000.0F; // Lophine - Add tick command support - private static final String DEFAULT_TICKRATE = String.valueOf(20); - - public static void register(final CommandDispatcher dispatcher) { -@@ -23,14 +23,14 @@ public class TickCommand { - Commands.literal("tick") - .requires(Commands.hasPermission(Commands.LEVEL_ADMINS)) - .then(Commands.literal("query").executes(c -> tickQuery(c.getSource()))) --/* .then( -+ .then( // Lophine - Add tick rate support - Commands.literal("rate") - .then( - Commands.argument("rate", FloatArgumentType.floatArg(1.0F, 10000.0F)) - .suggests((c, b) -> SharedSuggestionProvider.suggest(new String[]{DEFAULT_TICKRATE}, b)) - .executes(c -> setTickingRate(c.getSource(), FloatArgumentType.getFloat(c, "rate"))) - ) -- )*/ -+ ) - .then( - Commands.literal("step") - .executes(c -> step(c.getSource(), 1)) diff --git a/lophine-server/minecraft-patches/features/0094-Modify-merge-ItemEntity-logic.patch b/lophine-server/minecraft-patches/features/0093-Modify-merge-ItemEntity-logic.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0094-Modify-merge-ItemEntity-logic.patch rename to lophine-server/minecraft-patches/features/0093-Modify-merge-ItemEntity-logic.patch diff --git a/lophine-server/minecraft-patches/features/0095-Old-zombie-reinforcement.patch b/lophine-server/minecraft-patches/features/0094-Old-zombie-reinforcement.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0095-Old-zombie-reinforcement.patch rename to lophine-server/minecraft-patches/features/0094-Old-zombie-reinforcement.patch diff --git a/lophine-server/minecraft-patches/features/0096-Old-leader-zombie-health-logic.patch b/lophine-server/minecraft-patches/features/0095-Old-leader-zombie-health-logic.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0096-Old-leader-zombie-health-logic.patch rename to lophine-server/minecraft-patches/features/0095-Old-leader-zombie-health-logic.patch diff --git a/lophine-server/minecraft-patches/features/0097-Spawn-invulnerable-time.patch b/lophine-server/minecraft-patches/features/0096-Spawn-invulnerable-time.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0097-Spawn-invulnerable-time.patch rename to lophine-server/minecraft-patches/features/0096-Spawn-invulnerable-time.patch diff --git a/lophine-server/minecraft-patches/features/0098-Leaves-Item-overstack-util.patch b/lophine-server/minecraft-patches/features/0097-Leaves-Item-overstack-util.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0098-Leaves-Item-overstack-util.patch rename to lophine-server/minecraft-patches/features/0097-Leaves-Item-overstack-util.patch diff --git a/lophine-server/minecraft-patches/features/0099-Leaves-Old-raid-behavior.patch b/lophine-server/minecraft-patches/features/0098-Leaves-Old-raid-behavior.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0099-Leaves-Old-raid-behavior.patch rename to lophine-server/minecraft-patches/features/0098-Leaves-Old-raid-behavior.patch diff --git a/lophine-server/minecraft-patches/features/0100-Compatibility-fix-for-Raid-Revert-and-Cross-Region-D.patch b/lophine-server/minecraft-patches/features/0099-Compatibility-fix-for-Raid-Revert-and-Cross-Region-D.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0100-Compatibility-fix-for-Raid-Revert-and-Cross-Region-D.patch rename to lophine-server/minecraft-patches/features/0099-Compatibility-fix-for-Raid-Revert-and-Cross-Region-D.patch diff --git a/lophine-server/minecraft-patches/features/0101-Leaves-Leaves-Base-Protocol-Core.patch b/lophine-server/minecraft-patches/features/0100-Leaves-Leaves-Base-Protocol-Core.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0101-Leaves-Leaves-Base-Protocol-Core.patch rename to lophine-server/minecraft-patches/features/0100-Leaves-Leaves-Base-Protocol-Core.patch diff --git a/lophine-server/minecraft-patches/features/0102-Leaves-Configurable-trading-with-the-void.patch b/lophine-server/minecraft-patches/features/0101-Leaves-Configurable-trading-with-the-void.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0102-Leaves-Configurable-trading-with-the-void.patch rename to lophine-server/minecraft-patches/features/0101-Leaves-Configurable-trading-with-the-void.patch diff --git a/lophine-server/minecraft-patches/features/0103-Leaves-Servux-Protocol.patch b/lophine-server/minecraft-patches/features/0102-Leaves-Servux-Protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0103-Leaves-Servux-Protocol.patch rename to lophine-server/minecraft-patches/features/0102-Leaves-Servux-Protocol.patch diff --git a/lophine-server/minecraft-patches/features/0104-LeavesHooks.patch b/lophine-server/minecraft-patches/features/0103-LeavesHooks.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0104-LeavesHooks.patch rename to lophine-server/minecraft-patches/features/0103-LeavesHooks.patch diff --git a/lophine-server/minecraft-patches/features/0105-Leaves-Old-Explosion-Damage-Calculator.patch b/lophine-server/minecraft-patches/features/0104-Leaves-Old-Explosion-Damage-Calculator.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0105-Leaves-Old-Explosion-Damage-Calculator.patch rename to lophine-server/minecraft-patches/features/0104-Leaves-Old-Explosion-Damage-Calculator.patch diff --git a/lophine-server/minecraft-patches/features/0106-Leaves-Redstone-Shears-Wrench.patch b/lophine-server/minecraft-patches/features/0105-Leaves-Redstone-Shears-Wrench.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0106-Leaves-Redstone-Shears-Wrench.patch rename to lophine-server/minecraft-patches/features/0105-Leaves-Redstone-Shears-Wrench.patch diff --git a/lophine-server/minecraft-patches/features/0107-Leaves-Syncmatica-Protocol.patch b/lophine-server/minecraft-patches/features/0106-Leaves-Syncmatica-Protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0107-Leaves-Syncmatica-Protocol.patch rename to lophine-server/minecraft-patches/features/0106-Leaves-Syncmatica-Protocol.patch diff --git a/lophine-server/minecraft-patches/features/0108-Leaves-BBOR-Protocol.patch b/lophine-server/minecraft-patches/features/0107-Leaves-BBOR-Protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0108-Leaves-BBOR-Protocol.patch rename to lophine-server/minecraft-patches/features/0107-Leaves-BBOR-Protocol.patch diff --git a/lophine-server/minecraft-patches/features/0109-Leaves-Xaero-Map-Protocol.patch b/lophine-server/minecraft-patches/features/0108-Leaves-Xaero-Map-Protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0109-Leaves-Xaero-Map-Protocol.patch rename to lophine-server/minecraft-patches/features/0108-Leaves-Xaero-Map-Protocol.patch diff --git a/lophine-server/minecraft-patches/features/0110-Leaves-Support-REI-protocol.patch b/lophine-server/minecraft-patches/features/0109-Leaves-Support-REI-protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0110-Leaves-Support-REI-protocol.patch rename to lophine-server/minecraft-patches/features/0109-Leaves-Support-REI-protocol.patch diff --git a/lophine-server/minecraft-patches/features/0111-Leaves-Jade-Protocol.patch b/lophine-server/minecraft-patches/features/0110-Leaves-Jade-Protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0111-Leaves-Jade-Protocol.patch rename to lophine-server/minecraft-patches/features/0110-Leaves-Jade-Protocol.patch diff --git a/lophine-server/minecraft-patches/features/0112-Leaves-Alternative-block-placement-Protocol.patch b/lophine-server/minecraft-patches/features/0111-Leaves-Alternative-block-placement-Protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0112-Leaves-Alternative-block-placement-Protocol.patch rename to lophine-server/minecraft-patches/features/0111-Leaves-Alternative-block-placement-Protocol.patch diff --git a/lophine-server/minecraft-patches/features/0113-Leaves-Fakeplayer.patch b/lophine-server/minecraft-patches/features/0112-Leaves-Fakeplayer.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0113-Leaves-Fakeplayer.patch rename to lophine-server/minecraft-patches/features/0112-Leaves-Fakeplayer.patch diff --git a/lophine-server/minecraft-patches/features/0114-Leaves-Replay-Mod-API.patch b/lophine-server/minecraft-patches/features/0113-Leaves-Replay-Mod-API.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0114-Leaves-Replay-Mod-API.patch rename to lophine-server/minecraft-patches/features/0113-Leaves-Replay-Mod-API.patch diff --git a/lophine-server/minecraft-patches/features/0115-Leaves-Creative-fly-no-clip.patch b/lophine-server/minecraft-patches/features/0114-Leaves-Creative-fly-no-clip.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0115-Leaves-Creative-fly-no-clip.patch rename to lophine-server/minecraft-patches/features/0114-Leaves-Creative-fly-no-clip.patch diff --git a/lophine-server/minecraft-patches/features/0116-Leaves-Wool-Hopper-Counter.patch b/lophine-server/minecraft-patches/features/0115-Leaves-Wool-Hopper-Counter.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0116-Leaves-Wool-Hopper-Counter.patch rename to lophine-server/minecraft-patches/features/0115-Leaves-Wool-Hopper-Counter.patch diff --git a/lophine-server/minecraft-patches/features/0117-Global-Entities-Counter.patch b/lophine-server/minecraft-patches/features/0116-Global-Entities-Counter.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0117-Global-Entities-Counter.patch rename to lophine-server/minecraft-patches/features/0116-Global-Entities-Counter.patch diff --git a/lophine-server/minecraft-patches/features/0118-Leaves-Catch-update-suppression-crash.patch b/lophine-server/minecraft-patches/features/0117-Leaves-Catch-update-suppression-crash.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0118-Leaves-Catch-update-suppression-crash.patch rename to lophine-server/minecraft-patches/features/0117-Leaves-Catch-update-suppression-crash.patch diff --git a/lophine-server/minecraft-patches/features/0119-Leaves-CCE-update-suppression.patch b/lophine-server/minecraft-patches/features/0118-Leaves-CCE-update-suppression.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0119-Leaves-CCE-update-suppression.patch rename to lophine-server/minecraft-patches/features/0118-Leaves-CCE-update-suppression.patch diff --git a/lophine-server/minecraft-patches/features/0120-Leaves-Redstone-ignore-upwards-update.patch b/lophine-server/minecraft-patches/features/0119-Leaves-Redstone-ignore-upwards-update.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0120-Leaves-Redstone-ignore-upwards-update.patch rename to lophine-server/minecraft-patches/features/0119-Leaves-Redstone-ignore-upwards-update.patch diff --git a/lophine-server/minecraft-patches/features/0121-Instant-Block-Updater.patch b/lophine-server/minecraft-patches/features/0120-Instant-Block-Updater.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0121-Instant-Block-Updater.patch rename to lophine-server/minecraft-patches/features/0120-Instant-Block-Updater.patch diff --git a/lophine-server/minecraft-patches/features/0122-Revert-TrapDoorBlock-changes-form-Paper.patch b/lophine-server/minecraft-patches/features/0121-Revert-TrapDoorBlock-changes-form-Paper.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0122-Revert-TrapDoorBlock-changes-form-Paper.patch rename to lophine-server/minecraft-patches/features/0121-Revert-TrapDoorBlock-changes-form-Paper.patch diff --git a/lophine-server/minecraft-patches/features/0123-Leaves-Prevent-loss-of-item-drops-due-to-update-supp.patch b/lophine-server/minecraft-patches/features/0122-Leaves-Prevent-loss-of-item-drops-due-to-update-supp.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0123-Leaves-Prevent-loss-of-item-drops-due-to-update-supp.patch rename to lophine-server/minecraft-patches/features/0122-Leaves-Prevent-loss-of-item-drops-due-to-update-supp.patch diff --git a/lophine-server/minecraft-patches/features/0124-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch b/lophine-server/minecraft-patches/features/0123-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0124-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch rename to lophine-server/minecraft-patches/features/0123-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch diff --git a/lophine-server/minecraft-patches/features/0125-Leaves-Old-Block-remove-behaviour.patch b/lophine-server/minecraft-patches/features/0124-Leaves-Old-Block-remove-behaviour.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0125-Leaves-Old-Block-remove-behaviour.patch rename to lophine-server/minecraft-patches/features/0124-Leaves-Old-Block-remove-behaviour.patch diff --git a/lophine-server/minecraft-patches/features/0126-MiniTweaks-mob-fire-and-explosion-rules.patch b/lophine-server/minecraft-patches/features/0125-MiniTweaks-mob-fire-and-explosion-rules.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0126-MiniTweaks-mob-fire-and-explosion-rules.patch rename to lophine-server/minecraft-patches/features/0125-MiniTweaks-mob-fire-and-explosion-rules.patch diff --git a/lophine-server/minecraft-patches/features/0127-Carpet-features.patch b/lophine-server/minecraft-patches/features/0126-Carpet-features.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0127-Carpet-features.patch rename to lophine-server/minecraft-patches/features/0126-Carpet-features.patch diff --git a/lophine-server/minecraft-patches/features/0128-Carpet-Features-Compatible.patch b/lophine-server/minecraft-patches/features/0127-Carpet-Features-Compatible.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0128-Carpet-Features-Compatible.patch rename to lophine-server/minecraft-patches/features/0127-Carpet-Features-Compatible.patch diff --git a/lophine-server/minecraft-patches/features/0129-PCA-sync-protocol.patch b/lophine-server/minecraft-patches/features/0128-PCA-sync-protocol.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0129-PCA-sync-protocol.patch rename to lophine-server/minecraft-patches/features/0128-PCA-sync-protocol.patch diff --git a/lophine-server/minecraft-patches/features/0130-Add-Vanilla-like-experience-Config.patch b/lophine-server/minecraft-patches/features/0129-Add-Vanilla-like-experience-Config.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0130-Add-Vanilla-like-experience-Config.patch rename to lophine-server/minecraft-patches/features/0129-Add-Vanilla-like-experience-Config.patch diff --git a/lophine-server/minecraft-patches/features/0131-Restore-vanilla-ender-pearl-loading.patch b/lophine-server/minecraft-patches/features/0130-Restore-vanilla-ender-pearl-loading.patch similarity index 100% rename from lophine-server/minecraft-patches/features/0131-Restore-vanilla-ender-pearl-loading.patch rename to lophine-server/minecraft-patches/features/0130-Restore-vanilla-ender-pearl-loading.patch diff --git a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java index 6ea322e..bdb4515 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/FakePlayerCompatConfig.java @@ -11,58 +11,39 @@ import org.leavesmc.leaves.command.bot.BotCommand; import java.util.Set; -@ConfigClassInfo( - category = EnumConfigCategory.ROOT, - name = "fakeplayer", - directory = {"carpet"}, - comments = """ - Carpet fakeplayer compatibility mapped onto Lophine fakeplayers. - commandPlayer is currently backed by Lophine's /bot command surface.""" -) +@ConfigClassInfo(category = EnumConfigCategory.ROOT, name = "fakeplayer", directory = {"carpet"}) public class FakePlayerCompatConfig implements IConfigModule { - @ConfigInfo(name = "commandPlayer", comments = """ - Enable /player command.(not remapped) - If you want to enable bot command, please see lophine global config.""") + @ConfigInfo(name = "commandPlayer") public static boolean commandPlayer = false; - @ConfigInfo(name = "fakePlayerResident", comments = """ - Keep fakeplayers resident across unload and restart.""") + @ConfigInfo(name = "fakePlayerResident") public static boolean fakePlayerResident = false; - @ConfigInfo(name = "openFakePlayerInventory", comments = """ - Allow opening fakeplayer inventories.""") + @ConfigInfo(name = "openFakePlayerInventory") public static boolean openFakePlayerInventory = false; - @ConfigInfo(name = "fakePlayerTicksLikeRealPlayer", comments = """ - Tick fakeplayers in the network phase to better match real player timing.""") + @ConfigInfo(name = "fakePlayerTicksLikeRealPlayer") public static boolean fakePlayerTicksLikeRealPlayer = false; - @ConfigInfo(name = "fakePlayerDefaultSurvivalMode", comments = """ - Force newly created fakeplayers to start in survival instead of the server default gamemode.""") + @ConfigInfo(name = "fakePlayerDefaultSurvivalMode") public static boolean fakePlayerDefaultSurvivalMode = false; - @ConfigInfo(name = "fakePlayerInteractLikeClient", comments = """ - Make fakeplayer entity interaction follow client-side fallback behavior more closely.""") + @ConfigInfo(name = "fakePlayerInteractLikeClient") public static boolean fakePlayerInteractLikeClient = false; - @ConfigInfo(name = "fakePlayerAutoReplaceTool", comments = """ - Toggle automatic tool replacement for fakeplayers.""") + @ConfigInfo(name = "fakePlayerAutoReplaceTool") public static boolean fakePlayerAutoReplaceTool = false; - @ConfigInfo(name = "fakePlayerAutoReplenishment", comments = """ - Toggle automatic stack replenishment for fakeplayers.""") + @ConfigInfo(name = "fakePlayerAutoReplenishment") public static boolean fakePlayerAutoReplenishment = false; - @ConfigInfo(name = "fakePlayerAutoReplenishmentFormShulkerBox", comments = """ - Let fakeplayer replenishment pull matching items out of shulker boxes in the inventory.""") + @ConfigInfo(name = "fakePlayerAutoReplenishmentFormShulkerBox") public static boolean fakePlayerAutoReplenishmentFormShulkerBox = false; - @ConfigInfo(name = "fakePlayerAutoFish", comments = """ - Let fakeplayers holding a fishing rod automatically cast and reel it in.""") + @ConfigInfo(name = "fakePlayerAutoFish") public static boolean fakePlayerAutoFish = false; - @ConfigInfo(name = "fakePlayerReloadAction", comments = """ - Persist queued fakeplayer actions across save and reload.""") + @ConfigInfo(name = "fakePlayerReloadAction") public static boolean fakePlayerReloadAction = false; @DoNotLoad diff --git a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/GeneralCompatConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/GeneralCompatConfig.java index a044798..c052321 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/GeneralCompatConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/GeneralCompatConfig.java @@ -8,248 +8,174 @@ import me.earthme.luminol.enums.EnumConfigCategory; import java.util.List; -@ConfigClassInfo( - category = EnumConfigCategory.ROOT, - name = "general", - directory = {"carpet"}, - comments = """ - Carpet/AMS/TIS/Org compatibility rules backed by existing Lophine features. - Only rules that already have a working server-side implementation are exposed here.""" -) +@ConfigClassInfo(category = EnumConfigCategory.ROOT, name = "general", directory = {"carpet"}) public class GeneralCompatConfig implements IConfigModule { - @ConfigInfo(name = "language", comments = """ - Carpet language value. - ATTENTION: This config will not update in Lophine global now!""") + @ConfigInfo(name = "language") public static String language = "en_us"; - @ConfigInfo(name = "amsUpdateSuppressionCrashFix", comments = """ - Update suppression crash protection.""") + @ConfigInfo(name = "amsUpdateSuppressionCrashFix") public static boolean amsUpdateSuppressionCrashFix = false; - @ConfigInfo(name = "yeetUpdateSuppressionCrash", comments = """ - Update suppression crash yeeting.""") + @ConfigInfo(name = "yeetUpdateSuppressionCrash") public static boolean yeetUpdateSuppressionCrash = false; - @ConfigInfo(name = "dustTrapdoorReintroduced", comments = """ - Should the pre-1.20 mechanism be reintroduced: - Redstone dust does not connect to adjacent redstone dust on trapdoors that are open - Pre-1.20.2 mechanism: Redstone dust, redstone repeaters, - and redstone comparators do not check for attachment when receiving status updates from below.""") + @ConfigInfo(name = "dustTrapdoorReintroduced") public static boolean dustTrapdoorReintroduced = false; - @ConfigInfo(name = "shulkerBoxCCEReintroduced", comments = """ - Use ClassCastException for update suppression.""") + @ConfigInfo(name = "shulkerBoxCCEReintroduced") public static boolean shulkerBoxCCEReintroduced = false; - @ConfigInfo(name = "instantBlockUpdaterReintroduced", comments = """ - Instant block updater.""") + @ConfigInfo(name = "instantBlockUpdaterReintroduced") public static boolean instantBlockUpdaterReintroduced = false; - @ConfigInfo(name = "commandTick", comments = """ - Enable the tick command support.""") + @ConfigInfo(name = "commandTick") public static boolean commandTick = false; - @ConfigInfo(name = "creativeNoClip", comments = """ - Whether to enable creative fly no clip. - When enabled, players in creative mode will not collide with blocks while flying. - This allows them to pass through blocks without obstruction.""") + @ConfigInfo(name = "creativeNoClip") public static boolean creativeNoClip = false; - @ConfigInfo(name = "optimizedDragonRespawn", comments = """ - Enable optimized dragon respawn.""") + @ConfigInfo(name = "optimizedDragonRespawn") public static boolean optimizedDragonRespawn = false; - @ConfigInfo(name = "antiSpamDisabled", comments = """ - Disable the server-side chat and creative-drop spam throttles used by vanilla/Spigot.""") + @ConfigInfo(name = "antiSpamDisabled") public static boolean antiSpamDisabled = false; - @ConfigInfo(name = "blockPlacementIgnoreEntity", comments = """ - Allow creative players to place blocks without entity collision checks.""") + @ConfigInfo(name = "blockPlacementIgnoreEntity") public static boolean blockPlacementIgnoreEntity = false; - @ConfigInfo(name = "creativeOpenContainerForcibly", comments = """ - Allow creative players to forcibly open blocked chests, ender chests and shulker boxes.""") + @ConfigInfo(name = "creativeOpenContainerForcibly") public static boolean creativeOpenContainerForcibly = false; - @ConfigInfo(name = "creativeOneHitKill", comments = """ - Allow creative players to instantly kill attackable non-creative, non-spectator entities. - Sneaking expands the effect into a small area attack.""") + @ConfigInfo(name = "creativeOneHitKill") public static boolean creativeOneHitKill = false; - @ConfigInfo(name = "observerNoDetection", comments = """ - Disable observer detection pulses entirely.""") + @ConfigInfo(name = "observerNoDetection") public static boolean observerNoDetection = false; - @ConfigInfo(name = "bambooModelNoOffset", comments = """ - Remove the random horizontal model offset from bamboo and bamboo saplings.""") + @ConfigInfo(name = "bambooModelNoOffset") public static boolean bambooModelNoOffset = false; - @ConfigInfo(name = "creativeNoItemCooldown", comments = """ - Skip item cooldown application for creative players.""") + @ConfigInfo(name = "creativeNoItemCooldown") public static boolean creativeNoItemCooldown = false; - @ConfigInfo(name = "ctrlQCraftingFix", comments = """ - Compatibility flag for the upstream result-slot Ctrl+Q crafting fix already present in the current menu code.""") + @ConfigInfo(name = "ctrlQCraftingFix") public static boolean ctrlQCraftingFix = false; - @ConfigInfo(name = "carpetAlwaysSetDefault", comments = """ - Compatibility flag for Lophine's config loader, which already writes default values into the compat config during preload.""") + @ConfigInfo(name = "carpetAlwaysSetDefault") public static boolean carpetAlwaysSetDefault = false; - @ConfigInfo(name = "placementRotationFix", comments = """ - Use the player's main body rotation for placement direction checks instead of interpolated head yaw.""") + @ConfigInfo(name = "placementRotationFix") public static boolean placementRotationFix = false; - @ConfigInfo(name = "tntDoNotUpdate", comments = """ - Prevent TNT from checking redstone power when first placed.""") + @ConfigInfo(name = "tntDoNotUpdate") public static boolean tntDoNotUpdate = false; - @ConfigInfo(name = "totallyNoBlockUpdate", comments = """ - Suppress neighbor and shape updates globally for block changes.""") + @ConfigInfo(name = "totallyNoBlockUpdate") public static boolean totallyNoBlockUpdate = false; - @ConfigInfo(name = "tiscmNetworkProtocol", comments = """ - Enable the native Carpet TIS Addition network channel on `tiscm:network/v1`.""") + @ConfigInfo(name = "tiscmNetworkProtocol") public static boolean tiscmNetworkProtocol = false; - @ConfigInfo(name = "hopperNoItemCost", comments = """ - Restore the transferred stack into a hopper when a wool block is placed on top of it.""") + @ConfigInfo(name = "hopperNoItemCost") public static boolean hopperNoItemCost = false; - @ConfigInfo(name = "explosionNoBlockDamage", comments = """ - Let explosions damage entities without breaking blocks.""") + @ConfigInfo(name = "explosionNoBlockDamage") public static boolean explosionNoBlockDamage = false; - @ConfigInfo(name = "noCreeperBlockBreaking", comments = """ - Disables creeper explosion block breaking.""") + @ConfigInfo(name = "noCreeperBlockBreaking") public static boolean noCreeperBlockBreaking = false; - @ConfigInfo(name = "noGhastBlockBreaking", comments = """ - Disables ghast fireball explosion block breaking.""") + @ConfigInfo(name = "noGhastBlockBreaking") public static boolean noGhastBlockBreaking = false; - @ConfigInfo(name = "disableBlazeFire", comments = """ - Disables fire made from blaze fireballs.""") + @ConfigInfo(name = "disableBlazeFire") public static boolean disableBlazeFire = false; - @ConfigInfo(name = "disableGhastFire", comments = """ - Disables fire made from ghast fireballs.""") + @ConfigInfo(name = "disableGhastFire") public static boolean disableGhastFire = false; - @ConfigInfo(name = "optimizedTNTHighPriority", comments = """ - Compatibility flag for the already optimized server explosion path carried by the current runtime.""") + @ConfigInfo(name = "optimizedTNTHighPriority") public static boolean optimizedTNTHighPriority = false; - @ConfigInfo(name = "tntPrimerMomentumRemoved", comments = """ - Remove the random horizontal launch momentum from newly primed TNT.""") + @ConfigInfo(name = "tntPrimerMomentumRemoved") public static boolean tntPrimerMomentumRemoved = false; - @ConfigInfo(name = "tntIgnoreRedstoneSignal", comments = """ - Ignore redstone power when deciding whether TNT should auto-prime.""") + @ConfigInfo(name = "tntIgnoreRedstoneSignal") public static boolean tntIgnoreRedstoneSignal = false; - @ConfigInfo(name = "tntDupingFix", comments = """ - Toggle the piston desync path used by vanilla TNT duplication setups.""") + @ConfigInfo(name = "tntDupingFix") public static boolean tntDupingFix = false; - @ConfigInfo(name = "interactionUpdates", comments = """ - Control whether player interaction block changes emit normal block updates. - Set to false to suppress neighbor and shape updates during block use and breaking.""") + @ConfigInfo(name = "interactionUpdates") public static boolean interactionUpdates = true; - @ConfigInfo(name = "xpNoCooldown", comments = """ - Allow players to absorb multiple experience orbs in the same tick without pickup delay.""") + @ConfigInfo(name = "xpNoCooldown") public static boolean xpNoCooldown = false; - @ConfigInfo(name = "powerfulExpMending", comments = """ - Let picked-up experience repair all damaged mending items in the player's inventory, not only equipped gear.""") + @ConfigInfo(name = "powerfulExpMending") public static boolean powerfulExpMending = false; - @ConfigInfo(name = "clientSettingsLostOnRespawnFix", comments = """ - Reapply the player's last known client settings after respawn.""") + @ConfigInfo(name = "clientSettingsLostOnRespawnFix") public static boolean clientSettingsLostOnRespawnFix = false; - @ConfigInfo(name = "sensibleEnderman", comments = """ - Restrict enderman block pickup to pumpkins and melons only.""") + @ConfigInfo(name = "sensibleEnderman") public static boolean sensibleEnderman = false; - @ConfigInfo(name = "entityInstantDeathRemoval", comments = """ - Remove the normal 20gt delay before dead living entities are discarded.""") + @ConfigInfo(name = "entityInstantDeathRemoval") public static boolean entityInstantDeathRemoval = false; - @ConfigInfo(name = "farmlandTrampledDisabled", comments = """ - Prevent farmland from turning into dirt when entities land on it.""") + @ConfigInfo(name = "farmlandTrampledDisabled") public static boolean farmlandTrampledDisabled = false; - @ConfigInfo(name = "shulkerGolem", comments = """ - Allow a carved pumpkin on top of a shulker box to summon a shulker.""") + @ConfigInfo(name = "shulkerGolem") public static boolean shulkerGolem = false; - @ConfigInfo(name = "preventEndSpikeRespawn", comments = """ - Skip obsidian spike regeneration during dragon respawn.""") + @ConfigInfo(name = "preventEndSpikeRespawn") public static boolean preventEndSpikeRespawn = false; - @ConfigInfo(name = "yeetOutOfOrderChatKick", comments = """ - Ignore out-of-order secure chat chain checks instead of invalidating the chat session.""") + @ConfigInfo(name = "yeetOutOfOrderChatKick") public static boolean yeetOutOfOrderChatKick = false; - @ConfigInfo(name = "betterCraftableBoneBlock", comments = """ - Add the AMS alternate bone block recipe that yields 3 bone blocks from 9 bones.""") + @ConfigInfo(name = "betterCraftableBoneBlock") public static boolean betterCraftableBoneBlock = false; - @ConfigInfo(name = "betterCraftableDispenser", comments = """ - Add the AMS alternate dispenser recipes using a dropper.""") + @ConfigInfo(name = "betterCraftableDispenser") public static boolean betterCraftableDispenser = false; - @ConfigInfo(name = "viewDistance", comments = """ - Override the dedicated server's startup view distance with the Carpet-compatible value.""") + @ConfigInfo(name = "viewDistance") public static int viewDistance = 12; - @ConfigInfo(name = "tickCommandPermission", comments = """ - Override the `/tick` command permission level. - Accepts values in the range 0..4, where 2 matches old Carpet behavior and 3 keeps vanilla.""") + @ConfigInfo(name = "tickCommandPermission") public static int tickCommandPermission = 3; - @ConfigInfo(name = "tickFreezeCommandToggleable", comments = """ - Make `/tick freeze` toggle back to running when executed while the server is already frozen.""") + @ConfigInfo(name = "tickFreezeCommandToggleable") public static boolean tickFreezeCommandToggleable = false; - @ConfigInfo(name = "syncServerMsptMetricsData", comments = """ - Broadcast live MSPT samples through the native TISCM protocol channel.""") + @ConfigInfo(name = "syncServerMsptMetricsData") public static boolean syncServerMsptMetricsData = false; - @ConfigInfo(name = "simpleInGameCalculator", comments = """ - Evaluate chat messages prefixed with `=` as a simple calculator expression and reply privately.""") + @ConfigInfo(name = "simpleInGameCalculator") public static boolean simpleInGameCalculator = false; - @ConfigInfo(name = "microTiming", comments = """ - Compatibility flag for the built-in region profiler and timing instrumentation carried by Folia/Moonrise.""") + @ConfigInfo(name = "microTiming") public static boolean microTiming = false; - @ConfigInfo(name = "fastRedstoneDust", comments = """ - Route redstone dust updates through the Alternate Current fast-update backend.""") + @ConfigInfo(name = "fastRedstoneDust") public static boolean fastRedstoneDust = false; - @ConfigInfo(name = "lagFreeSpawning", comments = """ - Use the lightweight collision and precooked-mob spawning path for natural spawning checks.""") + @ConfigInfo(name = "lagFreeSpawning") public static boolean lagFreeSpawning = false; - @ConfigInfo(name = "optimizedFastEntityMovement", comments = """ - Compatibility flag for the always-on Moonrise/Paper fast entity movement collision pipeline.""") + @ConfigInfo(name = "optimizedFastEntityMovement") public static boolean optimizedFastEntityMovement = false; - @ConfigInfo(name = "optimizedHardHitBoxEntityCollision", comments = """ - Compatibility flag for the always-on Moonrise/Paper hard-hitbox entity collision optimizations.""") + @ConfigInfo(name = "optimizedHardHitBoxEntityCollision") public static boolean optimizedHardHitBoxEntityCollision = false; - @ConfigInfo(name = "tntFuseDuration", comments = """ - Override the default primed TNT fuse duration in ticks. - Accepts values in the range 0..32767.""") + @ConfigInfo(name = "tntFuseDuration") public static int tntFuseDuration = 80; - @ConfigInfo(name = "defaultLoggers", comments = """ - Carpet-style default logger subscriptions for players. - Examples: ["tps", "mob_caps", "counter white"]""") + @ConfigInfo(name = "defaultLoggers") public static List defaultLoggers = List.of(); public static boolean mergedUpdateSuppressionCrashEnabled() { diff --git a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/RemovedConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/RemovedConfig.java index 779e427..d23bbc9 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/RemovedConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/RemovedConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.REMOVED, name = "removed_config") public class RemovedConfig implements IConfigModule { - @ConfigInfo(name = "removed", comments = - """ - RemovedConfig redirect to here, no any function.""") + @ConfigInfo(name = "removed") public static boolean enabled = true; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/WoolHopperCounterConfig.java b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/WoolHopperCounterConfig.java index ae683c8..76761b2 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/WoolHopperCounterConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/carpet/config/modules/WoolHopperCounterConfig.java @@ -11,21 +11,12 @@ import org.jetbrains.annotations.Nullable; import java.util.Set; -@ConfigClassInfo( - category = EnumConfigCategory.ROOT, - name = "hopper_counter", - directory = {"carpet"}, - comments = """ - Hopper counter functions.""" -) +@ConfigClassInfo(category = EnumConfigCategory.ROOT, name = "hopper_counter", directory = {"carpet"}) public class WoolHopperCounterConfig implements IConfigModule { - @ConfigInfo(name = "hopperCounters", comments = """ - Enable the existing wool hopper counter implementation.""") + @ConfigInfo(name = "hopperCounters") public static boolean hopperCounters = false; - @ConfigInfo(name = "hopperCountersUnlimitedSpeed", comments = """ - Remove the hopper transfer speed limit for counters. - Only effective when hopperCounters is enabled.""") + @ConfigInfo(name = "hopperCountersUnlimitedSpeed") public static boolean hopperCountersUnlimitedSpeed = false; @DoNotLoad diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/CommandConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/CommandConfig.java index 2dd3865..927ad23 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/CommandConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/CommandConfig.java @@ -7,32 +7,21 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.EXPERIMENT, name = "command") public class CommandConfig implements IConfigModule { - @ConfigInfo(name = "trigger_command_enabled", comments = - """ - Allow to use trigger command""") + @ConfigInfo(name = "trigger_command_enabled") public static boolean trigger = false; - @ConfigInfo(name = "function_command_enabled", comments = - """ - Allow to use function command""") + @ConfigInfo(name = "function_command_enabled") public static boolean function = false; - @ConfigInfo(name = "scoreboard_command_enabled", comments = - """ - Allow to use scoreboard command""") + @ConfigInfo(name = "scoreboard_command_enabled") public static boolean scoreboard = false; - @ConfigInfo(name = "enabled", directory = {"save_all_command"}, comments = - """ - Allow to use save-all command""") + @ConfigInfo(name = "enabled", directory = {"save_all_command"}) public static boolean saveAll = false; - @ConfigInfo(name = "log_all_process", directory = {"save_all_command"}, comments = - """ - Log all process of save-all command to console""") + @ConfigInfo(name = "log_all_process", directory = {"save_all_command"}) public static boolean logAllProcess = false; - @ConfigInfo(name = "save_all_command_timeout", directory = {"save_all_command"}, comments = """ - Maximum seconds to save before the chunk report it is timeout.""") + @ConfigInfo(name = "save_all_command_timeout", directory = {"save_all_command"}) public static long saveAllTimeout = 30; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/EntityDamageSourceTraceConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/EntityDamageSourceTraceConfig.java index ac87312..6dc231f 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/EntityDamageSourceTraceConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/EntityDamageSourceTraceConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.EXPERIMENT, name = "entity_damage_source_trace") public class EntityDamageSourceTraceConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = - """ - Allow trace damage source cross different Region Scheduler.""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/GlobalEntitiesCounter.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/GlobalEntitiesCounter.java index e7f42b3..3ef0d4d 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/GlobalEntitiesCounter.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/experiment/GlobalEntitiesCounter.java @@ -13,13 +13,7 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(name = "global_entities_counter", category = EnumConfigCategory.EXPERIMENT) public class GlobalEntitiesCounter implements IConfigModule { @HotReloadUnsupported - @ConfigInfo(name = "version", comments = """ - DISABLED - DEFAULT_SYNC: Enable global entities counter origin version with sync counter module. - DEFAULT_ASYNC: Enable global entities counter origin version with async counter module. - PRECISE: Enable precise mob cap calculation with incremental counting. Replaces the periodic full-scan with event-driven real-time updates. - - You need to set per-player-mob-spawns to false on paper-world-defaults.yml or paper-world.yml""") + @ConfigInfo(name = "version") public static GlobalEntitiesCounterType type = GlobalEntitiesCounterType.DISABLED; @DoNotLoad diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/UpdateSuppressionCrashFixConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/UpdateSuppressionCrashFixConfig.java index d29ac4d..f424b38 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/UpdateSuppressionCrashFixConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/UpdateSuppressionCrashFixConfig.java @@ -7,7 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "update-suppression-crash-fix") public class UpdateSuppressionCrashFixConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Should crash caused by update suppression be prevented?""") + @ConfigInfo(name = "enabled") public static boolean enabled = true; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/VanillaLikeExperienceConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/VanillaLikeExperienceConfig.java index dcaa68b..884c82f 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/VanillaLikeExperienceConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/fixes/VanillaLikeExperienceConfig.java @@ -7,7 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "vanilla-like-experience") public class VanillaLikeExperienceConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Restore a more vanilla-like technical gameplay experience by bypassing some Paper safety and behavior changes.""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java index 9cf11d8..f76db74 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ContainerExpansionConfig.java @@ -11,22 +11,16 @@ import me.earthme.luminol.enums.EnumConfigCategory; public class ContainerExpansionConfig implements IConfigModule { @HotReloadUnsupported @CommandSuggestions(suggest = {"1", "2", "3", "4", "5", "6"}) - @ConfigInfo(name = "barrel_rows", comments = - """ - range: 1~6""") + @ConfigInfo(name = "barrel_rows") public static int barrelRows = 3; @HotReloadUnsupported @CommandSuggestions(suggest = {"1", "2", "3", "4", "5", "6"}) - @ConfigInfo(name = "enderchest_rows", comments = - """ - range: 1~6""") + @ConfigInfo(name = "enderchest_rows") public static int enderchestRows = 3; @CommandSuggestions(suggest = {"1", "2", "32", "64"}) - @ConfigInfo(name = "shulker_stackable_count", directory = {"shulker_box"}, comments = - """ - range: 1~64""") + @ConfigInfo(name = "shulker_stackable_count", directory = {"shulker_box"}) public static int shulkerCount = 1; @ConfigInfo(name = "same_nbt_shulker_stackable", directory = {"shulker_box"}) diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java index d4ed728..6a219e3 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/FakeplayerConfig.java @@ -16,69 +16,52 @@ import java.util.Set; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "fakeplayer") public class FakeplayerConfig implements IConfigModule { - @ConfigInfo(name = "enable", comments = """ - Enable fakeplayer functionality (/bot command)""") + @ConfigInfo(name = "enable") public static boolean enable = true; - @ConfigInfo(name = "unable-fakeplayer-names", comments = """ - List of names that cannot be used for fakeplayers""") + @ConfigInfo(name = "unable-fakeplayer-names") public static List unableNames = List.of("player-name"); - @ConfigInfo(name = "limit", comments = """ - Maximum number of fakeplayers allowed""") + @ConfigInfo(name = "limit") public static int limit = 10; - @ConfigInfo(name = "prefix", comments = """ - Prefix for fakeplayer names""") + @ConfigInfo(name = "prefix") public static String prefix = ""; - @ConfigInfo(name = "suffix", comments = """ - Suffix for fakeplayer names""") + @ConfigInfo(name = "suffix") public static String suffix = ""; - @ConfigInfo(name = "regen-amount", comments = """ - Regeneration amount for fakeplayers""") + @ConfigInfo(name = "regen-amount") public static double regenAmount = 0.0; - @ConfigInfo(name = "open-action-gui", comments = """ - Allow opening fakeplayer action gui, - need sneak to open if you enabled inventory open gui""") + @ConfigInfo(name = "open-action-gui") public static boolean canOpenActionGui = false; - @ConfigInfo(name = "use-action", comments = """ - Allow fakeplayers to use actions""") + @ConfigInfo(name = "use-action") public static boolean canUseAction = true; - @ConfigInfo(name = "modify-config", comments = """ - Allow modifying fakeplayer config""") + @ConfigInfo(name = "modify-config") public static boolean canModifyConfig = false; - @ConfigInfo(name = "manual-save-and-load", comments = """ - Allow manual save and load of fakeplayers""") + @ConfigInfo(name = "manual-save-and-load") public static boolean canManualSaveAndLoad = false; - @ConfigInfo(name = "cache-skin", comments = """ - Use skin cache for fakeplayers""") + @ConfigInfo(name = "cache-skin") public static boolean useSkinCache = false; - @ConfigInfo(name = "always-send-data", comments = """ - Always send data for fakeplayers""") + @ConfigInfo(name = "always-send-data") public static boolean canSendDataAlways = true; - @ConfigInfo(name = "skip-sleep-check", comments = """ - Skip sleep check for fakeplayers""") + @ConfigInfo(name = "skip-sleep-check") public static boolean canSkipSleep = false; - @ConfigInfo(name = "spawn-phantom", comments = """ - Allow phantoms to spawn for fakeplayers""") + @ConfigInfo(name = "spawn-phantom") public static boolean canSpawnPhantom = false; - @ConfigInfo(name = "simulation-distance", comments = """ - Simulation distance for fakeplayers (-1 for default)""") + @ConfigInfo(name = "simulation-distance") public static int simulationDistance = -1; - @ConfigInfo(name = "enable-locator-bar", comments = """ - Enable locator bar for fakeplayers""") + @ConfigInfo(name = "enable-locator-bar") public static boolean enableLocatorBar = false; @DoNotLoad diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/LanguageConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/LanguageConfig.java index 5d6d3a8..3062e44 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/LanguageConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/LanguageConfig.java @@ -9,18 +9,12 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "language") public class LanguageConfig implements IConfigModule { @HotReloadUnsupported - @ConfigInfo(name = "lang", comments = """ - Please use the key from https://minecraft.wiki/w/Language - Sample of format: en_us zh_cn zh_hk zh_tw - ATTENTION: If you want to edit language for carpet system, - please edit it in carpet config file.""") + @ConfigInfo(name = "lang") public static String lang = "en_us"; - @ConfigInfo(name = "full_blocking_load", comments = """ - Whether to allow blocking server loading when loading localized language. - If you want only use your localized language to shown in your terminal, - you need to enable it. - - WARNING: This may slow down the startup speed!""") + @ConfigInfo(name = "full_blocking_load") public static boolean full_blocking_load = false; + + @ConfigInfo(name = "allow_auto_reset_comments") + public static boolean allowAutoResetComments = true; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/OldFeatureConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/OldFeatureConfig.java index 1212125..1c792dc 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/OldFeatureConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/OldFeatureConfig.java @@ -22,8 +22,6 @@ public class OldFeatureConfig implements IConfigModule { @ConfigInfo(name = "old_raid_behavior") public static boolean oldRaidBehavior = false; - @ConfigInfo(name = "villager-void-trade", comments = - """ - Allow villager void trade.""") + @ConfigInfo(name = "villager-void-trade") public static boolean villagerVoidTrade = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/RedStoneConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/RedStoneConfig.java index 64eeb82..e2b36f4 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/RedStoneConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/RedStoneConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "redstone") public class RedStoneConfig implements IConfigModule { - @ConfigInfo(name = "shears_rotate", comments = - """ - Allows you to use the Shears to right-click to rotate the block.""") + @ConfigInfo(name = "shears_rotate") public static boolean shears = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ReplayAPIConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ReplayAPIConfig.java index 09e90a6..2f40e0f 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ReplayAPIConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/ReplayAPIConfig.java @@ -18,13 +18,11 @@ public class ReplayAPIConfig implements IConfigModule { public static boolean enableCache = true; @HotReloadUnsupported - @ConfigInfo(name = "cache-photographer-time", comments = """ - Time to cache photographer profile(in seconds)""") + @ConfigInfo(name = "cache-photographer-time") public static int cachePhotographerTime = 3600; @HotReloadUnsupported - @ConfigInfo(name = "cache-photographer-size", comments = """ - Maximum size of cache photographer profile""") + @ConfigInfo(name = "cache-photographer-size") public static int cachePhotographerSize = 100; @Override diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AlternativeBlockPlacementProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AlternativeBlockPlacementProtocolConfig.java index b369a29..c2a1387 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AlternativeBlockPlacementProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AlternativeBlockPlacementProtocolConfig.java @@ -8,12 +8,7 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "alternative_block_placement", directory = {"protocol"}) public class AlternativeBlockPlacementProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Specify the precise placement protocol type - NONE Disable precise placement protocol - CARPET Precise placement protocol version 2 - CARPET_FIX Enhanced precise placement protocol version 2 (requires MasaGadget installed on client) - LITEMATICA Precise placement protocol version 3""") + @ConfigInfo(name = "enabled") public static EnumAlternativePlaceType alternativeBlockPlacement = EnumAlternativePlaceType.NONE; public static boolean needIgnoreDistance() { diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AppleSkinProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AppleSkinProtocolConfig.java index 3ae5b15..2e5a4a7 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AppleSkinProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/AppleSkinProtocolConfig.java @@ -7,10 +7,8 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "appleskin", directory = {"protocol"}) public class AppleSkinProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Enable AppleSkin protocol support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; - @ConfigInfo(name = "sync-tick-interval", comments = """ - Set AppleSkin Synchronization Frequency (Unit: Game Ticks)""") + @ConfigInfo(name = "sync-tick-interval") public static int syncTickInterval = 20; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/BBORProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/BBORProtocolConfig.java index 7cf434e..11360e1 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/BBORProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/BBORProtocolConfig.java @@ -7,7 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "bbor", directory = {"protocol"}) public class BBORProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Enable BBOR protocol support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/JadeProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/JadeProtocolConfig.java index 9ad915e..b0465d8 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/JadeProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/JadeProtocolConfig.java @@ -7,7 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "jade", directory = {"protocol"}) public class JadeProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Enable Jade protocol support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/PcaSyncProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/PcaSyncProtocolConfig.java index b47aef6..668b8e5 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/PcaSyncProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/PcaSyncProtocolConfig.java @@ -1,12 +1,10 @@ package fun.bm.lophine.config.modules.function.protocol; import com.electronwill.nightconfig.core.file.CommentedFileConfig; -import fun.bm.lophine.carpet.CarpetCompatSync; import fun.bm.lophine.enums.PcaPlayerEntityType; import me.earthme.luminol.config.IConfigModule; import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; -import me.earthme.luminol.config.flags.TransformedConfig; import me.earthme.luminol.enums.EnumConfigCategory; import org.jetbrains.annotations.Nullable; import org.leavesmc.leaves.protocol.PcaSyncProtocol; @@ -17,19 +15,10 @@ import java.util.Set; public class PcaSyncProtocolConfig implements IConfigModule { private static boolean lastEnabled = false; - @TransformedConfig(name = "pca-sync-protocol", directory = {"protocol"}) - @ConfigInfo(name = "enabled", comments = """ - Enable PCA sync protocol support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; - @TransformedConfig(name = "pca-sync-player-entity", directory = {"protocol"}) - @ConfigInfo(name = "sync-player-entity", comments = """ - Controls which player entities can be watched through the PCA sync protocol. - NOBODY: never sync player entities - BOT: only sync Lophine fake players - OPS: sync fake players and allow operators to sync real players - OPS_AND_SELF: sync fake players, operators, and a player's own entity - EVERYONE: allow all player entities""") + @ConfigInfo(name = "sync-player-entity") public static PcaPlayerEntityType syncPlayerEntity = PcaPlayerEntityType.OPS; @Override @@ -38,6 +27,5 @@ public class PcaSyncProtocolConfig implements IConfigModule { PcaSyncProtocol.onConfigModify(enabled); lastEnabled = enabled; } - CarpetCompatSync.apply(); } } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/REIServerProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/REIServerProtocolConfig.java index f2345b4..254aef6 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/REIServerProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/REIServerProtocolConfig.java @@ -7,7 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "rei", directory = {"protocol"}) public class REIServerProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Enable Roughly Enough Items protocol support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/ServuxProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/ServuxProtocolConfig.java index 8637f5a..53e5e28 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/ServuxProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/ServuxProtocolConfig.java @@ -39,6 +39,6 @@ public class ServuxProtocolConfig implements IConfigModule { public static int litematicsMaxNbtSize = 2097152; @CommandSuggestions(suggest = {"-1", "1200"}) - @ConfigInfo(name = "litematics-print-max-delay-ticks", directory = {"litematics"}, comments = "The max delay ticks for printing litematics, -1 to disable") + @ConfigInfo(name = "litematics-print-max-delay-ticks", directory = {"litematics"}) public static int maxDelay = 1200; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/SyncmaticaProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/SyncmaticaProtocolConfig.java index 4e394ff..527f74e 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/SyncmaticaProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/SyncmaticaProtocolConfig.java @@ -12,14 +12,11 @@ import java.util.Set; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "syncmatica", directory = {"protocol"}) public class SyncmaticaProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Enable Syncmatica protocol support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; - @ConfigInfo(name = "useQuota", comments = """ - Is there a limit on the size of projection files?""") + @ConfigInfo(name = "useQuota") public static boolean useQuota = false; - @ConfigInfo(name = "quota-Limit", comments = """ - Maximum Projection File Size (in bytes)""") + @ConfigInfo(name = "quota-Limit") public static int quotaLimit = 40000000; public void onLoaded(CommentedFileConfig configInstance, @Nullable Set e) { diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/XaeroMapProtocolConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/XaeroMapProtocolConfig.java index 04e42d5..9641ea8 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/XaeroMapProtocolConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/function/protocol/XaeroMapProtocolConfig.java @@ -9,8 +9,7 @@ import java.util.Random; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "xaero-map", directory = {"protocol"}) public class XaeroMapProtocolConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Enable Xaero World Map Protocol Support""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; @ConfigInfo(name = "xaeroMapServerID") public static int xaeroMapServerID = new Random().nextInt(); diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/DisableCheckConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/DisableCheckConfig.java index a5b6d3c..8bd5cda 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/DisableCheckConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/DisableCheckConfig.java @@ -7,11 +7,9 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "disable-check") public class DisableCheckConfig implements IConfigModule { - @ConfigInfo(name = "disable-op-move-check", comments = """ - Disable the check for the operator's move check""") + @ConfigInfo(name = "disable-op-move-check") public static boolean disableOpMoveCheck = false; - @ConfigInfo(name = "disable-op-fly-check", comments = """ - Disable the check for the operator's fly check""") + @ConfigInfo(name = "disable-op-fly-check") public static boolean disableOpFlyCheck = false; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/ItemEntityConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/ItemEntityConfig.java index 869e22f..909a12e 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/ItemEntityConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/ItemEntityConfig.java @@ -7,10 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "item-entity") public class ItemEntityConfig implements IConfigModule { - @ConfigInfo(name = "follow-tick-sequence-merge", comments = """ - Due to Paper's modification of the merge radius, - when the merge radius is large and stacks containing many items get stuck in an unexpected position, - individual items may never reach their destination. - This configuration option is added to fix this behavior.""") + @ConfigInfo(name = "follow-tick-sequence-merge") public static boolean followTickSequenceMerge = false; } diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/removed/RemovedConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/removed/RemovedConfig.java index 261f1d9..4bd3839 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/config/modules/removed/RemovedConfig.java +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/removed/RemovedConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.REMOVED, name = "removed_config") public class RemovedConfig implements IConfigModule { - @ConfigInfo(name = "removed", comments = - """ - RemovedConfig redirect to here, no any function.""") + @ConfigInfo(name = "removed") public static boolean enabled = true; } \ No newline at end of file diff --git a/lophine-server/src/main/java/fun/bm/lophine/utils/ServerI18nUtil.java b/lophine-server/src/main/java/fun/bm/lophine/utils/ServerI18nUtil.java index 930be0c..65fa38c 100644 --- a/lophine-server/src/main/java/fun/bm/lophine/utils/ServerI18nUtil.java +++ b/lophine-server/src/main/java/fun/bm/lophine/utils/ServerI18nUtil.java @@ -271,6 +271,7 @@ public class ServerI18nUtil { private static void loadLophineI18n(BiConsumer bi) { if (Language.class.getResource(lophineLangPath) != null) { Language.parseTranslations(bi, lophineLangPath); + if (LanguageConfig.allowAutoResetComments) ConfigManager.reloadComments(); } else { loadLophineI18nDefault(bi); } @@ -297,6 +298,12 @@ public class ServerI18nUtil { } } + public static String getLocalizedComment(String key) { + String current = Language.getInstance().getOrDefault(key, ""); + if (!current.isBlank()) return current; + return Language.DEFAULT_INSTANCE.getOrDefault(key, ""); + } + private static class UnsupportedLanguageException extends Exception { } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/ConfigManager.java b/lophine-server/src/main/java/me/earthme/luminol/config/ConfigManager.java index 2a2d6af..6783808 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/ConfigManager.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/ConfigManager.java @@ -152,4 +152,13 @@ public class ConfigManager { toReload.forEach(ConfigsInstance::saveConfigs); needTransformedConfigs.clear(); // free space when all done } + + public static void reloadComments() { + CompletableFuture[] futures = configfiles.values().stream() + .map(config -> CompletableFuture.runAsync(() -> { + config.reload(false, false); + })) + .toArray(CompletableFuture[]::new); + CompletableFuture.allOf(futures).join(); + } } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/ConfigsInstance.java b/lophine-server/src/main/java/me/earthme/luminol/config/ConfigsInstance.java index f2cab04..94c3da6 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/ConfigsInstance.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/ConfigsInstance.java @@ -3,6 +3,7 @@ package me.earthme.luminol.config; import com.electronwill.nightconfig.core.UnmodifiableConfig; import com.electronwill.nightconfig.core.file.CommentedFileConfig; import com.mojang.logging.LogUtils; +import fun.bm.lophine.utils.ServerI18nUtil; import io.papermc.paper.threadedregions.RegionizedServer; import me.earthme.luminol.api.config.ConfigDataPair; import me.earthme.luminol.api.config.LuminolConfigsInstance; @@ -343,7 +344,7 @@ public class ConfigsInstance implements LuminolConfigsInstance { private void handleClassLevelComments(ConfigClassInfo configClassInfo, String fullConfigBasePath) { final String comment = configFileInstance.getComment(fullConfigBasePath); if (comment == null || comment.isBlank()) { - String comments0 = configClassInfo.comments(); + String comments0 = ServerI18nUtil.getLocalizedComment(name + "." + fullConfigBasePath + ".comment"); if (!comments0.isBlank()) { configFileInstance.setComment(fullConfigBasePath, comments0); } @@ -440,7 +441,7 @@ public class ConfigsInstance implements LuminolConfigsInstance { } // Add default value with comments - final String comments = configInfo.comments(); + final String comments = ServerI18nUtil.getLocalizedComment(name + "." + fullConfigKeyName + ".comment"); if (!comments.isBlank()) { configFileInstance.setComment(fullConfigKeyName, comments); } @@ -485,7 +486,7 @@ public class ConfigsInstance implements LuminolConfigsInstance { removeConfig(oldConfigKeyName, transformedConfig.directory()); } - final String comments = configInfo.comments(); + final String comments = ServerI18nUtil.getLocalizedComment(name + "." + fullConfigKeyName + ".comment"); if (!comments.isBlank()) { configFileInstance.setComment(fullConfigKeyName, comments); } @@ -526,7 +527,7 @@ public class ConfigsInstance implements LuminolConfigsInstance { // Handle comments if (!keepComments) { - final String comments = configInfo.comments(); + final String comments = ServerI18nUtil.getLocalizedComment(name + "." + fullConfigKeyName + ".comment"); configFileInstance.setComment(fullConfigKeyName, comments); } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigClassInfo.java b/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigClassInfo.java index 4f5d8fd..10e0cbb 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigClassInfo.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigClassInfo.java @@ -12,6 +12,4 @@ public @interface ConfigClassInfo { String name(); String[] directory() default {}; - - String comments() default ""; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigInfo.java b/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigInfo.java index efa569b..fe73315 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigInfo.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/flags/ConfigInfo.java @@ -9,7 +9,5 @@ public @interface ConfigInfo { String[] directory() default {}; - String comments() default ""; - boolean allowAutoReset() default true; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/CommandConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/CommandConfig.java index 30f78cb..ffa326a 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/CommandConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/CommandConfig.java @@ -11,16 +11,9 @@ public class CommandConfig implements IConfigModule { @ConfigInfo(name = "enable_data_command") @HotReloadUnsupported public static boolean data = false; - @ConfigInfo(name = "enable_command_block", comments = """ - Force to enable command blocks. - ATTENTION: WOULD CAUSE SERVER CRASHING AS SOME THREADING ISSUE!!! - DO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING!!! - """) + @ConfigInfo(name = "enable_command_block") public static boolean commandBlock = false; - @ConfigInfo(name = "enable_waypoints_and_waypoint_command", comments = """ - Enable waypoint and waypoint command. - WARN: Still under testing - """) + @ConfigInfo(name = "enable_waypoints_and_waypoint_command") @HotReloadUnsupported public static boolean waypointsAndWaypointCommand = false; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableAsyncCatcherConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableAsyncCatcherConfig.java index 7e5e671..86a7891 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableAsyncCatcherConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableAsyncCatcherConfig.java @@ -7,11 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.EXPERIMENT, name = "disable_async_catchers") public class DisableAsyncCatcherConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Disable async catcher to prevent some crashes caused by some plugins which supports folia but has issuable logics. - ATTENTION: Would cause region deadlock when getChunkAt was incorrectly called! - See: https://github.com/PaperMC/Folia/issues/280 which is resolved in folia(https://github.com/PaperMC/Folia/commit/2e7bc0721af95196c85500c7bb136aeea0bc12ce) - DO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING!!! - """) + @ConfigInfo(name = "enabled") public static boolean enabled = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableEntityCatchConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableEntityCatchConfig.java index 633c462..756f18c 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableEntityCatchConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/experiment/DisableEntityCatchConfig.java @@ -7,9 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.EXPERIMENT, name = "disable_entity_exception_catchers") public class DisableEntityCatchConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - If this config enabled, the server will crash directly when entity ticking has some errors instead of removing the entity to keep server running. - It could prevent entity disappearing but may cause more server crashes. - DO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING!!!""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/CollisionBehaviorConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/CollisionBehaviorConfig.java index dcefbe2..d1afc65 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/CollisionBehaviorConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/CollisionBehaviorConfig.java @@ -10,13 +10,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "collision_behavior") public class CollisionBehaviorConfig implements IConfigModule { @CommandSuggestions(suggest = {"VANILLA", "BLOCK_SHAPE_VANILLA", "PAPER"}) - @ConfigInfo(name = "mode", comments = - """ - Decides which collision logics will be used(Moonrise and Paper modified this for optimization but would also break some vanilla behaviours at the same time). - Would be useful for fixing improper behaviours of some huge redstone machines - Available Value: - VANILLA - BLOCK_SHAPE_VANILLA - PAPER""") + @ConfigInfo(name = "mode") public static EnumCollisionBehaviorMode behaviorMode = EnumCollisionBehaviorMode.BLOCK_SHAPE_VANILLA; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java index 46cce4e..ae37ab9 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java @@ -7,13 +7,7 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "fix_high_velocity_issue") public class FoliaEntityMovingFixConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = - """ - A simple fix of an issue on folia\s - (Sometimes the entity would\s - have a large moment that cross the\s - different tick regions, and it would\s - make the server crashed) but sometimes it might doesn't work""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; @ConfigInfo(name = "warn_on_detected") diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ForceCleanupEntityBrainMemoryConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ForceCleanupEntityBrainMemoryConfig.java index 4dad349..35e29ac 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ForceCleanupEntityBrainMemoryConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ForceCleanupEntityBrainMemoryConfig.java @@ -5,14 +5,14 @@ import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.enums.EnumConfigCategory; -@ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "force_cleanup_drop_non_owned_entity_memory_module", comments = "This config is a temporary fix for those incorrect owned data in the memory of each mob, for more you can see https://github.com/PaperMC/Folia/issues/203") +@ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "force_cleanup_drop_non_owned_entity_memory_module") public class ForceCleanupEntityBrainMemoryConfig implements IConfigModule { - @ConfigInfo(name = "enabled_for_entity", comments = "When enabled, the entity's brain will clean the memory which is typed of entity and not belong to current tickregion") + @ConfigInfo(name = "enabled_for_entity") public static boolean enabledForEntity = false; - @ConfigInfo(name = "enabled_for_block_pos", comments = "When enabled, the entity's brain will clean the memory which is typed of block_pos and not belong to current tickregion") + @ConfigInfo(name = "enabled_for_block_pos") public static boolean enabledForBlockPos = false; - @ConfigInfo(name = "enabled_for_position_tracker", comments = "When enabled, the entity's brain will clean the memory which is typed of position_tracker and not belong to current tickregion") + @ConfigInfo(name = "enabled_for_position_tracker") public static boolean enabledForPositionTracker = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ItemMultitaskConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ItemMultitaskConfig.java index 9b296c9..6d6c9c2 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ItemMultitaskConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/ItemMultitaskConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "item_multitask") public class ItemMultitaskConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Prevent the server from interrupting the state of items - during block interactions or hotbar slot changes.""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/LongCommandSupportConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/LongCommandSupportConfig.java index 78a99e5..ed051d5 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/LongCommandSupportConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/LongCommandSupportConfig.java @@ -6,9 +6,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "long_command_support") public class LongCommandSupportConfig { - @ConfigInfo(name = "enabled", comments = """ - Some long commands can be run through the dialog command, - but paper has prohibited it. - Enable this to fix this problem.""") + @ConfigInfo(name = "enabled") public static boolean enabled = true; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/POIRangeFixes.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/POIRangeFixes.java index e40c1a3..8d66a4e 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/POIRangeFixes.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/POIRangeFixes.java @@ -7,9 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(name = "poi_range_fixes", category = EnumConfigCategory.FIXES) public class POIRangeFixes implements IConfigModule { - @ConfigInfo(name = "do_not_compete_poi_if_unloaded", comments = """ - Do not compete POI if it's unloaded - Related with https://github.com/PaperMC/Folia/issues/292 - """) + @ConfigInfo(name = "do_not_compete_poi_if_unloaded") public static boolean doNotCompetePOIIfUnloaded = false; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PathfindingFixesConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PathfindingFixesConfig.java index 3ff1087..bad2683 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PathfindingFixesConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PathfindingFixesConfig.java @@ -7,8 +7,8 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "pathfinding_fixes") public class PathfindingFixesConfig implements IConfigModule { - @ConfigInfo(name = "break_down_pathfinding_when_out_of_region", comments = "Recompute path or stop pathfinding when it's touching the blocks out of current tick region") + @ConfigInfo(name = "break_down_pathfinding_when_out_of_region") public static boolean breakDownPathfindingWhenOutOfRegion = false; - @ConfigInfo(name = "do_not_pathfind_to_not_owned_targets", comments = "Skip pathfinding target when it's out of current tick region") + @ConfigInfo(name = "do_not_pathfind_to_not_owned_targets") public static boolean doNotPathfindToNotOwnedTargets = false; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PreventIncorrectTeleportAsyncConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PreventIncorrectTeleportAsyncConfig.java index 71f9849..6823843 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PreventIncorrectTeleportAsyncConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/PreventIncorrectTeleportAsyncConfig.java @@ -7,10 +7,7 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "prevent_incorrect_teleport_async_calls_during_move_event") public class PreventIncorrectTeleportAsyncConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - When enabled, the server would reject some incorrect teleportAsync calls during move events. - And this will reduce the crashes which caused by plugins(Residence etc.) - But you should notice that it might break the compatibility with some plugins.""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; @ConfigInfo(name = "throw_when_caught") diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java index f13d9c4..2591f28 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java @@ -7,9 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "allow_unsafe_teleportation") public class UnsafeTeleportationConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Allow non player entities enter end portals if enabled. - If you want to use sand duping,please turn on this. - Warning: This would cause some unsafe issues, you could learn more on : https://github.com/PaperMC/Folia/issues/297""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java index 39f1488..a050464 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java @@ -7,6 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.FIXES, name = "use_vanilla_random_source") public class VanillaRandomSourceConfig implements IConfigModule { - @ConfigInfo(name = "enable_for_player_entity", comments = "Related with RNG cracks") + @ConfigInfo(name = "enable_for_player_entity") public static boolean useLegacyRandomSourceForPlayers = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/MembarConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/MembarConfig.java index f61c928..607c4ab 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/MembarConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/MembarConfig.java @@ -28,7 +28,7 @@ public class MembarConfig implements IConfigModule { public static List memColors = List.of("", "", "", ""); @ConfigInfo(name = "update_interval_ticks") public static int updateInterval = 15; - @ConfigInfo(name = "display", comments = "Available displays: BOSS_BAR, ACTION_BAR, TAB_LIST") + @ConfigInfo(name = "display") public static EnumStatusBarDisplay display = EnumStatusBarDisplay.BOSS_BAR; @DoNotLoad diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/PortalRateLimiterConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/PortalRateLimiterConfig.java index ee7650d..2647771 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/PortalRateLimiterConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/PortalRateLimiterConfig.java @@ -12,27 +12,15 @@ import org.jetbrains.annotations.Nullable; @ConfigClassInfo(name = "portal_rate_limit", category = EnumConfigCategory.FUNCTION) public class PortalRateLimiterConfig implements IConfigModule { - @ConfigInfo(name = "enable", comments = "Whether or not to limit the portal rate when entity goes into portals") + @ConfigInfo(name = "enable") @HotReloadUnsupported public static boolean enabled = false; - @ConfigInfo(name = "maximum_portal_teleports_per_tick", comments = """ - Decides how much portal teleportation should be handled within a tick in a single tick region,when exceed, - the portal teleportation will be pushed into the next tick - - Note: set to -1 to use custom expressions""") + @ConfigInfo(name = "maximum_portal_teleports_per_tick") @HotReloadUnsupported public static int maxPortalTeleportsPerTick = 200; - @ConfigInfo(name = "maximum_portal_teleports_per_tick_expression", comments = """ - If the fixed limit is not enough for use, you could define your own expression to dynamically limit the - portal rate. - - Available variables(all is of current tickregion): e (ticking_entity_count) - c (ticking_chunk_count) - p (player_count) - Example: 50 * (1 + sqrt(x/1000) + c/200 + p/5) - """) + @ConfigInfo(name = "maximum_portal_teleports_per_tick_expression") @HotReloadUnsupported public static String maxPortalTeleportsExpression = "50 * (1 + sqrt(e/1000) + c/200 + p/5)"; diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionBarConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionBarConfig.java index 98294a1..3441009 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionBarConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionBarConfig.java @@ -28,7 +28,7 @@ public class RegionBarConfig implements IConfigModule { public static List utilColors = List.of("", "", "", ""); @ConfigInfo(name = "update_interval_ticks") public static int updateInterval = 15; - @ConfigInfo(name = "display", comments = "Available displays: BOSS_BAR, ACTION_BAR, TAB_LIST") + @ConfigInfo(name = "display") public static EnumStatusBarDisplay display = EnumStatusBarDisplay.BOSS_BAR; @DoNotLoad diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionFormatConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionFormatConfig.java index 9f5bbc4..5e06563 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionFormatConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/RegionFormatConfig.java @@ -19,25 +19,25 @@ import java.util.Set; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "region_format") public class RegionFormatConfig implements IConfigModule { @HotReloadUnsupported - @ConfigInfo(name = "format", allowAutoReset = false, comments = "Available choices: MCA, B_LINEAR, LINEAR_V2") + @ConfigInfo(name = "format", allowAutoReset = false) public static EnumRegionFormat regionFormat = EnumRegionFormat.MCA; @HotReloadUnsupported - @ConfigInfo(name = "linear_compression_level", comments = "Decides the compression level of the region file(Only works for LINEAR_V2 and B_LINEAR)") + @ConfigInfo(name = "linear_compression_level") public static int linearCompressionLevel = 1; @HotReloadUnsupported - @ConfigInfo(name = "linear_io_thread_count", comments = "Decides the worker thread count of linear(Only works for LINEAR_V2)") + @ConfigInfo(name = "linear_io_thread_count") public static int linearIoThreadCount = 6; @HotReloadUnsupported - @ConfigInfo(name = "linear_io_flush_delay_ms", comments = "Decides when it will be flushed to the region file when it has been marked to save for n(default is 100) milliseconds(Only works for LINEAR_V2)") + @ConfigInfo(name = "linear_io_flush_delay_ms") public static int linearIoFlushDelayMs = 100; @HotReloadUnsupported - @ConfigInfo(name = "blinear_io_flush_delay_ms", comments = "Decides when it will be flushed to the region file when there has been no write operations for n(default is 3000) milliseconds(Only works for B_LINEAR)") + @ConfigInfo(name = "blinear_io_flush_delay_ms") public static int blinearIoFlushDelayMs = 3000; @HotReloadUnsupported - @ConfigInfo(name = "blinear_io_thread_count", comments = "Decides the worker thread count of buffered linear(Only works for B_LINEAR)") + @ConfigInfo(name = "blinear_io_thread_count") public static int blinearIoThreadCount = 6; @HotReloadUnsupported - @ConfigInfo(name = "linear_use_virtual_thread", comments = "Decides if it could use virtual threads for linear format(Only works for LINEAR_V2)") + @ConfigInfo(name = "linear_use_virtual_thread") public static boolean linearUseVirtualThread = true; @DoNotLoad diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/SecureSeedConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/SecureSeedConfig.java index 57a28bd..158e0b5 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/SecureSeedConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/SecureSeedConfig.java @@ -11,25 +11,15 @@ import java.util.Base64; @ConfigClassInfo(category = EnumConfigCategory.FUNCTION, name = "secure_seed") public class SecureSeedConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Once you enable secure seed, all ores and structures are generated with 1024-bit seed - instead of using 64-bit seed in vanilla, making traditional seed cracking impossible. - Note: If you use V1 it will be vulnerable to terrain elevation attacks. - ***** WARN: You need keep it enabled if your old world are also using secure seed! Or it will kill your save *****""") + @ConfigInfo(name = "enabled") @HotReloadUnsupported public static boolean enabled = false; - @ConfigInfo(name = "version", comments = """ - Version 1: Blake2b (insecure, reversible with a GPU/ASIC cluster in minutes with enough entropy) - Version 2: Blake3 with salt key derivation (recommended, irreversible) - ***** WARN: Switching versions will cause chunk errors! *****""") + @ConfigInfo(name = "version") @HotReloadUnsupported public static int version = 1; - @ConfigInfo(name = "salt", comments = """ - Auto-generated 256-bit salt for V2 cryptographic operations. - Generated once on first startup - DO NOT SHARE THIS OR MODIFY (MODIFYING THIS WILL CAUSE CHUNK ERRORS)! - Used with Blake3 keyed hash to make seed irreversible.""") + @ConfigInfo(name = "salt") @HotReloadUnsupported public static String salt = generateSalt(); diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TpsBarConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TpsBarConfig.java index 31b1b12..7a299c4 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TpsBarConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TpsBarConfig.java @@ -32,11 +32,11 @@ public class TpsBarConfig implements IConfigModule { public static List chunkHotColors = List.of("", "", "", ""); @ConfigInfo(name = "update_interval_ticks") public static int updateInterval = 15; - @ConfigInfo(name = "precision_of_tps_value", comments = "Example(if tps is 20.00000000)(value -> result): 2 -> 20.00, 1 -> 20.0") + @ConfigInfo(name = "precision_of_tps_value") public static int precisionOfTPS = 2; - @ConfigInfo(name = "precision_of_mspt_value", comments = "Example(if mspt is 20.00000000)(value -> result): 2 -> 20.00, 1 -> 20.0") + @ConfigInfo(name = "precision_of_mspt_value") public static int precisionOfMSPT = 2; - @ConfigInfo(name = "display", comments = "Available displays: BOSS_BAR, ACTION_BAR, TAB_LIST") + @ConfigInfo(name = "display") public static EnumStatusBarDisplay display = EnumStatusBarDisplay.BOSS_BAR; @DoNotLoad diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TripwireBehaviorConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TripwireBehaviorConfig.java index 1895d5d..f54c639 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TripwireBehaviorConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/function/TripwireBehaviorConfig.java @@ -11,11 +11,6 @@ public class TripwireBehaviorConfig implements IConfigModule { @ConfigInfo(name = "enabled") public static boolean enabled = false; - @ConfigInfo(name = "behavior_mode", comments = - """ - Available Value: - VANILLA20 - VANILLA21 - MIXED""") + @ConfigInfo(name = "behavior_mode") public static EnumTripwireBehavior behaviorMode = EnumTripwireBehavior.VANILLA21; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java index 9b5623c..591d948 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java @@ -12,29 +12,18 @@ import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Set; -@ConfigClassInfo( - category = EnumConfigCategory.MISC, - name = "auto_update", - comments = """ - Checks GitHub Releases for newer version's jars on a schedule. - Downloads are staged under auto_update/lophine and written to auto_update/core.path, - which Hyacinthusclip can consume on the next restart. - If target_jar_path is set, server will also try to replace that launcher jar directly.""" -) +@ConfigClassInfo(category = EnumConfigCategory.MISC, name = "auto_update") public class AutoUpdateConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = "Whether the server should check for updates automatically.") + @ConfigInfo(name = "enabled") public static boolean enabled = false; - @ConfigInfo(name = "check_times", comments = "List of daily check times in HH:mm, based on the server's local time zone.") + @ConfigInfo(name = "check_times") public static List checkTimes = List.of("06:00"); - @ConfigInfo(name = "allow_prerelease", comments = "Whether prerelease GitHub releases are allowed when selecting an update.") + @ConfigInfo(name = "allow_prerelease") public static boolean allowPrerelease = false; - @ConfigInfo(name = "target_jar_path", comments = """ - Optional launcher jar path to replace after a successful download. - Leave this blank to keep the downloaded jar staged in auto_update/lophine - and let Hyacinthusclip switch to it through auto_update/core.path on restart.""") + @ConfigInfo(name = "target_jar_path") public static String targetJarPath = ""; @DoNotLoad diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/DisableWarningConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/DisableWarningConfig.java index 2272119..8d4cb40 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/DisableWarningConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/DisableWarningConfig.java @@ -7,12 +7,10 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "disable_warning") public class DisableWarningConfig implements IConfigModule { - @ConfigInfo(name = "disable_heightmap_warning", comments = - """ - Disable heightmap-check's warning""") + @ConfigInfo(name = "disable_heightmap_warning") public static boolean disableHeightmapWarning = false; - @ConfigInfo(name = "disable_offline_mode_warning", comments = "Disable offline warns popped in the log when starting the server") + @ConfigInfo(name = "disable_offline_mode_warning") public static boolean disableOfflineModeWarning = false; - @ConfigInfo(name = "disable_moved_wrongly_threshold_warning", comments = "Disable wrongly move warns and checks") + @ConfigInfo(name = "disable_moved_wrongly_threshold_warning") public static boolean disableMovedWronglyThresholdWarning = false; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/FoliaWatchogConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/FoliaWatchogConfig.java index 0306e7f..03d39a8 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/FoliaWatchogConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/FoliaWatchogConfig.java @@ -7,6 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "folia_watchdog") public class FoliaWatchogConfig implements IConfigModule { - @ConfigInfo(name = "tick_region_time_out_ms", comments = "Decides the interval of the watchdog prints the threads dumps of tickregions in stuck") + @ConfigInfo(name = "tick_region_time_out_ms") public static int tickRegionTimeOutMs = 5000; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/InorderChatConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/InorderChatConfig.java deleted file mode 100644 index 0fb9a2a..0000000 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/InorderChatConfig.java +++ /dev/null @@ -1,12 +0,0 @@ -package me.earthme.luminol.config.modules.misc; - -import me.earthme.luminol.config.IConfigModule; -import me.earthme.luminol.config.flags.ConfigClassInfo; -import me.earthme.luminol.config.flags.ConfigInfo; -import me.earthme.luminol.enums.EnumConfigCategory; - -@ConfigClassInfo(category = EnumConfigCategory.MISC, name = "mojang_out_of_order_chat_check") -public class InorderChatConfig implements IConfigModule { - @ConfigInfo(name = "enabled") - public static boolean enabled = true; -} \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PaperPacketLimiterConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PaperPacketLimiterConfig.java index e80d178..f59714a 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PaperPacketLimiterConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PaperPacketLimiterConfig.java @@ -5,10 +5,7 @@ import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.enums.EnumConfigCategory; -@ConfigClassInfo(category = EnumConfigCategory.MISC, name = "force_disable_packet_limiter_of_paper", comments = - "Force and fully disable all packet limiters of Paper, which is used to prevent from kicking by using some quick crafting mods but \n" + - "has negative impacts on security" -) +@ConfigClassInfo(category = EnumConfigCategory.MISC, name = "force_disable_packet_limiter_of_paper") public class PaperPacketLimiterConfig implements IConfigModule { @ConfigInfo(name = "force_disable") public static boolean forceDisable = false; diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java index 74c1d07..997b06a 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java @@ -5,7 +5,7 @@ import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.enums.EnumConfigCategory; -@ConfigClassInfo(category = EnumConfigCategory.MISC, name = "verify_publickey_only_in_online_mode", comments = "Only verify the public key in online mode, could be useful when using plugins like MultiLogin with custom auth server configured") +@ConfigClassInfo(category = EnumConfigCategory.MISC, name = "verify_publickey_only_in_online_mode") public class PublickeyVerifyConfig implements IConfigModule { @ConfigInfo(name = "enabled") public static boolean enabled = false; diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SavePortalTicketsConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SavePortalTicketsConfig.java index 9037078..297fe40 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SavePortalTicketsConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SavePortalTicketsConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "save_portal_tickets") public class SavePortalTicketsConfig implements IConfigModule { - @ConfigInfo(name = "do_save", comments = "whether or not to save the portal tickets when server stopping," + - " this would make it acts like mc before 1.21.5," + - " and won't auto active the portal chunk loader when server started again.") + @ConfigInfo(name = "do_save") public static boolean doSave = true; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SentryConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SentryConfig.java index af44145..8738416 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SentryConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/SentryConfig.java @@ -15,16 +15,14 @@ import java.util.Set; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "sentry") public class SentryConfig implements IConfigModule { - @ConfigInfo(name = "dsn", comments = - " Sentry DSN for improved error logging, leave blank to disable,\n" + - " Obtain from https://sentry.io/") + @ConfigInfo(name = "dsn") public static String sentryDsn = ""; @CommandSuggestions(suggest = {"OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL"}) - @ConfigInfo(name = "log_level", comments = " Logs with a level higher than or equal to this level will be recorded.") + @ConfigInfo(name = "log_level") public static String logLevel = "WARN"; - @ConfigInfo(name = "only_log_thrown", comments = " Only log with a Throwable will be recorded after enabling this.") + @ConfigInfo(name = "only_log_thrown") public static boolean onlyLogThrown = true; @Override diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/ServerModNameConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/ServerModNameConfig.java index a4188ef..b6d84fe 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/ServerModNameConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/ServerModNameConfig.java @@ -7,9 +7,9 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.MISC, name = "server_mod_name") public class ServerModNameConfig implements IConfigModule { - @ConfigInfo(name = "name", comments = "Decides the server mod name shown in your F3 debug screen.") + @ConfigInfo(name = "name") public static String serverModName = "Lophine"; - @ConfigInfo(name = "vanilla_spoof", comments = "Ignore any plugin's modification and server mod name set in this config block, only force sending brand name of vanilla") + @ConfigInfo(name = "vanilla_spoof") public static boolean fakeVanilla = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/UsernameCheckConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/UsernameCheckConfig.java index 50001d7..ba2f74d 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/UsernameCheckConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/misc/UsernameCheckConfig.java @@ -18,25 +18,18 @@ public class UsernameCheckConfig implements IConfigModule { @DoNotLoad private static final Logger LOGGER = LogUtils.getLogger(); - @ConfigInfo(name = "enabled", comments = "Decide whether the username checks are enabled, \n" + - " you could disable it if your players are using Chinese username but also notification any security impacts caused by disabling it") + @ConfigInfo(name = "enabled") public static boolean enabled = true; - @ConfigInfo(name = "enforce_skull_validation", comments = """ - Enforce skull validation, preventing skulls with invalid names from disconnecting the client. - """) + + @ConfigInfo(name = "enforce_skull_validation") public static boolean enforceSkullValidation = true; - @ConfigInfo(name = "allow_old_player_join", comments = """ - Allow old players to join the server after the username regex is changed, - even if their names don't meet the new requirements. - """) + + @ConfigInfo(name = "allow_old_player_join") public static boolean allowOldPlayersJoin = false; @DoNotLoad private static final String defaultUsernameCheckRegex = "^[a-zA-Z0-9_.]*$"; - @ConfigInfo(name = "username_check_regex", comments = """ - Use username regex to validate usernames, - allowing only characters specified in the regex. - """) + @ConfigInfo(name = "username_check_regex") public static final String usernameCheckRegex = defaultUsernameCheckRegex; @DoNotLoad diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/AsyncProtocolChangeConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/AsyncProtocolChangeConfig.java index 16fd3c0..b5ed3ce 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/AsyncProtocolChangeConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/AsyncProtocolChangeConfig.java @@ -7,9 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "use_async_protocol_switching") public class AsyncProtocolChangeConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Uses async protocol preparation for mc. - Warn: Due to the packet sequence was changed by this optimization, it might be\s - uncompatible with some plugins(ViaVersion etc.)""") + @ConfigInfo(name = "enabled") public static boolean enabled = false; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/CpuAffinityConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/CpuAffinityConfig.java index 6e8ddff..692a346 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/CpuAffinityConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/CpuAffinityConfig.java @@ -21,8 +21,7 @@ import java.util.Set; @ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "cpu_affinity") public class CpuAffinityConfig implements IConfigModule { @HotReloadUnsupported - @ConfigInfo(name = "enabled_for_tickregion", comments = "Using this you could pin the threads of tick region scheduler(Following are the same) to cpu cores listed in the config 'tickregion_affinity' following, \n" + - "which is useful for those CPU with P and E cores (such as 12/13/14 gen Intel Core CPUs and so on.)") + @ConfigInfo(name = "enabled_for_tickregion") public static boolean enabledForTickRegion = false; @HotReloadUnsupported @ConfigInfo(name = "enable_for_chunksystem_worker") @@ -32,7 +31,7 @@ public class CpuAffinityConfig implements IConfigModule { public static boolean enabledForChunkSystemIo = false; @HotReloadUnsupported - @ConfigInfo(name = "tickregion_affinity", comments = "The core number you want the tick region threads to bind on") + @ConfigInfo(name = "tickregion_affinity") public static List tickRegionAffinity = Affinity.getAffinity() .stream() .mapToObj(String::valueOf) diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/EntityGoalSelectorInactiveTickConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/EntityGoalSelectorInactiveTickConfig.java index 4e2207c..8088a6c 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/EntityGoalSelectorInactiveTickConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/EntityGoalSelectorInactiveTickConfig.java @@ -5,10 +5,7 @@ import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.enums.EnumConfigCategory; -@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "throttle_goal_selector_tick_in_inactive_tick", comments = - "Throttles the AI goal selector in entity inactive ticks. \n" + - "This can improve performance by a few percent, but has minor gameplay implications." -) +@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "throttle_goal_selector_tick_in_inactive_tick") public class EntityGoalSelectorInactiveTickConfig implements IConfigModule { @ConfigInfo(name = "enabled") public static boolean enabled = false; diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/GaleVariableEntityWakeupConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/GaleVariableEntityWakeupConfig.java index 31a5097..7b5e0c6 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/GaleVariableEntityWakeupConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/GaleVariableEntityWakeupConfig.java @@ -7,11 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "variable_entity_waking_up") public class GaleVariableEntityWakeupConfig implements IConfigModule { - @ConfigInfo(name = "entity_wakeup_duration_ratio_standard_deviation", comments = """ - If this value is set to any value > 0, waking up inactive entities happens spread over time, instead of many entities at once. This makes entities feel and behave more natural. - This setting is the coefficient of variation, or σ / μ (the ratio of the standard deviation to the mean) of the inactivity duration. - - In other words, this setting is the value σ, so that the regular inactivity duration will be multiplied by a factor normal_distribution(μ = 1, σ). - If a value ≤ 0 is given, variable entity wake-up is disabled.""") + @ConfigInfo(name = "entity_wakeup_duration_ratio_standard_deviation") public static double entityWakeUpDurationRatioStandardDeviation = 0.2; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LeavesSleepingBlockEntityConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LeavesSleepingBlockEntityConfig.java index 1625487..139cbbb 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LeavesSleepingBlockEntityConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LeavesSleepingBlockEntityConfig.java @@ -8,10 +8,7 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "lithium_sleeping_block_entity") public class LeavesSleepingBlockEntityConfig implements IConfigModule { - @ConfigInfo(name = "enabled", comments = """ - Use sleeping blocking optimizations from lithium,\s - on luminol the hopper optimizations of paper were totally removed and replaced by those of lithium\s - and it's turned on by default""") + @ConfigInfo(name = "enabled") @HotReloadUnsupported public static boolean enabled = true; } diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LobotomizeVillageConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LobotomizeVillageConfig.java index f0271c0..7c573fe 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LobotomizeVillageConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/LobotomizeVillageConfig.java @@ -5,12 +5,12 @@ import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.enums.EnumConfigCategory; -@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "lobotomize_villager", comments = "Lobotomizes the villager if it cannot move (Does not disable trading)") +@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "lobotomize_villager") public class LobotomizeVillageConfig implements IConfigModule { @ConfigInfo(name = "enabled") public static boolean villagerLobotomizeEnabled = false; - @ConfigInfo(name = "check_interval", comments = "The interval in ticks to check if a villager is lobotomized ") + @ConfigInfo(name = "check_interval") public static int villagerLobotomizeCheckInterval = 100; - @ConfigInfo(name = "wait_until_trade_locked", comments = "Wait until a villager has been traded with before lobotomizing") + @ConfigInfo(name = "wait_until_trade_locked") public static boolean villagerLobotomizeWaitUntilTradeLocked = false; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/PetalReduceSensorWorkConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/PetalReduceSensorWorkConfig.java index 85aa080..9f0ad40 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/PetalReduceSensorWorkConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/PetalReduceSensorWorkConfig.java @@ -5,10 +5,10 @@ import me.earthme.luminol.config.flags.ConfigClassInfo; import me.earthme.luminol.config.flags.ConfigInfo; import me.earthme.luminol.enums.EnumConfigCategory; -@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "reduce_sensor_work", comments = "When it is enabled, it will delete the line of sight cache less often and use a faster nearby comparison.") +@ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "reduce_sensor_work") public class PetalReduceSensorWorkConfig implements IConfigModule { @ConfigInfo(name = "enabled") public static boolean enabled = true; - @ConfigInfo(name = "delay_ticks", comments = "The interval of each entity to drop the cache(in ticks)") + @ConfigInfo(name = "delay_ticks") public static int delayTicks = 10; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/ProjectileChunkReduceConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/ProjectileChunkReduceConfig.java index 0719c8d..be75a4b 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/ProjectileChunkReduceConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/optimizations/ProjectileChunkReduceConfig.java @@ -7,8 +7,8 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.OPTIMIZATIONS, name = "projectile") public class ProjectileChunkReduceConfig implements IConfigModule { - @ConfigInfo(name = "max-loads-per-tick", comments = "Controls how many chunks are allowed to be sync loaded by projectiles in a tick.") + @ConfigInfo(name = "max-loads-per-tick") public static int maxProjectileLoadsPerTick; - @ConfigInfo(name = "max-loads-per-projectile", comments = "Controls how many chunks a projectile can load in its lifetime before it gets automatically removed.") + @ConfigInfo(name = "max-loads-per-projectile") public static int maxProjectileLoadsPerProjectile; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/removed/RemovedConfig.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/removed/RemovedConfig.java index 717572e..9d6166d 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/removed/RemovedConfig.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/removed/RemovedConfig.java @@ -7,8 +7,6 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.REMOVED, name = "removed_config") public class RemovedConfig implements IConfigModule { - @ConfigInfo(name = "removed", comments = - """ - RemovedConfig redirect to here, no any function.""") + @ConfigInfo(name = "removed") public static boolean enabled = true; } \ No newline at end of file diff --git a/lophine-server/src/main/java/me/earthme/luminol/config/modules/unsupported/DisableCheckForFoliaSupported.java b/lophine-server/src/main/java/me/earthme/luminol/config/modules/unsupported/DisableCheckForFoliaSupported.java index fa3aae5..9055778 100644 --- a/lophine-server/src/main/java/me/earthme/luminol/config/modules/unsupported/DisableCheckForFoliaSupported.java +++ b/lophine-server/src/main/java/me/earthme/luminol/config/modules/unsupported/DisableCheckForFoliaSupported.java @@ -7,13 +7,9 @@ import me.earthme.luminol.enums.EnumConfigCategory; @ConfigClassInfo(category = EnumConfigCategory.UNSUPPORTED, name = "disable_check_for_folia_supported") public class DisableCheckForFoliaSupported implements IConfigModule { - @ConfigInfo(name = "disable_for_paper", comments = """ - Disable check for folia-supported for spigot/bukkit/paper plugin. - ATTENTION: No support will be provided if you enabled this.""") + @ConfigInfo(name = "disable_for_paper") public static boolean disableForPaper = false; - @ConfigInfo(name = "disable_for_leaves", comments = """ - Disable check for folia-supported for leaves plugin. - ATTENTION: No support will be provided if you enabled this.""") + @ConfigInfo(name = "disable_for_leaves") public static boolean disableForLeaves = false; } diff --git a/lophine-server/src/main/resources/assets/lophine/lang/en_us.json b/lophine-server/src/main/resources/assets/lophine/lang/en_us.json new file mode 100644 index 0000000..655168b --- /dev/null +++ b/lophine-server/src/main/resources/assets/lophine/lang/en_us.json @@ -0,0 +1,198 @@ +{ + "luminol.experiment.command.enable_command_block.comment": "Force to enable command blocks.\nATTENTION: WOULD CAUSE SERVER CRASHING AS SOME THREADING ISSUE!!!\nDO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING!!!", + "luminol.experiment.command.enable_waypoints_and_waypoint_command.comment": "Enable waypoint and waypoint command.\nWARN: Still under testing", + "luminol.experiment.disable_async_catchers.enabled.comment": "Disable async catcher to prevent some crashes caused by some plugins which supports folia but has issuable logics.\nATTENTION: Would cause region deadlock when getChunkAt was incorrectly called!\nSee: https://github.com/PaperMC/Folia/issues/280 which is resolved in folia(https://github.com/PaperMC/Folia/commit/2e7bc0721af95196c85500c7bb136aeea0bc12ce)\nDO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING!!!", + "luminol.experiment.disable_entity_exception_catchers.enabled.comment": "If this config enabled, the server will crash directly when entity ticking has some errors instead of removing the entity to keep server running.\nIt could prevent entity disappearing but may cause more server crashes.\nDO NOT ENABLE UNLESS YOU KNOW WHAT YOU ARE DOING!!!", + "luminol.fixes.collision_behavior.mode.comment": "Decides which collision logics will be used(Moonrise and Paper modified this for optimization but would also break some vanilla behaviours at the same time).\nWould be useful for fixing improper behaviours of some huge redstone machines\nAvailable Value:\nVANILLA\nBLOCK_SHAPE_VANILLA\nPAPER", + "luminol.fixes.fix_high_velocity_issue.enabled.comment": "A simple fix of an issue on folia\n(Sometimes the entity woulds have a large moment that cross the different tick regions,\nand it woulds make the server crashed)\nbut sometimes it might doesn't work", + "luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.comment": "This config is a temporary fix for those incorrect owned data in the memory of each mob, for more you can see https://github.com/PaperMC/Folia/issues/203", + "luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.enabled_for_entity.comment": "When enabled, the entity's brain will clean the memory which is typed of entity and not belong to current tickregion", + "luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.enabled_for_block_pos.comment": "When enabled, the entity's brain will clean the memory which is typed of block_pos and not belong to current tickregion", + "luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.enabled_for_position_tracker.comment": "When enabled, the entity's brain will clean the memory which is typed of position_tracker and not belong to current tickregion", + "luminol.fixes.item_multitask.enabled.comment": "Prevent the server from interrupting the state of items\nduring block interactions or hotbar slot changes.", + "luminol.fixes.long_command_support.enabled.comment": "Some long commands can be run through the dialog command,\nbut paper has prohibited it.\nEnable this to fix this problem.", + "luminol.fixes.pathfinding_fixes.break_down_pathfinding_when_out_of_region.comment": "Recompute path or stop pathfinding when it's touching the blocks out of current tick region", + "luminol.fixes.pathfinding_fixes.do_not_pathfind_to_not_owned_targets.comment": "Skip pathfinding target when it's out of current tick region", + "luminol.fixes.poi_range_fixes.do_not_compete_poi_if_unloaded.comment": "Do not compete POI if it's unloaded\nRelated with https://github.com/PaperMC/Folia/issues/292", + "luminol.fixes.prevent_incorrect_teleport_async_calls_during_move_event.enabled.comment": "When enabled, the server would reject some incorrect teleportAsync calls during move events.\nAnd this will reduce the crashes which caused by plugins(Residence etc.)\nBut you should notice that it might break the compatibility with some plugins.", + "luminol.fixes.allow_unsafe_teleportation.enabled.comment": "Allow non player entities enter end portals if enabled.\nIf you want to use sand duping,please turn on this.\nWarning: This would cause some unsafe issues, you could learn more on : https://github.com/PaperMC/Folia/issues/297", + "luminol.fixes.use_vanilla_random_source.enable_for_player_entity.comment": "Related with RNG cracks", + "luminol.function.membar.display.comment": "Available displays: BOSS_BAR, ACTION_BAR, TAB_LIST", + "luminol.function.portal_rate_limit.enable.comment": "Whether or not to limit the portal rate when entity goes into portals", + "luminol.function.portal_rate_limit.maximum_portal_teleports_per_tick.comment": "Decides how much portal teleportation should be handled within a tick in a single tick region,when exceed,\nthe portal teleportation will be pushed into the next tick\n\nNote: set to -1 to use custom expressions", + "luminol.function.portal_rate_limit.maximum_portal_teleports_per_tick_expression.comment": "If the fixed limit is not enough for use, you could define your own expression to dynamically limit theportal rate.\n\nAvailable variables(all is of current tickregion): e (ticking_entity_count)\nc (ticking_chunk_count)\np (player_count)\nExample: 50 * (1 + sqrt(x/1000) + c/200 + p/5)", + "luminol.function.regionbar.display.comment": "Available displays: BOSS_BAR, ACTION_BAR, TAB_LIST", + "luminol.function.region_format.format.comment": "Available choices: MCA, B_LINEAR, LINEAR_V2", + "luminol.function.region_format.linear_compression_level.comment": "Decides the compression level of the region file(Only works for LINEAR_V2 and B_LINEAR)", + "luminol.function.region_format.linear_io_thread_count.comment": "Decides the worker thread count of linear(Only works for LINEAR_V2)", + "luminol.function.region_format.linear_io_flush_delay_ms.comment": "Decides when it will be flushed to the region file when it has been marked to save for n(default is 100) milliseconds(Only works for LINEAR_V2)", + "luminol.function.region_format.blinear_io_flush_delay_ms.comment": "Decides when it will be flushed to the region file when there has been no write operations for n(default is 3000) milliseconds(Only works for B_LINEAR)", + "luminol.function.region_format.blinear_io_thread_count.comment": "Decides the worker thread count of buffered linear(Only works for B_LINEAR)", + "luminol.function.region_format.linear_use_virtual_thread.comment": "Decides if it could use virtual threads for linear format(Only works for LINEAR_V2)", + "luminol.function.secure_seed.enabled.comment": "Once you enable secure seed, all ores and structures are generated with 1024-bit seed\ninstead of using 64-bit seed in vanilla, making traditional seed cracking impossible.\nNote: If you use V1 it will be vulnerable to terrain elevation attacks.\n***** WARN: You need keep it enabled if your old world are also using secure seed! Or it will kill your save *****", + "luminol.function.secure_seed.version.comment": "Version 1: Blake2b (insecure, reversible with a GPU/ASIC cluster in minutes with enough entropy)\nVersion 2: Blake3 with salt key derivation (recommended, irreversible)\n***** WARN: Switching versions will cause chunk errors! *****", + "luminol.function.secure_seed.salt.comment": "Auto-generated 256-bit salt for V2 cryptographic operations.\nGenerated once on first startup - DO NOT SHARE THIS OR MODIFY (MODIFYING THIS WILL CAUSE CHUNK ERRORS)!\nUsed with Blake3 keyed hash to make seed irreversible.", + "luminol.function.tpsbar.precision_of_tps_value.comment": "Example(if tps is 20.00000000)(value -> result): 2 -> 20.00, 1 -> 20.0", + "luminol.function.tpsbar.precision_of_mspt_value.comment": "Example(if mspt is 20.00000000)(value -> result): 2 -> 20.00, 1 -> 20.0", + "luminol.function.tpsbar.display.comment": "Available displays: BOSS_BAR, ACTION_BAR, TAB_LIST", + "luminol.function.tripwire_dupe.behavior_mode.comment": "Available Value:\nVANILLA20\nVANILLA21\nMIXED", + "luminol.misc.auto_update.comment": "Checks GitHub Releases for newer version's jars on a schedule.\nDownloads are staged under auto_update/lophine and written to auto_update/core.path,\nwhich Hyacinthusclip can consume on the next restart.\nIf target_jar_path is set, server will also try to replace that launcher jar directly.", + "luminol.misc.auto_update.enabled.comment": "Whether the server should check for updates automatically.", + "luminol.misc.auto_update.check_times.comment": "List of daily check times in HH:mm, based on the server's local time zone.", + "luminol.misc.auto_update.allow_prerelease.comment": "Whether prerelease GitHub releases are allowed when selecting an update.", + "luminol.misc.auto_update.target_jar_path.comment": "Optional launcher jar path to replace after a successful download.\nLeave this blank to keep the downloaded jar staged in auto_update/lophine\nand let Hyacinthusclip switch to it through auto_update/core.path on restart.", + "luminol.misc.disable_warning.disable_heightmap_warning.comment": "Disable heightmap-check's warning", + "luminol.misc.disable_warning.disable_offline_mode_warning.comment": "Disable offline warns popped in the log when starting the server", + "luminol.misc.disable_warning.disable_moved_wrongly_threshold_warning.comment": "Disable wrongly move warns and checks", + "luminol.misc.folia_watchdog.tick_region_time_out_ms.comment": "Decides the interval of the watchdog prints the threads dumps of tickregions in stuck", + "luminol.misc.force_disable_packet_limiter_of_paper.comment": "Force and fully disable all packet limiters of Paper, which is used to prevent from kicking by using some quick crafting mods but has negative impacts on security", + "luminol.misc.verify_publickey_only_in_online_mode.comment": "Only verify the public key in online mode, could be useful when using plugins like MultiLogin with custom auth server configured", + "luminol.misc.save_portal_tickets.do_save.comment": "whether or not to save the portal tickets when server stopping, this would make it acts like mc before 1.21.5,\nand won't auto active the portal chunk loader when server started again.", + "luminol.misc.sentry.dsn.comment": "Sentry DSN for improved error logging, leave blank to disable,\nObtain from https://sentry.io/", + "luminol.misc.sentry.log_level.comment": "Logs with a level higher than or equal to this level will be recorded.", + "luminol.misc.sentry.only_log_thrown.comment": "Only log with a Throwable will be recorded after enabling this.", + "luminol.misc.server_mod_name.name.comment": "Decides the server mod name shown in your F3 debug screen.", + "luminol.misc.server_mod_name.vanilla_spoof.comment": "Ignore any plugin's modification and server mod name set in this config block,\nonly force sending brand name of vanilla", + "luminol.misc.username_checks.enabled.comment": "Decide whether the username checks are enabled,\nyou could disable it if your players are using Chinese username\nbut also notification any security impacts caused by disabling it", + "luminol.misc.username_checks.enforce_skull_validation.comment": "Enforce skull validation, preventing skulls with invalid names from disconnecting the client.", + "luminol.misc.username_checks.allow_old_player_join.comment": "Allow old players to join the server after the username regex is changed,\neven if their names don't meet the new requirements.", + "luminol.misc.username_checks.username_check_regex.comment": "Use username regex to validate usernames,\nallowing only characters specified in the regex.", + "luminol.optimizations.use_async_protocol_switching.enabled.comment": "Uses async protocol preparation for mc.\nWarn: Due to the packet sequence was changed by this optimization, it might be\nuncompatible with some plugins(ViaVersion etc.)", + "luminol.optimizations.cpu_affinity.enabled_for_tickregion.comment": "Using this you could pin the threads of tick region scheduler(Following are the same) to cpu cores listed in the config 'tickregion_affinity' following,\nwhich is useful for those CPU with P and E cores (such as 12/13/14 gen Intel Core CPUs and so on.)", + "luminol.optimizations.cpu_affinity.tickregion_affinity.comment": "The core number you want the tick region threads to bind on", + "luminol.optimizations.throttle_goal_selector_tick_in_inactive_tick.comment": "Throttles the AI goal selector in entity inactive ticks.\nThis can improve performance by a few percent, but has minor gameplay implications.", + "luminol.optimizations.variable_entity_waking_up.entity_wakeup_duration_ratio_standard_deviation.comment": "If this value is set to any value > 0, waking up inactive entities happens spread over time, instead of many entities at once. This makes entities feel and behave more natural.\nThis setting is the coefficient of variation, or σ / μ (the ratio of the standard deviation to the mean) of the inactivity duration.\n\nIn other words, this setting is the value σ, so that the regular inactivity duration will be multiplied by a factor normal_distribution(μ = 1, σ).\nIf a value ≤ 0 is given, variable entity wake-up is disabled.", + "luminol.optimizations.lithium_sleeping_block_entity.enabled.comment": "Use sleeping blocking optimizations from lithium,s\non luminol the hopper optimizations of paper were totally removed and replaced by those of lithiums\nand it's turned on by default", + "luminol.optimizations.lobotomize_villager.comment": "Lobotomizes the villager if it cannot move (Does not disable trading)", + "luminol.optimizations.lobotomize_villager.check_interval.comment": "The interval in ticks to check if a villager is lobotomized", + "luminol.optimizations.lobotomize_villager.wait_until_trade_locked.comment": "Wait until a villager has been traded with before lobotomizing", + "luminol.optimizations.reduce_sensor_work.comment": "When it is enabled, it will delete the line of sight cache less often and use a faster nearby comparison.", + "luminol.optimizations.reduce_sensor_work.enabled.comment": "The interval of each entity to drop the cache(in ticks)", + "luminol.optimizations.projectile.max-loads-per-tick.comment": "Controls how many chunks are allowed to be sync loaded by projectiles in a tick.", + "luminol.optimizations.projectile.max-loads-per-projectile.comment": "Controls how many chunks a projectile can load in its lifetime before it gets automatically removed.", + "luminol.unsupported.disable_check_for_folia_supported.disable_for_paper.comment": "Disable check for folia-supported for spigot/bukkit/paper plugin.\nATTENTION: No support will be provided if you enabled this.", + "luminol.unsupported.disable_check_for_folia_supported.disable_for_leaves.comment": "Disable check for folia-supported for leaves plugin.\nATTENTION: No support will be provided if you enabled this.", + "lophine.experiment.command.trigger_command_enabled.comment": "Allow to use trigger command", + "lophine.experiment.command.function_command_enabled.comment": "Allow to use function command", + "lophine.experiment.command.scoreboard_command_enabled.comment": "Allow to use scoreboard command", + "lophine.experiment.command.save_all_command.enabled.comment": "Allow to use save-all command", + "lophine.experiment.command.save_all_command.log_all_process.comment": "Log all process of save-all command to console", + "lophine.experiment.command.save_all_command.save_all_command_timeout.comment": "Maximum seconds to save before the chunk report it is timeout.", + "lophine.experiment.entity_damage_source_trace.enabled.comment": "Allow trace damage source cross different Region Scheduler.", + "lophine.experiment.global_entities_counter.version.comment": "DISABLED\nDEFAULT_SYNC: Enable global entities counter origin version with sync counter module.\nDEFAULT_ASYNC: Enable global entities counter origin version with async counter module.\nPRECISE: Enable precise mob cap calculation with incremental counting. Replaces the periodic full-scan with event-driven real-time updates.\n\nYou need to set per-player-mob-spawns to false on paper-world-defaults.yml or paper-world.yml", + "lophine.fixes.update-suppression-crash-fix.enabled.comment": "Should crash caused by update suppression be prevented?", + "lophine.fixes.vanilla-like-experience.enabled.comment": "Restore a more vanilla-like technical gameplay experience by bypassing some Paper safety and behavior changes.", + "lophine.function.protocol.alternative_block_placement.enabled.comment": "Specify the precise placement protocol type\nNONE Disable precise placement protocol\nCARPET Precise placement protocol version 2\nCARPET_FIX Enhanced precise placement protocol version 2 (requires MasaGadget installed on client)\nLITEMATICA Precise placement protocol version 3", + "lophine.function.protocol.appleskin.enabled.comment": "Enable AppleSkin protocol support", + "lophine.function.protocol.appleskin.sync-tick-interval.comment": "Set AppleSkin Synchronization Frequency (Unit: Game Ticks)", + "lophine.function.protocol.bbor.enabled.comment": "Enable BBOR protocol support", + "lophine.function.protocol.jade.enabled.comment": "Enable Jade protocol support", + "lophine.function.protocol.pca.enabled.comment": "Enable PCA sync protocol support", + "lophine.function.protocol.pca.sync-player-entity.comment": "Controls which player entities can be watched through the PCA sync protocol.\nNOBODY: never sync player entities\nBOT: only sync Lophine fake players\nOPS: sync fake players and allow operators to sync real players\nOPS_AND_SELF: sync fake players, operators, and a player's own entity\nEVERYONE: allow all player entities", + "lophine.function.protocol.rei.enabled.comment": "Enable Roughly Enough Items protocol support", + "lophine.function.protocol.servux.litematics.litematics-print-max-delay-ticks.comment": "The max delay ticks for printing litematics, -1 to disable", + "lophine.function.protocol.syncmatica.enabled.comment": "Enable Syncmatica protocol support", + "lophine.function.protocol.syncmatica.useQuota.comment": "Is there a limit on the size of projection files?", + "lophine.function.protocol.syncmatica.quota-Limit.comment": "Maximum Projection File Size (in bytes)", + "lophine.function.protocol.xaero-map.enabled.comment": "Enable Xaero World Map Protocol Support", + "lophine.function.container_expansion.barrel_rows.comment": "range: 1~6", + "lophine.function.container_expansion.enderchest_rows.comment": "range: 1~6", + "lophine.function.container_expansion.shulker_box.shulker_stackable_count.comment": "range: 1~64", + "lophine.function.fakeplayer.enabled.comment": "Enable fakeplayer functionality (/bot command)", + "lophine.function.fakeplayer.unable-fakeplayer-names.comment": "List of names that cannot be used for fakeplayers", + "lophine.function.fakeplayer.limit.comment": "Maximum number of fakeplayers allowed", + "lophine.function.fakeplayer.prefix.comment": "Prefix for fakeplayer names", + "lophine.function.fakeplayer.suffix.comment": "Suffix for fakeplayer names", + "lophine.function.fakeplayer.regen-amount.comment": "Regeneration amount for fakeplayers", + "lophine.function.fakeplayer.open-action-gui.comment": "Allow opening fakeplayer action gui,\nneed sneak to open if you enabled inventory open gui", + "lophine.function.fakeplayer.use-action.comment": "Allow fakeplayers to use actions", + "lophine.function.fakeplayer.modify-config.comment": "Allow modifying fakeplayer config", + "lophine.function.fakeplayer.manual-save-and-load.comment": "Allow manual save and load of fakeplayers", + "lophine.function.fakeplayer.cache-skin.comment": "Use skin cache for fakeplayers", + "lophine.function.fakeplayer.always-send-data.comment": "Always send data for fakeplayers", + "lophine.function.fakeplayer.skip-sleep-check.comment": "Skip sleep check for fakeplayers", + "lophine.function.fakeplayer.spawn-phantom.comment": "Allow phantoms to spawn for fakeplayers", + "lophine.function.fakeplayer.simulation-distance.comment": "Simulation distance for fakeplayers (-1 for default)", + "lophine.function.fakeplayer.enable-locator-bar.comment": "Enable locator bar for fakeplayers", + "lophine.function.language.lang.comment": "Please use the key from https://minecraft.wiki/w/Language\nSample of format: en_us zh_cn zh_hk zh_tw\nATTENTION: If you want to edit language for carpet system, \nplease edit it in carpet config file.", + "lophine.function.language.full_blocking_load.comment": "Whether to allow blocking server loading when loading localized language.\nIf you want only use your localized language to shown in your terminal, \nyou need to enable it.\n\nWARNING: This may slow down the startup speed!", + "lophine.function.language.allow_auto_reset_comments.comment": "If the package contains the configuration file comment file for the corresponding language,\nautomatically reload the configuration file comments using the related content.\n\nWARNING: This will delete the original comments!", + "lophine.function.redstone.shears_rotate.comment": "Allows you to use the Shears to right-click to rotate the block.", + "lophine.function.replay-api.cache-photographer-time.comment": "Time to cache photographer profile(in seconds)", + "lophine.function.replay-api.cache-photographer-size.comment": "Maximum size of cache photographer profile", + "lophine.misc.disable-check.disable-op-move-check.comment": "Disable the check for the operator's move check", + "lophine.misc.disable-check.disable-op-fly-check.comment": "Disable the check for the operator's fly check", + "lophine.misc.item-entity.follow-tick-sequence-merge.comment": "Due to Paper's modification of the merge radius,\nwhen the merge radius is large and stacks containing many items get stuck in an unexpected position, \nindividual items may never reach their destination.\nThis configuration option is added to fix this behavior.", + "lophine_carpet.carpet.fakeplayer.comment": "Carpet fakeplayer compatibility mapped onto Lophine fakeplayers.\ncommandPlayer is currently backed by Lophine's /bot command surface.", + "lophine_carpet.carpet.fakeplayer.commandPlayer.comment": "Enable /player command.(not remapped)\nIf you want to enable bot command, please see lophine global config.", + "lophine_carpet.carpet.fakeplayer.fakePlayerResident.comment": "Keep fakeplayers resident across unload and restart.", + "lophine_carpet.carpet.fakeplayer.openFakePlayerInventory.comment": "Allow opening fakeplayer inventories.", + "lophine_carpet.carpet.fakeplayer.fakePlayerTicksLikeRealPlayer.comment": "Tick fakeplayers in the network phase to better match real player timing.", + "lophine_carpet.carpet.fakeplayer.fakePlayerDefaultSurvivalMode.comment": "Force newly created fakeplayers to start in survival instead of the server default gamemode.", + "lophine_carpet.carpet.fakeplayer.fakePlayerInteractLikeClient.comment": "Make fakeplayer entity interaction follow client-side fallback behavior more closely.", + "lophine_carpet.carpet.fakeplayer.fakePlayerAutoReplaceTool.comment": "Toggle automatic tool replacement for fakeplayers.", + "lophine_carpet.carpet.fakeplayer.fakePlayerAutoReplenishment.comment": "Toggle automatic stack replenishment for fakeplayers.", + "lophine_carpet.carpet.fakeplayer.fakePlayerAutoReplenishmentFormShulkerBox.comment": "Let fakeplayer replenishment pull matching items out of shulker boxes in the inventory.", + "lophine_carpet.carpet.fakeplayer.fakePlayerAutoFish.comment": "Let fakeplayers holding a fishing rod automatically cast and reel it in.", + "lophine_carpet.carpet.fakeplayer.fakePlayerReloadAction.comment": "Persist queued fakeplayer actions across save and reload.", + "lophine_carpet.carpet.general.comment": "Carpet/AMS/TIS/Org compatibility rules backed by existing Lophine features.\nOnly rules that already have a working server-side implementation are exposed here.", + "lophine_carpet.carpet.general.language.comment": "Carpet language value.\nATTENTION: This config will not update in Lophine global now!", + "lophine_carpet.carpet.general.amsUpdateSuppressionCrashFix.comment": "Update suppression crash protection.", + "lophine_carpet.carpet.general.yeetUpdateSuppressionCrash.comment": "Update suppression crash yeeting.", + "lophine_carpet.carpet.general.dustTrapdoorReintroduced.comment": "Should the pre-1.20 mechanism be reintroduced:\nRedstone dust does not connect to adjacent redstone dust on trapdoors that are open\nPre-1.20.2 mechanism: Redstone dust, redstone repeaters, \nand redstone comparators do not check for attachment when receiving status updates from below.", + "lophine_carpet.carpet.general.shulkerBoxCCEReintroduced.comment": "Use ClassCastException for update suppression.", + "lophine_carpet.carpet.general.instantBlockUpdaterReintroduced.comment": "Instant block updater.", + "lophine_carpet.carpet.general.commandTick.comment": "Enable the tick command support.", + "lophine_carpet.carpet.general.creativeNoClip.comment": "Whether to enable creative fly no clip.\nWhen enabled, players in creative mode will not collide with blocks while flying.\nThis allows them to pass through blocks without obstruction.", + "lophine_carpet.carpet.general.optimizedDragonRespawn.comment": "Enable optimized dragon respawn.", + "lophine_carpet.carpet.general.antiSpamDisabled.comment": "Disable the server-side chat and creative-drop spam throttles used by vanilla/Spigot.", + "lophine_carpet.carpet.general.blockPlacementIgnoreEntity.comment": "Allow creative players to place blocks without entity collision checks.", + "lophine_carpet.carpet.general.creativeOpenContainerForcibly.comment": "Allow creative players to forcibly open blocked chests, ender chests and shulker boxes.", + "lophine_carpet.carpet.general.creativeOneHitKill.comment": "Allow creative players to instantly kill attackable non-creative, non-spectator entities.\nSneaking expands the effect into a small area attack.", + "lophine_carpet.carpet.general.observerNoDetection.comment": "Disable observer detection pulses entirely.", + "lophine_carpet.carpet.general.bambooModelNoOffset.comment": "Remove the random horizontal model offset from bamboo and bamboo saplings.", + "lophine_carpet.carpet.general.creativeNoItemCooldown.comment": "Skip item cooldown application for creative players.", + "lophine_carpet.carpet.general.ctrlQCraftingFix.comment": "Compatibility flag for the upstream result-slot Ctrl+Q crafting fix already present in the current menu code.", + "lophine_carpet.carpet.general.carpetAlwaysSetDefault.comment": "Compatibility flag for Lophine's config loader, which already writes default values into the compat config during preload.", + "lophine_carpet.carpet.general.placementRotationFix.comment": "Use the player's main body rotation for placement direction checks instead of interpolated head yaw.", + "lophine_carpet.carpet.general.tntDoNotUpdate.comment": "Prevent TNT from checking redstone power when first placed.", + "lophine_carpet.carpet.general.totallyNoBlockUpdate.comment": "Suppress neighbor and shape updates globally for block changes.", + "lophine_carpet.carpet.general.tiscmNetworkProtocol.comment": "Enable the native Carpet TIS Addition network channel on `tiscm:network/v1`.", + "lophine_carpet.carpet.general.hopperNoItemCost.comment": "Restore the transferred stack into a hopper when a wool block is placed on top of it.", + "lophine_carpet.carpet.general.explosionNoBlockDamage.comment": "Let explosions damage entities without breaking blocks.", + "lophine_carpet.carpet.general.noCreeperBlockBreaking.comment": "Disables creeper explosion block breaking.", + "lophine_carpet.carpet.general.noGhastBlockBreaking.comment": "Disables ghast fireball explosion block breaking.", + "lophine_carpet.carpet.general.disableBlazeFire.comment": "Disables fire made from blaze fireballs.", + "lophine_carpet.carpet.general.disableGhastFire.comment": "Disables fire made from ghast fireballs.", + "lophine_carpet.carpet.general.optimizedTNTHighPriority.comment": "Compatibility flag for the already optimized server explosion path carried by the current runtime.", + "lophine_carpet.carpet.general.tntPrimerMomentumRemoved.comment": "Remove the random horizontal launch momentum from newly primed TNT.", + "lophine_carpet.carpet.general.tntIgnoreRedstoneSignal.comment": "Ignore redstone power when deciding whether TNT should auto-prime.", + "lophine_carpet.carpet.general.tntDupingFix.comment": "Toggle the piston desync path used by vanilla TNT duplication setups.", + "lophine_carpet.carpet.general.interactionUpdates.comment": "Control whether player interaction block changes emit normal block updates.\nSet to false to suppress neighbor and shape updates during block use and breaking.", + "lophine_carpet.carpet.general.xpNoCooldown.comment": "Allow players to absorb multiple experience orbs in the same tick without pickup delay.", + "lophine_carpet.carpet.general.powerfulExpMending.comment": "Let picked-up experience repair all damaged mending items in the player's inventory, not only equipped gear.", + "lophine_carpet.carpet.general.clientSettingsLostOnRespawnFix.comment": "Reapply the player's last known client settings after respawn.", + "lophine_carpet.carpet.general.sensibleEnderman.comment": "Restrict enderman block pickup to pumpkins and melons only.", + "lophine_carpet.carpet.general.entityInstantDeathRemoval.comment": "Remove the normal 20gt delay before dead living entities are discarded.", + "lophine_carpet.carpet.general.farmlandTrampledDisabled.comment": "Prevent farmland from turning into dirt when entities land on it.", + "lophine_carpet.carpet.general.shulkerGolem.comment": "Allow a carved pumpkin on top of a shulker box to summon a shulker.", + "lophine_carpet.carpet.general.preventEndSpikeRespawn.comment": "Skip obsidian spike regeneration during dragon respawn.", + "lophine_carpet.carpet.general.yeetOutOfOrderChatKick.comment": "Ignore out-of-order secure chat chain checks instead of invalidating the chat session.", + "lophine_carpet.carpet.general.betterCraftableBoneBlock.comment": "Add the AMS alternate bone block recipe that yields 3 bone blocks from 9 bones.", + "lophine_carpet.carpet.general.betterCraftableDispenser.comment": "Add the AMS alternate dispenser recipes using a dropper.", + "lophine_carpet.carpet.general.viewDistance.comment": "Override the dedicated server's startup view distance with the Carpet-compatible value.", + "lophine_carpet.carpet.general.tickCommandPermission.comment": "Override the `/tick` command permission level.\nAccepts values in the range 0..4, where 2 matches old Carpet behavior and 3 keeps vanilla.", + "lophine_carpet.carpet.general.tickFreezeCommandToggleable.comment": "Make `/tick freeze` toggle back to running when executed while the server is already frozen.", + "lophine_carpet.carpet.general.syncServerMsptMetricsData.comment": "Broadcast live MSPT samples through the native TISCM protocol channel.", + "lophine_carpet.carpet.general.simpleInGameCalculator.comment": "Evaluate chat messages prefixed with `=` as a simple calculator expression and reply privately.", + "lophine_carpet.carpet.general.microTiming.comment": "Compatibility flag for the built-in region profiler and timing instrumentation carried by Folia/Moonrise.", + "lophine_carpet.carpet.general.fastRedstoneDust.comment": "Route redstone dust updates through the Alternate Current fast-update backend.", + "lophine_carpet.carpet.general.lagFreeSpawning.comment": "Use the lightweight collision and precooked-mob spawning path for natural spawning checks.", + "lophine_carpet.carpet.general.optimizedFastEntityMovement.comment": "Compatibility flag for the always-on Moonrise/Paper fast entity movement collision pipeline.", + "lophine_carpet.carpet.general.optimizedHardHitBoxEntityCollision.comment": "Compatibility flag for the always-on Moonrise/Paper hard-hitbox entity collision optimizations.", + "lophine_carpet.carpet.general.tntFuseDuration.comment": "Override the default primed TNT fuse duration in ticks.\nAccepts values in the range 0..32767.", + "lophine_carpet.carpet.general.defaultLoggers.comment": "Carpet-style default logger subscriptions for players.\nExamples: [\"tps\", \"mob_caps\", \"counter white\"]", + "lophine_carpet.carpet.hopper_counter.comment": "Hopper counter functions.", + "lophine_carpet.carpet.hopper_counter.hopperCounters.comment": "Enable the existing wool hopper counter implementation.", + "lophine_carpet.carpet.hopper_counter.hopperCountersUnlimitedSpeed.comment": "Remove the hopper transfer speed limit for counters.\nOnly effective when hopperCounters is enabled." +} \ No newline at end of file