Update from upstream SpigotMC

a3168ab2ce4
9b45d9fa8d3
b43a31a5c25
a926b96d5d1
d6b5ba7ca03
bb782d07aed
5a74d55c678
47b1dff3e68 [M]
This commit is contained in:
Zach Brown 2014-12-18 17:33:08 -06:00
parent f920086bbd
commit afa737e5a5
31 changed files with 36 additions and 439 deletions

View file

@ -329,8 +329,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ // Spigot end
+
/**
* Represents various map environment types that a world may be
*/
* Gets the world border for this world.
*
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/entity/Player.java

View file

@ -1,46 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 4 Jul 2013 20:05:19 +1000
Subject: [PATCH] Update Depends
- All of these changes have been reviewed to be binary compatible and in general contract compatible with previous versions of the libraries.
diff --git a/pom.xml b/pom.xml
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/pom.xml
+++ b/pom.xml
@@ -0,0 +0,0 @@
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
- <version>1.9</version>
+ <version>1.12</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
- <version>1.1</version>
+ <version>1.1.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.avaje</groupId>
<artifactId>ebean</artifactId>
- <version>2.7.3</version>
+ <version>2.8.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
@@ -0,0 +0,0 @@
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
- <version>2.3</version>
+ <version>2.6</version>
</dependency>
<!-- testing -->
--

View file

