Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 3dc4cdcd Update to Minecraft 1.14.3-pre4 88b25a8c SPIGOT-5098: Add a method to allow colored sign changes 6d913552 Update to Minecraft 1.14.3-pre4 CraftBukkit Changes: f1f33559 Update to Minecraft 1.14.3 8a3d3f49 SPIGOT-5098: Add a method to allow colored sign changes 533290e2 SPIGOT-5100: Console warning from pig zombie targeting 6dde4b9f SPIGOT-5094: Allow opening merchant for wandering traders and hide the xp bar for custom merchants 9af90077 SPIGOT-5097: Bukkit.clearRecipes() no longer working 38fa220f Fix setting game rules via the API fe3930ce Update to Minecraft 1.14.3-pre4 da071ec5 Remove outdated build delay. Spigot Changes: 4d2f30f1 Update to Minecraft 1.14.3 f16400e3 Update to Minecraft 1.14.3-pre4
This commit is contained in:
@@ -6,59 +6,18 @@ Subject: [PATCH] Optimize GameRules to use LinkedHashMap
|
||||
Previously TreeMap was used which has poor get(K) performance.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/GameRules.java b/src/main/java/net/minecraft/server/GameRules.java
|
||||
index 3de9d264db..c6a8004745 100644
|
||||
index 2880de7c58..d567f35bde 100644
|
||||
--- a/src/main/java/net/minecraft/server/GameRules.java
|
||||
+++ b/src/main/java/net/minecraft/server/GameRules.java
|
||||
@@ -0,0 +0,0 @@ import javax.annotation.Nullable;
|
||||
|
||||
@@ -0,0 +0,0 @@ import org.apache.logging.log4j.Logger;
|
||||
public class GameRules {
|
||||
|
||||
- private static final TreeMap<String, GameRules.GameRuleDefinition> a = SystemUtils.a(new TreeMap(), (treemap) -> { // Paper - decompile fix
|
||||
+ // Paper start - Optimize GameRules
|
||||
+ private static final int RULES_SIZE = 256;
|
||||
+
|
||||
+ private static <K, V> java.util.LinkedHashMap<K, V> linkedMapOf(final int capacity, final TreeMap<K, V> map) {
|
||||
+ final java.util.LinkedHashMap<K, V> ret = new java.util.LinkedHashMap<>(capacity);
|
||||
+ ret.putAll(map);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ private static final java.util.LinkedHashMap<String, GameRuleDefinition> a = GameRules.linkedMapOf(RULES_SIZE, SystemUtils.a(new TreeMap(), (treemap) -> { // Paper - decompile fix
|
||||
+ // Paper end
|
||||
treemap.put("doFireTick", new GameRules.GameRuleDefinition("true", GameRules.EnumGameRuleType.BOOLEAN_VALUE));
|
||||
treemap.put("mobGriefing", new GameRules.GameRuleDefinition("true", GameRules.EnumGameRuleType.BOOLEAN_VALUE));
|
||||
treemap.put("keepInventory", new GameRules.GameRuleDefinition("false", GameRules.EnumGameRuleType.BOOLEAN_VALUE));
|
||||
@@ -0,0 +0,0 @@ public class GameRules {
|
||||
treemap.put("doLimitedCrafting", new GameRules.GameRuleDefinition("false", GameRules.EnumGameRuleType.BOOLEAN_VALUE));
|
||||
treemap.put("maxCommandChainLength", new GameRules.GameRuleDefinition("65536", GameRules.EnumGameRuleType.NUMERICAL_VALUE));
|
||||
treemap.put("announceAdvancements", new GameRules.GameRuleDefinition("true", GameRules.EnumGameRuleType.BOOLEAN_VALUE));
|
||||
- });
|
||||
- private final TreeMap<String, GameRules.GameRuleValue> b = new TreeMap();
|
||||
+ })); // Paper - Optimize GameRules
|
||||
+ private final java.util.LinkedHashMap<String, GameRuleValue> b = new java.util.LinkedHashMap<>(RULES_SIZE); // Paper - Optimize GameRules
|
||||
|
||||
public GameRules() {
|
||||
Iterator iterator = GameRules.a.entrySet().iterator();
|
||||
@@ -0,0 +0,0 @@ public class GameRules {
|
||||
return (GameRules.GameRuleValue) this.b.get(s);
|
||||
}
|
||||
|
||||
- public static TreeMap<String, GameRules.GameRuleDefinition> getGameRules() {
|
||||
+ public static java.util.LinkedHashMap<String, GameRuleDefinition> getGameRules() { // Paper - Optimize GameRules
|
||||
return GameRules.a;
|
||||
}
|
||||
|
||||
diff --git a/src/test/java/org/bukkit/GameRuleTest.java b/src/test/java/org/bukkit/GameRuleTest.java
|
||||
index 1ed0f4cf2b..40edb8d668 100644
|
||||
--- a/src/test/java/org/bukkit/GameRuleTest.java
|
||||
+++ b/src/test/java/org/bukkit/GameRuleTest.java
|
||||
@@ -0,0 +0,0 @@ public class GameRuleTest {
|
||||
|
||||
@Test
|
||||
public void testMinecraftRules() {
|
||||
- TreeMap<String, GameRules.GameRuleDefinition> minecraftRules = GameRules.getGameRules();
|
||||
+ Map<String, GameRules.GameRuleDefinition> minecraftRules = GameRules.getGameRules(); // Paper - Optimize GameRules
|
||||
|
||||
for (Map.Entry<String, GameRules.GameRuleDefinition> entry : minecraftRules.entrySet()) {
|
||||
GameRule<?> bukkitRule = GameRule.getByName(entry.getKey());
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
- private static final Map<GameRules.GameRuleKey<?>, GameRules.GameRuleDefinition<?>> z = Maps.newTreeMap(Comparator.comparing((gamerules_gamerulekey) -> {
|
||||
- return gamerules_gamerulekey.a;
|
||||
- }));
|
||||
+ private static final Map<GameRules.GameRuleKey<?>, GameRules.GameRuleDefinition<?>> z = Maps.newLinkedHashMap(); // Paper
|
||||
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> DO_FIRE_TICK = a("doFireTick", GameRules.GameRuleBoolean.b(true));
|
||||
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> MOB_GRIEFING = a("mobGriefing", GameRules.GameRuleBoolean.b(true));
|
||||
public static final GameRules.GameRuleKey<GameRules.GameRuleBoolean> KEEP_INVENTORY = a("keepInventory", GameRules.GameRuleBoolean.b(false));
|
||||
--
|
||||
Reference in New Issue
Block a user