From 5bb6862a53b4a27cafb1ca7dcd4b0bbe0cf1d750 Mon Sep 17 00:00:00 2001 From: altrisi Date: Sun, 22 Nov 2020 12:07:07 +0100 Subject: [PATCH 01/10] Make extension's rules get properly synced with clients --- .../carpet/network/ClientNetworkHandler.java | 48 ++++++++++++++----- .../carpet/network/ServerNetworkHandler.java | 10 +++- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/src/main/java/carpet/network/ClientNetworkHandler.java b/src/main/java/carpet/network/ClientNetworkHandler.java index 8d77dc5b..b97ce84a 100644 --- a/src/main/java/carpet/network/ClientNetworkHandler.java +++ b/src/main/java/carpet/network/ClientNetworkHandler.java @@ -1,9 +1,11 @@ package carpet.network; import carpet.CarpetServer; +import carpet.CarpetExtension; import carpet.CarpetSettings; import carpet.helpers.TickSpeed; import carpet.settings.ParsedRule; +import carpet.settings.SettingsManager; import io.netty.buffer.Unpooled; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.nbt.AbstractNumberTag; @@ -19,36 +21,58 @@ import java.util.function.BiConsumer; public class ClientNetworkHandler { - private static Map> dataHandlers = new HashMap>(){{ - put("Rules", (p, t) -> { + private static Map> dataHandlers = new HashMap>(); + static + { + dataHandlers.put("Rules", (p, t) -> { CompoundTag ruleset = (CompoundTag)t; - for (String ruleName: ruleset.getKeys()) + for (String fullRuleName: ruleset.getKeys()) { - ParsedRule rule = CarpetServer.settingsManager.getRule(ruleName); + int separatorPos = fullRuleName.indexOf(':'); + SettingsManager manager = null; + String ruleName; + if (separatorPos > -1) + { + String identifier = fullRuleName.substring(0,separatorPos); + ruleName = fullRuleName.substring(separatorPos + 1); + for (CarpetExtension extension:CarpetServer.extensions) { + SettingsManager eManager = extension.customSettingsManager(); + if (eManager != null && identifier.equals(eManager.getIdentifier())) + { + manager = eManager; + break; + } + } + } + else + { + ruleName = fullRuleName; + manager = CarpetServer.settingsManager; + } + ParsedRule rule = (manager != null) ? manager.getRule(ruleName) : null; if (rule == null) - CarpetSettings.LOG.error("Received unknown rule: "+ruleName); + CarpetSettings.LOG.error("Received unknown rule: "+fullRuleName); else { - CompoundTag ruleNBT = (CompoundTag) ruleset.get(ruleName); + CompoundTag ruleNBT = (CompoundTag) ruleset.get(fullRuleName); String value = ruleNBT.getString("Value"); rule.set(null, value); } } }); - put("TickRate", (p, t) -> TickSpeed.tickrate(((AbstractNumberTag)t).getFloat(), false)); - put("scShape", (p, t) -> { // deprecated + dataHandlers.put("TickRate", (p, t) -> TickSpeed.tickrate(((AbstractNumberTag)t).getFloat(), false)); + dataHandlers.put("scShape", (p, t) -> { // deprecated if (CarpetClient.shapes != null) CarpetClient.shapes.addShape((CompoundTag)t); }); - put("scShapes", (p, t) -> { + dataHandlers.put("scShapes", (p, t) -> { if (CarpetClient.shapes != null) CarpetClient.shapes.addShapes((ListTag) t); }); - put("clientCommand", (p, t) -> { + dataHandlers.put("clientCommand", (p, t) -> { CarpetClient.onClientCommand(t); }); - }}; - + }; public static void handleData(PacketByteBuf data, ClientPlayerEntity player) { diff --git a/src/main/java/carpet/network/ServerNetworkHandler.java b/src/main/java/carpet/network/ServerNetworkHandler.java index 8af2e19d..fc15c575 100644 --- a/src/main/java/carpet/network/ServerNetworkHandler.java +++ b/src/main/java/carpet/network/ServerNetworkHandler.java @@ -4,6 +4,7 @@ import carpet.CarpetServer; import carpet.CarpetSettings; import carpet.helpers.TickSpeed; import carpet.settings.ParsedRule; +import carpet.settings.SettingsManager; import io.netty.buffer.Unpooled; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -78,6 +79,12 @@ public class ServerNetworkHandler CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+clientVersion); DataBuilder data = DataBuilder.create().withTickRate(); CarpetServer.settingsManager.getRules().forEach(data::withRule); + CarpetServer.extensions.forEach(e -> { + SettingsManager eManager = e.customSettingsManager(); + if (eManager != null) { + eManager.getRules().forEach(data::withRule); + } + }); playerEntity.networkHandler.sendPacket(new CustomPayloadS2CPacket(CarpetClient.CARPET_CHANNEL, data.build() )); } @@ -234,9 +241,10 @@ public class ServerNetworkHandler rules = new CompoundTag(); tag.put("Rules", rules); } + String identifier = (rule.settingsManager != CarpetServer.settingsManager) ? rule.settingsManager.getIdentifier()+":" : ""; CompoundTag ruleNBT = new CompoundTag(); ruleNBT.putString("Value", rule.getAsString()); - rules.put(rule.name, ruleNBT); + rules.put(identifier+rule.name, ruleNBT); return this; } From 39bfb5199222d5315af0262fbb6ba4a121013627 Mon Sep 17 00:00:00 2001 From: altrisi Date: Sun, 22 Nov 2020 12:22:56 +0100 Subject: [PATCH 02/10] The tabs to spaces... yet again --- .../carpet/network/ClientNetworkHandler.java | 44 +++++++++---------- .../carpet/network/ServerNetworkHandler.java | 8 ++-- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/carpet/network/ClientNetworkHandler.java b/src/main/java/carpet/network/ClientNetworkHandler.java index b97ce84a..fe8f1532 100644 --- a/src/main/java/carpet/network/ClientNetworkHandler.java +++ b/src/main/java/carpet/network/ClientNetworkHandler.java @@ -28,30 +28,30 @@ public class ClientNetworkHandler CompoundTag ruleset = (CompoundTag)t; for (String fullRuleName: ruleset.getKeys()) { - int separatorPos = fullRuleName.indexOf(':'); - SettingsManager manager = null; - String ruleName; - if (separatorPos > -1) - { - String identifier = fullRuleName.substring(0,separatorPos); - ruleName = fullRuleName.substring(separatorPos + 1); - for (CarpetExtension extension:CarpetServer.extensions) { - SettingsManager eManager = extension.customSettingsManager(); - if (eManager != null && identifier.equals(eManager.getIdentifier())) - { - manager = eManager; - break; - } - } - } - else - { - ruleName = fullRuleName; - manager = CarpetServer.settingsManager; - } + int separatorPos = fullRuleName.indexOf(':'); + SettingsManager manager = null; + String ruleName; + if (separatorPos > -1) + { + String identifier = fullRuleName.substring(0, separatorPos); + ruleName = fullRuleName.substring(separatorPos + 1); + for (CarpetExtension extension: CarpetServer.extensions) { + SettingsManager eManager = extension.customSettingsManager(); + if (eManager != null && identifier.equals(eManager.getIdentifier())) + { + manager = eManager; + break; + } + } + } + else + { + ruleName = fullRuleName; + manager = CarpetServer.settingsManager; + } ParsedRule rule = (manager != null) ? manager.getRule(ruleName) : null; if (rule == null) - CarpetSettings.LOG.error("Received unknown rule: "+fullRuleName); + CarpetSettings.LOG.error("Received unknown rule: " + fullRuleName); else { CompoundTag ruleNBT = (CompoundTag) ruleset.get(fullRuleName); diff --git a/src/main/java/carpet/network/ServerNetworkHandler.java b/src/main/java/carpet/network/ServerNetworkHandler.java index fc15c575..140e6dfd 100644 --- a/src/main/java/carpet/network/ServerNetworkHandler.java +++ b/src/main/java/carpet/network/ServerNetworkHandler.java @@ -80,10 +80,10 @@ public class ServerNetworkHandler DataBuilder data = DataBuilder.create().withTickRate(); CarpetServer.settingsManager.getRules().forEach(data::withRule); CarpetServer.extensions.forEach(e -> { - SettingsManager eManager = e.customSettingsManager(); - if (eManager != null) { - eManager.getRules().forEach(data::withRule); - } + SettingsManager eManager = e.customSettingsManager(); + if (eManager != null) { + eManager.getRules().forEach(data::withRule); + } }); playerEntity.networkHandler.sendPacket(new CustomPayloadS2CPacket(CarpetClient.CARPET_CHANNEL, data.build() )); } From b4ac2c85e4e87bd493d0d9e0380f40546e06642e Mon Sep 17 00:00:00 2001 From: altrisi Date: Sun, 29 Nov 2020 02:51:01 +0100 Subject: [PATCH 03/10] Reimplement extension sync according to suggestions --- .../carpet/network/ClientNetworkHandler.java | 38 ++++++++++--------- .../carpet/network/ServerNetworkHandler.java | 8 +++- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/java/carpet/network/ClientNetworkHandler.java b/src/main/java/carpet/network/ClientNetworkHandler.java index fe8f1532..478d7a68 100644 --- a/src/main/java/carpet/network/ClientNetworkHandler.java +++ b/src/main/java/carpet/network/ClientNetworkHandler.java @@ -26,35 +26,39 @@ public class ClientNetworkHandler { dataHandlers.put("Rules", (p, t) -> { CompoundTag ruleset = (CompoundTag)t; - for (String fullRuleName: ruleset.getKeys()) + for (String ruleKey: ruleset.getKeys()) { - int separatorPos = fullRuleName.indexOf(':'); + CompoundTag ruleNBT = (CompoundTag) ruleset.get(ruleKey); SettingsManager manager = null; String ruleName; - if (separatorPos > -1) + if (ruleNBT.contains("Manager")) { - String identifier = fullRuleName.substring(0, separatorPos); - ruleName = fullRuleName.substring(separatorPos + 1); - for (CarpetExtension extension: CarpetServer.extensions) { - SettingsManager eManager = extension.customSettingsManager(); - if (eManager != null && identifier.equals(eManager.getIdentifier())) - { - manager = eManager; - break; + ruleName = ruleNBT.getString("Rule"); + String managerName = ruleNBT.getString("Manager"); + if (managerName == "carpet") + { + manager = CarpetServer.settingsManager; + } + else + { + for (CarpetExtension extension: CarpetServer.extensions) { + SettingsManager eManager = extension.customSettingsManager(); + if (eManager != null && managerName.equals(eManager.getIdentifier())) + { + manager = eManager; + break; + } } } } - else + else // Backwards compatibility { - ruleName = fullRuleName; manager = CarpetServer.settingsManager; + ruleName = ruleKey; } ParsedRule rule = (manager != null) ? manager.getRule(ruleName) : null; - if (rule == null) - CarpetSettings.LOG.error("Received unknown rule: " + fullRuleName); - else + if (rule != null) { - CompoundTag ruleNBT = (CompoundTag) ruleset.get(fullRuleName); String value = ruleNBT.getString("Value"); rule.set(null, value); } diff --git a/src/main/java/carpet/network/ServerNetworkHandler.java b/src/main/java/carpet/network/ServerNetworkHandler.java index 140e6dfd..5971e93d 100644 --- a/src/main/java/carpet/network/ServerNetworkHandler.java +++ b/src/main/java/carpet/network/ServerNetworkHandler.java @@ -241,10 +241,14 @@ public class ServerNetworkHandler rules = new CompoundTag(); tag.put("Rules", rules); } - String identifier = (rule.settingsManager != CarpetServer.settingsManager) ? rule.settingsManager.getIdentifier()+":" : ""; + String identifier = rule.settingsManager.getIdentifier(); + String key = rule.name; + while (rules.contains(key)) { key = key+"2";} CompoundTag ruleNBT = new CompoundTag(); ruleNBT.putString("Value", rule.getAsString()); - rules.put(identifier+rule.name, ruleNBT); + ruleNBT.putString("Manager",identifier); + ruleNBT.putString("Rule",rule.name); + rules.put(key, ruleNBT); return this; } From 29dfae0e570a047e568433d6f37a5b587dfb20e5 Mon Sep 17 00:00:00 2001 From: altrisi Date: Sun, 29 Nov 2020 03:45:03 +0100 Subject: [PATCH 04/10] Fix being unable to identify own manager --- src/main/java/carpet/network/ClientNetworkHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/carpet/network/ClientNetworkHandler.java b/src/main/java/carpet/network/ClientNetworkHandler.java index 478d7a68..4d3cc1ad 100644 --- a/src/main/java/carpet/network/ClientNetworkHandler.java +++ b/src/main/java/carpet/network/ClientNetworkHandler.java @@ -35,7 +35,7 @@ public class ClientNetworkHandler { ruleName = ruleNBT.getString("Rule"); String managerName = ruleNBT.getString("Manager"); - if (managerName == "carpet") + if (managerName.equals("carpet")) { manager = CarpetServer.settingsManager; } From 596586fe008315daf1c0d51a9e7b07111363f873 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sun, 29 Nov 2020 03:15:28 -0400 Subject: [PATCH 05/10] clarifications --- docs/scarpet/api/BlocksAndWorldAccess.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/scarpet/api/BlocksAndWorldAccess.md b/docs/scarpet/api/BlocksAndWorldAccess.md index 7f233fa6..7b23ec22 100644 --- a/docs/scarpet/api/BlocksAndWorldAccess.md +++ b/docs/scarpet/api/BlocksAndWorldAccess.md @@ -327,9 +327,9 @@ With an optional feature, it returns value for the specified attribute for that * `'water_fog_color'`: RGBA color value of water fog * `'humidity'`: value from 0 to 1 indicating how wet is the biome * `'precipitation'`: value from 0 to 1 indicating if the biome has precipitation -* `'depth'`: value from -2 to 2 indicating how high or low the terrain should generate. Values > 0 indicate generation above sea level +* `'depth'`: float value indicating how high or low the terrain should generate. Values > 0 indicate generation above sea level and values < 0, below sea level. -* `'scale'`: value from -2 to 2 indicating how flat is the terrain. +* `'scale'`: float value indicating how flat is the terrain. * `'features'`: list of features that generate in the biome, grouped by generation steps * `'structures'`: list of structures that generate in the biome. From 5dfaf12d92450247db04e9fb7f9a23fd71f6f8f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Nov 2020 07:15:50 +0000 Subject: [PATCH 06/10] Merge docs for 'clarifications' --- docs/scarpet/Full.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/scarpet/Full.md b/docs/scarpet/Full.md index 59ad59c2..4379a4e5 100644 --- a/docs/scarpet/Full.md +++ b/docs/scarpet/Full.md @@ -2283,9 +2283,9 @@ With an optional feature, it returns value for the specified attribute for that * `'water_fog_color'`: RGBA color value of water fog * `'humidity'`: value from 0 to 1 indicating how wet is the biome * `'precipitation'`: value from 0 to 1 indicating if the biome has precipitation -* `'depth'`: value from -2 to 2 indicating how high or low the terrain should generate. Values > 0 indicate generation above sea level +* `'depth'`: float value indicating how high or low the terrain should generate. Values > 0 indicate generation above sea level and values < 0, below sea level. -* `'scale'`: value from -2 to 2 indicating how flat is the terrain. +* `'scale'`: float value indicating how flat is the terrain. * `'features'`: list of features that generate in the biome, grouped by generation steps * `'structures'`: list of structures that generate in the biome. From 463bc8e0aaa0f337eb80bfe3ed67b667de04cd07 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sun, 29 Nov 2020 09:52:57 -0400 Subject: [PATCH 07/10] clarifications --- docs/scarpet/api/BlocksAndWorldAccess.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/scarpet/api/BlocksAndWorldAccess.md b/docs/scarpet/api/BlocksAndWorldAccess.md index 7b23ec22..8f295ee0 100644 --- a/docs/scarpet/api/BlocksAndWorldAccess.md +++ b/docs/scarpet/api/BlocksAndWorldAccess.md @@ -326,7 +326,7 @@ With an optional feature, it returns value for the specified attribute for that * `'water_color'`: RGBA color value of water * `'water_fog_color'`: RGBA color value of water fog * `'humidity'`: value from 0 to 1 indicating how wet is the biome -* `'precipitation'`: value from 0 to 1 indicating if the biome has precipitation +* `'precipitation'`: `'rain'` `'snot'`, or `'none'`... ok, maybe `'snow'`, but that means snots for sure as well. * `'depth'`: float value indicating how high or low the terrain should generate. Values > 0 indicate generation above sea level and values < 0, below sea level. * `'scale'`: float value indicating how flat is the terrain. From eaaf16d089db88e659775bee058b6d8a28de7a4b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Nov 2020 13:53:49 +0000 Subject: [PATCH 08/10] Merge docs for 'clarifications' --- docs/scarpet/Full.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/scarpet/Full.md b/docs/scarpet/Full.md index 4379a4e5..9ff30fca 100644 --- a/docs/scarpet/Full.md +++ b/docs/scarpet/Full.md @@ -2282,7 +2282,7 @@ With an optional feature, it returns value for the specified attribute for that * `'water_color'`: RGBA color value of water * `'water_fog_color'`: RGBA color value of water fog * `'humidity'`: value from 0 to 1 indicating how wet is the biome -* `'precipitation'`: value from 0 to 1 indicating if the biome has precipitation +* `'precipitation'`: `'rain'` `'snot'`, or `'none'`... ok, maybe `'snow'`, but that means snots for sure as well. * `'depth'`: float value indicating how high or low the terrain should generate. Values > 0 indicate generation above sea level and values < 0, below sea level. * `'scale'`: float value indicating how flat is the terrain. From a0528ca7ed05a8f5a1051f050fb4b550e31c38fb Mon Sep 17 00:00:00 2001 From: altrisi Date: Sun, 29 Nov 2020 17:34:31 +0100 Subject: [PATCH 09/10] Add a way to load global configs --- .../java/carpet/settings/SettingsManager.java | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/main/java/carpet/settings/SettingsManager.java b/src/main/java/carpet/settings/SettingsManager.java index 268bb308..489262d4 100644 --- a/src/main/java/carpet/settings/SettingsManager.java +++ b/src/main/java/carpet/settings/SettingsManager.java @@ -13,6 +13,9 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; + +import net.fabricmc.api.EnvType; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.server.ServerTask; @@ -24,13 +27,13 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.util.TriConsumer; import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; +import java.io.BufferedWriter; import java.io.IOException; import java.io.PrintStream; import java.lang.reflect.Field; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -247,7 +250,7 @@ public class SettingsManager */ public Collection> findStartupOverrides() { - Set defaults = readSettingsFromConf().getLeft().keySet(); + Set defaults = readSettingsFromConf(getFile()).getLeft().keySet(); return rules.values().stream().filter(r -> defaults.contains(r.name)). sorted().collect(Collectors.toList()); } @@ -261,9 +264,9 @@ public class SettingsManager return rules.values().stream().filter(r -> !r.isDefault()).sorted().collect(Collectors.toList()); } - private File getFile() + private Path getFile() { - return server.getSavePath(WorldSavePath.ROOT).resolve(identifier+".conf").toFile(); + return server.getSavePath(WorldSavePath.ROOT).resolve(identifier+".conf"); } /** @@ -288,14 +291,13 @@ public class SettingsManager { if (locked) return; - try + try (BufferedWriter fw = Files.newBufferedWriter(getFile())) { - FileWriter fw = new FileWriter(getFile()); for (String key: values.keySet()) { - fw.write(key+" "+values.get(key)+"\n"); + fw.write(key+" "+values.get(key)); + fw.newLine(); } - fw.close(); } catch (IOException e) { @@ -378,7 +380,7 @@ public class SettingsManager private void loadConfigurationFromConf() { for (ParsedRule rule : rules.values()) rule.resetToDefault(server.getCommandSource()); - Pair,Boolean> conf = readSettingsFromConf(); + Pair, Boolean> conf = readSettingsFromConf(getFile()); locked = false; if (conf.getRight()) { @@ -401,11 +403,10 @@ public class SettingsManager } - private Pair,Boolean> readSettingsFromConf() + private Pair, Boolean> readSettingsFromConf(Path path) { - try + try (BufferedReader reader = Files.newBufferedReader(path)) { - BufferedReader reader = new BufferedReader(new FileReader(getFile())); String line = ""; boolean confLocked = false; Map result = new HashMap(); @@ -435,11 +436,24 @@ public class SettingsManager } } - reader.close(); return Pair.of(result, confLocked); } - catch(FileNotFoundException e) + catch(NoSuchFileException e) { + if (path.equals(getFile()) && FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) + { + Path defaultsPath = FabricLoader.getInstance().getConfigDir().resolve("carpet/default_"+identifier+".conf"); + try { + if (Files.notExists(defaultsPath)) + { + Files.createDirectories(defaultsPath.getParent()); + Files.createFile(defaultsPath); + } + return readSettingsFromConf(defaultsPath); + } catch (IOException e2) { + CarpetSettings.LOG.error("Exception when loading fallback default config: ", e); + } + } return Pair.of(new HashMap<>(), false); } catch (IOException e) @@ -617,7 +631,7 @@ public class SettingsManager { if (locked) return 0; if (!rules.containsKey(rule.name)) return 0; - Pair,Boolean> conf = readSettingsFromConf(); + Pair,Boolean> conf = readSettingsFromConf(getFile()); conf.getLeft().put(rule.name, stringValue); writeSettingsToConf(conf.getLeft()); // this may feels weird, but if conf // is locked, it will never reach this point. @@ -630,7 +644,7 @@ public class SettingsManager { if (locked) return 0; if (!rules.containsKey(rule.name)) return 0; - Pair,Boolean> conf = readSettingsFromConf(); + Pair,Boolean> conf = readSettingsFromConf(getFile()); conf.getLeft().remove(rule.name); writeSettingsToConf(conf.getLeft()); rules.get(rule.name).resetToDefault(source); From f9bce2b50e5af426a16f2c4b431cdfb66836d270 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sun, 29 Nov 2020 15:12:29 -0400 Subject: [PATCH 10/10] set default ops requirement for commands that can change world or cause significant impact on the world. fixed #584 spawn tick draw player track --- src/main/java/carpet/CarpetSettings.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index b2f4f38d..4a72fe1b 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -121,7 +121,7 @@ public class CarpetSettings - @Rule(desc = "Gbhs sgnf sadsgras fhskdpri!", category = EXPERIMENTAL) + @Rule(desc = "Gbhs sgnf sadsgras fhskdpri!!!", category = EXPERIMENTAL) public static boolean superSecretSetting = false; @Rule( @@ -243,7 +243,7 @@ public class CarpetSettings @Rule( desc = "Merges stationary primed TNT entities", category = TNT ) public static boolean mergeTNT = false; - @Rule( + /*@Rule( desc = "Lag optimizations for redstone dust", extra = { "by Theosib", @@ -252,7 +252,7 @@ public class CarpetSettings }, category = {EXPERIMENTAL, OPTIMIZATION} ) - public static boolean fastRedstoneDust = false; + public static boolean fastRedstoneDust = false;*/ @Rule(desc = "Only husks spawn in desert temples", category = FEATURE) public static boolean huskSpawningInTemples = false; @@ -344,10 +344,10 @@ public class CarpetSettings public static boolean summonNaturalLightning = false; @Rule(desc = "Enables /spawn command for spawn tracking", category = COMMAND) - public static String commandSpawn = "true"; + public static String commandSpawn = "ops"; @Rule(desc = "Enables /tick command to control game clocks", category = COMMAND) - public static String commandTick = "true"; + public static String commandTick = "ops"; @Rule( desc = "Enables /profile command to monitor game performance", @@ -393,7 +393,7 @@ public class CarpetSettings public static String commandPerimeterInfo = "true"; @Rule(desc = "Enables /draw commands", extra = {"... allows for drawing simple shapes or","other shapes which are sorta difficult to do normally"}, category = COMMAND) - public static String commandDraw = "true"; + public static String commandDraw = "ops"; @Rule( @@ -430,10 +430,10 @@ public class CarpetSettings public static boolean scriptsAutoload = false; @Rule(desc = "Enables /player command to control/spawn players", category = COMMAND) - public static String commandPlayer = "true"; + public static String commandPlayer = "ops"; @Rule(desc = "Allows to track mobs AI via /track command", category = COMMAND) - public static String commandTrackAI = "true"; + public static String commandTrackAI = "ops"; @Rule(desc = "Placing carpets may issue carpet commands for non-op players", category = SURVIVAL) public static boolean carpets = false;