@ -1,27 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Thu, 23 Jan 2014 13:17:38 +1100
Subject: [PATCH] Add Spigot Links
diff --git a/README.md b/README.md
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +0,0 @@
-Bukkit
+Spigot-API
======
A Minecraft Server API.
-Website: [http://bukkit.org](http://bukkit.org)
-Bugs/Suggestions: [http://leaky.bukkit.org](http://leaky.bukkit.org)
-Contributing Guidelines: [CONTRIBUTING.md](https://github.com/Bukkit/Bukkit/blob/master/CONTRIBUTING.md)
+Website: [http://spigotmc.org](http://spigotmc.org)
+Bugs/Suggestions: [http://www.spigotmc.org/forums/bugs-feature-requests.8/](http://www.spigotmc.org/forums/bugs-feature-requests.8/)
+Contributing Guidelines: [CONTRIBUTING.md](https://github.com/SpigotMC/Spigot-API/blob/master/CONTRIBUTING.md)
Compilation
-----------
--

View file

@ -81,3 +81,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
Spigot spigot();
--
1.9.4.msysgit.2

View file

@ -37,11 +37,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
<repositories>
<repository>
<id>repobo-snap</id>
@@ -0,0 +0,0 @@
<dependencies>
<dependency>
- <groupId>org.bukkit</groupId>
@ -126,3 +121,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
if (stream != null) {
--
1.9.4.msysgit.2

View file

@ -140,344 +140,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ this(usercache);
+ }
+}
diff --git a/src/main/java/net/minecraft/server/BiomeDecorator.java b/src/main/java/net/minecraft/server/BiomeDecorator.java
deleted file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/BiomeDecorator.java
+++ /dev/null
@@ -0,0 +0,0 @@
-package net.minecraft.server;
-
-import java.util.Random;
-
-public class BiomeDecorator {
-
- protected World a;
- protected Random b;
- protected BlockPosition c;
- protected CustomWorldSettingsFinal d;
- protected WorldGenerator e = new WorldGenClay(4);
- protected WorldGenerator f;
- protected WorldGenerator g;
- protected WorldGenerator h;
- protected WorldGenerator i;
- protected WorldGenerator j;
- protected WorldGenerator k;
- protected WorldGenerator l;
- protected WorldGenerator m;
- protected WorldGenerator n;
- protected WorldGenerator o;
- protected WorldGenerator p;
- protected WorldGenerator q;
- protected WorldGenerator r;
- protected WorldGenFlowers s;
- protected WorldGenerator t;
- protected WorldGenerator u;
- protected WorldGenerator v;
- protected WorldGenerator w;
- protected WorldGenerator x;
- protected WorldGenerator y;
- protected int z;
- protected int A;
- protected int B;
- protected int C;
- protected int D;
- protected int E;
- protected int F;
- protected int G;
- protected int H;
- protected int I;
- protected int J;
- protected int K;
- public boolean L;
-
- public BiomeDecorator() {
- this.f = new WorldGenSand(Blocks.SAND, 7);
- this.g = new WorldGenSand(Blocks.GRAVEL, 6);
- this.s = new WorldGenFlowers(Blocks.YELLOW_FLOWER, EnumFlowerVarient.DANDELION);
- this.t = new WorldGenMushrooms(Blocks.BROWN_MUSHROOM);
- this.u = new WorldGenMushrooms(Blocks.RED_MUSHROOM);
- this.v = new WorldGenHugeMushroom();
- this.w = new WorldGenReed();
- this.x = new WorldGenCactus();
- this.y = new WorldGenWaterLily();
- this.B = 2;
- this.C = 1;
- this.H = 1;
- this.I = 3;
- this.J = 1;
- this.L = true;
- }
-
- public void a(World world, Random random, BiomeBase biomebase, BlockPosition blockposition) {
- if (this.a != null) {
- throw new RuntimeException("Already decorating");
- } else {
- this.a = world;
- String s = world.getWorldData().getGeneratorOptions();
-
- if (s != null) {
- this.d = CustomWorldSettings.a(s).b();
- } else {
- this.d = CustomWorldSettings.a("").b();
- }
-
- this.b = random;
- this.c = blockposition;
- this.h = new WorldGenMinable(Blocks.DIRT.getBlockData(), this.d.I);
- this.i = new WorldGenMinable(Blocks.GRAVEL.getBlockData(), this.d.M);
- this.j = new WorldGenMinable(Blocks.STONE.getBlockData().set(BlockStone.VARIANT, EnumStoneVariant.GRANITE), this.d.Q);
- this.k = new WorldGenMinable(Blocks.STONE.getBlockData().set(BlockStone.VARIANT, EnumStoneVariant.DIORITE), this.d.U);
- this.l = new WorldGenMinable(Blocks.STONE.getBlockData().set(BlockStone.VARIANT, EnumStoneVariant.ANDESITE), this.d.Y);
- this.m = new WorldGenMinable(Blocks.COAL_ORE.getBlockData(), this.d.ac);
- this.n = new WorldGenMinable(Blocks.IRON_ORE.getBlockData(), this.d.ag);
- this.o = new WorldGenMinable(Blocks.GOLD_ORE.getBlockData(), this.d.ak);
- this.p = new WorldGenMinable(Blocks.REDSTONE_ORE.getBlockData(), this.d.ao);
- this.q = new WorldGenMinable(Blocks.DIAMOND_ORE.getBlockData(), this.d.as);
- this.r = new WorldGenMinable(Blocks.LAPIS_ORE.getBlockData(), this.d.aw);
- this.a(biomebase);
- this.a = null;
- this.b = null;
- }
- }
-
- protected void a(BiomeBase biomebase) {
- this.a();
-
- int i;
- int j;
- int k;
-
- for (i = 0; i < this.I; ++i) {
- j = this.b.nextInt(16) + 8;
- k = this.b.nextInt(16) + 8;
- this.f.generate(this.a, this.b, this.a.r(this.c.a(j, 0, k)));
- }
-
- for (i = 0; i < this.J; ++i) {
- j = this.b.nextInt(16) + 8;
- k = this.b.nextInt(16) + 8;
- this.e.generate(this.a, this.b, this.a.r(this.c.a(j, 0, k)));
- }
-
- for (i = 0; i < this.H; ++i) {
- j = this.b.nextInt(16) + 8;
- k = this.b.nextInt(16) + 8;
- this.g.generate(this.a, this.b, this.a.r(this.c.a(j, 0, k)));
- }
-
- i = this.A;
- if (this.b.nextInt(10) == 0) {
- ++i;
- }
-
- int l;
- BlockPosition blockposition;
-
- for (j = 0; j < i; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- WorldGenTreeAbstract worldgentreeabstract = biomebase.a(this.b);
-
- worldgentreeabstract.e();
- blockposition = this.getHighestBlockYAt(this.c.a(k, 0, l)); // CraftBukkit - Prevent crash
- if (worldgentreeabstract.generate(this.a, this.b, blockposition)) {
- worldgentreeabstract.a(this.a, this.b, blockposition);
- }
- }
-
- for (j = 0; j < this.K; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- this.v.generate(this.a, this.b, this.getHighestBlockYAt(this.c.a(k, 0, l ))); // CraftBukkit - Prevent crash
- }
-
- int i1;
-
- for (j = 0; j < this.B; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() + 32); // CraftBukkit - Prevent crash
- blockposition = this.c.a(k, i1, l);
- EnumFlowerVarient enumflowervarient = biomebase.a(this.b, blockposition);
- BlockFlowers blockflowers = enumflowervarient.a().a();
-
- if (blockflowers.getMaterial() != Material.AIR) {
- this.s.a(blockflowers, enumflowervarient);
- this.s.generate(this.a, this.b, blockposition);
- }
- }
-
- for (j = 0; j < this.C; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- biomebase.b(this.b).generate(this.a, this.b, this.c.a(k, i1, l));
- }
-
- for (j = 0; j < this.D; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- (new WorldGenDeadBush()).generate(this.a, this.b, this.c.a(k, i1, l));
- }
-
- j = 0;
-
- while (j < this.z) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- blockposition = this.c.a(k, i1, l);
-
- while (true) {
- if (blockposition.getY() > 0) {
- BlockPosition blockposition1 = blockposition.down();
-
- if (this.a.isEmpty(blockposition1)) {
- blockposition = blockposition1;
- continue;
- }
- }
-
- this.y.generate(this.a, this.b, blockposition);
- ++j;
- break;
- }
- }
-
- for (j = 0; j < this.E; ++j) {
- if (this.b.nextInt(4) == 0) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- BlockPosition blockposition2 = this.getHighestBlockYAt(this.c.a(k, 0, l)); // CraftBukkit - Prevent crash
-
- this.t.generate(this.a, this.b, blockposition2);
- }
-
- if (this.b.nextInt(8) == 0) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- blockposition = this.c.a(k, i1, l);
- this.u.generate(this.a, this.b, blockposition);
- }
- }
-
- if (this.b.nextInt(4) == 0) {
- j = this.b.nextInt(16) + 8;
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(this.getHighestBlockYAt(this.c.a(j, 0, k)).getY() * 2); // CraftBukkit - Prevent crash
- this.t.generate(this.a, this.b, this.c.a(j, l, k));
- }
-
- if (this.b.nextInt(8) == 0) {
- j = this.b.nextInt(16) + 8;
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(this.getHighestBlockYAt(this.c.a(j, 0, k)).getY() * 2); // CraftBukkit - Prevent crash
- this.u.generate(this.a, this.b, this.c.a(j, l, k));
- }
-
- for (j = 0; j < this.F; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- this.w.generate(this.a, this.b, this.c.a(k, i1, l));
- }
-
- for (j = 0; j < 10; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- this.w.generate(this.a, this.b, this.c.a(k, i1, l));
- }
-
- if (this.b.nextInt(32) == 0) {
- j = this.b.nextInt(16) + 8;
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(this.getHighestBlockYAt(this.c.a(j, 0, k)).getY() * 2); // CraftBukkit - Prevent crash
- (new WorldGenPumpkin()).generate(this.a, this.b, this.c.a(j, l, k));
- }
-
- for (j = 0; j < this.G; ++j) {
- k = this.b.nextInt(16) + 8;
- l = this.b.nextInt(16) + 8;
- i1 = this.b.nextInt(this.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); // CraftBukkit - Prevent crash
- this.x.generate(this.a, this.b, this.c.a(k, i1, l));
- }
-
- if (this.L) {
- BlockPosition blockposition3;
-
- for (j = 0; j < 50; ++j) {
- blockposition3 = this.c.a(this.b.nextInt(16) + 8, this.b.nextInt(this.b.nextInt(248) + 8), this.b.nextInt(16) + 8);
- (new WorldGenLiquids(Blocks.FLOWING_WATER)).generate(this.a, this.b, blockposition3);
- }
-
- for (j = 0; j < 20; ++j) {
- blockposition3 = this.c.a(this.b.nextInt(16) + 8, this.b.nextInt(this.b.nextInt(this.b.nextInt(240) + 8) + 8), this.b.nextInt(16) + 8);
- (new WorldGenLiquids(Blocks.FLOWING_LAVA)).generate(this.a, this.b, blockposition3);
- }
- }
-
- }
-
- // CraftBukkit start - The heightMap can be wrong calculated and return Y = 0 which will crash the Server
- private BlockPosition getHighestBlockYAt( BlockPosition blockPosition ) {
- BlockPosition returnBlockPosition = this.a.getHighestBlockYAt( blockPosition );
- if ( returnBlockPosition.getY() == 0 ) {
- returnBlockPosition = returnBlockPosition.up( 1 );
- }
- return returnBlockPosition;
- }
- // CraftBukkit end
-
- protected void a(int i, WorldGenerator worldgenerator, int j, int k) {
- int l;
-
- if (k < j) {
- l = j;
- j = k;
- k = l;
- } else if (k == j) {
- if (j < 255) {
- ++k;
- } else {
- --j;
- }
- }
-
- for (l = 0; l < i; ++l) {
- BlockPosition blockposition = this.c.a(this.b.nextInt(16), this.b.nextInt(k - j) + j, this.b.nextInt(16));
-
- worldgenerator.generate(this.a, this.b, blockposition);
- }
-
- }
-
- protected void b(int i, WorldGenerator worldgenerator, int j, int k) {
- for (int l = 0; l < i; ++l) {
- BlockPosition blockposition = this.c.a(this.b.nextInt(16), this.b.nextInt(k) + this.b.nextInt(k) + j - k, this.b.nextInt(16));
-
- worldgenerator.generate(this.a, this.b, blockposition);
- }
-
- }
-
- protected void a() {
- this.a(this.d.J, this.h, this.d.K, this.d.L);
- this.a(this.d.N, this.i, this.d.O, this.d.P);
- this.a(this.d.V, this.k, this.d.W, this.d.X);
- this.a(this.d.R, this.j, this.d.S, this.d.T);
- this.a(this.d.Z, this.l, this.d.aa, this.d.ab);
- this.a(this.d.ad, this.m, this.d.ae, this.d.af);
- this.a(this.d.ah, this.n, this.d.ai, this.d.aj);
- this.a(this.d.al, this.o, this.d.am, this.d.an);
- this.a(this.d.ap, this.p, this.d.aq, this.d.ar);
- this.a(this.d.at, this.q, this.d.au, this.d.av);
- this.b(this.d.ax, this.r, this.d.ay, this.d.az);
- }
-}
diff --git a/src/main/java/net/minecraft/server/BlockAnvil.java b/src/main/java/net/minecraft/server/BlockAnvil.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000

View file

@ -128,8 +128,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
public final String toString() {
return SerializableMeta.classMap.get(getClass()) + "_META:" + serialize(); // TODO: cry
}
return HANDLED_TAGS;
}
+
+ // Spigot start
@ -165,8 +165,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
@@ -0,0 +0,0 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
scoreboard.teams.remove(team.getName());
setUnregistered();
throw new IllegalArgumentException("Unknown visibility level " + visibility);
}
}
+
+ // Spigot start

