diff options
author | Spottedleaf <[email protected]> | 2024-07-17 10:24:53 -0700 |
---|---|---|
committer | Spottedleaf <[email protected]> | 2024-07-17 10:28:32 -0700 |
commit | 00b949f1bbbf444e2b5e7b8de7c9b14fbd2133c6 (patch) | |
tree | 82639515bc5e9ae00c1e639e72137ed51e1ac688 /patches/server/0814-Use-array-for-gamerule-storage.patch | |
parent | 967f98aa81da851740aeb429778e46159fd188df (diff) | |
download | Paper-00b949f1bbbf444e2b5e7b8de7c9b14fbd2133c6.tar.gz Paper-00b949f1bbbf444e2b5e7b8de7c9b14fbd2133c6.zip |
Remove Moonrise utils to MCUtils, remove duplicated/unused utils
Diffstat (limited to 'patches/server/0814-Use-array-for-gamerule-storage.patch')
-rw-r--r-- | patches/server/0814-Use-array-for-gamerule-storage.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/patches/server/0814-Use-array-for-gamerule-storage.patch b/patches/server/0814-Use-array-for-gamerule-storage.patch new file mode 100644 index 0000000000..194ff8f15b --- /dev/null +++ b/patches/server/0814-Use-array-for-gamerule-storage.patch @@ -0,0 +1,63 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve <[email protected]> +Date: Sun, 9 May 2021 16:49:49 -0500 +Subject: [PATCH] Use array for gamerule storage + + +diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java +index 51e560d7856f230c5aa2dc32706c3a4996720aa5..89e327bc3a45879fe68887c7aadb077f31a770eb 100644 +--- a/src/main/java/net/minecraft/world/level/GameRules.java ++++ b/src/main/java/net/minecraft/world/level/GameRules.java +@@ -122,6 +122,7 @@ public class GameRules { + worldserver.setDefaultSpawnPos(worldserver.getSharedSpawnPos(), worldserver.getSharedSpawnAngle()); + })); + private final Map<GameRules.Key<?>, GameRules.Value<?>> rules; ++ private final GameRules.Value<?>[] gameruleArray; // Paper - Perf: Use array for gamerule storage + + private static <T extends GameRules.Value<T>> GameRules.Key<T> register(String name, GameRules.Category category, GameRules.Type<T> type) { + GameRules.Key<T> gamerules_gamerulekey = new GameRules.Key<>(name, category); +@@ -140,17 +141,30 @@ public class GameRules { + } + + public GameRules() { +- this.rules = (Map) GameRules.GAME_RULE_TYPES.entrySet().stream().collect(ImmutableMap.toImmutableMap(Entry::getKey, (entry) -> { ++ // Paper start - Perf: Use array for gamerule storage ++ this((Map) GameRules.GAME_RULE_TYPES.entrySet().stream().collect(ImmutableMap.toImmutableMap(Entry::getKey, (entry) -> { + return ((GameRules.Type) entry.getValue()).createRule(); +- })); ++ }))); ++ // Paper end - Perf: Use array for gamerule storage + } + + private GameRules(Map<GameRules.Key<?>, GameRules.Value<?>> rules) { + this.rules = rules; ++ ++ // Paper start - Perf: Use array for gamerule storage ++ int arraySize = rules.keySet().stream().mapToInt(key -> key.gameRuleIndex).max().orElse(-1) + 1; ++ GameRules.Value<?>[] values = new GameRules.Value[arraySize]; ++ ++ for (Entry<GameRules.Key<?>, GameRules.Value<?>> entry : rules.entrySet()) { ++ values[entry.getKey().gameRuleIndex] = entry.getValue(); ++ } ++ ++ this.gameruleArray = values; ++ // Paper end - Perf: Use array for gamerule storage + } + + public <T extends GameRules.Value<T>> T getRule(GameRules.Key<T> key) { +- return (T) this.rules.get(key); // CraftBukkit - decompile error ++ return key == null ? null : (T) this.gameruleArray[key.gameRuleIndex]; // Paper - Perf: Use array for gamerule storage + } + + public CompoundTag createTag() { +@@ -209,6 +223,10 @@ public class GameRules { + } + + public static final class Key<T extends GameRules.Value<T>> { ++ // Paper start - Perf: Use array for gamerule storage ++ private static int lastGameRuleIndex = 0; ++ public final int gameRuleIndex = lastGameRuleIndex++; ++ // Paper end - Perf: Use array for gamerule storage + + final String id; + private final GameRules.Category category; |