From 6e2bd0745facddc2701684cc0305a926a49422f4 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Fri, 12 Dec 2014 22:47:57 -0600 Subject: [PATCH] Update from upstream SpigotMC 81e4ab71ca4 b023457499d dc776bee32b 116e6fc98dc 2b97a3846f2 --- CraftBukkit-Patches/0002-mc-dev-imports.patch | 660 +++++++++--------- .../0129-Better-item-validation.patch | 8 +- 2 files changed, 339 insertions(+), 329 deletions(-) diff --git a/CraftBukkit-Patches/0002-mc-dev-imports.patch b/CraftBukkit-Patches/0002-mc-dev-imports.patch index 30bcde69c5..9482b83963 100644 --- a/CraftBukkit-Patches/0002-mc-dev-imports.patch +++ b/CraftBukkit-Patches/0002-mc-dev-imports.patch @@ -141,333 +141,343 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } +} diff --git a/src/main/java/net/minecraft/server/BiomeDecorator.java b/src/main/java/net/minecraft/server/BiomeDecorator.java -new file mode 100644 +deleted file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 ---- /dev/null -+++ b/src/main/java/net/minecraft/server/BiomeDecorator.java +--- 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.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); -+ } -+} +-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 diff --git a/CraftBukkit-Patches/0129-Better-item-validation.patch b/CraftBukkit-Patches/0129-Better-item-validation.patch index 847a3b9e20..6d08b4458c 100644 --- a/CraftBukkit-Patches/0129-Better-item-validation.patch +++ b/CraftBukkit-Patches/0129-Better-item-validation.patch @@ -90,11 +90,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - this.author = tag.getString(BOOK_AUTHOR.NBT); + this.author = limit( tag.getString(BOOK_AUTHOR.NBT), 1024 ); // Spigot } - - if (tag.hasKey(RESOLVED.NBT)) { + + boolean resolved = false; @@ -0,0 +0,0 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta { - if (resolved != null && resolved) { - page = CraftChatMessage.fromComponent(ChatSerializer.a(page)); + // Ignore and treat as an old book + } } - pageArray[i] = page; + pageArray[i] = limit( page, 2048 ); // Spigot