View file

@ -84,8 +84,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
@Override
@@ -0,0 +0,0 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
scoreboard.teams.remove(team.getName());
setUnregistered();
throw new IllegalArgumentException("Unknown visibility level " + visibility);
}
}
-
- // Spigot start

View file

@ -105,9 +105,9 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -0,0 +0,0 @@ import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -0,0 +0,0 @@ import com.google.common.collect.Sets;
import java.util.Arrays;
import java.util.Set;
+// Spigot start
+import static org.spigotmc.ValidateUtils.*;

View file

@ -9,7 +9,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -0,0 +0,0 @@ import com.google.common.collect.ImmutableMap;
@@ -0,0 +0,0 @@ import java.util.Set;
// Spigot start
import static org.spigotmc.ValidateUtils.*;

View file

@ -17,16 +17,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
private String displayName;
private List<String> lore;
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
this.repairCost = meta.repairCost;
this.attributes = meta.attributes;
this.unhandledTags.putAll(meta.unhandledTags);
+ spigot.setUnbreakable( meta.spigot.isUnbreakable() ); // Spigot
}
CraftMetaItem(NBTTagCompound tag) {
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
} else {
attributes = null;
unhandledTags.put(key, tag.get(key));
}
}
+ // Spigot start
+ if ( tag.hasKey( UNBREAKABLE.NBT ) )
@ -69,24 +69,25 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
@Overridden
boolean isEmpty() {
- return !(hasDisplayName() || hasEnchants() || hasLore() || hasAttributes() || hasRepairCost());
+ return !(hasDisplayName() || hasEnchants() || hasLore() || hasAttributes() || hasRepairCost() || spigot.isUnbreakable()); // Spigot
- return !(hasDisplayName() || hasEnchants() || hasLore() || hasAttributes() || hasRepairCost() || !unhandledTags.isEmpty());
+ return !(hasDisplayName() || hasEnchants() || hasLore() || hasAttributes() || hasRepairCost() || !unhandledTags.isEmpty() || spigot.isUnbreakable()); // Spigot
}
public String getDisplayName() {
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
&& (this.hasEnchants() ? that.hasEnchants() && this.enchantments.equals(that.enchantments) : !that.hasEnchants())
&& (this.hasLore() ? that.hasLore() && this.lore.equals(that.lore) : !that.hasLore())
&& (this.hasAttributes() ? that.hasAttributes() && this.attributes.equals(that.attributes) : !that.hasAttributes())
- && (this.hasRepairCost() ? that.hasRepairCost() && this.repairCost == that.repairCost : !that.hasRepairCost());
+ && (this.hasRepairCost() ? that.hasRepairCost() && this.repairCost == that.repairCost : !that.hasRepairCost()) && this.spigot.isUnbreakable() == that.spigot.isUnbreakable(); // Spigot
&& (this.hasRepairCost() ? that.hasRepairCost() && this.repairCost == that.repairCost : !that.hasRepairCost())
- && (this.unhandledTags.equals(that.unhandledTags));
+ && (this.unhandledTags.equals(that.unhandledTags))
+ && this.spigot.isUnbreakable() == that.spigot.isUnbreakable(); // Spigot
}
/**
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
hash = 61 * hash + (hasEnchants() ? this.enchantments.hashCode() : 0);
hash = 61 * hash + (hasAttributes() ? this.attributes.hashCode() : 0);
hash = 61 * hash + (hasRepairCost() ? this.repairCost : 0);
hash = 61 * hash + unhandledTags.hashCode();
+ hash = 61 * hash + (spigot.isUnbreakable() ? 1231 : 1237); // Spigot
return hash;
}
@ -105,6 +106,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
return builder;
}
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
public static Set<String> getHandledTags() {
if (HANDLED_TAGS.isEmpty()) {
HANDLED_TAGS.addAll(Arrays.asList(
+ UNBREAKABLE.NBT, // Spigot
DISPLAY.NBT,
REPAIR.NBT,
ATTRIBUTES.NBT,
@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Repairable {
// Spigot start
private final Spigot spigot = new Spigot()