aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0151-Optimise-BlockStateEnum-hashCode-and-equals.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0151-Optimise-BlockStateEnum-hashCode-and-equals.patch')
-rw-r--r--Spigot-Server-Patches/0151-Optimise-BlockStateEnum-hashCode-and-equals.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0151-Optimise-BlockStateEnum-hashCode-and-equals.patch b/Spigot-Server-Patches/0151-Optimise-BlockStateEnum-hashCode-and-equals.patch
new file mode 100644
index 0000000000..3a10a5d65f
--- /dev/null
+++ b/Spigot-Server-Patches/0151-Optimise-BlockStateEnum-hashCode-and-equals.patch
@@ -0,0 +1,62 @@
+From f42b3e088cb525e1c0fe54aca194267261a4d53e Mon Sep 17 00:00:00 2001
+From: Alfie Cleveland <[email protected]>
+Date: Fri, 19 Aug 2016 01:52:56 +0100
+Subject: [PATCH] Optimise BlockStateEnum hashCode and equals
+
+
+diff --git a/src/main/java/net/minecraft/server/BlockStateEnum.java b/src/main/java/net/minecraft/server/BlockStateEnum.java
+index 288c52c55..66c459d83 100644
+--- a/src/main/java/net/minecraft/server/BlockStateEnum.java
++++ b/src/main/java/net/minecraft/server/BlockStateEnum.java
+@@ -16,6 +16,11 @@ public class BlockStateEnum<T extends Enum<T> & INamable> extends BlockState<T>
+ private final ImmutableSet<T> a;
+ private final Map<String, T> b = Maps.newHashMap();
+
++ // Paper start - BlockStateEnum is a singleton, so we can use our own hashCode
++ private static int hashId = 0;
++ private int hashCode;
++ // Paper end
++
+ protected BlockStateEnum(String s, Class<T> oclass, Collection<T> collection) {
+ super(s, oclass);
+ this.a = ImmutableSet.copyOf(collection);
+@@ -32,6 +37,7 @@ public class BlockStateEnum<T extends Enum<T> & INamable> extends BlockState<T>
+ this.b.put(s1, (T) oenum);
+ }
+
++ this.hashCode = hashId++; // Paper
+ }
+
+ public Collection<T> c() {
+@@ -46,24 +52,14 @@ public class BlockStateEnum<T extends Enum<T> & INamable> extends BlockState<T>
+ return ((INamable) t0).getName();
+ }
+
++ @Override // Paper - override equals as BlockStateEnum is a singleton
+ public boolean equals(Object object) {
+- if (this == object) {
+- return true;
+- } else if (object instanceof BlockStateEnum && super.equals(object)) {
+- BlockStateEnum blockstateenum = (BlockStateEnum) object;
+-
+- return this.a.equals(blockstateenum.a) && this.b.equals(blockstateenum.b);
+- } else {
+- return false;
+- }
++ return this == object;
+ }
+
++ @Override // Paper - override hashCode as BlockStateEnum is a singleton
+ public int hashCode() {
+- int i = super.hashCode();
+-
+- i = 31 * i + this.a.hashCode();
+- i = 31 * i + this.b.hashCode();
+- return i;
++ return hashCode;
+ }
+
+ public static <T extends Enum<T> & INamable> BlockStateEnum<T> of(String s, Class<T> oclass) {
+--
+2.12.2
+