From 74110558b2f54a3e06f17edd4740c1d377fd8f1e Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 12 Dec 2014 22:47:57 -0600 Subject: [PATCH] Update from upstream SpigotMC 81e4ab71ca4 b023457499d dc776bee32b 116e6fc98dc 2b97a3846f2 --- CraftBukkit-Patches/0001-POM-Changes.patch | 10 +- CraftBukkit-Patches/0002-mc-dev-imports.patch | 666 +++++++++--------- .../0003-Skeleton-API-Implementations.patch | 10 +- .../0005-Spigot-Configuration.patch | 12 +- CraftBukkit-Patches/0012-Spigot-Timings.patch | 12 +- .../0021-Close-Unloaded-Save-Files.patch | 6 +- ...low-Disabling-of-Command-TabComplete.patch | 6 +- .../0030-Configurable-Messages.patch | 12 +- ...034-Entity-Mount-and-Dismount-Events.patch | 8 +- ...vent-Ghost-Players-Caused-by-Plugins.patch | 6 +- .../0056-BungeeCord-Support.patch | 10 +- .../0062-Save-ticks-lived-to-nbttag.patch | 8 +- ...-Warn-if-PermGen-may-be-insufficient.patch | 6 +- .../0082-Cap-Entity-Collisions.patch | 6 +- ...mmands-to-be-the-main-version-of-a-c.patch | 8 +- ...riptive-kick-reasons-instead-of-Nope.patch | 8 +- ...-Check-for-blank-OfflinePlayer-Names.patch | 6 +- .../0109-Correct-Ban-Expiration.patch | 6 +- ...ial-case-invalid-usernames-for-UUIDs.patch | 6 +- ...1-Implement-PlayerSpawnLocationEvent.patch | 8 +- .../0129-Better-item-validation.patch | 22 +- ...-fetch-an-online-UUID-in-online-mode.patch | 6 +- ...-modifiers-which-cause-the-attribute.patch | 6 +- .../0150-Remove-uneeded-validation.patch | 8 +- ...ip-invalid-enchants-in-CraftMetaItem.patch | 6 +- ...kable-and-setUnbreakable-to-ItemMeta.patch | 24 +- 26 files changed, 451 insertions(+), 441 deletions(-) diff --git a/CraftBukkit-Patches/0001-POM-Changes.patch b/CraftBukkit-Patches/0001-POM-Changes.patch index 22a4c136cb..e23ec550fb 100644 --- a/CraftBukkit-Patches/0001-POM-Changes.patch +++ b/CraftBukkit-Patches/0001-POM-Changes.patch @@ -1,4 +1,4 @@ -From be6a8aefafe4a6dc34d952b7c0cf860f7136defe Mon Sep 17 00:00:00 2001 +From aa9d90078891dc1465e5dcb8de265793a377419e Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 2 Jul 2013 13:07:39 +1000 Subject: [PATCH] POM Changes @@ -6,7 +6,7 @@ Subject: [PATCH] POM Changes Basic changes to the build system which mark the artifact as Spigot, and the necessary code changes to ensure proper functionality. Also disables the auto updater provided by CraftBukkit as it is useless to us. diff --git a/pom.xml b/pom.xml -index 8d3f539..74efc8b 100644 +index 49f8028..4e6f620 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,12 @@ @@ -51,7 +51,7 @@ index 8d3f539..74efc8b 100644 ${project.version} jar compile -@@ -132,21 +139,39 @@ +@@ -124,21 +131,39 @@ @@ -94,7 +94,7 @@ index 8d3f539..74efc8b 100644 compile gitdescribe -@@ -163,7 +188,7 @@ +@@ -155,7 +180,7 @@ org.bukkit.craftbukkit.Main CraftBukkit @@ -103,7 +103,7 @@ index 8d3f539..74efc8b 100644 Bukkit Team Bukkit ${api.version} -@@ -196,7 +221,7 @@ +@@ -188,7 +213,7 @@ org.apache.maven.plugins maven-shade-plugin diff --git a/CraftBukkit-Patches/0002-mc-dev-imports.patch b/CraftBukkit-Patches/0002-mc-dev-imports.patch index c810b906d6..502ef4e37c 100644 --- a/CraftBukkit-Patches/0002-mc-dev-imports.patch +++ b/CraftBukkit-Patches/0002-mc-dev-imports.patch @@ -1,4 +1,4 @@ -From aaca00016118455bba4debef407285ea185d2695 Mon Sep 17 00:00:00 2001 +From 5d54186471e9e6ed231545bf77a35e765e31f8d0 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 1 Dec 2013 15:10:48 +1100 Subject: [PATCH] mc-dev imports @@ -141,333 +141,343 @@ index 0000000..b1c6ad3 + } +} diff --git a/src/main/java/net/minecraft/server/BiomeDecorator.java b/src/main/java/net/minecraft/server/BiomeDecorator.java -new file mode 100644 -index 0000000..3705410 ---- /dev/null -+++ b/src/main/java/net/minecraft/server/BiomeDecorator.java -@@ -0,0 +1,322 @@ -+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.a.getHighestBlockYAt(this.c.a(k, 0, l)); -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l))); -+ } -+ -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() + 32); -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ (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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)); -+ -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(j, 0, k)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(j, 0, k)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ 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.a.getHighestBlockYAt(this.c.a(j, 0, k)).getY() * 2); -+ (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.a.getHighestBlockYAt(this.c.a(k, 0, l)).getY() * 2); -+ 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); -+ } -+ } -+ -+ } -+ -+ 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); -+ } -+} +deleted file mode 100644 +index e216a0c..0000000 +--- a/src/main/java/net/minecraft/server/BiomeDecorator.java ++++ /dev/null +@@ -1,332 +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 0000000..8c9ed4c diff --git a/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch b/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch index 5b9e2462aa..0b71e038c8 100644 --- a/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch +++ b/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch @@ -1,4 +1,4 @@ -From b8c7995e487a20b69ee32985463571acbd2673c5 Mon Sep 17 00:00:00 2001 +From dc7886d3fde174339f15c44078985ec3b795054f Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 2 Jun 2013 15:10:56 +1000 Subject: [PATCH] Skeleton API Implementations @@ -6,10 +6,10 @@ Subject: [PATCH] Skeleton API Implementations This contains the basic, empty implementations for some Spigot-API extensions. They are included early in the patching progress so that compilation will still succeed midway despite the APIs only being provided by subsequent patches. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 075a7fd..38892a0 100644 +index b4ad7d1..4c33f5a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1622,4 +1622,14 @@ public final class CraftServer implements Server { +@@ -1626,4 +1626,14 @@ public final class CraftServer implements Server { public UnsafeValues getUnsafe() { return CraftMagicNumbers.INSTANCE; } @@ -124,10 +124,10 @@ index 3b9bfec..e4d0e41 100644 + // Spigot end } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 661fbae..92a6270 100644 +index 78a0ab4..fabaecf 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -667,4 +667,16 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -668,4 +668,16 @@ class CraftMetaItem implements ItemMeta, Repairable { public final String toString() { return SerializableMeta.classMap.get(getClass()) + "_META:" + serialize(); // TODO: cry } diff --git a/CraftBukkit-Patches/0005-Spigot-Configuration.patch b/CraftBukkit-Patches/0005-Spigot-Configuration.patch index 4b388634ce..7d8a3302f9 100644 --- a/CraftBukkit-Patches/0005-Spigot-Configuration.patch +++ b/CraftBukkit-Patches/0005-Spigot-Configuration.patch @@ -1,4 +1,4 @@ -From a63a688407f5d27d053b8fd28e28387ee1a72610 Mon Sep 17 00:00:00 2001 +From 5a74d8939260f6782528b1a1cd4c2423122cdce6 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 7 Jul 2013 09:32:53 +1000 Subject: [PATCH] Spigot Configuration @@ -35,7 +35,7 @@ index 29c0a34..424b71d 100644 if (!this.getOnlineMode()) { DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 82343c5..44eb108 100644 +index a8aeca1..b15988a 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -98,6 +98,7 @@ public abstract class World implements IBlockAccess { @@ -55,10 +55,10 @@ index 82343c5..44eb108 100644 this.world = new CraftWorld((WorldServer) this, gen, env); this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 38892a0..1f49e1c 100644 +index 7968b4b..9da97e5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -245,8 +245,10 @@ public final class CraftServer implements Server { +@@ -246,8 +246,10 @@ public final class CraftServer implements Server { chunkGCLoadThresh = configuration.getInt("chunk-gc.load-threshold"); loadIcon(); @@ -71,7 +71,7 @@ index 38892a0..1f49e1c 100644 } public boolean getCommandBlockOverride(String command) { -@@ -671,6 +673,7 @@ public final class CraftServer implements Server { +@@ -673,6 +675,7 @@ public final class CraftServer implements Server { logger.log(Level.WARNING, "Failed to load banned-players.json, " + ex.getMessage()); } @@ -79,7 +79,7 @@ index 38892a0..1f49e1c 100644 for (WorldServer world : console.worlds) { world.worldData.setDifficulty(difficulty); world.setSpawnFlags(monsters, animals); -@@ -685,11 +688,14 @@ public final class CraftServer implements Server { +@@ -687,11 +690,14 @@ public final class CraftServer implements Server { } else { world.ticksPerMonsterSpawns = this.getTicksPerMonsterSpawns(); } diff --git a/CraftBukkit-Patches/0012-Spigot-Timings.patch b/CraftBukkit-Patches/0012-Spigot-Timings.patch index 9f0cf3f567..6d1cc8c2ba 100644 --- a/CraftBukkit-Patches/0012-Spigot-Timings.patch +++ b/CraftBukkit-Patches/0012-Spigot-Timings.patch @@ -1,4 +1,4 @@ -From 069bf84fffb35ff8883c68069e12d68c0e61a2e4 Mon Sep 17 00:00:00 2001 +From 0bd6f84fab9a64e161181f3d32009bbbd71aac3a Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 10 Jan 2013 00:18:11 -0500 Subject: [PATCH] Spigot Timings @@ -133,7 +133,7 @@ index 424b71d..390c6eb 100644 public boolean ad() { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 0682904..4886929 100644 +index 7bec05f..5441e8b 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -16,6 +16,7 @@ import org.bukkit.entity.Hanging; @@ -153,7 +153,7 @@ index 0682904..4886929 100644 public int getId() { return this.id; } -@@ -378,6 +381,8 @@ public abstract class Entity implements ICommandListener { +@@ -379,6 +382,8 @@ public abstract class Entity implements ICommandListener { } public void move(double d0, double d1, double d2) { @@ -162,7 +162,7 @@ index 0682904..4886929 100644 if (this.T) { this.a(this.getBoundingBox().c(d0, d1, d2)); this.recalcPosition(); -@@ -714,6 +719,7 @@ public abstract class Entity implements ICommandListener { +@@ -715,6 +720,7 @@ public abstract class Entity implements ICommandListener { this.world.methodProfiler.b(); } @@ -584,10 +584,10 @@ index 737b546..c07f9f8 100644 public BiomeMeta a(EnumCreatureType enumcreaturetype, BlockPosition blockposition) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1f49e1c..1f5021f 100644 +index 51e4489..5286c1e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1632,6 +1632,11 @@ public final class CraftServer implements Server { +@@ -1636,6 +1636,11 @@ public final class CraftServer implements Server { private final Spigot spigot = new Spigot() { diff --git a/CraftBukkit-Patches/0021-Close-Unloaded-Save-Files.patch b/CraftBukkit-Patches/0021-Close-Unloaded-Save-Files.patch index 345f738a11..89bc324d05 100644 --- a/CraftBukkit-Patches/0021-Close-Unloaded-Save-Files.patch +++ b/CraftBukkit-Patches/0021-Close-Unloaded-Save-Files.patch @@ -1,4 +1,4 @@ -From b2e323897b2d138c4ea2bc5175d6da6e64351024 Mon Sep 17 00:00:00 2001 +From 5130e3bfb747db131ecf214bffe52690dbb74132 Mon Sep 17 00:00:00 2001 From: Antony Riley Date: Wed, 27 Mar 2013 01:41:54 +0200 Subject: [PATCH] Close Unloaded Save Files @@ -18,10 +18,10 @@ index f4f72ef..1b03878 100644 public static synchronized RegionFile a(File file, int i, int j) { File file1 = new File(file, "region"); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1f5021f..d540cd0 100644 +index 5286c1e..3175d37 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -947,6 +947,31 @@ public final class CraftServer implements Server { +@@ -951,6 +951,31 @@ public final class CraftServer implements Server { worlds.remove(world.getName().toLowerCase()); console.worlds.remove(console.worlds.indexOf(handle)); diff --git a/CraftBukkit-Patches/0029-Allow-Disabling-of-Command-TabComplete.patch b/CraftBukkit-Patches/0029-Allow-Disabling-of-Command-TabComplete.patch index d64e3c95f2..a31466fcbc 100644 --- a/CraftBukkit-Patches/0029-Allow-Disabling-of-Command-TabComplete.patch +++ b/CraftBukkit-Patches/0029-Allow-Disabling-of-Command-TabComplete.patch @@ -1,14 +1,14 @@ -From 81d3cead13e4ec13794d87f99d556aeba5339fb7 Mon Sep 17 00:00:00 2001 +From c5bcf08cd6f792110b93c413f1972643024bb9c0 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 18:05:54 +1000 Subject: [PATCH] Allow Disabling of Command TabComplete diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d540cd0..a770279 100644 +index 3175d37..b9cace3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1551,6 +1551,13 @@ public final class CraftServer implements Server { +@@ -1555,6 +1555,13 @@ public final class CraftServer implements Server { } public List tabCompleteCommand(Player player, String message) { diff --git a/CraftBukkit-Patches/0030-Configurable-Messages.patch b/CraftBukkit-Patches/0030-Configurable-Messages.patch index a8f96e5941..76aa061719 100644 --- a/CraftBukkit-Patches/0030-Configurable-Messages.patch +++ b/CraftBukkit-Patches/0030-Configurable-Messages.patch @@ -1,4 +1,4 @@ -From e825b9f61e1063c007b06771c7baaa01f073473e Mon Sep 17 00:00:00 2001 +From 21d7a65e1639ca5ae704cdc6a1ad7b4424771f82 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 19:21:58 +1000 Subject: [PATCH] Configurable Messages @@ -23,10 +23,10 @@ index f8bac48..e036bc6 100644 this.b.close(chatcomponenttext); } else { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 5979c78..80123ee 100644 +index 5ca721b..f76709f 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -378,7 +378,7 @@ public abstract class PlayerList { +@@ -379,7 +379,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s); } else if (!this.isWhitelisted(gameprofile)) { // return "You are not white-listed on this server!"; @@ -35,7 +35,7 @@ index 5979c78..80123ee 100644 } else if (getIPBans().isBanned(socketaddress) && !getIPBans().get(socketaddress).hasExpired()) { IpBanEntry ipbanentry = this.l.get(socketaddress); -@@ -392,7 +392,7 @@ public abstract class PlayerList { +@@ -393,7 +393,7 @@ public abstract class PlayerList { } else { // return this.players.size() >= this.maxPlayers ? "The server is full!" : null; if (this.players.size() >= this.maxPlayers) { @@ -45,10 +45,10 @@ index 5979c78..80123ee 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a770279..f1ec39b 100644 +index b9cace3..ce4857d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -625,11 +625,7 @@ public final class CraftServer implements Server { +@@ -627,11 +627,7 @@ public final class CraftServer implements Server { return true; } diff --git a/CraftBukkit-Patches/0034-Entity-Mount-and-Dismount-Events.patch b/CraftBukkit-Patches/0034-Entity-Mount-and-Dismount-Events.patch index 36fcf7f44a..3b1efa6c30 100644 --- a/CraftBukkit-Patches/0034-Entity-Mount-and-Dismount-Events.patch +++ b/CraftBukkit-Patches/0034-Entity-Mount-and-Dismount-Events.patch @@ -1,14 +1,14 @@ -From 30494ab74e9585b41e4b249b8878b1582dd7c795 Mon Sep 17 00:00:00 2001 +From 898268b70af55725aab77f43d0f2a1fb809307aa Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 2 Jul 2013 20:32:49 +1000 Subject: [PATCH] Entity Mount and Dismount Events diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 178a7a6..3227e8b 100644 +index 56f71f3..ce0c305 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1543,6 +1543,7 @@ public abstract class Entity implements ICommandListener { +@@ -1544,6 +1544,7 @@ public abstract class Entity implements ICommandListener { } } // CraftBukkit end @@ -16,7 +16,7 @@ index 178a7a6..3227e8b 100644 this.setPositionRotation(this.vehicle.locX, this.vehicle.getBoundingBox().b + (double) this.vehicle.length, this.vehicle.locZ, this.yaw, this.pitch); this.vehicle.passenger = null; } -@@ -1577,6 +1578,18 @@ public abstract class Entity implements ICommandListener { +@@ -1578,6 +1579,18 @@ public abstract class Entity implements ICommandListener { } } // CraftBukkit end diff --git a/CraftBukkit-Patches/0035-Prevent-Ghost-Players-Caused-by-Plugins.patch b/CraftBukkit-Patches/0035-Prevent-Ghost-Players-Caused-by-Plugins.patch index 404024e0c7..10ff4a7c83 100644 --- a/CraftBukkit-Patches/0035-Prevent-Ghost-Players-Caused-by-Plugins.patch +++ b/CraftBukkit-Patches/0035-Prevent-Ghost-Players-Caused-by-Plugins.patch @@ -1,4 +1,4 @@ -From ffef4ba9050f0d22ffae56c417e74fb6194cfa32 Mon Sep 17 00:00:00 2001 +From f8664946ba2853b3d8413cf9c6624f515655c48a Mon Sep 17 00:00:00 2001 From: Alex Ciuba Date: Tue, 11 Jun 2013 15:23:03 -0400 Subject: [PATCH] Prevent Ghost Players Caused by Plugins @@ -6,10 +6,10 @@ Subject: [PATCH] Prevent Ghost Players Caused by Plugins Check if the player is still connected after firing event. Fixes BUKKIT-4327 diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 80123ee..d94ec46 100644 +index f76709f..3b6e4f0 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -505,6 +505,11 @@ public abstract class PlayerList { +@@ -506,6 +506,11 @@ public abstract class PlayerList { Player respawnPlayer = cserver.getPlayer(entityplayer1); PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn); cserver.getPluginManager().callEvent(respawnEvent); diff --git a/CraftBukkit-Patches/0056-BungeeCord-Support.patch b/CraftBukkit-Patches/0056-BungeeCord-Support.patch index 1c859308a6..4b833a6322 100644 --- a/CraftBukkit-Patches/0056-BungeeCord-Support.patch +++ b/CraftBukkit-Patches/0056-BungeeCord-Support.patch @@ -1,4 +1,4 @@ -From 5e9d6f4af94cb8f5a4e07cd12bec06b96ee6c027 Mon Sep 17 00:00:00 2001 +From 1a7b84867f4ee97511cf7cded475159a1991c7e8 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 1 Dec 2013 18:18:41 +1100 Subject: [PATCH] BungeeCord Support @@ -119,10 +119,10 @@ index 97920b0..0b86011 100644 this.d = EnumProtocol.a(packetdataserializer.e()); } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index d94ec46..6357058 100644 +index 3b6e4f0..f0d1ada 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -363,7 +363,7 @@ public abstract class PlayerList { +@@ -364,7 +364,7 @@ public abstract class PlayerList { EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), gameprofile, new PlayerInteractManager(server.getWorldServer(0))); Player player = entity.getBukkitEntity(); @@ -132,10 +132,10 @@ index d94ec46..6357058 100644 if (getProfileBans().isBanned(gameprofile) && !getProfileBans().get(gameprofile).hasExpired()) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f1ec39b..c79ede5 100644 +index ce4857d..5c1cfaa 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -558,7 +558,13 @@ public final class CraftServer implements Server { +@@ -560,7 +560,13 @@ public final class CraftServer implements Server { @Override public long getConnectionThrottle() { diff --git a/CraftBukkit-Patches/0062-Save-ticks-lived-to-nbttag.patch b/CraftBukkit-Patches/0062-Save-ticks-lived-to-nbttag.patch index 5bf000c55c..b47b310e44 100644 --- a/CraftBukkit-Patches/0062-Save-ticks-lived-to-nbttag.patch +++ b/CraftBukkit-Patches/0062-Save-ticks-lived-to-nbttag.patch @@ -1,14 +1,14 @@ -From 0be8e93c32cc99e8db29392abc26d3ef465957ce Mon Sep 17 00:00:00 2001 +From 5dd51c69a6882437a9c2ca661ee93e1f620be935 Mon Sep 17 00:00:00 2001 From: DerFlash Date: Tue, 9 Jul 2013 00:11:12 +0200 Subject: [PATCH] Save ticks lived to nbttag diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 3227e8b..45265c2 100644 +index ce0c305..b1b9492 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1197,6 +1197,7 @@ public abstract class Entity implements ICommandListener { +@@ -1198,6 +1198,7 @@ public abstract class Entity implements ICommandListener { nbttagcompound.setLong("WorldUUIDLeast", this.world.getDataManager().getUUID().getLeastSignificantBits()); nbttagcompound.setLong("WorldUUIDMost", this.world.getDataManager().getUUID().getMostSignificantBits()); nbttagcompound.setInt("Bukkit.updateLevel", CURRENT_LEVEL); @@ -16,7 +16,7 @@ index 3227e8b..45265c2 100644 // CraftBukkit end if (this.getCustomName() != null && this.getCustomName().length() > 0) { nbttagcompound.setString("CustomName", this.getCustomName()); -@@ -1284,6 +1285,8 @@ public abstract class Entity implements ICommandListener { +@@ -1285,6 +1286,8 @@ public abstract class Entity implements ICommandListener { if (this instanceof EntityLiving) { EntityLiving entity = (EntityLiving) this; diff --git a/CraftBukkit-Patches/0065-Warn-if-PermGen-may-be-insufficient.patch b/CraftBukkit-Patches/0065-Warn-if-PermGen-may-be-insufficient.patch index 5fae591efa..3f5c0eb154 100644 --- a/CraftBukkit-Patches/0065-Warn-if-PermGen-may-be-insufficient.patch +++ b/CraftBukkit-Patches/0065-Warn-if-PermGen-may-be-insufficient.patch @@ -1,14 +1,14 @@ -From cf8f74feef3d3fbed4cd960837d6fa3c2d2201c6 Mon Sep 17 00:00:00 2001 +From 464bde6a73a3569e864b6db724a07019916b3d91 Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 23 Dec 2013 14:07:41 +1100 Subject: [PATCH] Warn if PermGen may be insufficient diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 8d127fb..008e037 100644 +index 9ffd897..f039fbf 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -155,6 +155,22 @@ public class Main { +@@ -158,6 +158,22 @@ public class Main { useConsole = false; } diff --git a/CraftBukkit-Patches/0082-Cap-Entity-Collisions.patch b/CraftBukkit-Patches/0082-Cap-Entity-Collisions.patch index ac0da3c15c..a7f6dea0f1 100644 --- a/CraftBukkit-Patches/0082-Cap-Entity-Collisions.patch +++ b/CraftBukkit-Patches/0082-Cap-Entity-Collisions.patch @@ -1,4 +1,4 @@ -From 588c3ffb97bfb1db52719d708480c333314ba895 Mon Sep 17 00:00:00 2001 +From d80d05b09d60f8a1356996dcb560b07a1ac1867b Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 31 Jan 2014 11:18:34 -0500 Subject: [PATCH] Cap Entity Collisions @@ -7,10 +7,10 @@ Limit a single entity to colliding a max of configurable times per tick. This will alleviate issues where living entities are hoarded in 1x1 pens. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 1339fd2..94a997f 100644 +index c69ae55..c967853 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1058,6 +1058,7 @@ public abstract class Entity implements ICommandListener { +@@ -1059,6 +1059,7 @@ public abstract class Entity implements ICommandListener { public void d(EntityHuman entityhuman) {} diff --git a/CraftBukkit-Patches/0089-Allow-vanilla-commands-to-be-the-main-version-of-a-c.patch b/CraftBukkit-Patches/0089-Allow-vanilla-commands-to-be-the-main-version-of-a-c.patch index 13bb3f9ea2..cd1b310b7a 100644 --- a/CraftBukkit-Patches/0089-Allow-vanilla-commands-to-be-the-main-version-of-a-c.patch +++ b/CraftBukkit-Patches/0089-Allow-vanilla-commands-to-be-the-main-version-of-a-c.patch @@ -1,14 +1,14 @@ -From e3fe3d63d1ac971bc8db54461b67e38f0445c464 Mon Sep 17 00:00:00 2001 +From 76e657bb3daaf6b9eb389359a4efff083b37ba9d Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Wed, 12 Feb 2014 20:44:14 +0000 Subject: [PATCH] Allow vanilla commands to be the main version of a command diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index dbb3324..55658b6 100644 +index a5499a1..5fc0e28 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -315,8 +315,11 @@ public final class CraftServer implements Server { +@@ -316,8 +316,11 @@ public final class CraftServer implements Server { } if (type == PluginLoadOrder.POSTWORLD) { @@ -21,7 +21,7 @@ index dbb3324..55658b6 100644 commandMap.registerServerAliases(); loadCustomPermissions(); DefaultPermissions.registerCorePermissions(); -@@ -328,10 +331,19 @@ public final class CraftServer implements Server { +@@ -330,10 +333,19 @@ public final class CraftServer implements Server { pluginManager.disablePlugins(); } diff --git a/CraftBukkit-Patches/0097-Descriptive-kick-reasons-instead-of-Nope.patch b/CraftBukkit-Patches/0097-Descriptive-kick-reasons-instead-of-Nope.patch index 433d3f6d51..9bd9895c6e 100644 --- a/CraftBukkit-Patches/0097-Descriptive-kick-reasons-instead-of-Nope.patch +++ b/CraftBukkit-Patches/0097-Descriptive-kick-reasons-instead-of-Nope.patch @@ -1,14 +1,14 @@ -From 928d3c2a993a4eea994e4c46121f546d123277d0 Mon Sep 17 00:00:00 2001 +From 99c9a03e1bfae144c9227a0eae7ef8f0d57c0181 Mon Sep 17 00:00:00 2001 From: drXor Date: Sat, 15 Mar 2014 01:30:05 -0400 Subject: [PATCH] Descriptive kick reasons instead of Nope! diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 774fe84..3a68762 100644 +index c967853..2cca633 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -207,7 +207,7 @@ public abstract class Entity implements ICommandListener { +@@ -208,7 +208,7 @@ public abstract class Entity implements ICommandListener { if (f == Float.POSITIVE_INFINITY || f == Float.NEGATIVE_INFINITY) { if (this instanceof EntityPlayer) { this.world.getServer().getLogger().warning(this.getName() + " was caught trying to crash the server with an invalid yaw"); @@ -17,7 +17,7 @@ index 774fe84..3a68762 100644 } f = 0; } -@@ -220,7 +220,7 @@ public abstract class Entity implements ICommandListener { +@@ -221,7 +221,7 @@ public abstract class Entity implements ICommandListener { if (f1 == Float.POSITIVE_INFINITY || f1 == Float.NEGATIVE_INFINITY) { if (this instanceof EntityPlayer) { this.world.getServer().getLogger().warning(this.getName() + " was caught trying to crash the server with an invalid pitch"); diff --git a/CraftBukkit-Patches/0106-Check-for-blank-OfflinePlayer-Names.patch b/CraftBukkit-Patches/0106-Check-for-blank-OfflinePlayer-Names.patch index a1e9e8a6dc..40c1feb170 100644 --- a/CraftBukkit-Patches/0106-Check-for-blank-OfflinePlayer-Names.patch +++ b/CraftBukkit-Patches/0106-Check-for-blank-OfflinePlayer-Names.patch @@ -1,14 +1,14 @@ -From 1e6cd90b02676d7d895fb88ce176e7c8fc3f9984 Mon Sep 17 00:00:00 2001 +From caf26ee83d97c36f4985c62cde9b5e78d1a2d99f Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 14 Apr 2014 17:21:24 +1000 Subject: [PATCH] Check for blank OfflinePlayer Names diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index db1465e..50bb2ba 100644 +index 6ea7371..31a7a87 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1271,6 +1271,7 @@ public final class CraftServer implements Server { +@@ -1275,6 +1275,7 @@ public final class CraftServer implements Server { @Deprecated public OfflinePlayer getOfflinePlayer(String name) { Validate.notNull(name, "Name cannot be null"); diff --git a/CraftBukkit-Patches/0109-Correct-Ban-Expiration.patch b/CraftBukkit-Patches/0109-Correct-Ban-Expiration.patch index 26bb3ca2dc..64cd3b8917 100644 --- a/CraftBukkit-Patches/0109-Correct-Ban-Expiration.patch +++ b/CraftBukkit-Patches/0109-Correct-Ban-Expiration.patch @@ -1,14 +1,14 @@ -From b952ef7806b987f213f930d93015c537379a5276 Mon Sep 17 00:00:00 2001 +From a12d6ee8c2c4b41cc287f1a70803039bd946c313 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 16 Apr 2014 11:14:38 +1000 Subject: [PATCH] Correct Ban Expiration diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 6357058..2d6ddc7 100644 +index f0d1ada..82dd862 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -375,7 +375,7 @@ public abstract class PlayerList { +@@ -376,7 +376,7 @@ public abstract class PlayerList { } // return s; diff --git a/CraftBukkit-Patches/0114-Don-t-special-case-invalid-usernames-for-UUIDs.patch b/CraftBukkit-Patches/0114-Don-t-special-case-invalid-usernames-for-UUIDs.patch index 1a269d06f3..dbac05b4d7 100644 --- a/CraftBukkit-Patches/0114-Don-t-special-case-invalid-usernames-for-UUIDs.patch +++ b/CraftBukkit-Patches/0114-Don-t-special-case-invalid-usernames-for-UUIDs.patch @@ -1,14 +1,14 @@ -From aa05774c3fbd923f3cdc7bcfea204462866323e1 Mon Sep 17 00:00:00 2001 +From 57caebbf7c48ff8546e7933ea900bf126c26a421 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 20 Apr 2014 18:58:00 +1000 Subject: [PATCH] Don't special case 'invalid' usernames for UUIDs. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 50bb2ba..899982b 100644 +index 31a7a87..8964a18 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1273,11 +1273,6 @@ public final class CraftServer implements Server { +@@ -1277,11 +1277,6 @@ public final class CraftServer implements Server { Validate.notNull(name, "Name cannot be null"); com.google.common.base.Preconditions.checkArgument( !org.apache.commons.lang.StringUtils.isBlank( name ), "Name cannot be blank" ); // Spigot diff --git a/CraftBukkit-Patches/0121-Implement-PlayerSpawnLocationEvent.patch b/CraftBukkit-Patches/0121-Implement-PlayerSpawnLocationEvent.patch index 9a232dcefd..b4d853c46e 100644 --- a/CraftBukkit-Patches/0121-Implement-PlayerSpawnLocationEvent.patch +++ b/CraftBukkit-Patches/0121-Implement-PlayerSpawnLocationEvent.patch @@ -1,14 +1,14 @@ -From 02509dc7476f72618938ce44287e2dbeec7a17e3 Mon Sep 17 00:00:00 2001 +From a8a8ff64e451fbc06f035c5dbe37755bf9620c6f Mon Sep 17 00:00:00 2001 From: ninja Date: Tue, 8 Apr 2014 14:05:19 +0200 Subject: [PATCH] Implement PlayerSpawnLocationEvent. diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index c9ef1d6..26e4328 100644 +index 82dd862..34ee440 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -35,6 +35,7 @@ import org.bukkit.event.player.PlayerQuitEvent; +@@ -36,6 +36,7 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.util.Vector; @@ -16,7 +16,7 @@ index c9ef1d6..26e4328 100644 // CraftBukkit end public abstract class PlayerList { -@@ -98,6 +99,19 @@ public abstract class PlayerList { +@@ -99,6 +100,19 @@ public abstract class PlayerList { s1 = networkmanager.getSocketAddress().toString(); } diff --git a/CraftBukkit-Patches/0129-Better-item-validation.patch b/CraftBukkit-Patches/0129-Better-item-validation.patch index 780006ab74..cd297690b6 100644 --- a/CraftBukkit-Patches/0129-Better-item-validation.patch +++ b/CraftBukkit-Patches/0129-Better-item-validation.patch @@ -1,4 +1,4 @@ -From e4ab8d61ad019d2cfd1021d342d5e367fd8bc51e Mon Sep 17 00:00:00 2001 +From ef07b1f5de9476274a7a491bd59ac0a21948fd24 Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Wed, 2 Jul 2014 23:35:51 +0100 Subject: [PATCH] Better item validation @@ -64,7 +64,7 @@ index 8b7dc17..5227007 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java -index 9a24d2e..d3b5002 100644 +index 0c69a3e..6843fac 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java @@ -20,6 +20,10 @@ import net.minecraft.server.ChatSerializer; @@ -78,7 +78,7 @@ index 9a24d2e..d3b5002 100644 @DelegateDeserialization(SerializableMeta.class) class CraftMetaBook extends CraftMetaItem implements BookMeta { static final ItemMetaKey BOOK_TITLE = new ItemMetaKey("title"); -@@ -54,11 +58,11 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta { +@@ -55,11 +59,11 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta { super(tag); if (tag.hasKey(BOOK_TITLE.NBT)) { @@ -90,11 +90,11 @@ index 9a24d2e..d3b5002 100644 - this.author = tag.getString(BOOK_AUTHOR.NBT); + this.author = limit( tag.getString(BOOK_AUTHOR.NBT), 1024 ); // Spigot } - - if (tag.hasKey(RESOLVED.NBT)) { -@@ -78,7 +82,7 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta { - if (resolved != null && resolved) { - page = CraftChatMessage.fromComponent(ChatSerializer.a(page)); + + boolean resolved = false; +@@ -84,7 +88,7 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta { + // Ignore and treat as an old book + } } - pageArray[i] = page; + pageArray[i] = limit( page, 2048 ); // Spigot @@ -102,7 +102,7 @@ index 9a24d2e..d3b5002 100644 addPage(pageArray); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 92a6270..8d754d8 100644 +index fabaecf..cb6857c 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -36,6 +36,10 @@ import com.google.common.base.Strings; @@ -116,7 +116,7 @@ index 92a6270..8d754d8 100644 /** * Children must include the following: * -@@ -229,7 +233,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -230,7 +234,7 @@ class CraftMetaItem implements ItemMeta, Repairable { NBTTagCompound display = tag.getCompound(DISPLAY.NBT); if (display.hasKey(NAME.NBT)) { @@ -125,7 +125,7 @@ index 92a6270..8d754d8 100644 } if (display.hasKey(LORE.NBT)) { -@@ -237,7 +241,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -238,7 +242,7 @@ class CraftMetaItem implements ItemMeta, Repairable { lore = new ArrayList(list.size()); for (int index = 0; index < list.size(); index++) { diff --git a/CraftBukkit-Patches/0146-Only-fetch-an-online-UUID-in-online-mode.patch b/CraftBukkit-Patches/0146-Only-fetch-an-online-UUID-in-online-mode.patch index 318fceb9bd..6c65d49cb7 100644 --- a/CraftBukkit-Patches/0146-Only-fetch-an-online-UUID-in-online-mode.patch +++ b/CraftBukkit-Patches/0146-Only-fetch-an-online-UUID-in-online-mode.patch @@ -1,4 +1,4 @@ -From 2c388c7f705c6615e19692e82ccf20a4c47f79a8 Mon Sep 17 00:00:00 2001 +From da0947583dc1dbf478a1c04ab155cc3d64136e71 Mon Sep 17 00:00:00 2001 From: Maxim Van de Wynckel Date: Wed, 30 Jul 2014 01:19:51 +0200 Subject: [PATCH] Only fetch an online UUID in online mode @@ -12,10 +12,10 @@ You want to store data for player "Test" who never joined. An online UUID is cr The player Test joins with an offline UUID but that will not match the online UUID of the saved data. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 899982b..57bd4f1 100644 +index 8964a18..8b4b580 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1275,8 +1275,14 @@ public final class CraftServer implements Server { +@@ -1279,8 +1279,14 @@ public final class CraftServer implements Server { OfflinePlayer result = getPlayerExact(name); if (result == null) { diff --git a/CraftBukkit-Patches/0147-Filter-attribute-modifiers-which-cause-the-attribute.patch b/CraftBukkit-Patches/0147-Filter-attribute-modifiers-which-cause-the-attribute.patch index 3c005bd728..32f10b992e 100644 --- a/CraftBukkit-Patches/0147-Filter-attribute-modifiers-which-cause-the-attribute.patch +++ b/CraftBukkit-Patches/0147-Filter-attribute-modifiers-which-cause-the-attribute.patch @@ -1,4 +1,4 @@ -From 57950764560d04e70e8388db6d6accf8a8de0b05 Mon Sep 17 00:00:00 2001 +From 6782704edc90554ab8a70d93f6bec734b6aef1b6 Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Thu, 31 Jul 2014 17:48:20 +0100 Subject: [PATCH] Filter attribute modifiers which cause the attribute to go @@ -6,7 +6,7 @@ Subject: [PATCH] Filter attribute modifiers which cause the attribute to go diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 8d754d8..7638832 100644 +index cb6857c..b42baa9 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -38,6 +38,8 @@ import com.google.common.collect.ImmutableMap; @@ -18,7 +18,7 @@ index 8d754d8..7638832 100644 // Spigot end /** -@@ -258,6 +260,123 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -259,6 +261,123 @@ class CraftMetaItem implements ItemMeta, Repairable { NBTTagList save = null; NBTTagList nbttaglist = tag.getList(ATTRIBUTES.NBT, 10); diff --git a/CraftBukkit-Patches/0150-Remove-uneeded-validation.patch b/CraftBukkit-Patches/0150-Remove-uneeded-validation.patch index 58a28b2aff..4d92978069 100644 --- a/CraftBukkit-Patches/0150-Remove-uneeded-validation.patch +++ b/CraftBukkit-Patches/0150-Remove-uneeded-validation.patch @@ -1,14 +1,14 @@ -From 142f4098cd2b3118351593dfe155cdfa771a0749 Mon Sep 17 00:00:00 2001 +From 5f7fe70ea4af2e1d88a18470ad373e5fd5408067 Mon Sep 17 00:00:00 2001 From: drXor Date: Fri, 15 Aug 2014 18:11:09 -0400 Subject: [PATCH] Remove uneeded validation diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 7638832..e134ace 100644 +index b42baa9..d6e4023 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -511,7 +511,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -512,7 +512,7 @@ class CraftMetaItem implements ItemMeta, Repairable { } static void applyEnchantments(Map enchantments, NBTTagCompound tag, ItemMetaKey key) { @@ -17,7 +17,7 @@ index 7638832..e134ace 100644 return; } -@@ -602,7 +602,14 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -603,7 +603,14 @@ class CraftMetaItem implements ItemMeta, Repairable { } public boolean removeEnchant(Enchantment ench) { diff --git a/CraftBukkit-Patches/0153-Skip-invalid-enchants-in-CraftMetaItem.patch b/CraftBukkit-Patches/0153-Skip-invalid-enchants-in-CraftMetaItem.patch index f318d9e855..91d4b42671 100644 --- a/CraftBukkit-Patches/0153-Skip-invalid-enchants-in-CraftMetaItem.patch +++ b/CraftBukkit-Patches/0153-Skip-invalid-enchants-in-CraftMetaItem.patch @@ -1,4 +1,4 @@ -From 36429dd025bd601b1b681fb79409e8795316c3c8 Mon Sep 17 00:00:00 2001 +From 894fbe91ced2095c5776641ff178de748732fadf Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Tue, 19 Aug 2014 11:04:21 +0100 Subject: [PATCH] Skip invalid enchants in CraftMetaItem @@ -8,10 +8,10 @@ CraftMetaItem would add a null enchantment into the enchantment map which causes NullPointers later diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index e134ace..e8c1a99 100644 +index d6e4023..6298d58 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -434,7 +434,11 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -435,7 +435,11 @@ class CraftMetaItem implements ItemMeta, Repairable { int id = 0xffff & ((NBTTagCompound) ench.get(i)).getShort(ENCHANTMENTS_ID.NBT); int level = 0xffff & ((NBTTagCompound) ench.get(i)).getShort(ENCHANTMENTS_LVL.NBT); diff --git a/CraftBukkit-Patches/0155-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch b/CraftBukkit-Patches/0155-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch index 52efedb8ce..6bd5bdc6fa 100644 --- a/CraftBukkit-Patches/0155-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch +++ b/CraftBukkit-Patches/0155-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch @@ -1,14 +1,14 @@ -From 254472845abd1ee3a69b4282b547262ff9d1d474 Mon Sep 17 00:00:00 2001 +From 166fdc1c6f2728e48f35b4afc61039261bcb8350 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Fri, 22 Aug 2014 05:35:16 -0400 Subject: [PATCH] Added isUnbreakable and setUnbreakable to ItemMeta diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index e8c1a99..96b7a07 100644 +index 6298d58..a3bc76d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -203,6 +203,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -204,6 +204,7 @@ class CraftMetaItem implements ItemMeta, Repairable { static final ItemMetaKey ATTRIBUTES_UUID_HIGH = new ItemMetaKey("UUIDMost"); @Specific(Specific.To.NBT) static final ItemMetaKey ATTRIBUTES_UUID_LOW = new ItemMetaKey("UUIDLeast"); @@ -16,7 +16,7 @@ index e8c1a99..96b7a07 100644 private String displayName; private List lore; -@@ -228,6 +229,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -229,6 +230,7 @@ class CraftMetaItem implements ItemMeta, Repairable { this.repairCost = meta.repairCost; this.attributes = meta.attributes; @@ -24,7 +24,7 @@ index e8c1a99..96b7a07 100644 } CraftMetaItem(NBTTagCompound tag) { -@@ -420,6 +422,12 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -421,6 +423,12 @@ class CraftMetaItem implements ItemMeta, Repairable { } else { attributes = null; } @@ -37,7 +37,7 @@ index e8c1a99..96b7a07 100644 } static Map buildEnchantments(NBTTagCompound tag, ItemMetaKey key) { -@@ -460,6 +468,13 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -461,6 +469,13 @@ class CraftMetaItem implements ItemMeta, Repairable { } attributes = null; @@ -51,7 +51,7 @@ index e8c1a99..96b7a07 100644 } static Map buildEnchantments(Map map, ItemMetaKey key) { -@@ -492,6 +507,13 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -493,6 +508,13 @@ class CraftMetaItem implements ItemMeta, Repairable { applyEnchantments(enchantments, itemTag, ENCHANTMENTS); @@ -65,7 +65,7 @@ index e8c1a99..96b7a07 100644 if (hasRepairCost()) { itemTag.setInt(REPAIR.NBT, repairCost); } -@@ -550,7 +572,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -551,7 +573,7 @@ class CraftMetaItem implements ItemMeta, Repairable { @Overridden boolean isEmpty() { @@ -74,7 +74,7 @@ index e8c1a99..96b7a07 100644 } public String getDisplayName() { -@@ -674,7 +696,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -675,7 +697,7 @@ 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()) @@ -83,7 +83,7 @@ index e8c1a99..96b7a07 100644 } /** -@@ -700,6 +722,7 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -701,6 +723,7 @@ 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); @@ -91,7 +91,7 @@ index e8c1a99..96b7a07 100644 return hash; } -@@ -743,6 +766,13 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -744,6 +767,13 @@ class CraftMetaItem implements ItemMeta, Repairable { builder.put(REPAIR.BUKKIT, repairCost); } @@ -105,7 +105,7 @@ index e8c1a99..96b7a07 100644 return builder; } -@@ -805,6 +835,19 @@ class CraftMetaItem implements ItemMeta, Repairable { +@@ -806,6 +836,19 @@ class CraftMetaItem implements ItemMeta, Repairable { // Spigot start private final Spigot spigot = new Spigot() {