From bbf1ea41b81b9f9bb1b8041b40880c8aee04c755 Mon Sep 17 00:00:00 2001 From: LexManos Date: Thu, 6 Dec 2018 18:09:47 -0800 Subject: [PATCH] world.gen.feature patches, worldgen should be stable with vanilla. In all places I looked. --- .../net/minecraft/block/Block.java.patch | 20 +++- .../net/minecraft/block/BlockBush.java.patch | 11 +- .../block/trees/JungleTree.java.patch | 16 +++ .../feature/AbstractTreeFeature.java.patch | 24 ++++ .../BigBrownMushroomFeature.java.patch | 29 +++++ .../feature/BigRedMushroomFeature.java.patch | 29 +++++ .../gen/feature/BigTreeFeature.java.patch | 30 +++++ .../gen/feature/BirchTreeFeature.java.patch | 53 +++++++++ .../gen/feature/BonusChestFeature.java.patch | 43 +++++++ .../world/gen/feature/BushFeature.java.patch | 11 ++ .../gen/feature/CanopyTreeFeature.java.patch | 60 ++++++++++ .../gen/feature/DeadBushFeature.java.patch | 11 ++ .../gen/feature/DoublePlantFeature.java.patch | 11 ++ .../gen/feature/DungeonsFeature.java.patch | 10 ++ .../world/gen/feature/Feature.java.patch | 21 ++++ .../gen/feature/GlowStoneFeature.java.patch | 11 ++ .../gen/feature/HellLavaFeature.java.patch | 11 ++ .../gen/feature/HugeTreesFeature.java.patch | 76 ++++++++++++ .../gen/feature/IceSpikeFeature.java.patch | 28 +++++ .../gen/feature/JungleGrassFeature.java.patch | 11 ++ .../gen/feature/LiquidsFeature.java.patch | 11 ++ .../gen/feature/MegaJungleFeature.java.patch | 38 ++++++ .../world/gen/feature/MegaPineTree.java.patch | 39 +++++++ .../gen/feature/MinableFeature.java.patch | 11 ++ .../feature/PointyTaigaTreeFeature.java.patch | 44 +++++++ .../world/gen/feature/ReedFeature.java.patch | 10 ++ .../gen/feature/SavannaTreeFeature.java.patch | 62 ++++++++++ .../world/gen/feature/ShrubFeature.java.patch | 44 +++++++ .../gen/feature/SwampTreeFeature.java.patch | 87 ++++++++++++++ .../gen/feature/TaigaGrassFeature.java.patch | 11 ++ .../gen/feature/TallGrassFeature.java.patch | 11 ++ .../feature/TallTaigaTreeFeature.java.patch | 53 +++++++++ .../world/gen/feature/TreeFeature.java.patch | 101 ++++++++++++++++ .../world/gen/feature/VinesFeature.java.patch | 11 ++ .../feature/WorldGenAbstractTree.java.patch | 13 --- .../feature/WorldGenBigMushroom.java.patch | 34 ------ .../gen/feature/WorldGenBigTree.java.patch | 52 --------- .../gen/feature/WorldGenBirchTree.java.patch | 56 --------- .../world/gen/feature/WorldGenBush.java.patch | 11 -- .../gen/feature/WorldGenCanopyTree.java.patch | 72 ------------ .../gen/feature/WorldGenDeadBush.java.patch | 11 -- .../gen/feature/WorldGenDungeons.java.patch | 10 -- .../gen/feature/WorldGenGlowStone1.java.patch | 11 -- .../gen/feature/WorldGenGlowStone2.java.patch | 11 -- .../gen/feature/WorldGenHellLava.java.patch | 11 -- .../gen/feature/WorldGenHugeTrees.java.patch | 69 ----------- .../gen/feature/WorldGenIceSpike.java.patch | 29 ----- .../gen/feature/WorldGenLiquids.java.patch | 11 -- .../gen/feature/WorldGenMegaJungle.java.patch | 50 -------- .../feature/WorldGenMegaPineTree.java.patch | 60 ---------- .../gen/feature/WorldGenMinable.java.patch | 12 -- .../feature/WorldGenSavannaTree.java.patch | 64 ----------- .../gen/feature/WorldGenShrub.java.patch | 32 ------ .../gen/feature/WorldGenSwamp.java.patch | 89 --------------- .../gen/feature/WorldGenTaiga1.java.patch | 52 --------- .../gen/feature/WorldGenTaiga2.java.patch | 66 ----------- .../gen/feature/WorldGenTallGrass.java.patch | 11 -- .../gen/feature/WorldGenTrees.java.patch | 108 ------------------ .../WorldGeneratorBonusChest.java.patch | 47 -------- .../WorldGenLakes.java.patch | 0 .../WorldGenerator.java.patch | 0 .../minecraftforge/common/DungeonHooks.java | 26 ++--- .../java/net/minecraftforge/common/Tags.java | 1 + .../common/extensions/IForgeBlock.java | 10 +- .../common/extensions/IForgeBlockState.java | 6 +- .../data/forge/tags/blocks/dirt.json | 8 ++ 66 files changed, 1066 insertions(+), 1026 deletions(-) create mode 100644 patches/minecraft/net/minecraft/block/trees/JungleTree.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/AbstractTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BigRedMushroomFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BigTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BirchTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BonusChestFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BushFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/CanopyTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/DeadBushFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/DoublePlantFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/DungeonsFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/Feature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/GlowStoneFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/HellLavaFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/HugeTreesFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/IceSpikeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/JungleGrassFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/LiquidsFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/MegaJungleFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/MegaPineTree.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/MinableFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/PointyTaigaTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/ReedFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/SavannaTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/ShrubFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/SwampTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/TaigaGrassFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/TallGrassFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/TallTaigaTreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/TreeFeature.java.patch create mode 100644 patches/minecraft/net/minecraft/world/gen/feature/VinesFeature.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenAbstractTree.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigMushroom.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBirchTree.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBush.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenCanopyTree.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDeadBush.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDungeons.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone1.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone2.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHellLava.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHugeTrees.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenIceSpike.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenLiquids.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaJungle.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMinable.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSavannaTree.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga1.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga2.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTallGrass.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTrees.java.patch delete mode 100644 patches_old/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java.patch rename {patches_old/minecraft/net/minecraft/world/gen/feature => patches_old_unknown}/WorldGenLakes.java.patch (100%) rename {patches_old/minecraft/net/minecraft/world/gen/feature => patches_old_unknown}/WorldGenerator.java.patch (100%) create mode 100644 src/main/resources/data/forge/tags/blocks/dirt.json diff --git a/patches/minecraft/net/minecraft/block/Block.java.patch b/patches/minecraft/net/minecraft/block/Block.java.patch index 997068285d..e233c2605a 100644 --- a/patches/minecraft/net/minecraft/block/Block.java.patch +++ b/patches/minecraft/net/minecraft/block/Block.java.patch @@ -158,6 +158,20 @@ public SoundType func_185467_w() { return this.field_149762_H; } +@@ -776,11 +792,11 @@ + } + + public static boolean func_196252_e(Block p_196252_0_) { +- return p_196252_0_ == Blocks.field_150348_b || p_196252_0_ == Blocks.field_196650_c || p_196252_0_ == Blocks.field_196654_e || p_196252_0_ == Blocks.field_196656_g; ++ return net.minecraftforge.common.Tags.Blocks.STONE.func_199685_a_(p_196252_0_); + } + + public static boolean func_196245_f(Block p_196245_0_) { +- return p_196245_0_ == Blocks.field_150346_d || p_196245_0_ == Blocks.field_196660_k || p_196245_0_ == Blocks.field_196661_l; ++ return net.minecraftforge.common.Tags.Blocks.DIRT.func_199685_a_(p_196245_0_); + } + + public static void func_149671_p() { @@ -1147,7 +1163,7 @@ func_196254_a("chiseled_quartz_block", new Block(Block.Builder.func_200949_a(Material.field_151576_e, MapColor.field_151677_p).func_200943_b(0.8F))); func_196254_a("quartz_pillar", new BlockRotatedPillar(Block.Builder.func_200949_a(Material.field_151576_e, MapColor.field_151677_p).func_200943_b(0.8F))); @@ -219,7 +233,7 @@ + if (plant.func_177230_c() == Blocks.field_150434_aF) + return this.getBlock() == Blocks.field_150434_aF || this.getBlock() == Blocks.field_150354_m || this.getBlock() == Blocks.field_196611_F; + -+ if (plant.func_177230_c() == Blocks.field_196608_cF) ++ if (plant.func_177230_c() == Blocks.field_196608_cF && this == Blocks.field_196608_cF) + return true; + + if (plantable instanceof BlockBush && ((BlockBush)plantable).func_200014_a_(state, world, pos)) @@ -230,10 +244,10 @@ + case Nether: return this.getBlock() == Blocks.field_150425_aM; + case Crop: return this.getBlock() == Blocks.field_150458_ak; + case Cave: return state.func_185896_q(); -+ case Plains: return this.getBlock() == Blocks.field_150349_c || this.getBlock() == Blocks.field_150346_d || this.getBlock() == Blocks.field_150458_ak; ++ case Plains: return this.getBlock() == Blocks.field_150349_c || Block.func_196245_f(this) || this.getBlock() == Blocks.field_150458_ak; + case Water: return state.func_185904_a() == Material.field_151586_h; //&& state.getValue(BlockLiquidWrapper) + case Beach: -+ boolean isBeach = this.getBlock() == Blocks.field_150349_c || this.getBlock() == Blocks.field_150346_d || this.getBlock() == Blocks.field_150354_m; ++ boolean isBeach = this.getBlock() == Blocks.field_150349_c || Block.func_196245_f(this) || this.getBlock() == Blocks.field_150354_m; + boolean hasWater = (world.func_180495_p(pos.func_177974_f()).func_185904_a() == Material.field_151586_h || + world.func_180495_p(pos.func_177976_e()).func_185904_a() == Material.field_151586_h || + world.func_180495_p(pos.func_177978_c()).func_185904_a() == Material.field_151586_h || diff --git a/patches/minecraft/net/minecraft/block/BlockBush.java.patch b/patches/minecraft/net/minecraft/block/BlockBush.java.patch index 2ebb73e446..0639b7420e 100644 --- a/patches/minecraft/net/minecraft/block/BlockBush.java.patch +++ b/patches/minecraft/net/minecraft/block/BlockBush.java.patch @@ -9,16 +9,7 @@ protected BlockBush(Block.Builder p_i48437_1_) { super(p_i48437_1_); } -@@ -26,6 +26,8 @@ - - public boolean func_196260_a(IBlockState p_196260_1_, IWorldReaderBase p_196260_2_, BlockPos p_196260_3_) { - BlockPos blockpos = p_196260_3_.func_177977_b(); -+ if (p_196260_1_.func_177230_c() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. -+ return p_196260_2_.func_180495_p(blockpos).canSustainPlant(p_196260_2_, blockpos, EnumFacing.UP, this); - return this.func_200014_a_(p_196260_2_.func_180495_p(blockpos), p_196260_2_, blockpos); - } - -@@ -44,4 +46,11 @@ +@@ -44,4 +44,11 @@ public int func_200011_d(IBlockState p_200011_1_, IBlockReader p_200011_2_, BlockPos p_200011_3_) { return 0; } diff --git a/patches/minecraft/net/minecraft/block/trees/JungleTree.java.patch b/patches/minecraft/net/minecraft/block/trees/JungleTree.java.patch new file mode 100644 index 0000000000..caec069360 --- /dev/null +++ b/patches/minecraft/net/minecraft/block/trees/JungleTree.java.patch @@ -0,0 +1,16 @@ +--- a/net/minecraft/block/trees/JungleTree.java ++++ b/net/minecraft/block/trees/JungleTree.java +@@ -11,11 +11,11 @@ + public class JungleTree extends AbstractBigTree { + @Nullable + protected AbstractTreeFeature func_196936_b(Random p_196936_1_) { +- return new TreeFeature(true, 4 + p_196936_1_.nextInt(7), Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P(), false); ++ return new TreeFeature(true, 4 + p_196936_1_.nextInt(7), Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P(), false).setSapling((net.minecraft.block.BlockSapling)Blocks.field_196678_w); + } + + @Nullable + protected AbstractTreeFeature func_196938_a(Random p_196938_1_) { +- return new MegaJungleFeature(true, 10, 20, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P()); ++ return new MegaJungleFeature(true, 10, 20, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P()).setSapling((net.minecraft.block.BlockSapling)Blocks.field_196678_w); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/AbstractTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/AbstractTreeFeature.java.patch new file mode 100644 index 0000000000..99c858e884 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/AbstractTreeFeature.java.patch @@ -0,0 +1,24 @@ +--- a/net/minecraft/world/gen/feature/AbstractTreeFeature.java ++++ b/net/minecraft/world/gen/feature/AbstractTreeFeature.java +@@ -21,16 +21,13 @@ + super(p_i45448_1_); + } + +- protected boolean func_150523_a(Block p_150523_1_) { +- IBlockState iblockstate = p_150523_1_.func_176223_P(); +- return iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E) || p_150523_1_ == Blocks.field_196658_i || Block.func_196245_f(p_150523_1_) || p_150523_1_.func_203417_a(BlockTags.field_200031_h) || p_150523_1_.func_203417_a(BlockTags.field_200030_g) || p_150523_1_ == Blocks.field_150395_bd; ++ protected boolean canGrowInto(net.minecraft.world.IBlockReader world, BlockPos pos) { ++ IBlockState iblockstate = world.func_180495_p(pos); ++ return iblockstate.isAir(world, pos) || iblockstate.func_203425_a(BlockTags.field_206952_E) || iblockstate.func_177230_c() == Blocks.field_196658_i || Block.func_196245_f(iblockstate.func_177230_c()) || iblockstate.func_203425_a(BlockTags.field_200031_h) || iblockstate.func_203425_a(BlockTags.field_200030_g) || iblockstate.func_177230_c() == Blocks.field_150395_bd; + } + +- protected void func_175921_a(IWorld p_175921_1_, BlockPos p_175921_2_) { +- if (!Block.func_196245_f(p_175921_1_.func_180495_p(p_175921_2_).func_177230_c())) { +- this.func_202278_a(p_175921_1_, p_175921_2_, Blocks.field_150346_d.func_176223_P()); +- } +- ++ protected void setDirtAt(IWorld worldIn, BlockPos pos, BlockPos origin) { ++ worldIn.func_180495_p(pos).onPlantGrow(worldIn, pos, origin); + } + + protected void func_202278_a(IWorld p_202278_1_, BlockPos p_202278_2_, IBlockState p_202278_3_) { diff --git a/patches/minecraft/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java.patch new file mode 100644 index 0000000000..8e2ffeac1d --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java.patch @@ -0,0 +1,29 @@ +--- a/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java ++++ b/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java +@@ -33,7 +33,7 @@ + for(int i1 = -l; i1 <= l; ++i1) { + for(int j1 = -l; j1 <= l; ++j1) { + IBlockState iblockstate = p_212245_1_.func_180495_p(blockpos$mutableblockpos.func_189533_g(p_212245_4_).func_196234_d(i1, k, j1)); +- if (!iblockstate.func_196958_f() && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (!iblockstate.isAir(p_212245_1_, blockpos$mutableblockpos) && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { + return false; + } + } +@@ -53,7 +53,7 @@ + boolean flag4 = flag1 || flag2; + if (!flag3 || !flag4) { + blockpos$mutableblockpos.func_189533_g(p_212245_4_).func_196234_d(l1, i, i2); +- if (!p_212245_1_.func_180495_p(blockpos$mutableblockpos).func_200015_d(p_212245_1_, blockpos$mutableblockpos)) { ++ if (p_212245_1_.func_180495_p(blockpos$mutableblockpos).canBeReplacedByLeaves(p_212245_1_, blockpos$mutableblockpos)) { + boolean flag5 = flag9 || flag4 && l1 == -2; + boolean flag6 = flag || flag4 && l1 == 2; + boolean flag7 = flag1 || flag3 && i2 == -2; +@@ -68,7 +68,7 @@ + + for(int j2 = 0; j2 < i; ++j2) { + blockpos$mutableblockpos.func_189533_g(p_212245_4_).func_189534_c(EnumFacing.UP, j2); +- if (!p_212245_1_.func_180495_p(blockpos$mutableblockpos).func_200015_d(p_212245_1_, blockpos$mutableblockpos)) { ++ if (p_212245_1_.func_180495_p(blockpos$mutableblockpos).canBeReplacedByLeaves(p_212245_1_, blockpos$mutableblockpos)) { + this.func_202278_a(p_212245_1_, blockpos$mutableblockpos, iblockstate2); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/BigRedMushroomFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/BigRedMushroomFeature.java.patch new file mode 100644 index 0000000000..d2c6d7846f --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/BigRedMushroomFeature.java.patch @@ -0,0 +1,29 @@ +--- a/net/minecraft/world/gen/feature/BigRedMushroomFeature.java ++++ b/net/minecraft/world/gen/feature/BigRedMushroomFeature.java +@@ -38,7 +38,7 @@ + for(int i1 = -l; i1 <= l; ++i1) { + for(int j1 = -l; j1 <= l; ++j1) { + IBlockState iblockstate = p_212245_1_.func_180495_p(blockpos$mutableblockpos.func_189533_g(p_212245_4_).func_196234_d(i1, k, j1)); +- if (!iblockstate.func_196958_f() && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (!iblockstate.isAir(p_212245_1_, blockpos$mutableblockpos) && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { + return false; + } + } +@@ -61,7 +61,7 @@ + boolean flag5 = flag2 || flag3; + if (l1 >= i || flag4 != flag5) { + blockpos$mutableblockpos.func_189533_g(p_212245_4_).func_196234_d(l2, l1, k1); +- if (!p_212245_1_.func_180495_p(blockpos$mutableblockpos).func_200015_d(p_212245_1_, blockpos$mutableblockpos)) { ++ if (p_212245_1_.func_180495_p(blockpos$mutableblockpos).canBeReplacedByLeaves(p_212245_1_, blockpos$mutableblockpos)) { + this.func_202278_a(p_212245_1_, blockpos$mutableblockpos, (IBlockState)((IBlockState)((IBlockState)((IBlockState)((IBlockState)iblockstate1.func_206870_a(BlockHugeMushroom.field_196465_z, Boolean.valueOf(l1 >= i - 1))).func_206870_a(BlockHugeMushroom.field_196464_y, Boolean.valueOf(l2 < 0))).func_206870_a(BlockHugeMushroom.field_196461_b, Boolean.valueOf(l2 > 0))).func_206870_a(BlockHugeMushroom.field_196459_a, Boolean.valueOf(k1 < 0))).func_206870_a(BlockHugeMushroom.field_196463_c, Boolean.valueOf(k1 > 0))); + } + } +@@ -73,7 +73,7 @@ + + for(int j2 = 0; j2 < i; ++j2) { + blockpos$mutableblockpos.func_189533_g(p_212245_4_).func_189534_c(EnumFacing.UP, j2); +- if (!p_212245_1_.func_180495_p(blockpos$mutableblockpos).func_200015_d(p_212245_1_, blockpos$mutableblockpos)) { ++ if (p_212245_1_.func_180495_p(blockpos$mutableblockpos).canBeReplacedByLeaves(p_212245_1_, blockpos$mutableblockpos)) { + this.func_202278_a(p_212245_1_, blockpos$mutableblockpos, iblockstate2); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/BigTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/BigTreeFeature.java.patch new file mode 100644 index 0000000000..41c4551d7e --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/BigTreeFeature.java.patch @@ -0,0 +1,30 @@ +--- a/net/minecraft/world/gen/feature/BigTreeFeature.java ++++ b/net/minecraft/world/gen/feature/BigTreeFeature.java +@@ -31,7 +31,7 @@ + if (Math.pow((double)Math.abs(j) + 0.5D, 2.0D) + Math.pow((double)Math.abs(k) + 0.5D, 2.0D) <= (double)(p_208529_3_ * p_208529_3_)) { + BlockPos blockpos = p_208529_2_.func_177982_a(j, 0, k); + IBlockState iblockstate = p_208529_1_.func_180495_p(blockpos); +- if (iblockstate.func_196958_f() || iblockstate.func_185904_a() == Material.field_151584_j) { ++ if (iblockstate.isAir(p_208529_1_, blockpos) || iblockstate.func_185904_a() == Material.field_151584_j) { + this.func_202278_a(p_208529_1_, blockpos, field_208531_b); + } + } +@@ -86,7 +86,7 @@ + BlockPos blockpos1 = p_208523_3_.func_177963_a((double)(0.5F + (float)j * f), (double)(0.5F + (float)j * f1), (double)(0.5F + (float)j * f2)); + if (p_208523_5_) { + this.func_208520_a(p_208523_1_, p_208523_2_, blockpos1, (IBlockState)field_208530_a.func_206870_a(BlockLog.field_176298_M, this.func_197170_b(p_208523_3_, blockpos1))); +- } else if (!this.func_150523_a(p_208523_2_.func_180495_p(blockpos1).func_177230_c())) { ++ } else if (!this.canGrowInto(p_208523_2_, blockpos1)) { + return j; + } + } +@@ -205,8 +205,7 @@ + } + + private int func_208528_b(Set p_208528_1_, IWorld p_208528_2_, BlockPos p_208528_3_, int p_208528_4_) { +- Block block = p_208528_2_.func_180495_p(p_208528_3_.func_177977_b()).func_177230_c(); +- if (!Block.func_196245_f(block) && block != Blocks.field_196658_i && block != Blocks.field_150458_ak) { ++ if (!p_208528_2_.func_180495_p(p_208528_3_.func_177977_b()).canSustainPlant(p_208528_2_, p_208528_3_.func_177977_b(), net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_196674_t))) { + return -1; + } else { + int i = this.func_208523_a(p_208528_1_, p_208528_2_, p_208528_3_, p_208528_3_.func_177981_b(p_208528_4_ - 1), false); diff --git a/patches/minecraft/net/minecraft/world/gen/feature/BirchTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/BirchTreeFeature.java.patch new file mode 100644 index 0000000000..be0ac3dccf --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/BirchTreeFeature.java.patch @@ -0,0 +1,53 @@ +--- a/net/minecraft/world/gen/feature/BirchTreeFeature.java ++++ b/net/minecraft/world/gen/feature/BirchTreeFeature.java +@@ -26,7 +26,7 @@ + } + + boolean flag = true; +- if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= 256) { ++ if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= p_208519_2_.func_201672_e().func_72800_K()) { + for(int j = p_208519_4_.func_177956_o(); j <= p_208519_4_.func_177956_o() + 1 + i; ++j) { + int k = 1; + if (j == p_208519_4_.func_177956_o()) { +@@ -41,8 +41,8 @@ + + for(int l = p_208519_4_.func_177958_n() - k; l <= p_208519_4_.func_177958_n() + k && flag; ++l) { + for(int i1 = p_208519_4_.func_177952_p() - k; i1 <= p_208519_4_.func_177952_p() + k && flag; ++i1) { +- if (j >= 0 && j < 256) { +- if (!this.func_150523_a(p_208519_2_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_177230_c())) { ++ if (j >= 0 && j < p_208519_2_.func_201672_e().func_72800_K()) { ++ if (!this.canGrowInto(p_208519_2_, blockpos$mutableblockpos.func_181079_c(l, j, i1))) { + flag = false; + } + } else { +@@ -55,9 +55,9 @@ + if (!flag) { + return false; + } else { +- Block block = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).func_177230_c(); +- if ((block == Blocks.field_196658_i || Block.func_196245_f(block) || block == Blocks.field_150458_ak) && p_208519_4_.func_177956_o() < 256 - i - 1) { +- this.func_175921_a(p_208519_2_, p_208519_4_.func_177977_b()); ++ boolean isSoil = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).canSustainPlant(p_208519_2_, p_208519_4_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196674_t); ++ if (isSoil && p_208519_4_.func_177956_o() < p_208519_2_.func_201672_e().func_72800_K() - i - 1) { ++ this.setDirtAt(p_208519_2_, p_208519_4_.func_177977_b(), p_208519_4_); + + for(int i2 = p_208519_4_.func_177956_o() - 3 + i; i2 <= p_208519_4_.func_177956_o() + i; ++i2) { + int k2 = i2 - (p_208519_4_.func_177956_o() + i); +@@ -71,7 +71,7 @@ + if (Math.abs(j1) != l2 || Math.abs(l1) != l2 || p_208519_3_.nextInt(2) != 0 && k2 != 0) { + BlockPos blockpos = new BlockPos(i3, i2, k1); + IBlockState iblockstate = p_208519_2_.func_180495_p(blockpos); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, blockpos) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_202278_a(p_208519_2_, blockpos, field_181630_b); + } + } +@@ -81,7 +81,7 @@ + + for(int j2 = 0; j2 < i; ++j2) { + IBlockState iblockstate1 = p_208519_2_.func_180495_p(p_208519_4_.func_177981_b(j2)); +- if (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate1.isAir(p_208519_2_, p_208519_4_.func_177981_b(j2)) || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177981_b(j2), field_181629_a); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/BonusChestFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/BonusChestFeature.java.patch new file mode 100644 index 0000000000..cb578eb4bb --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/BonusChestFeature.java.patch @@ -0,0 +1,43 @@ +--- a/net/minecraft/world/gen/feature/BonusChestFeature.java ++++ b/net/minecraft/world/gen/feature/BonusChestFeature.java +@@ -13,7 +13,7 @@ + + public class BonusChestFeature extends Feature { + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, NoFeatureConfig p_212245_5_) { +- for(IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 1; iblockstate = p_212245_1_.func_180495_p(p_212245_4_)) { ++ for(IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate.isAir(p_212245_1_, p_212245_4_) || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 1; iblockstate = p_212245_1_.func_180495_p(p_212245_4_)) { + p_212245_4_ = p_212245_4_.func_177977_b(); + } + +@@ -24,26 +24,26 @@ + + for(int i = 0; i < 4; ++i) { + BlockPos blockpos = p_212245_4_.func_177982_a(p_212245_3_.nextInt(4) - p_212245_3_.nextInt(4), p_212245_3_.nextInt(3) - p_212245_3_.nextInt(3), p_212245_3_.nextInt(4) - p_212245_3_.nextInt(4)); +- if (p_212245_1_.func_175623_d(blockpos) && p_212245_1_.func_180495_p(blockpos.func_177977_b()).func_185896_q()) { ++ if (p_212245_1_.func_175623_d(blockpos) && p_212245_1_.func_180495_p(blockpos.func_177977_b()).isTopSolid(p_212245_1_.func_201672_e(), blockpos.func_177977_b())) { + p_212245_1_.func_180501_a(blockpos, Blocks.field_150486_ae.func_176223_P(), 2); + TileEntityLockableLoot.func_195479_a(p_212245_1_, p_212245_3_, blockpos, LootTableList.field_186420_b); + BlockPos blockpos1 = blockpos.func_177974_f(); + BlockPos blockpos2 = blockpos.func_177976_e(); + BlockPos blockpos3 = blockpos.func_177978_c(); + BlockPos blockpos4 = blockpos.func_177968_d(); +- if (p_212245_1_.func_175623_d(blockpos2) && p_212245_1_.func_180495_p(blockpos2.func_177977_b()).func_185896_q()) { ++ if (p_212245_1_.func_175623_d(blockpos2) && p_212245_1_.func_180495_p(blockpos2.func_177977_b()).isTopSolid(p_212245_1_.func_201672_e(), blockpos2.func_177977_b())) { + p_212245_1_.func_180501_a(blockpos2, Blocks.field_150478_aa.func_176223_P(), 2); + } + +- if (p_212245_1_.func_175623_d(blockpos1) && p_212245_1_.func_180495_p(blockpos1.func_177977_b()).func_185896_q()) { ++ if (p_212245_1_.func_175623_d(blockpos1) && p_212245_1_.func_180495_p(blockpos1.func_177977_b()).isTopSolid(p_212245_1_.func_201672_e(), blockpos1.func_177977_b())) { + p_212245_1_.func_180501_a(blockpos1, Blocks.field_150478_aa.func_176223_P(), 2); + } + +- if (p_212245_1_.func_175623_d(blockpos3) && p_212245_1_.func_180495_p(blockpos3.func_177977_b()).func_185896_q()) { ++ if (p_212245_1_.func_175623_d(blockpos3) && p_212245_1_.func_180495_p(blockpos3.func_177977_b()).isTopSolid(p_212245_1_.func_201672_e(), blockpos3.func_177977_b())) { + p_212245_1_.func_180501_a(blockpos3, Blocks.field_150478_aa.func_176223_P(), 2); + } + +- if (p_212245_1_.func_175623_d(blockpos4) && p_212245_1_.func_180495_p(blockpos4.func_177977_b()).func_185896_q()) { ++ if (p_212245_1_.func_175623_d(blockpos4) && p_212245_1_.func_180495_p(blockpos4.func_177977_b()).isTopSolid(p_212245_1_.func_201672_e(), blockpos4.func_177977_b())) { + p_212245_1_.func_180501_a(blockpos4, Blocks.field_150478_aa.func_176223_P(), 2); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/BushFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/BushFeature.java.patch new file mode 100644 index 0000000000..b313c5a050 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/BushFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/BushFeature.java ++++ b/net/minecraft/world/gen/feature/BushFeature.java +@@ -14,7 +14,7 @@ + + for(int j = 0; j < 64; ++j) { + BlockPos blockpos = p_212245_4_.func_177982_a(p_212245_3_.nextInt(8) - p_212245_3_.nextInt(8), p_212245_3_.nextInt(4) - p_212245_3_.nextInt(4), p_212245_3_.nextInt(8) - p_212245_3_.nextInt(8)); +- if (p_212245_1_.func_175623_d(blockpos) && (!p_212245_1_.func_201675_m().func_177495_o() || blockpos.func_177956_o() < 255) && iblockstate.func_196955_c(p_212245_1_, blockpos)) { ++ if (p_212245_1_.func_175623_d(blockpos) && (!p_212245_1_.func_201675_m().func_177495_o() || blockpos.func_177956_o() < p_212245_1_.func_201672_e().func_72800_K() - 1) && iblockstate.func_196955_c(p_212245_1_, blockpos)) { + p_212245_1_.func_180501_a(blockpos, iblockstate, 2); + ++i; + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/CanopyTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/CanopyTreeFeature.java.patch new file mode 100644 index 0000000000..1d6daeba22 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/CanopyTreeFeature.java.patch @@ -0,0 +1,60 @@ +--- a/net/minecraft/world/gen/feature/CanopyTreeFeature.java ++++ b/net/minecraft/world/gen/feature/CanopyTreeFeature.java +@@ -27,15 +27,16 @@ + if (k >= 1 && k + i + 1 < 256) { + BlockPos blockpos = p_208519_4_.func_177977_b(); + Block block = p_208519_2_.func_180495_p(blockpos).func_177230_c(); +- if (block != Blocks.field_196658_i && !Block.func_196245_f(block)) { ++ boolean isSoil = p_208519_2_.func_180495_p(blockpos).canSustainPlant(p_208519_2_, blockpos, net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196680_y); ++ if (!isSoil) { + return false; + } else if (!this.func_181638_a(p_208519_2_, p_208519_4_, i)) { + return false; + } else { +- this.func_175921_a(p_208519_2_, blockpos); +- this.func_175921_a(p_208519_2_, blockpos.func_177974_f()); +- this.func_175921_a(p_208519_2_, blockpos.func_177968_d()); +- this.func_175921_a(p_208519_2_, blockpos.func_177968_d().func_177974_f()); ++ this.setDirtAt(p_208519_2_, blockpos, blockpos.func_177984_a()); ++ this.setDirtAt(p_208519_2_, blockpos.func_177974_f(), blockpos.func_177984_a()); ++ this.setDirtAt(p_208519_2_, blockpos.func_177968_d(), blockpos.func_177984_a()); ++ this.setDirtAt(p_208519_2_, blockpos.func_177968_d().func_177974_f(), blockpos.func_177984_a()); + EnumFacing enumfacing = EnumFacing.Plane.HORIZONTAL.func_179518_a(p_208519_3_); + int i1 = i - p_208519_3_.nextInt(4); + int j1 = 2 - p_208519_3_.nextInt(3); +@@ -53,7 +54,7 @@ + int k2 = k + j2; + BlockPos blockpos1 = new BlockPos(k1, k2, l1); + IBlockState iblockstate = p_208519_2_.func_180495_p(blockpos1); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, blockpos1) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208533_a(p_208519_1_, p_208519_2_, blockpos1); + this.func_208533_a(p_208519_1_, p_208519_2_, blockpos1.func_177974_f()); + this.func_208533_a(p_208519_1_, p_208519_2_, blockpos1.func_177968_d()); +@@ -144,7 +145,7 @@ + + for(int j1 = -i1; j1 <= i1; ++j1) { + for(int k1 = -i1; k1 <= i1; ++k1) { +- if (!this.func_150523_a(p_181638_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(i + j1, j + l, k + k1)).func_177230_c())) { ++ if (!this.canGrowInto(p_181638_1_, blockpos$mutableblockpos.func_181079_c(i + j1, j + l, k + k1))) { + return false; + } + } +@@ -155,7 +156,7 @@ + } + + private void func_208533_a(Set p_208533_1_, IWorld p_208533_2_, BlockPos p_208533_3_) { +- if (this.func_150523_a(p_208533_2_.func_180495_p(p_208533_3_).func_177230_c())) { ++ if (this.canGrowInto(p_208533_2_, p_208533_3_)) { + this.func_208520_a(p_208533_1_, p_208533_2_, p_208533_3_, field_181640_a); + } + +@@ -163,7 +164,7 @@ + + private void func_202414_a(IWorld p_202414_1_, int p_202414_2_, int p_202414_3_, int p_202414_4_) { + BlockPos blockpos = new BlockPos(p_202414_2_, p_202414_3_, p_202414_4_); +- if (p_202414_1_.func_180495_p(blockpos).func_196958_f()) { ++ if (p_202414_1_.func_180495_p(blockpos).isAir(p_202414_1_, blockpos)) { + this.func_202278_a(p_202414_1_, blockpos, field_181641_b); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/DeadBushFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/DeadBushFeature.java.patch new file mode 100644 index 0000000000..7f5a6c5583 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/DeadBushFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/DeadBushFeature.java ++++ b/net/minecraft/world/gen/feature/DeadBushFeature.java +@@ -14,7 +14,7 @@ + private static final BlockDeadBush field_197166_a = (BlockDeadBush)Blocks.field_196555_aI; + + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, NoFeatureConfig p_212245_5_) { +- for(IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate = p_212245_1_.func_180495_p(p_212245_4_)) { ++ for(IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate.isAir(p_212245_1_, p_212245_4_) || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate = p_212245_1_.func_180495_p(p_212245_4_)) { + p_212245_4_ = p_212245_4_.func_177977_b(); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/DoublePlantFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/DoublePlantFeature.java.patch new file mode 100644 index 0000000000..d6cebab210 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/DoublePlantFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/DoublePlantFeature.java ++++ b/net/minecraft/world/gen/feature/DoublePlantFeature.java +@@ -13,7 +13,7 @@ + + for(int i = 0; i < 64; ++i) { + BlockPos blockpos = p_212245_4_.func_177982_a(p_212245_3_.nextInt(8) - p_212245_3_.nextInt(8), p_212245_3_.nextInt(4) - p_212245_3_.nextInt(4), p_212245_3_.nextInt(8) - p_212245_3_.nextInt(8)); +- if (p_212245_1_.func_175623_d(blockpos) && blockpos.func_177956_o() < 254 && p_212245_5_.field_202435_a.func_196955_c(p_212245_1_, blockpos)) { ++ if (p_212245_1_.func_175623_d(blockpos) && blockpos.func_177956_o() < p_212245_1_.func_201672_e().func_72800_K() - 2 && p_212245_5_.field_202435_a.func_196955_c(p_212245_1_, blockpos)) { + ((BlockDoublePlant)p_212245_5_.field_202435_a.func_177230_c()).func_196390_a(p_212245_1_, blockpos, 2); + flag = true; + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/DungeonsFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/DungeonsFeature.java.patch new file mode 100644 index 0000000000..1deeff9aea --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/DungeonsFeature.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/gen/feature/DungeonsFeature.java ++++ b/net/minecraft/world/gen/feature/DungeonsFeature.java +@@ -117,6 +117,6 @@ + } + + private EntityType func_201043_a(Random p_201043_1_) { +- return field_175916_b[p_201043_1_.nextInt(field_175916_b.length)]; ++ return net.minecraftforge.common.DungeonHooks.getRandomDungeonMob(p_201043_1_); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/Feature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/Feature.java.patch new file mode 100644 index 0000000000..92432fa4b9 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/Feature.java.patch @@ -0,0 +1,21 @@ +--- a/net/minecraft/world/gen/feature/Feature.java ++++ b/net/minecraft/world/gen/feature/Feature.java +@@ -64,15 +64,15 @@ + public static final AbstractTreeFeature field_202339_q = new BigTreeFeature(false); + public static final AbstractTreeFeature field_202340_r = new BirchTreeFeature(false, false); + public static final AbstractTreeFeature field_202341_s = new BirchTreeFeature(false, true); +- public static final AbstractTreeFeature field_202342_t = new ShrubFeature(Blocks.field_196620_N.func_176223_P(), Blocks.field_196642_W.func_176223_P()); +- public static final AbstractTreeFeature field_202343_u = new JungleTreeFeature(false, 4, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P(), true); ++ public static final AbstractTreeFeature field_202342_t = new ShrubFeature(Blocks.field_196620_N.func_176223_P(), Blocks.field_196642_W.func_176223_P()).setSapling((net.minecraftforge.common.IPlantable)Blocks.field_196678_w); ++ public static final AbstractTreeFeature field_202343_u = new JungleTreeFeature(false, 4, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P(), true).setSapling((net.minecraftforge.common.IPlantable)Blocks.field_196678_w); + public static final AbstractTreeFeature field_202344_v = new PointyTaigaTreeFeature(); + public static final AbstractTreeFeature field_202345_w = new CanopyTreeFeature(false); + public static final AbstractTreeFeature field_202346_x = new SavannaTreeFeature(false); + public static final AbstractTreeFeature field_202347_y = new TallTaigaTreeFeature(false); + public static final AbstractTreeFeature field_202348_z = new SwampTreeFeature(); + public static final AbstractTreeFeature field_202301_A = new TreeFeature(false); +- public static final HugeTreesFeature field_202302_B = new MegaJungleFeature(false, 10, 20, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P()); ++ public static final HugeTreesFeature field_202302_B = new MegaJungleFeature(false, 10, 20, Blocks.field_196620_N.func_176223_P(), Blocks.field_196648_Z.func_176223_P()).setSapling((net.minecraftforge.common.IPlantable)Blocks.field_196678_w); + public static final HugeTreesFeature field_202303_C = new MegaPineTree(false, false); + public static final HugeTreesFeature field_202304_D = new MegaPineTree(false, true); + public static final AbstractFlowersFeature field_202305_E = new DefaultFlowersFeature(); diff --git a/patches/minecraft/net/minecraft/world/gen/feature/GlowStoneFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/GlowStoneFeature.java.patch new file mode 100644 index 0000000000..21bc8f723b --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/GlowStoneFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/GlowStoneFeature.java ++++ b/net/minecraft/world/gen/feature/GlowStoneFeature.java +@@ -19,7 +19,7 @@ + + for(int i = 0; i < 1500; ++i) { + BlockPos blockpos = p_212245_4_.func_177982_a(p_212245_3_.nextInt(8) - p_212245_3_.nextInt(8), -p_212245_3_.nextInt(12), p_212245_3_.nextInt(8) - p_212245_3_.nextInt(8)); +- if (p_212245_1_.func_180495_p(blockpos).func_196958_f()) { ++ if (p_212245_1_.func_175623_d(blockpos)) { + int j = 0; + + for(EnumFacing enumfacing : EnumFacing.values()) { diff --git a/patches/minecraft/net/minecraft/world/gen/feature/HellLavaFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/HellLavaFeature.java.patch new file mode 100644 index 0000000000..4f5dd4390f --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/HellLavaFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/HellLavaFeature.java ++++ b/net/minecraft/world/gen/feature/HellLavaFeature.java +@@ -15,7 +15,7 @@ + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, HellLavaConfig p_212245_5_) { + if (p_212245_1_.func_180495_p(p_212245_4_.func_177984_a()) != field_205173_a) { + return false; +- } else if (!p_212245_1_.func_180495_p(p_212245_4_).func_196958_f() && p_212245_1_.func_180495_p(p_212245_4_) != field_205173_a) { ++ } else if (!p_212245_1_.func_175623_d(p_212245_4_) && p_212245_1_.func_180495_p(p_212245_4_) != field_205173_a) { + return false; + } else { + int i = 0; diff --git a/patches/minecraft/net/minecraft/world/gen/feature/HugeTreesFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/HugeTreesFeature.java.patch new file mode 100644 index 0000000000..c8368a53cd --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/HugeTreesFeature.java.patch @@ -0,0 +1,76 @@ +--- a/net/minecraft/world/gen/feature/HugeTreesFeature.java ++++ b/net/minecraft/world/gen/feature/HugeTreesFeature.java +@@ -14,6 +14,7 @@ + protected final IBlockState field_76520_b; + protected final IBlockState field_76521_c; + protected int field_150538_d; ++ protected net.minecraftforge.common.IPlantable sapling = (net.minecraftforge.common.IPlantable)Blocks.field_196674_t; + + public HugeTreesFeature(boolean p_i46447_1_, int p_i46447_2_, int p_i46447_3_, IBlockState p_i46447_4_, IBlockState p_i46447_5_) { + super(p_i46447_1_); +@@ -34,7 +35,8 @@ + + private boolean func_175926_c(IBlockReader p_175926_1_, BlockPos p_175926_2_, int p_175926_3_) { + boolean flag = true; +- if (p_175926_2_.func_177956_o() >= 1 && p_175926_2_.func_177956_o() + p_175926_3_ + 1 <= 256) { ++ int worldHeight = p_175926_1_ instanceof IWorld ? ((IWorld)p_175926_1_).func_201672_e().func_72800_K() : 256; ++ if (p_175926_2_.func_177956_o() >= 1 && p_175926_2_.func_177956_o() + p_175926_3_ + 1 <= worldHeight) { + for(int i = 0; i <= 1 + p_175926_3_; ++i) { + int j = 2; + if (i == 0) { +@@ -45,7 +47,7 @@ + + for(int k = -j; k <= j && flag; ++k) { + for(int l = -j; l <= j && flag; ++l) { +- if (p_175926_2_.func_177956_o() + i < 0 || p_175926_2_.func_177956_o() + i >= 256 || !this.func_150523_a(p_175926_1_.func_180495_p(p_175926_2_.func_177982_a(k, i, l)).func_177230_c())) { ++ if (p_175926_2_.func_177956_o() + i < 0 || p_175926_2_.func_177956_o() + i >= 256 || !this.canGrowInto(p_175926_1_, p_175926_2_.func_177982_a(k, i, l))) { + flag = false; + } + } +@@ -60,12 +62,12 @@ + + private boolean func_202405_b(IWorld p_202405_1_, BlockPos p_202405_2_) { + BlockPos blockpos = p_202405_2_.func_177977_b(); +- Block block = p_202405_1_.func_180495_p(blockpos).func_177230_c(); +- if ((block == Blocks.field_196658_i || Block.func_196245_f(block)) && p_202405_2_.func_177956_o() >= 2) { +- this.func_175921_a(p_202405_1_, blockpos); +- this.func_175921_a(p_202405_1_, blockpos.func_177974_f()); +- this.func_175921_a(p_202405_1_, blockpos.func_177968_d()); +- this.func_175921_a(p_202405_1_, blockpos.func_177968_d().func_177974_f()); ++ boolean isSoil = p_202405_1_.func_180495_p(blockpos).canSustainPlant(p_202405_1_, blockpos, net.minecraft.util.EnumFacing.UP, sapling); ++ if (isSoil && p_202405_2_.func_177956_o() >= 2) { ++ this.setDirtAt(p_202405_1_, blockpos, p_202405_2_); ++ this.setDirtAt(p_202405_1_, blockpos.func_177974_f(), p_202405_2_); ++ this.setDirtAt(p_202405_1_, blockpos.func_177968_d(), p_202405_2_); ++ this.setDirtAt(p_202405_1_, blockpos.func_177968_d().func_177974_f(), p_202405_2_); + return true; + } else { + return false; +@@ -86,7 +88,7 @@ + if (l + i1 < 7 && l * l + i1 * i1 <= i) { + BlockPos blockpos = p_175925_2_.func_177982_a(j, 0, k); + IBlockState iblockstate = p_175925_1_.func_180495_p(blockpos); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_175925_1_, blockpos) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_202278_a(p_175925_1_, blockpos, this.field_76521_c); + } + } +@@ -103,7 +105,7 @@ + if (j * j + k * k <= i) { + BlockPos blockpos = p_175928_2_.func_177982_a(j, 0, k); + IBlockState iblockstate = p_175928_1_.func_180495_p(blockpos); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_175928_1_, blockpos) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_202278_a(p_175928_1_, blockpos, this.field_76521_c); + } + } +@@ -111,4 +113,9 @@ + } + + } ++ ++ public HugeTreesFeature setSapling(net.minecraftforge.common.IPlantable sapling) { ++ this.sapling = sapling; ++ return this; ++ } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/IceSpikeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/IceSpikeFeature.java.patch new file mode 100644 index 0000000000..87bd673a67 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/IceSpikeFeature.java.patch @@ -0,0 +1,28 @@ +--- a/net/minecraft/world/gen/feature/IceSpikeFeature.java ++++ b/net/minecraft/world/gen/feature/IceSpikeFeature.java +@@ -38,14 +38,14 @@ + if ((i1 == 0 && j1 == 0 || !(f1 * f1 + f2 * f2 > f * f)) && (i1 != -l && i1 != l && j1 != -l && j1 != l || !(p_212245_3_.nextFloat() > 0.75F))) { + IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_.func_177982_a(i1, k, j1)); + Block block = iblockstate.func_177230_c(); +- if (iblockstate.func_196958_f() || Block.func_196245_f(block) || block == Blocks.field_196604_cC || block == Blocks.field_150432_aD) { ++ if (iblockstate.isAir(p_212245_1_, p_212245_4_.func_177982_a(i1, k, j1)) || Block.func_196245_f(block) || block == Blocks.field_196604_cC || block == Blocks.field_150432_aD) { + this.func_202278_a(p_212245_1_, p_212245_4_.func_177982_a(i1, k, j1), Blocks.field_150403_cj.func_176223_P()); + } + + if (k != 0 && l > 1) { + iblockstate = p_212245_1_.func_180495_p(p_212245_4_.func_177982_a(i1, -k, j1)); + block = iblockstate.func_177230_c(); +- if (iblockstate.func_196958_f() || Block.func_196245_f(block) || block == Blocks.field_196604_cC || block == Blocks.field_150432_aD) { ++ if (iblockstate.isAir(p_212245_1_, p_212245_4_.func_177982_a(i1, -k, j1)) || Block.func_196245_f(block) || block == Blocks.field_196604_cC || block == Blocks.field_150432_aD) { + this.func_202278_a(p_212245_1_, p_212245_4_.func_177982_a(i1, -k, j1), Blocks.field_150403_cj.func_176223_P()); + } + } +@@ -72,7 +72,7 @@ + while(blockpos.func_177956_o() > 50) { + IBlockState iblockstate1 = p_212245_1_.func_180495_p(blockpos); + Block block1 = iblockstate1.func_177230_c(); +- if (!iblockstate1.func_196958_f() && !Block.func_196245_f(block1) && block1 != Blocks.field_196604_cC && block1 != Blocks.field_150432_aD && block1 != Blocks.field_150403_cj) { ++ if (!iblockstate1.isAir(p_212245_1_, blockpos) && !Block.func_196245_f(block1) && block1 != Blocks.field_196604_cC && block1 != Blocks.field_150432_aD && block1 != Blocks.field_150403_cj) { + break; + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/JungleGrassFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/JungleGrassFeature.java.patch new file mode 100644 index 0000000000..2ac69da390 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/JungleGrassFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/JungleGrassFeature.java ++++ b/net/minecraft/world/gen/feature/JungleGrassFeature.java +@@ -17,7 +17,7 @@ + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, NoFeatureConfig p_212245_5_) { + IBlockState iblockstate = this.func_202357_a(p_212245_3_); + +- for(IBlockState iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_)) { ++ for(IBlockState iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate1.isAir(p_212245_1_, p_212245_4_) || iblockstate1.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_)) { + p_212245_4_ = p_212245_4_.func_177977_b(); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/LiquidsFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/LiquidsFeature.java.patch new file mode 100644 index 0000000000..00caa10969 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/LiquidsFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/LiquidsFeature.java ++++ b/net/minecraft/world/gen/feature/LiquidsFeature.java +@@ -16,7 +16,7 @@ + return false; + } else { + IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); +- if (!iblockstate.func_196958_f() && !Block.func_196252_e(iblockstate.func_177230_c())) { ++ if (!iblockstate.isAir(p_212245_1_, p_212245_4_) && !Block.func_196252_e(iblockstate.func_177230_c())) { + return false; + } else { + int i = 0; diff --git a/patches/minecraft/net/minecraft/world/gen/feature/MegaJungleFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/MegaJungleFeature.java.patch new file mode 100644 index 0000000000..7eb767e28d --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/MegaJungleFeature.java.patch @@ -0,0 +1,38 @@ +--- a/net/minecraft/world/gen/feature/MegaJungleFeature.java ++++ b/net/minecraft/world/gen/feature/MegaJungleFeature.java +@@ -44,7 +44,7 @@ + + for(int i2 = 0; i2 < i; ++i2) { + BlockPos blockpos = p_208519_4_.func_177981_b(i2); +- if (this.func_150523_a(p_208519_2_.func_180495_p(blockpos).func_177230_c())) { ++ if (this.canGrowInto(p_208519_2_, blockpos)) { + this.func_208520_a(p_208519_1_, p_208519_2_, blockpos, this.field_76520_b); + if (i2 > 0) { + this.func_202407_a(p_208519_2_, p_208519_3_, blockpos.func_177976_e(), BlockVine.field_176278_M); +@@ -54,7 +54,7 @@ + + if (i2 < i - 1) { + BlockPos blockpos1 = blockpos.func_177974_f(); +- if (this.func_150523_a(p_208519_2_.func_180495_p(blockpos1).func_177230_c())) { ++ if (this.canGrowInto(p_208519_2_, blockpos1)) { + this.func_208520_a(p_208519_1_, p_208519_2_, blockpos1, this.field_76520_b); + if (i2 > 0) { + this.func_202407_a(p_208519_2_, p_208519_3_, blockpos1.func_177974_f(), BlockVine.field_176280_O); +@@ -63,7 +63,7 @@ + } + + BlockPos blockpos2 = blockpos.func_177968_d().func_177974_f(); +- if (this.func_150523_a(p_208519_2_.func_180495_p(blockpos2).func_177230_c())) { ++ if (this.canGrowInto(p_208519_2_, blockpos2)) { + this.func_208520_a(p_208519_1_, p_208519_2_, blockpos2, this.field_76520_b); + if (i2 > 0) { + this.func_202407_a(p_208519_2_, p_208519_3_, blockpos2.func_177974_f(), BlockVine.field_176280_O); +@@ -72,7 +72,7 @@ + } + + BlockPos blockpos3 = blockpos.func_177968_d(); +- if (this.func_150523_a(p_208519_2_.func_180495_p(blockpos3).func_177230_c())) { ++ if (this.canGrowInto(p_208519_2_, blockpos3)) { + this.func_208520_a(p_208519_1_, p_208519_2_, blockpos3, this.field_76520_b); + if (i2 > 0) { + this.func_202407_a(p_208519_2_, p_208519_3_, blockpos3.func_177976_e(), BlockVine.field_176278_M); diff --git a/patches/minecraft/net/minecraft/world/gen/feature/MegaPineTree.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/MegaPineTree.java.patch new file mode 100644 index 0000000000..9b539078a1 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/MegaPineTree.java.patch @@ -0,0 +1,39 @@ +--- a/net/minecraft/world/gen/feature/MegaPineTree.java ++++ b/net/minecraft/world/gen/feature/MegaPineTree.java +@@ -30,23 +30,23 @@ + + for(int j = 0; j < i; ++j) { + IBlockState iblockstate = p_208519_2_.func_180495_p(p_208519_4_.func_177981_b(j)); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, p_208519_4_.func_177981_b(j)) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177981_b(j), this.field_76520_b); + } + + if (j < i - 1) { + iblockstate = p_208519_2_.func_180495_p(p_208519_4_.func_177982_a(1, j, 0)); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, p_208519_4_.func_177982_a(1, j, 0)) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177982_a(1, j, 0), this.field_76520_b); + } + + iblockstate = p_208519_2_.func_180495_p(p_208519_4_.func_177982_a(1, j, 1)); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, p_208519_4_.func_177982_a(1, j, 1)) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177982_a(1, j, 1), this.field_76520_b); + } + + iblockstate = p_208519_2_.func_180495_p(p_208519_4_.func_177982_a(0, j, 1)); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, p_208519_4_.func_177982_a(0, j, 1)) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177982_a(0, j, 1), this.field_76520_b); + } + } +@@ -108,7 +108,7 @@ + break; + } + +- if (!iblockstate.func_196958_f() && i < 0) { ++ if (!iblockstate.isAir(p_175934_1_, blockpos) && i < 0) { + break; + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/MinableFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/MinableFeature.java.patch new file mode 100644 index 0000000000..04341dd62c --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/MinableFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/MinableFeature.java ++++ b/net/minecraft/world/gen/feature/MinableFeature.java +@@ -103,7 +103,7 @@ + if (!bitset.get(k2)) { + bitset.set(k2); + blockpos$mutableblockpos.func_181079_c(l1, i2, j2); +- if (p_207803_3_.field_202442_b.test(p_207803_1_.func_180495_p(blockpos$mutableblockpos))) { ++ if (p_207803_1_.func_180495_p(blockpos$mutableblockpos).isReplaceableOreGen(p_207803_1_.func_201672_e(), blockpos$mutableblockpos, p_207803_3_.field_202442_b)) { + p_207803_1_.func_180501_a(blockpos$mutableblockpos, p_207803_3_.field_202444_d, 2); + ++i; + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/PointyTaigaTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/PointyTaigaTreeFeature.java.patch new file mode 100644 index 0000000000..80aec93ada --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/PointyTaigaTreeFeature.java.patch @@ -0,0 +1,44 @@ +--- a/net/minecraft/world/gen/feature/PointyTaigaTreeFeature.java ++++ b/net/minecraft/world/gen/feature/PointyTaigaTreeFeature.java +@@ -37,8 +37,8 @@ + + for(int k1 = p_208519_4_.func_177958_n() - j1; k1 <= p_208519_4_.func_177958_n() + j1 && flag; ++k1) { + for(int l1 = p_208519_4_.func_177952_p() - j1; l1 <= p_208519_4_.func_177952_p() + j1 && flag; ++l1) { +- if (i1 >= 0 && i1 < 256) { +- if (!this.func_150523_a(p_208519_2_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k1, i1, l1)).func_177230_c())) { ++ if (i1 >= 0 && i1 < p_208519_2_.func_201672_e().func_72800_K()) { ++ if (!this.canGrowInto(p_208519_2_, blockpos$mutableblockpos.func_181079_c(k1, i1, l1))) { + flag = false; + } + } else { +@@ -51,9 +51,9 @@ + if (!flag) { + return false; + } else { +- Block block = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).func_177230_c(); +- if ((block == Blocks.field_196658_i || Block.func_196245_f(block)) && p_208519_4_.func_177956_o() < 256 - i - 1) { +- this.func_175921_a(p_208519_2_, p_208519_4_.func_177977_b()); ++ boolean isSoil = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).canSustainPlant(p_208519_2_, p_208519_4_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196675_u); ++ if (isSoil && p_208519_4_.func_177956_o() < p_208519_2_.func_201672_e().func_72800_K() - i - 1) { ++ this.setDirtAt(p_208519_2_, p_208519_4_.func_177977_b(), p_208519_4_); + int k2 = 0; + + for(int l2 = p_208519_4_.func_177956_o() + i; l2 >= p_208519_4_.func_177956_o() + j; --l2) { +@@ -64,7 +64,7 @@ + int j2 = i2 - p_208519_4_.func_177952_p(); + if (Math.abs(k3) != k2 || Math.abs(j2) != k2 || k2 <= 0) { + BlockPos blockpos = new BlockPos(j3, l2, i2); +- if (!p_208519_2_.func_180495_p(blockpos).func_200015_d(p_208519_2_, blockpos)) { ++ if (p_208519_2_.func_180495_p(blockpos).canBeReplacedByLeaves(p_208519_2_, blockpos)) { + this.func_202278_a(p_208519_2_, blockpos, field_181637_b); + } + } +@@ -80,7 +80,7 @@ + + for(int i3 = 0; i3 < i - 1; ++i3) { + IBlockState iblockstate = p_208519_2_.func_180495_p(p_208519_4_.func_177981_b(i3)); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, p_208519_4_.func_177981_b(i3)) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177981_b(i3), field_181636_a); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/ReedFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/ReedFeature.java.patch new file mode 100644 index 0000000000..0313e1df86 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/ReedFeature.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/gen/feature/ReedFeature.java ++++ b/net/minecraft/world/gen/feature/ReedFeature.java +@@ -18,7 +18,6 @@ + BlockPos blockpos1 = blockpos.func_177977_b(); + if (p_212245_1_.func_204610_c(blockpos1.func_177976_e()).func_206884_a(FluidTags.field_206959_a) || p_212245_1_.func_204610_c(blockpos1.func_177974_f()).func_206884_a(FluidTags.field_206959_a) || p_212245_1_.func_204610_c(blockpos1.func_177978_c()).func_206884_a(FluidTags.field_206959_a) || p_212245_1_.func_204610_c(blockpos1.func_177968_d()).func_206884_a(FluidTags.field_206959_a)) { + int k = 2 + p_212245_3_.nextInt(p_212245_3_.nextInt(3) + 1); +- + for(int l = 0; l < k; ++l) { + if (Blocks.field_196608_cF.func_176223_P().func_196955_c(p_212245_1_, blockpos)) { + p_212245_1_.func_180501_a(blockpos.func_177981_b(l), Blocks.field_196608_cF.func_176223_P(), 2); diff --git a/patches/minecraft/net/minecraft/world/gen/feature/SavannaTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/SavannaTreeFeature.java.patch new file mode 100644 index 0000000000..c621398299 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/SavannaTreeFeature.java.patch @@ -0,0 +1,62 @@ +--- a/net/minecraft/world/gen/feature/SavannaTreeFeature.java ++++ b/net/minecraft/world/gen/feature/SavannaTreeFeature.java +@@ -21,7 +21,7 @@ + public boolean func_208519_a(Set p_208519_1_, IWorld p_208519_2_, Random p_208519_3_, BlockPos p_208519_4_) { + int i = p_208519_3_.nextInt(3) + p_208519_3_.nextInt(3) + 5; + boolean flag = true; +- if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= 256) { ++ if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= p_208519_2_.func_201672_e().func_72800_K()) { + for(int j = p_208519_4_.func_177956_o(); j <= p_208519_4_.func_177956_o() + 1 + i; ++j) { + int k = 1; + if (j == p_208519_4_.func_177956_o()) { +@@ -36,8 +36,8 @@ + + for(int l = p_208519_4_.func_177958_n() - k; l <= p_208519_4_.func_177958_n() + k && flag; ++l) { + for(int i1 = p_208519_4_.func_177952_p() - k; i1 <= p_208519_4_.func_177952_p() + k && flag; ++i1) { +- if (j >= 0 && j < 256) { +- if (!this.func_150523_a(p_208519_2_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_177230_c())) { ++ if (j >= 0 && j < p_208519_2_.func_201672_e().func_72800_K()) { ++ if (!this.canGrowInto(p_208519_2_, blockpos$mutableblockpos.func_181079_c(l, j, i1))) { + flag = false; + } + } else { +@@ -50,9 +50,9 @@ + if (!flag) { + return false; + } else { +- Block block = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).func_177230_c(); +- if ((block == Blocks.field_196658_i || Block.func_196245_f(block)) && p_208519_4_.func_177956_o() < 256 - i - 1) { +- this.func_175921_a(p_208519_2_, p_208519_4_.func_177977_b()); ++ boolean isSoil = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).canSustainPlant(p_208519_2_, p_208519_4_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196679_x); ++ if (isSoil && p_208519_4_.func_177956_o() < p_208519_2_.func_201672_e().func_72800_K() - i - 1) { ++ this.setDirtAt(p_208519_2_, p_208519_4_.func_177977_b(), p_208519_4_); + EnumFacing enumfacing = EnumFacing.Plane.HORIZONTAL.func_179518_a(p_208519_3_); + int k2 = i - p_208519_3_.nextInt(4) - 1; + int l2 = 3 - p_208519_3_.nextInt(3); +@@ -70,7 +70,7 @@ + + BlockPos blockpos = new BlockPos(i3, i2, j1); + IBlockState iblockstate = p_208519_2_.func_180495_p(blockpos); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.isAir(p_208519_2_, blockpos) || iblockstate.func_203425_a(BlockTags.field_206952_E)) { + this.func_208532_a(p_208519_1_, p_208519_2_, blockpos); + k1 = i2; + } +@@ -113,7 +113,7 @@ + j1 += enumfacing1.func_82599_e(); + BlockPos blockpos1 = new BlockPos(i3, j2, j1); + IBlockState iblockstate1 = p_208519_2_.func_180495_p(blockpos1); +- if (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate1.isAir(p_208519_2_, blockpos1) || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { + this.func_208532_a(p_208519_1_, p_208519_2_, blockpos1); + k1 = j2; + } +@@ -159,7 +159,7 @@ + + private void func_175924_b(IWorld p_175924_1_, BlockPos p_175924_2_) { + IBlockState iblockstate = p_175924_1_.func_180495_p(p_175924_2_); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate.canBeReplacedByLeaves(p_175924_1_, p_175924_2_)) { + this.func_202278_a(p_175924_1_, p_175924_2_, field_181644_b); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/ShrubFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/ShrubFeature.java.patch new file mode 100644 index 0000000000..4cbd4a76f1 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/ShrubFeature.java.patch @@ -0,0 +1,44 @@ +--- a/net/minecraft/world/gen/feature/ShrubFeature.java ++++ b/net/minecraft/world/gen/feature/ShrubFeature.java +@@ -12,6 +12,7 @@ + public class ShrubFeature extends AbstractTreeFeature { + private final IBlockState field_150528_a; + private final IBlockState field_150527_b; ++ protected net.minecraftforge.common.IPlantable sapling = (net.minecraftforge.common.IPlantable)Blocks.field_196674_t; + + public ShrubFeature(IBlockState p_i46450_1_, IBlockState p_i46450_2_) { + super(false); +@@ -20,12 +21,11 @@ + } + + public boolean func_208519_a(Set p_208519_1_, IWorld p_208519_2_, Random p_208519_3_, BlockPos p_208519_4_) { +- for(IBlockState iblockstate = p_208519_2_.func_180495_p(p_208519_4_); (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_208519_4_.func_177956_o() > 0; iblockstate = p_208519_2_.func_180495_p(p_208519_4_)) { ++ for(IBlockState iblockstate = p_208519_2_.func_180495_p(p_208519_4_); (iblockstate.isAir(p_208519_2_, p_208519_4_) || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_208519_4_.func_177956_o() > 0; iblockstate = p_208519_2_.func_180495_p(p_208519_4_)) { + p_208519_4_ = p_208519_4_.func_177977_b(); + } + +- Block block = p_208519_2_.func_180495_p(p_208519_4_).func_177230_c(); +- if (Block.func_196245_f(block) || block == Blocks.field_196658_i) { ++ if (p_208519_2_.func_180495_p(p_208519_4_).canSustainPlant(p_208519_2_, p_208519_4_, net.minecraft.util.EnumFacing.UP, sapling)) { + p_208519_4_ = p_208519_4_.func_177984_a(); + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_, this.field_150527_b); + +@@ -41,7 +41,7 @@ + if (Math.abs(i1) != k || Math.abs(k1) != k || p_208519_3_.nextInt(2) != 0) { + BlockPos blockpos = new BlockPos(l, i, j1); + IBlockState iblockstate1 = p_208519_2_.func_180495_p(blockpos); +- if (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate1.canBeReplacedByLeaves(p_208519_2_, blockpos)) { + this.func_202278_a(p_208519_2_, blockpos, this.field_150528_a); + } + } +@@ -52,4 +52,9 @@ + + return true; + } ++ ++ public ShrubFeature setSapling(net.minecraftforge.common.IPlantable sapling) { ++ this.sapling = sapling; ++ return this; ++ } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/SwampTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/SwampTreeFeature.java.patch new file mode 100644 index 0000000000..96c3c7f647 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/SwampTreeFeature.java.patch @@ -0,0 +1,87 @@ +--- a/net/minecraft/world/gen/feature/SwampTreeFeature.java ++++ b/net/minecraft/world/gen/feature/SwampTreeFeature.java +@@ -27,7 +27,7 @@ + } + + boolean flag = true; +- if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= 256) { ++ if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= p_208519_2_.func_201672_e().func_72800_K()) { + for(int j = p_208519_4_.func_177956_o(); j <= p_208519_4_.func_177956_o() + 1 + i; ++j) { + int k = 1; + if (j == p_208519_4_.func_177956_o()) { +@@ -42,10 +42,10 @@ + + for(int l = p_208519_4_.func_177958_n() - k; l <= p_208519_4_.func_177958_n() + k && flag; ++l) { + for(int i1 = p_208519_4_.func_177952_p() - k; i1 <= p_208519_4_.func_177952_p() + k && flag; ++i1) { +- if (j >= 0 && j < 256) { ++ if (j >= 0 && j < p_208519_2_.func_201672_e().func_72800_K()) { + IBlockState iblockstate = p_208519_2_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)); + Block block = iblockstate.func_177230_c(); +- if (!iblockstate.func_196958_f() && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (!iblockstate.isAir(p_208519_2_, blockpos$mutableblockpos) && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { + if (block == Blocks.field_150355_j) { + if (j > p_208519_4_.func_177956_o()) { + flag = false; +@@ -64,9 +64,8 @@ + if (!flag) { + return false; + } else { +- Block block1 = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).func_177230_c(); +- if ((block1 == Blocks.field_196658_i || Block.func_196245_f(block1)) && p_208519_4_.func_177956_o() < 256 - i - 1) { +- this.func_175921_a(p_208519_2_, p_208519_4_.func_177977_b()); ++ if (p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).canSustainPlant(p_208519_2_, p_208519_4_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196674_t) && p_208519_4_.func_177956_o() < p_208519_2_.func_201672_e().func_72800_K() - i - 1) { ++ this.setDirtAt(p_208519_2_, p_208519_4_.func_177977_b(), p_208519_4_); + + for(int k1 = p_208519_4_.func_177956_o() - 3 + i; k1 <= p_208519_4_.func_177956_o() + i; ++k1) { + int j2 = k1 - (p_208519_4_.func_177956_o() + i); +@@ -79,7 +78,7 @@ + int j1 = i4 - p_208519_4_.func_177952_p(); + if (Math.abs(k3) != l2 || Math.abs(j1) != l2 || p_208519_3_.nextInt(2) != 0 && j2 != 0) { + BlockPos blockpos = new BlockPos(j3, k1, i4); +- if (!p_208519_2_.func_180495_p(blockpos).func_200015_d(p_208519_2_, blockpos)) { ++ if (p_208519_2_.func_180495_p(blockpos).canBeReplacedByLeaves(p_208519_2_, blockpos)) { + this.func_202278_a(p_208519_2_, blockpos, field_181649_b); + } + } +@@ -90,7 +89,7 @@ + for(int l1 = 0; l1 < i; ++l1) { + IBlockState iblockstate1 = p_208519_2_.func_180495_p(p_208519_4_.func_177981_b(l1)); + Block block2 = iblockstate1.func_177230_c(); +- if (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E) || block2 == Blocks.field_150355_j) { ++ if (iblockstate1.isAir(p_208519_2_, p_208519_4_.func_177981_b(l1)) || iblockstate1.func_203425_a(BlockTags.field_206952_E) || block2 == Blocks.field_150355_j) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177981_b(l1), field_181648_a); + } + } +@@ -108,19 +107,19 @@ + BlockPos blockpos4 = blockpos$mutableblockpos1.func_177974_f(); + BlockPos blockpos1 = blockpos$mutableblockpos1.func_177978_c(); + BlockPos blockpos2 = blockpos$mutableblockpos1.func_177968_d(); +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos3).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos3)) { + this.func_181647_a(p_208519_2_, blockpos3, BlockVine.field_176278_M); + } + +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos4).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos4)) { + this.func_181647_a(p_208519_2_, blockpos4, BlockVine.field_176280_O); + } + +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos1).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos1)) { + this.func_181647_a(p_208519_2_, blockpos1, BlockVine.field_176279_N); + } + +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos2).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos2)) { + this.func_181647_a(p_208519_2_, blockpos2, BlockVine.field_176273_b); + } + } +@@ -143,7 +142,7 @@ + this.func_202278_a(p_181647_1_, p_181647_2_, iblockstate); + int i = 4; + +- for(BlockPos blockpos = p_181647_2_.func_177977_b(); p_181647_1_.func_180495_p(blockpos).func_196958_f() && i > 0; --i) { ++ for(BlockPos blockpos = p_181647_2_.func_177977_b(); p_181647_1_.func_175623_d(blockpos) && i > 0; --i) { + this.func_202278_a(p_181647_1_, blockpos, iblockstate); + blockpos = blockpos.func_177977_b(); + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/TaigaGrassFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/TaigaGrassFeature.java.patch new file mode 100644 index 0000000000..c1bc7c2e3b --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/TaigaGrassFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/TaigaGrassFeature.java ++++ b/net/minecraft/world/gen/feature/TaigaGrassFeature.java +@@ -17,7 +17,7 @@ + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, NoFeatureConfig p_212245_5_) { + IBlockState iblockstate = this.func_202388_a(p_212245_3_); + +- for(IBlockState iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_)) { ++ for(IBlockState iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate1.isAir(p_212245_1_, p_212245_4_) || iblockstate1.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate1 = p_212245_1_.func_180495_p(p_212245_4_)) { + p_212245_4_ = p_212245_4_.func_177977_b(); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/TallGrassFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/TallGrassFeature.java.patch new file mode 100644 index 0000000000..f0dab05b24 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/TallGrassFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/TallGrassFeature.java ++++ b/net/minecraft/world/gen/feature/TallGrassFeature.java +@@ -10,7 +10,7 @@ + + public class TallGrassFeature extends Feature { + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, TallGrassConfig p_212245_5_) { +- for(IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate = p_212245_1_.func_180495_p(p_212245_4_)) { ++ for(IBlockState iblockstate = p_212245_1_.func_180495_p(p_212245_4_); (iblockstate.isAir(p_212245_1_, p_212245_4_) || iblockstate.func_203425_a(BlockTags.field_206952_E)) && p_212245_4_.func_177956_o() > 0; iblockstate = p_212245_1_.func_180495_p(p_212245_4_)) { + p_212245_4_ = p_212245_4_.func_177977_b(); + } + diff --git a/patches/minecraft/net/minecraft/world/gen/feature/TallTaigaTreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/TallTaigaTreeFeature.java.patch new file mode 100644 index 0000000000..9d83ab8b8b --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/TallTaigaTreeFeature.java.patch @@ -0,0 +1,53 @@ +--- a/net/minecraft/world/gen/feature/TallTaigaTreeFeature.java ++++ b/net/minecraft/world/gen/feature/TallTaigaTreeFeature.java +@@ -23,7 +23,7 @@ + int k = i - j; + int l = 2 + p_208519_3_.nextInt(2); + boolean flag = true; +- if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= 256) { ++ if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= p_208519_2_.func_201672_e().func_72800_K()) { + for(int i1 = p_208519_4_.func_177956_o(); i1 <= p_208519_4_.func_177956_o() + 1 + i && flag; ++i1) { + int j1; + if (i1 - p_208519_4_.func_177956_o() < j) { +@@ -36,9 +36,9 @@ + + for(int k1 = p_208519_4_.func_177958_n() - j1; k1 <= p_208519_4_.func_177958_n() + j1 && flag; ++k1) { + for(int l1 = p_208519_4_.func_177952_p() - j1; l1 <= p_208519_4_.func_177952_p() + j1 && flag; ++l1) { +- if (i1 >= 0 && i1 < 256) { ++ if (i1 >= 0 && i1 < p_208519_2_.func_201672_e().func_72800_K()) { + IBlockState iblockstate = p_208519_2_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k1, i1, l1)); +- if (!iblockstate.func_196958_f() && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { ++ if (!iblockstate.isAir(p_208519_2_, blockpos$mutableblockpos) && !iblockstate.func_203425_a(BlockTags.field_206952_E)) { + flag = false; + } + } else { +@@ -51,9 +51,8 @@ + if (!flag) { + return false; + } else { +- Block block = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).func_177230_c(); +- if ((block == Blocks.field_196658_i || Block.func_196245_f(block) || block == Blocks.field_150458_ak) && p_208519_4_.func_177956_o() < 256 - i - 1) { +- this.func_175921_a(p_208519_2_, p_208519_4_.func_177977_b()); ++ if (p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).canSustainPlant(p_208519_2_, p_208519_4_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196675_u) && p_208519_4_.func_177956_o() < p_208519_2_.func_201672_e().func_72800_K() - i - 1) { ++ this.setDirtAt(p_208519_2_, p_208519_4_.func_177977_b(), p_208519_4_); + int i3 = p_208519_3_.nextInt(2); + int j3 = 1; + int k3 = 0; +@@ -68,7 +67,7 @@ + int l2 = k2 - p_208519_4_.func_177952_p(); + if (Math.abs(j2) != i3 || Math.abs(l2) != i3 || i3 <= 0) { + BlockPos blockpos = new BlockPos(i2, j4, k2); +- if (!p_208519_2_.func_180495_p(blockpos).func_200015_d(p_208519_2_, blockpos)) { ++ if (p_208519_2_.func_180495_p(blockpos).canBeReplacedByLeaves(p_208519_2_, blockpos)) { + this.func_202278_a(p_208519_2_, blockpos, field_181646_b); + } + } +@@ -91,7 +90,7 @@ + + for(int k4 = 0; k4 < i - i4; ++k4) { + IBlockState iblockstate1 = p_208519_2_.func_180495_p(p_208519_4_.func_177981_b(k4)); +- if (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { ++ if (iblockstate1.isAir(p_208519_2_, p_208519_4_.func_177981_b(k4)) || iblockstate1.func_203425_a(BlockTags.field_206952_E)) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177981_b(k4), field_181645_a); + } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/TreeFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/TreeFeature.java.patch new file mode 100644 index 0000000000..dcffe86767 --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/TreeFeature.java.patch @@ -0,0 +1,101 @@ +--- a/net/minecraft/world/gen/feature/TreeFeature.java ++++ b/net/minecraft/world/gen/feature/TreeFeature.java +@@ -21,6 +21,7 @@ + private final boolean field_76531_b; + private final IBlockState field_76532_c; + private final IBlockState field_76530_d; ++ protected net.minecraftforge.common.IPlantable sapling = (net.minecraftforge.common.IPlantable)Blocks.field_196674_t; + + public TreeFeature(boolean p_i2027_1_) { + this(p_i2027_1_, 4, field_181653_a, field_181654_b, false); +@@ -37,7 +38,7 @@ + public boolean func_208519_a(Set p_208519_1_, IWorld p_208519_2_, Random p_208519_3_, BlockPos p_208519_4_) { + int i = this.func_208534_a(p_208519_3_); + boolean flag = true; +- if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= 256) { ++ if (p_208519_4_.func_177956_o() >= 1 && p_208519_4_.func_177956_o() + i + 1 <= p_208519_2_.func_201672_e().func_72800_K()) { + for(int j = p_208519_4_.func_177956_o(); j <= p_208519_4_.func_177956_o() + 1 + i; ++j) { + int k = 1; + if (j == p_208519_4_.func_177956_o()) { +@@ -52,8 +53,8 @@ + + for(int l = p_208519_4_.func_177958_n() - k; l <= p_208519_4_.func_177958_n() + k && flag; ++l) { + for(int i1 = p_208519_4_.func_177952_p() - k; i1 <= p_208519_4_.func_177952_p() + k && flag; ++i1) { +- if (j >= 0 && j < 256) { +- if (!this.func_150523_a(p_208519_2_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_177230_c())) { ++ if (j >= 0 && j < p_208519_2_.func_201672_e().func_72800_K()) { ++ if (!this.canGrowInto(p_208519_2_, blockpos$mutableblockpos.func_181079_c(l, j, i1))) { + flag = false; + } + } else { +@@ -66,9 +67,8 @@ + if (!flag) { + return false; + } else { +- Block block = p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).func_177230_c(); +- if ((block == Blocks.field_196658_i || Block.func_196245_f(block) || block == Blocks.field_150458_ak) && p_208519_4_.func_177956_o() < 256 - i - 1) { +- this.func_175921_a(p_208519_2_, p_208519_4_.func_177977_b()); ++ if (p_208519_2_.func_180495_p(p_208519_4_.func_177977_b()).canSustainPlant(p_208519_2_, p_208519_4_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_196674_t) && p_208519_4_.func_177956_o() < p_208519_2_.func_201672_e().func_72800_K() - i - 1) { ++ this.setDirtAt(p_208519_2_, p_208519_4_.func_177977_b(), p_208519_4_); + int k2 = 3; + int l2 = 0; + +@@ -85,7 +85,7 @@ + BlockPos blockpos = new BlockPos(k1, i3, i2); + IBlockState iblockstate = p_208519_2_.func_180495_p(blockpos); + Material material = iblockstate.func_185904_a(); +- if (iblockstate.func_196958_f() || iblockstate.func_203425_a(BlockTags.field_206952_E) || material == Material.field_151582_l) { ++ if (iblockstate.canBeReplacedByLeaves(p_208519_2_, blockpos) || material == Material.field_151582_l) { + this.func_202278_a(p_208519_2_, blockpos, this.field_76530_d); + } + } +@@ -96,7 +96,7 @@ + for(int j3 = 0; j3 < i; ++j3) { + IBlockState iblockstate1 = p_208519_2_.func_180495_p(p_208519_4_.func_177981_b(j3)); + Material material1 = iblockstate1.func_185904_a(); +- if (iblockstate1.func_196958_f() || iblockstate1.func_203425_a(BlockTags.field_206952_E) || material1 == Material.field_151582_l) { ++ if (iblockstate1.canBeReplacedByLeaves(p_208519_2_, p_208519_4_.func_177981_b(j3)) || material1 == Material.field_151582_l) { + this.func_208520_a(p_208519_1_, p_208519_2_, p_208519_4_.func_177981_b(j3), this.field_76532_c); + if (this.field_76531_b && j3 > 0) { + if (p_208519_3_.nextInt(3) > 0 && p_208519_2_.func_175623_d(p_208519_4_.func_177982_a(-1, j3, 0))) { +@@ -132,19 +132,19 @@ + BlockPos blockpos2 = blockpos$mutableblockpos1.func_177974_f(); + BlockPos blockpos3 = blockpos$mutableblockpos1.func_177978_c(); + BlockPos blockpos4 = blockpos$mutableblockpos1.func_177968_d(); +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos1).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos1)) { + this.func_181650_b(p_208519_2_, blockpos1, BlockVine.field_176278_M); + } + +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos2).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos2)) { + this.func_181650_b(p_208519_2_, blockpos2, BlockVine.field_176280_O); + } + +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos3).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos3)) { + this.func_181650_b(p_208519_2_, blockpos3, BlockVine.field_176279_N); + } + +- if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_180495_p(blockpos4).func_196958_f()) { ++ if (p_208519_3_.nextInt(4) == 0 && p_208519_2_.func_175623_d(blockpos4)) { + this.func_181650_b(p_208519_2_, blockpos4, BlockVine.field_176273_b); + } + } +@@ -190,10 +190,15 @@ + this.func_181651_a(p_181650_1_, p_181650_2_, p_181650_3_); + int i = 4; + +- for(BlockPos blockpos = p_181650_2_.func_177977_b(); p_181650_1_.func_180495_p(blockpos).func_196958_f() && i > 0; --i) { ++ for(BlockPos blockpos = p_181650_2_.func_177977_b(); p_181650_1_.func_175623_d(blockpos) && i > 0; --i) { + this.func_181651_a(p_181650_1_, blockpos, p_181650_3_); + blockpos = blockpos.func_177977_b(); + } + + } ++ ++ public TreeFeature setSapling(net.minecraftforge.common.IPlantable sapling) { ++ this.sapling = sapling; ++ return this; ++ } + } diff --git a/patches/minecraft/net/minecraft/world/gen/feature/VinesFeature.java.patch b/patches/minecraft/net/minecraft/world/gen/feature/VinesFeature.java.patch new file mode 100644 index 0000000000..f6808db67c --- /dev/null +++ b/patches/minecraft/net/minecraft/world/gen/feature/VinesFeature.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/gen/feature/VinesFeature.java ++++ b/net/minecraft/world/gen/feature/VinesFeature.java +@@ -14,7 +14,7 @@ + public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator p_212245_2_, Random p_212245_3_, BlockPos p_212245_4_, NoFeatureConfig p_212245_5_) { + BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(p_212245_4_); + +- for(int i = p_212245_4_.func_177956_o(); i < 256; ++i) { ++ for(int i = p_212245_4_.func_177956_o(); i < p_212245_1_.func_201672_e().func_72800_K(); ++i) { + blockpos$mutableblockpos.func_189533_g(p_212245_4_); + blockpos$mutableblockpos.func_196234_d(p_212245_3_.nextInt(4) - p_212245_3_.nextInt(4), 0, p_212245_3_.nextInt(4) - p_212245_3_.nextInt(4)); + blockpos$mutableblockpos.func_185336_p(i); diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenAbstractTree.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenAbstractTree.java.patch deleted file mode 100644 index 773fd43edc..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenAbstractTree.java.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenAbstractTree.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenAbstractTree.java -@@ -31,4 +31,10 @@ - this.func_175903_a(p_175921_1_, p_175921_2_, Blocks.field_150346_d.func_176223_P()); - } - } -+ -+ public boolean isReplaceable(World world, BlockPos pos) -+ { -+ net.minecraft.block.state.IBlockState state = world.func_180495_p(pos); -+ return state.func_177230_c().isAir(state, world, pos) || state.func_177230_c().isLeaves(state, world, pos) || state.func_177230_c().isWood(world, pos) || func_150523_a(state.func_177230_c()); -+ } - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigMushroom.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigMushroom.java.patch deleted file mode 100644 index 5bf7cfad59..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigMushroom.java.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenBigMushroom.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenBigMushroom.java -@@ -62,9 +62,9 @@ - { - if (j >= 0 && j < 256) - { -- Material material = p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_185904_a(); -+ IBlockState state = p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)); - -- if (material != Material.field_151579_a && material != Material.field_151584_j) -+ if (!state.func_177230_c().isAir(state, p_180709_1_, blockpos$mutableblockpos) && !state.func_177230_c().isLeaves(state, p_180709_1_, blockpos$mutableblockpos)) - { - flag = false; - } -@@ -199,8 +199,9 @@ - if (p_180709_3_.func_177956_o() >= p_180709_3_.func_177956_o() + i - 1 || blockhugemushroom$enumtype != BlockHugeMushroom.EnumType.ALL_INSIDE) - { - BlockPos blockpos = new BlockPos(l1, l2, i2); -+ IBlockState state = p_180709_1_.func_180495_p(blockpos); - -- if (!p_180709_1_.func_180495_p(blockpos).func_185913_b()) -+ if (state.func_177230_c().canBeReplacedByLeaves(state, p_180709_1_, blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, block.func_176223_P().func_177226_a(BlockHugeMushroom.field_176380_a, blockhugemushroom$enumtype)); - } -@@ -213,7 +214,7 @@ - { - IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(i3)); - -- if (!iblockstate.func_185913_b()) -+ if (iblockstate.func_177230_c().canBeReplacedByLeaves(iblockstate, p_180709_1_, p_180709_3_.func_177981_b(i3))) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(i3), block.func_176223_P().func_177226_a(BlockHugeMushroom.field_176380_a, BlockHugeMushroom.EnumType.STEM)); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.java.patch deleted file mode 100644 index 6c34a84eae..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.java.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenBigTree.java -@@ -99,9 +99,9 @@ - if (Math.pow((double)Math.abs(j) + 0.5D, 2.0D) + Math.pow((double)Math.abs(k) + 0.5D, 2.0D) <= (double)(p_181631_2_ * p_181631_2_)) - { - BlockPos blockpos = p_181631_1_.func_177982_a(j, 0, k); -- Material material = this.field_175946_l.func_180495_p(blockpos).func_185904_a(); -+ IBlockState state = this.field_175946_l.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, field_175946_l, blockpos) || state.func_177230_c().isLeaves(state, field_175946_l, blockpos)) - { - this.func_175903_a(this.field_175946_l, blockpos, p_181631_3_); - } -@@ -269,7 +269,7 @@ - { - BlockPos blockpos1 = p_175936_1_.func_177963_a((double)(0.5F + (float)j * f), (double)(0.5F + (float)j * f1), (double)(0.5F + (float)j * f2)); - -- if (!this.func_150523_a(this.field_175946_l.func_180495_p(blockpos1).func_177230_c())) -+ if (!this.isReplaceable(field_175946_l, blockpos1)) - { - return j; - } -@@ -297,6 +297,7 @@ - - if (!this.func_76497_e()) - { -+ this.field_175946_l = null; //Fix vanilla Mem leak, holds latest world - return false; - } - else -@@ -305,15 +306,18 @@ - this.func_175941_b(); - this.func_175942_c(); - this.func_175939_d(); -+ this.field_175946_l = null; //Fix vanilla Mem leak, holds latest world - return true; - } - } - - private boolean func_76497_e() - { -- Block block = this.field_175946_l.func_180495_p(this.field_175947_m.func_177977_b()).func_177230_c(); -+ BlockPos down = this.field_175947_m.func_177977_b(); -+ net.minecraft.block.state.IBlockState state = this.field_175946_l.func_180495_p(down); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, this.field_175946_l, down, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g)); - -- if (block != Blocks.field_150346_d && block != Blocks.field_150349_c && block != Blocks.field_150458_ak) -+ if (!isSoil) - { - return false; - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBirchTree.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBirchTree.java.patch deleted file mode 100644 index 77d4b839e8..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBirchTree.java.patch +++ /dev/null @@ -1,56 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenBirchTree.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenBirchTree.java -@@ -56,9 +56,9 @@ - { - for (int i1 = p_180709_3_.func_177952_p() - k; i1 <= p_180709_3_.func_177952_p() + k && flag; ++i1) - { -- if (j >= 0 && j < 256) -+ if (j >= 0 && j < p_180709_1_.func_72800_K()) - { -- if (!this.func_150523_a(p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_177230_c())) -+ if (!this.isReplaceable(p_180709_1_, blockpos$mutableblockpos.func_181079_c(l, j, i1))) - { - flag = false; - } -@@ -77,11 +77,13 @@ - } - else - { -- Block block = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()).func_177230_c(); -+ BlockPos down = p_180709_3_.func_177977_b(); -+ IBlockState state = p_180709_1_.func_180495_p(down); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, p_180709_1_, down, net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_150345_g); - -- if ((block == Blocks.field_150349_c || block == Blocks.field_150346_d || block == Blocks.field_150458_ak) && p_180709_3_.func_177956_o() < 256 - i - 1) -+ if (isSoil && p_180709_3_.func_177956_o() < p_180709_1_.func_72800_K() - i - 1) - { -- this.func_175921_a(p_180709_1_, p_180709_3_.func_177977_b()); -+ state.func_177230_c().onPlantGrow(state, p_180709_1_, down, p_180709_3_); - - for (int i2 = p_180709_3_.func_177956_o() - 3 + i; i2 <= p_180709_3_.func_177956_o() + i; ++i2) - { -@@ -99,9 +101,9 @@ - if (Math.abs(j1) != l2 || Math.abs(l1) != l2 || p_180709_2_.nextInt(2) != 0 && k2 != 0) - { - BlockPos blockpos = new BlockPos(i3, i2, k1); -- Material material = p_180709_1_.func_180495_p(blockpos).func_185904_a(); -+ IBlockState state2 = p_180709_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state2.func_177230_c().isAir(state2, p_180709_1_, blockpos) || state2.func_177230_c().isAir(state2, p_180709_1_, blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, field_181630_b); - } -@@ -112,9 +114,10 @@ - - for (int j2 = 0; j2 < i; ++j2) - { -- Material material1 = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(j2)).func_185904_a(); -+ BlockPos upN = p_180709_3_.func_177981_b(j2); -+ IBlockState state2 = p_180709_1_.func_180495_p(upN); - -- if (material1 == Material.field_151579_a || material1 == Material.field_151584_j) -+ if (state2.func_177230_c().isAir(state2, p_180709_1_, upN) || state2.func_177230_c().isLeaves(state2, p_180709_1_, upN)) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(j2), field_181629_a); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBush.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBush.java.patch deleted file mode 100644 index ed54b4718f..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenBush.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenBush.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenBush.java -@@ -20,7 +20,7 @@ - { - BlockPos blockpos = p_180709_3_.func_177982_a(p_180709_2_.nextInt(8) - p_180709_2_.nextInt(8), p_180709_2_.nextInt(4) - p_180709_2_.nextInt(4), p_180709_2_.nextInt(8) - p_180709_2_.nextInt(8)); - -- if (p_180709_1_.func_175623_d(blockpos) && (!p_180709_1_.field_73011_w.func_177495_o() || blockpos.func_177956_o() < 255) && this.field_175908_a.func_180671_f(p_180709_1_, blockpos, this.field_175908_a.func_176223_P())) -+ if (p_180709_1_.func_175623_d(blockpos) && (!p_180709_1_.field_73011_w.func_177495_o() || blockpos.func_177956_o() < p_180709_1_.func_72800_K() - 1) && this.field_175908_a.func_180671_f(p_180709_1_, blockpos, this.field_175908_a.func_176223_P())) - { - p_180709_1_.func_180501_a(blockpos, this.field_175908_a.func_176223_P(), 2); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenCanopyTree.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenCanopyTree.java.patch deleted file mode 100644 index 61ebf130cf..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenCanopyTree.java.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenCanopyTree.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenCanopyTree.java -@@ -33,9 +33,10 @@ - if (k >= 1 && k + i + 1 < 256) - { - BlockPos blockpos = p_180709_3_.func_177977_b(); -- Block block = p_180709_1_.func_180495_p(blockpos).func_177230_c(); -+ IBlockState state = p_180709_1_.func_180495_p(blockpos); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, p_180709_1_, blockpos, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g)); - -- if (block != Blocks.field_150349_c && block != Blocks.field_150346_d) -+ if (!(isSoil && p_180709_3_.func_177956_o() < p_180709_1_.func_72800_K() - i - 1)) - { - return false; - } -@@ -45,10 +46,10 @@ - } - else - { -- this.func_175921_a(p_180709_1_, blockpos); -- this.func_175921_a(p_180709_1_, blockpos.func_177974_f()); -- this.func_175921_a(p_180709_1_, blockpos.func_177968_d()); -- this.func_175921_a(p_180709_1_, blockpos.func_177968_d().func_177974_f()); -+ this.onPlantGrow(p_180709_1_, blockpos, p_180709_3_); -+ this.onPlantGrow(p_180709_1_, blockpos.func_177974_f(), p_180709_3_); -+ this.onPlantGrow(p_180709_1_, blockpos.func_177968_d(), p_180709_3_); -+ this.onPlantGrow(p_180709_1_, blockpos.func_177968_d().func_177974_f(), p_180709_3_); - EnumFacing enumfacing = EnumFacing.Plane.HORIZONTAL.func_179518_a(p_180709_2_); - int i1 = i - p_180709_2_.nextInt(4); - int j1 = 2 - p_180709_2_.nextInt(3); -@@ -67,9 +68,9 @@ - - int k2 = k + j2; - BlockPos blockpos1 = new BlockPos(k1, k2, l1); -- Material material = p_180709_1_.func_180495_p(blockpos1).func_185904_a(); -+ state = p_180709_1_.func_180495_p(blockpos1); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_180709_1_, blockpos1) || state.func_177230_c().isLeaves(state, p_180709_1_, blockpos1)) - { - this.func_181639_b(p_180709_1_, blockpos1); - this.func_181639_b(p_180709_1_, blockpos1.func_177974_f()); -@@ -187,7 +188,7 @@ - { - for (int k1 = -i1; k1 <= i1; ++k1) - { -- if (!this.func_150523_a(p_181638_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(i + j1, j + l, k + k1)).func_177230_c())) -+ if (!this.isReplaceable(p_181638_1_, blockpos$mutableblockpos.func_181079_c(i + j1, j + l, k + k1))) - { - return false; - } -@@ -209,11 +210,18 @@ - private void func_150526_a(World p_150526_1_, int p_150526_2_, int p_150526_3_, int p_150526_4_) - { - BlockPos blockpos = new BlockPos(p_150526_2_, p_150526_3_, p_150526_4_); -- Material material = p_150526_1_.func_180495_p(blockpos).func_185904_a(); -+ IBlockState state = p_150526_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a) -+ if (state.func_177230_c().isAir(state, p_150526_1_, blockpos)) - { - this.func_175903_a(p_150526_1_, blockpos, field_181641_b); - } - } -+ -+ //Just a helper macro -+ private void onPlantGrow(World world, BlockPos pos, BlockPos source) -+ { -+ IBlockState state = world.func_180495_p(pos); -+ state.func_177230_c().onPlantGrow(state, world, pos, source); -+ } - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDeadBush.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDeadBush.java.patch deleted file mode 100644 index f1d9ad72cb..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDeadBush.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenDeadBush.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenDeadBush.java -@@ -11,7 +11,7 @@ - { - public boolean func_180709_b(World p_180709_1_, Random p_180709_2_, BlockPos p_180709_3_) - { -- for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) && p_180709_3_.func_177956_o() > 0; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) -+ for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_) || iblockstate.func_177230_c().isLeaves(iblockstate, p_180709_1_, p_180709_3_)) && p_180709_3_.func_177956_o() > 0; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) - { - p_180709_3_ = p_180709_3_.func_177977_b(); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDungeons.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDungeons.java.patch deleted file mode 100644 index 6ca2da90eb..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenDungeons.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenDungeons.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenDungeons.java -@@ -159,6 +159,6 @@ - - private ResourceLocation func_76543_b(Random p_76543_1_) - { -- return field_175916_b[p_76543_1_.nextInt(field_175916_b.length)]; -+ return net.minecraftforge.common.DungeonHooks.getRandomDungeonMob(p_76543_1_); - } - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone1.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone1.java.patch deleted file mode 100644 index 45ec439504..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone1.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone1.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone1.java -@@ -27,7 +27,7 @@ - { - BlockPos blockpos = p_180709_3_.func_177982_a(p_180709_2_.nextInt(8) - p_180709_2_.nextInt(8), -p_180709_2_.nextInt(12), p_180709_2_.nextInt(8) - p_180709_2_.nextInt(8)); - -- if (p_180709_1_.func_180495_p(blockpos).func_185904_a() == Material.field_151579_a) -+ if (p_180709_1_.func_175623_d(blockpos)) - { - int j = 0; - diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone2.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone2.java.patch deleted file mode 100644 index cec562cded..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone2.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone2.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenGlowStone2.java -@@ -27,7 +27,7 @@ - { - BlockPos blockpos = p_180709_3_.func_177982_a(p_180709_2_.nextInt(8) - p_180709_2_.nextInt(8), -p_180709_2_.nextInt(12), p_180709_2_.nextInt(8) - p_180709_2_.nextInt(8)); - -- if (p_180709_1_.func_180495_p(blockpos).func_185904_a() == Material.field_151579_a) -+ if (p_180709_1_.func_175623_d(blockpos)) - { - int j = 0; - diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHellLava.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHellLava.java.patch deleted file mode 100644 index dcdcd472c2..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHellLava.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenHellLava.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenHellLava.java -@@ -25,7 +25,7 @@ - { - return false; - } -- else if (p_180709_1_.func_180495_p(p_180709_3_).func_185904_a() != Material.field_151579_a && p_180709_1_.func_180495_p(p_180709_3_).func_177230_c() != Blocks.field_150424_aL) -+ else if (!p_180709_1_.func_175623_d(p_180709_3_) && p_180709_1_.func_180495_p(p_180709_3_).func_177230_c() != Blocks.field_150424_aL) - { - return false; - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHugeTrees.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHugeTrees.java.patch deleted file mode 100644 index c0785697b7..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenHugeTrees.java.patch +++ /dev/null @@ -1,69 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenHugeTrees.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenHugeTrees.java -@@ -59,7 +59,7 @@ - { - for (int l = -j; l <= j && flag; ++l) - { -- if (p_175926_2_.func_177956_o() + i < 0 || p_175926_2_.func_177956_o() + i >= 256 || !this.func_150523_a(p_175926_1_.func_180495_p(p_175926_2_.func_177982_a(k, i, l)).func_177230_c())) -+ if (p_175926_2_.func_177956_o() + i < 0 || p_175926_2_.func_177956_o() + i >= 256 || !this.isReplaceable(p_175926_1_,p_175926_2_.func_177982_a(k, i, l))) - { - flag = false; - } -@@ -78,14 +78,15 @@ - private boolean func_175927_a(BlockPos p_175927_1_, World p_175927_2_) - { - BlockPos blockpos = p_175927_1_.func_177977_b(); -- Block block = p_175927_2_.func_180495_p(blockpos).func_177230_c(); -+ IBlockState state = p_175927_2_.func_180495_p(blockpos); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, p_175927_2_, blockpos, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g)); - -- if ((block == Blocks.field_150349_c || block == Blocks.field_150346_d) && p_175927_1_.func_177956_o() >= 2) -+ if (isSoil && p_175927_1_.func_177956_o() >= 2) - { -- this.func_175921_a(p_175927_2_, blockpos); -- this.func_175921_a(p_175927_2_, blockpos.func_177974_f()); -- this.func_175921_a(p_175927_2_, blockpos.func_177968_d()); -- this.func_175921_a(p_175927_2_, blockpos.func_177968_d().func_177974_f()); -+ this.onPlantGrow(p_175927_2_, blockpos, p_175927_1_); -+ this.onPlantGrow(p_175927_2_, blockpos.func_177974_f(), p_175927_1_); -+ this.onPlantGrow(p_175927_2_, blockpos.func_177968_d(), p_175927_1_); -+ this.onPlantGrow(p_175927_2_, blockpos.func_177968_d().func_177974_f(), p_175927_1_); - return true; - } - else -@@ -113,9 +114,9 @@ - if (j * j + k * k <= i || l * l + i1 * i1 <= i || j * j + i1 * i1 <= i || l * l + k * k <= i) - { - BlockPos blockpos = p_175925_2_.func_177982_a(j, 0, k); -- Material material = p_175925_1_.func_180495_p(blockpos).func_185904_a(); -+ IBlockState state = p_175925_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_175925_1_, blockpos) || state.func_177230_c().isLeaves(state, p_175925_1_, blockpos)) - { - this.func_175903_a(p_175925_1_, blockpos, this.field_76521_c); - } -@@ -135,9 +136,9 @@ - if (j * j + k * k <= i) - { - BlockPos blockpos = p_175928_2_.func_177982_a(j, 0, k); -- Material material = p_175928_1_.func_180495_p(blockpos).func_185904_a(); -+ IBlockState state = p_175928_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_175928_1_, blockpos) || state.func_177230_c().isLeaves(state, p_175928_1_, blockpos)) - { - this.func_175903_a(p_175928_1_, blockpos, this.field_76521_c); - } -@@ -145,4 +146,11 @@ - } - } - } -+ -+ //Just a helper macro -+ private void onPlantGrow(World world, BlockPos pos, BlockPos source) -+ { -+ IBlockState state = world.func_180495_p(pos); -+ state.func_177230_c().onPlantGrow(state, world, pos, source); -+ } - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenIceSpike.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenIceSpike.java.patch deleted file mode 100644 index 1ac2953b8e..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenIceSpike.java.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenIceSpike.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenIceSpike.java -@@ -51,7 +51,7 @@ - IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177982_a(i1, k, j1)); - Block block = iblockstate.func_177230_c(); - -- if (iblockstate.func_185904_a() == Material.field_151579_a || block == Blocks.field_150346_d || block == Blocks.field_150433_aE || block == Blocks.field_150432_aD) -+ if (iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_.func_177982_a(i1, k, j1)) || block == Blocks.field_150346_d || block == Blocks.field_150433_aE || block == Blocks.field_150432_aD) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177982_a(i1, k, j1), Blocks.field_150403_cj.func_176223_P()); - } -@@ -61,7 +61,7 @@ - iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177982_a(i1, -k, j1)); - block = iblockstate.func_177230_c(); - -- if (iblockstate.func_185904_a() == Material.field_151579_a || block == Blocks.field_150346_d || block == Blocks.field_150433_aE || block == Blocks.field_150432_aD) -+ if (iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_.func_177982_a(i1, -k, j1)) || block == Blocks.field_150346_d || block == Blocks.field_150433_aE || block == Blocks.field_150432_aD) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177982_a(i1, -k, j1), Blocks.field_150403_cj.func_176223_P()); - } -@@ -99,7 +99,7 @@ - IBlockState iblockstate1 = p_180709_1_.func_180495_p(blockpos); - Block block1 = iblockstate1.func_177230_c(); - -- if (iblockstate1.func_185904_a() != Material.field_151579_a && block1 != Blocks.field_150346_d && block1 != Blocks.field_150433_aE && block1 != Blocks.field_150432_aD && block1 != Blocks.field_150403_cj) -+ if (!iblockstate1.func_177230_c().isAir(iblockstate1, p_180709_1_, blockpos) && block1 != Blocks.field_150346_d && block1 != Blocks.field_150433_aE && block1 != Blocks.field_150432_aD && block1 != Blocks.field_150403_cj) - { - break; - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenLiquids.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenLiquids.java.patch deleted file mode 100644 index 074c4483e9..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenLiquids.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenLiquids.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenLiquids.java -@@ -31,7 +31,7 @@ - { - IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); - -- if (iblockstate.func_185904_a() != Material.field_151579_a && iblockstate.func_177230_c() != Blocks.field_150348_b) -+ if (!iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_) && iblockstate.func_177230_c() != Blocks.field_150348_b) - { - return false; - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaJungle.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaJungle.java.patch deleted file mode 100644 index 8964b67b1e..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaJungle.java.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenMegaJungle.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenMegaJungle.java -@@ -55,7 +55,7 @@ - { - BlockPos blockpos = p_180709_3_.func_177981_b(i2); - -- if (this.func_150523_a(p_180709_1_.func_180495_p(blockpos).func_177230_c())) -+ if (this.isAirLeaves(p_180709_1_,blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, this.field_76520_b); - -@@ -70,7 +70,7 @@ - { - BlockPos blockpos1 = blockpos.func_177974_f(); - -- if (this.func_150523_a(p_180709_1_.func_180495_p(blockpos1).func_177230_c())) -+ if (this.isAirLeaves(p_180709_1_,blockpos1)) - { - this.func_175903_a(p_180709_1_, blockpos1, this.field_76520_b); - -@@ -83,7 +83,7 @@ - - BlockPos blockpos2 = blockpos.func_177968_d().func_177974_f(); - -- if (this.func_150523_a(p_180709_1_.func_180495_p(blockpos2).func_177230_c())) -+ if (this.isAirLeaves(p_180709_1_,blockpos2)) - { - this.func_175903_a(p_180709_1_, blockpos2, this.field_76520_b); - -@@ -96,7 +96,7 @@ - - BlockPos blockpos3 = blockpos.func_177968_d(); - -- if (this.func_150523_a(p_180709_1_.func_180495_p(blockpos3).func_177230_c())) -+ if (this.isAirLeaves(p_180709_1_,blockpos3)) - { - this.func_175903_a(p_180709_1_, blockpos3, this.field_76520_b); - -@@ -130,4 +130,11 @@ - this.func_175925_a(p_175930_1_, p_175930_2_.func_177981_b(j), p_175930_3_ + 1 - j); - } - } -+ -+ //Helper macro -+ private boolean isAirLeaves(World world, BlockPos pos) -+ { -+ IBlockState state = world.func_180495_p(pos); -+ return state.func_177230_c().isAir(state, world, pos) || state.func_177230_c().isLeaves(state, world, pos); -+ } - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java.patch deleted file mode 100644 index 70ea1b4468..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java -@@ -41,32 +41,25 @@ - - for (int j = 0; j < i; ++j) - { -- IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(j)); -- -- if (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) -+ if (isAirLeaves(p_180709_1_, p_180709_3_.func_177981_b(j))) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(j), this.field_76520_b); - } - - if (j < i - 1) - { -- iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177982_a(1, j, 0)); -- -- if (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) -+ if (isAirLeaves(p_180709_1_, p_180709_3_.func_177982_a(1, j, 0))) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177982_a(1, j, 0), this.field_76520_b); - } - -- iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177982_a(1, j, 1)); -- -- if (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) -+ if (isAirLeaves(p_180709_1_, p_180709_3_.func_177982_a(1, j, 1))) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177982_a(1, j, 1), this.field_76520_b); - } - -- iblockstate = p_180709_1_.func_180495_p(p_180709_3_.func_177982_a(0, j, 1)); - -- if (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) -+ if (isAirLeaves(p_180709_1_, p_180709_3_.func_177982_a(0, j, 1))) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177982_a(0, j, 1), this.field_76520_b); - } -@@ -133,7 +126,7 @@ - IBlockState iblockstate = p_175934_1_.func_180495_p(blockpos); - Block block = iblockstate.func_177230_c(); - -- if (block == Blocks.field_150349_c || block == Blocks.field_150346_d) -+ if (block.canSustainPlant(iblockstate, p_175934_1_, blockpos, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g))) - { - this.func_175903_a(p_175934_1_, blockpos, field_181635_g); - break; -@@ -145,4 +138,11 @@ - } - } - } -+ -+ //Helper macro -+ private boolean isAirLeaves(World world, BlockPos pos) -+ { -+ IBlockState state = world.func_180495_p(pos); -+ return state.func_177230_c().isAir(state, world, pos) || state.func_177230_c().isLeaves(state, world, pos); -+ } - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMinable.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMinable.java.patch deleted file mode 100644 index d7cc9310a8..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenMinable.java.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenMinable.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenMinable.java -@@ -73,7 +73,8 @@ - { - BlockPos blockpos = new BlockPos(l1, i2, j2); - -- if (this.field_175919_c.apply(p_180709_1_.func_180495_p(blockpos))) -+ IBlockState state = p_180709_1_.func_180495_p(blockpos); -+ if (state.func_177230_c().isReplaceableOreGen(state, p_180709_1_, blockpos, this.field_175919_c)) - { - p_180709_1_.func_180501_a(blockpos, this.field_175920_a, 2); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSavannaTree.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSavannaTree.java.patch deleted file mode 100644 index 3a17a2173c..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSavannaTree.java.patch +++ /dev/null @@ -1,64 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenSavannaTree.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenSavannaTree.java -@@ -52,7 +52,7 @@ - { - if (j >= 0 && j < 256) - { -- if (!this.func_150523_a(p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_177230_c())) -+ if (!this.isReplaceable(p_180709_1_,blockpos$mutableblockpos.func_181079_c(l, j, i1))) - { - flag = false; - } -@@ -71,11 +71,13 @@ - } - else - { -- Block block = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()).func_177230_c(); -+ BlockPos down = p_180709_3_.func_177977_b(); -+ IBlockState state = p_180709_1_.func_180495_p(down); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, p_180709_1_, down, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g)); - -- if ((block == Blocks.field_150349_c || block == Blocks.field_150346_d) && p_180709_3_.func_177956_o() < 256 - i - 1) -+ if (isSoil && p_180709_3_.func_177956_o() < p_180709_1_.func_72800_K() - i - 1) - { -- this.func_175921_a(p_180709_1_, p_180709_3_.func_177977_b()); -+ state.func_177230_c().onPlantGrow(state, p_180709_1_, down, p_180709_3_); - EnumFacing enumfacing = EnumFacing.Plane.HORIZONTAL.func_179518_a(p_180709_2_); - int k2 = i - p_180709_2_.nextInt(4) - 1; - int l2 = 3 - p_180709_2_.nextInt(3); -@@ -95,9 +97,9 @@ - } - - BlockPos blockpos = new BlockPos(i3, i2, j1); -- Material material = p_180709_1_.func_180495_p(blockpos).func_185904_a(); -+ state = p_180709_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_180709_1_, blockpos) || state.func_177230_c().isLeaves(state, p_180709_1_, blockpos)) - { - this.func_181642_b(p_180709_1_, blockpos); - k1 = i2; -@@ -149,9 +151,9 @@ - i3 += enumfacing1.func_82601_c(); - j1 += enumfacing1.func_82599_e(); - BlockPos blockpos1 = new BlockPos(i3, j2, j1); -- Material material1 = p_180709_1_.func_180495_p(blockpos1).func_185904_a(); -+ state = p_180709_1_.func_180495_p(blockpos1); - -- if (material1 == Material.field_151579_a || material1 == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_180709_1_, blockpos1) || state.func_177230_c().isLeaves(state, p_180709_1_, blockpos1)) - { - this.func_181642_b(p_180709_1_, blockpos1); - k1 = j2; -@@ -209,9 +211,9 @@ - - private void func_175924_b(World p_175924_1_, BlockPos p_175924_2_) - { -- Material material = p_175924_1_.func_180495_p(p_175924_2_).func_185904_a(); -+ IBlockState state = p_175924_1_.func_180495_p(p_175924_2_); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_175924_1_, p_175924_2_) || state.func_177230_c().isLeaves(state, p_175924_1_, p_175924_2_)) - { - this.func_175903_a(p_175924_1_, p_175924_2_, field_181644_b); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java.patch deleted file mode 100644 index 1826fe68b6..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java -@@ -22,14 +22,14 @@ - - public boolean func_180709_b(World p_180709_1_, Random p_180709_2_, BlockPos p_180709_3_) - { -- for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) && p_180709_3_.func_177956_o() > 0; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) -+ for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_) || iblockstate.func_177230_c().isLeaves(iblockstate, p_180709_1_, p_180709_3_)) && p_180709_3_.func_177956_o() > 0; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) - { - p_180709_3_ = p_180709_3_.func_177977_b(); - } - -- Block block = p_180709_1_.func_180495_p(p_180709_3_).func_177230_c(); -+ IBlockState state = p_180709_1_.func_180495_p(p_180709_3_); - -- if (block == Blocks.field_150346_d || block == Blocks.field_150349_c) -+ if (state.func_177230_c().canSustainPlant(state, p_180709_1_, p_180709_3_, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g))) - { - p_180709_3_ = p_180709_3_.func_177984_a(); - this.func_175903_a(p_180709_1_, p_180709_3_, this.field_150527_b); -@@ -50,9 +50,9 @@ - if (Math.abs(i1) != k || Math.abs(k1) != k || p_180709_2_.nextInt(2) != 0) - { - BlockPos blockpos = new BlockPos(l, i, j1); -- Material material = p_180709_1_.func_180495_p(blockpos).func_185904_a(); -+ state = p_180709_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().canBeReplacedByLeaves(state, p_180709_1_, blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, this.field_150528_a); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java.patch deleted file mode 100644 index dfe3fe59dd..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java.patch +++ /dev/null @@ -1,89 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java -@@ -61,7 +61,7 @@ - IBlockState iblockstate = p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)); - Block block = iblockstate.func_177230_c(); - -- if (iblockstate.func_185904_a() != Material.field_151579_a && iblockstate.func_185904_a() != Material.field_151584_j) -+ if (!iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, blockpos$mutableblockpos.func_181079_c(l, j, i1)) && !iblockstate.func_177230_c().isLeaves(iblockstate, p_180709_1_, blockpos$mutableblockpos.func_181079_c(l, j, i1))) - { - if (block != Blocks.field_150355_j && block != Blocks.field_150358_i) - { -@@ -87,11 +87,13 @@ - } - else - { -- Block block1 = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()).func_177230_c(); -+ BlockPos down = p_180709_3_.func_177977_b(); -+ IBlockState state = p_180709_1_.func_180495_p(down); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, p_180709_1_, down, net.minecraft.util.EnumFacing.UP, ((net.minecraft.block.BlockSapling)Blocks.field_150345_g)); - -- if ((block1 == Blocks.field_150349_c || block1 == Blocks.field_150346_d) && p_180709_3_.func_177956_o() < 256 - i - 1) -+ if (isSoil && p_180709_3_.func_177956_o() < p_180709_1_.func_72800_K() - i - 1) - { -- this.func_175921_a(p_180709_1_, p_180709_3_.func_177977_b()); -+ state.func_177230_c().onPlantGrow(state, p_180709_1_, p_180709_3_.func_177977_b(),p_180709_3_); - - for (int k1 = p_180709_3_.func_177956_o() - 3 + i; k1 <= p_180709_3_.func_177956_o() + i; ++k1) - { -@@ -109,8 +111,9 @@ - if (Math.abs(k3) != l2 || Math.abs(j1) != l2 || p_180709_2_.nextInt(2) != 0 && j2 != 0) - { - BlockPos blockpos = new BlockPos(j3, k1, i4); -+ state = p_180709_1_.func_180495_p(blockpos); - -- if (!p_180709_1_.func_180495_p(blockpos).func_185913_b()) -+ if (state.func_177230_c().canBeReplacedByLeaves(state, p_180709_1_, blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, field_181649_b); - } -@@ -121,10 +124,11 @@ - - for (int l1 = 0; l1 < i; ++l1) - { -- IBlockState iblockstate1 = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(l1)); -+ BlockPos upN = p_180709_3_.func_177981_b(l1); -+ IBlockState iblockstate1 = p_180709_1_.func_180495_p(upN); - Block block2 = iblockstate1.func_177230_c(); - -- if (iblockstate1.func_185904_a() == Material.field_151579_a || iblockstate1.func_185904_a() == Material.field_151584_j || block2 == Blocks.field_150358_i || block2 == Blocks.field_150355_j) -+ if (block2.isAir(iblockstate1, p_180709_1_, upN) || block2.isLeaves(iblockstate1, p_180709_1_, upN) || block2 == Blocks.field_150358_i || block2 == Blocks.field_150355_j) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(l1), field_181648_a); - } -@@ -149,22 +153,22 @@ - BlockPos blockpos1 = blockpos$mutableblockpos1.func_177978_c(); - BlockPos blockpos2 = blockpos$mutableblockpos1.func_177968_d(); - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos3).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos3)) - { - this.func_181647_a(p_180709_1_, blockpos3, BlockVine.field_176278_M); - } - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos4).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos4)) - { - this.func_181647_a(p_180709_1_, blockpos4, BlockVine.field_176280_O); - } - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos1).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos1)) - { - this.func_181647_a(p_180709_1_, blockpos1, BlockVine.field_176279_N); - } - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos2).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos2)) - { - this.func_181647_a(p_180709_1_, blockpos2, BlockVine.field_176273_b); - } -@@ -193,7 +197,7 @@ - this.func_175903_a(p_181647_1_, p_181647_2_, iblockstate); - int i = 4; - -- for (BlockPos blockpos = p_181647_2_.func_177977_b(); p_181647_1_.func_180495_p(blockpos).func_185904_a() == Material.field_151579_a && i > 0; --i) -+ for (BlockPos blockpos = p_181647_2_.func_177977_b(); p_181647_1_.func_175623_d(blockpos) && i > 0; --i) - { - this.func_175903_a(p_181647_1_, blockpos, iblockstate); - blockpos = blockpos.func_177977_b(); diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga1.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga1.java.patch deleted file mode 100644 index f228c61679..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga1.java.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga1.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga1.java -@@ -54,7 +54,7 @@ - { - if (i1 >= 0 && i1 < 256) - { -- if (!this.func_150523_a(p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k1, i1, l1)).func_177230_c())) -+ if (!this.isReplaceable(p_180709_1_,blockpos$mutableblockpos.func_181079_c(k1, i1, l1))) - { - flag = false; - } -@@ -73,11 +73,13 @@ - } - else - { -- Block block = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()).func_177230_c(); -+ BlockPos down = p_180709_3_.func_177977_b(); -+ IBlockState state = p_180709_1_.func_180495_p(down); -+ boolean isSoil = state.func_177230_c().canSustainPlant(state, p_180709_1_, down, net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_150345_g); - -- if ((block == Blocks.field_150349_c || block == Blocks.field_150346_d) && p_180709_3_.func_177956_o() < 256 - i - 1) -+ if (isSoil && p_180709_3_.func_177956_o() < 256 - i - 1) - { -- this.func_175921_a(p_180709_1_, p_180709_3_.func_177977_b()); -+ state.func_177230_c().onPlantGrow(state, p_180709_1_, down, p_180709_3_); - int k2 = 0; - - for (int l2 = p_180709_3_.func_177956_o() + i; l2 >= p_180709_3_.func_177956_o() + j; --l2) -@@ -93,8 +95,9 @@ - if (Math.abs(k3) != k2 || Math.abs(j2) != k2 || k2 <= 0) - { - BlockPos blockpos = new BlockPos(j3, l2, i2); -+ state = p_180709_1_.func_180495_p(blockpos); - -- if (!p_180709_1_.func_180495_p(blockpos).func_185913_b()) -+ if (state.func_177230_c().canBeReplacedByLeaves(state, p_180709_1_, blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, field_181637_b); - } -@@ -114,9 +117,10 @@ - - for (int i3 = 0; i3 < i - 1; ++i3) - { -- Material material = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(i3)).func_185904_a(); -+ BlockPos upN = p_180709_3_.func_177981_b(i3); -+ state = p_180709_1_.func_180495_p(upN); - -- if (material == Material.field_151579_a || material == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_180709_1_, upN) || state.func_177230_c().isLeaves(state, p_180709_1_, upN)) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(i3), field_181636_a); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga2.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga2.java.patch deleted file mode 100644 index 611141161b..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga2.java.patch +++ /dev/null @@ -1,66 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga2.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenTaiga2.java -@@ -30,7 +30,7 @@ - int l = 2 + p_180709_2_.nextInt(2); - boolean flag = true; - -- if (p_180709_3_.func_177956_o() >= 1 && p_180709_3_.func_177956_o() + i + 1 <= 256) -+ if (p_180709_3_.func_177956_o() >= 1 && p_180709_3_.func_177956_o() + i + 1 <= p_180709_1_.func_72800_K()) - { - for (int i1 = p_180709_3_.func_177956_o(); i1 <= p_180709_3_.func_177956_o() + 1 + i && flag; ++i1) - { -@@ -51,11 +51,11 @@ - { - for (int l1 = p_180709_3_.func_177952_p() - j1; l1 <= p_180709_3_.func_177952_p() + j1 && flag; ++l1) - { -- if (i1 >= 0 && i1 < 256) -+ if (i1 >= 0 && i1 < p_180709_1_.func_72800_K()) - { -- Material material = p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k1, i1, l1)).func_185904_a(); -+ IBlockState state = p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(k1, i1, l1)); - -- if (material != Material.field_151579_a && material != Material.field_151584_j) -+ if (!state.func_177230_c().isAir(state, p_180709_1_, blockpos$mutableblockpos.func_181079_c(k1, i1, l1)) && !state.func_177230_c().isLeaves(state, p_180709_1_, blockpos$mutableblockpos.func_181079_c(k1, i1, l1))) - { - flag = false; - } -@@ -74,11 +74,12 @@ - } - else - { -- Block block = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()).func_177230_c(); -+ BlockPos down = p_180709_3_.func_177977_b(); -+ IBlockState state = p_180709_1_.func_180495_p(down); - -- if ((block == Blocks.field_150349_c || block == Blocks.field_150346_d || block == Blocks.field_150458_ak) && p_180709_3_.func_177956_o() < 256 - i - 1) -+ if (state.func_177230_c().canSustainPlant(state, p_180709_1_, down, net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_150345_g) && p_180709_3_.func_177956_o() < p_180709_1_.func_72800_K() - i - 1) - { -- this.func_175921_a(p_180709_1_, p_180709_3_.func_177977_b()); -+ state.func_177230_c().onPlantGrow(state, p_180709_1_, down, p_180709_3_); - int i3 = p_180709_2_.nextInt(2); - int j3 = 1; - int k3 = 0; -@@ -98,8 +99,9 @@ - if (Math.abs(j2) != i3 || Math.abs(l2) != i3 || i3 <= 0) - { - BlockPos blockpos = new BlockPos(i2, j4, k2); -+ state = p_180709_1_.func_180495_p(blockpos); - -- if (!p_180709_1_.func_180495_p(blockpos).func_185913_b()) -+ if (state.func_177230_c().canBeReplacedByLeaves(state, p_180709_1_, blockpos)) - { - this.func_175903_a(p_180709_1_, blockpos, field_181646_b); - } -@@ -128,9 +130,10 @@ - - for (int k4 = 0; k4 < i - i4; ++k4) - { -- Material material1 = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(k4)).func_185904_a(); -+ BlockPos upN = p_180709_3_.func_177981_b(k4); -+ state = p_180709_1_.func_180495_p(upN); - -- if (material1 == Material.field_151579_a || material1 == Material.field_151584_j) -+ if (state.func_177230_c().isAir(state, p_180709_1_, upN) || state.func_177230_c().isLeaves(state, p_180709_1_, upN)) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(k4), field_181645_a); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTallGrass.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTallGrass.java.patch deleted file mode 100644 index 2f6ab26ee8..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTallGrass.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenTallGrass.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenTallGrass.java -@@ -19,7 +19,7 @@ - - public boolean func_180709_b(World p_180709_1_, Random p_180709_2_, BlockPos p_180709_3_) - { -- for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) && p_180709_3_.func_177956_o() > 0; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) -+ for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_) || iblockstate.func_177230_c().isLeaves(iblockstate, p_180709_1_, p_180709_3_)) && p_180709_3_.func_177956_o() > 0; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) - { - p_180709_3_ = p_180709_3_.func_177977_b(); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTrees.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTrees.java.patch deleted file mode 100644 index f6ba38728d..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenTrees.java.patch +++ /dev/null @@ -1,108 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenTrees.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenTrees.java -@@ -44,7 +44,7 @@ - int i = p_180709_2_.nextInt(3) + this.field_76533_a; - boolean flag = true; - -- if (p_180709_3_.func_177956_o() >= 1 && p_180709_3_.func_177956_o() + i + 1 <= 256) -+ if (p_180709_3_.func_177956_o() >= 1 && p_180709_3_.func_177956_o() + i + 1 <= p_180709_1_.func_72800_K()) - { - for (int j = p_180709_3_.func_177956_o(); j <= p_180709_3_.func_177956_o() + 1 + i; ++j) - { -@@ -66,9 +66,9 @@ - { - for (int i1 = p_180709_3_.func_177952_p() - k; i1 <= p_180709_3_.func_177952_p() + k && flag; ++i1) - { -- if (j >= 0 && j < 256) -+ if (j >= 0 && j < p_180709_1_.func_72800_K()) - { -- if (!this.func_150523_a(p_180709_1_.func_180495_p(blockpos$mutableblockpos.func_181079_c(l, j, i1)).func_177230_c())) -+ if (!this.isReplaceable(p_180709_1_,blockpos$mutableblockpos.func_181079_c(l, j, i1))) - { - flag = false; - } -@@ -87,11 +87,11 @@ - } - else - { -- Block block = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()).func_177230_c(); -+ IBlockState state = p_180709_1_.func_180495_p(p_180709_3_.func_177977_b()); - -- if ((block == Blocks.field_150349_c || block == Blocks.field_150346_d || block == Blocks.field_150458_ak) && p_180709_3_.func_177956_o() < 256 - i - 1) -+ if (state.func_177230_c().canSustainPlant(state, p_180709_1_, p_180709_3_.func_177977_b(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling)Blocks.field_150345_g) && p_180709_3_.func_177956_o() < p_180709_1_.func_72800_K() - i - 1) - { -- this.func_175921_a(p_180709_1_, p_180709_3_.func_177977_b()); -+ state.func_177230_c().onPlantGrow(state, p_180709_1_, p_180709_3_.func_177977_b(), p_180709_3_); - int k2 = 3; - int l2 = 0; - -@@ -111,9 +111,9 @@ - if (Math.abs(l1) != j1 || Math.abs(j2) != j1 || p_180709_2_.nextInt(2) != 0 && i4 != 0) - { - BlockPos blockpos = new BlockPos(k1, i3, i2); -- Material material = p_180709_1_.func_180495_p(blockpos).func_185904_a(); -+ state = p_180709_1_.func_180495_p(blockpos); - -- if (material == Material.field_151579_a || material == Material.field_151584_j || material == Material.field_151582_l) -+ if (state.func_177230_c().isAir(state, p_180709_1_, blockpos) || state.func_177230_c().isLeaves(state, p_180709_1_, blockpos) || state.func_185904_a() == Material.field_151582_l) - { - this.func_175903_a(p_180709_1_, blockpos, this.field_76530_d); - } -@@ -124,9 +124,10 @@ - - for (int j3 = 0; j3 < i; ++j3) - { -- Material material1 = p_180709_1_.func_180495_p(p_180709_3_.func_177981_b(j3)).func_185904_a(); -+ BlockPos upN = p_180709_3_.func_177981_b(j3); -+ state = p_180709_1_.func_180495_p(upN); - -- if (material1 == Material.field_151579_a || material1 == Material.field_151584_j || material1 == Material.field_151582_l) -+ if (state.func_177230_c().isAir(state, p_180709_1_, upN) || state.func_177230_c().isLeaves(state, p_180709_1_, upN) || state.func_185904_a() == Material.field_151582_l) - { - this.func_175903_a(p_180709_1_, p_180709_3_.func_177981_b(j3), this.field_76532_c); - -@@ -169,29 +170,30 @@ - { - blockpos$mutableblockpos1.func_181079_c(l4, k3, i5); - -- if (p_180709_1_.func_180495_p(blockpos$mutableblockpos1).func_185904_a() == Material.field_151584_j) -+ state = p_180709_1_.func_180495_p(blockpos$mutableblockpos1); -+ if (state.func_177230_c().isLeaves(state, p_180709_1_, blockpos$mutableblockpos1)) - { - BlockPos blockpos2 = blockpos$mutableblockpos1.func_177976_e(); - BlockPos blockpos3 = blockpos$mutableblockpos1.func_177974_f(); - BlockPos blockpos4 = blockpos$mutableblockpos1.func_177978_c(); - BlockPos blockpos1 = blockpos$mutableblockpos1.func_177968_d(); - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos2).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos2)) - { - this.func_181650_b(p_180709_1_, blockpos2, BlockVine.field_176278_M); - } - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos3).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos3)) - { - this.func_181650_b(p_180709_1_, blockpos3, BlockVine.field_176280_O); - } - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos4).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos4)) - { - this.func_181650_b(p_180709_1_, blockpos4, BlockVine.field_176279_N); - } - -- if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_180495_p(blockpos1).func_185904_a() == Material.field_151579_a) -+ if (p_180709_2_.nextInt(4) == 0 && p_180709_1_.func_175623_d(blockpos1)) - { - this.func_181650_b(p_180709_1_, blockpos1, BlockVine.field_176273_b); - } -@@ -245,7 +247,7 @@ - this.func_181651_a(p_181650_1_, p_181650_2_, p_181650_3_); - int i = 4; - -- for (BlockPos blockpos = p_181650_2_.func_177977_b(); p_181650_1_.func_180495_p(blockpos).func_185904_a() == Material.field_151579_a && i > 0; --i) -+ for (BlockPos blockpos = p_181650_2_.func_177977_b(); p_181650_1_.func_175623_d(blockpos) && i > 0; --i) - { - this.func_181651_a(p_181650_1_, blockpos, p_181650_3_); - blockpos = blockpos.func_177977_b(); diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java.patch b/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java.patch deleted file mode 100644 index 15c8c9b418..0000000000 --- a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java -+++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java -@@ -14,7 +14,7 @@ - { - public boolean func_180709_b(World p_180709_1_, Random p_180709_2_, BlockPos p_180709_3_) - { -- for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_185904_a() == Material.field_151579_a || iblockstate.func_185904_a() == Material.field_151584_j) && p_180709_3_.func_177956_o() > 1; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) -+ for (IBlockState iblockstate = p_180709_1_.func_180495_p(p_180709_3_); (iblockstate.func_177230_c().isAir(iblockstate, p_180709_1_, p_180709_3_) || iblockstate.func_177230_c().isLeaves(iblockstate, p_180709_1_, p_180709_3_)) && p_180709_3_.func_177956_o() > 1; iblockstate = p_180709_1_.func_180495_p(p_180709_3_)) - { - p_180709_3_ = p_180709_3_.func_177977_b(); - } -@@ -31,7 +31,7 @@ - { - BlockPos blockpos = p_180709_3_.func_177982_a(p_180709_2_.nextInt(4) - p_180709_2_.nextInt(4), p_180709_2_.nextInt(3) - p_180709_2_.nextInt(3), p_180709_2_.nextInt(4) - p_180709_2_.nextInt(4)); - -- if (p_180709_1_.func_175623_d(blockpos) && p_180709_1_.func_180495_p(blockpos.func_177977_b()).func_185896_q()) -+ if (p_180709_1_.func_175623_d(blockpos) && p_180709_1_.func_180495_p(blockpos.func_177977_b()).isSideSolid(p_180709_1_, blockpos.func_177977_b(), net.minecraft.util.EnumFacing.UP)) - { - p_180709_1_.func_180501_a(blockpos, Blocks.field_150486_ae.func_176223_P(), 2); - TileEntity tileentity = p_180709_1_.func_175625_s(blockpos); -@@ -46,22 +46,22 @@ - BlockPos blockpos3 = blockpos.func_177978_c(); - BlockPos blockpos4 = blockpos.func_177968_d(); - -- if (p_180709_1_.func_175623_d(blockpos2) && p_180709_1_.func_180495_p(blockpos2.func_177977_b()).func_185896_q()) -+ if (p_180709_1_.func_175623_d(blockpos2) && p_180709_1_.func_180495_p(blockpos2.func_177977_b()).isSideSolid(p_180709_1_, blockpos2.func_177977_b(), net.minecraft.util.EnumFacing.UP)) - { - p_180709_1_.func_180501_a(blockpos2, Blocks.field_150478_aa.func_176223_P(), 2); - } - -- if (p_180709_1_.func_175623_d(blockpos1) && p_180709_1_.func_180495_p(blockpos1.func_177977_b()).func_185896_q()) -+ if (p_180709_1_.func_175623_d(blockpos1) && p_180709_1_.func_180495_p(blockpos1.func_177977_b()).isSideSolid(p_180709_1_, blockpos1.func_177977_b(), net.minecraft.util.EnumFacing.UP)) - { - p_180709_1_.func_180501_a(blockpos1, Blocks.field_150478_aa.func_176223_P(), 2); - } - -- if (p_180709_1_.func_175623_d(blockpos3) && p_180709_1_.func_180495_p(blockpos3.func_177977_b()).func_185896_q()) -+ if (p_180709_1_.func_175623_d(blockpos3) && p_180709_1_.func_180495_p(blockpos3.func_177977_b()).isSideSolid(p_180709_1_, blockpos3.func_177977_b(), net.minecraft.util.EnumFacing.UP)) - { - p_180709_1_.func_180501_a(blockpos3, Blocks.field_150478_aa.func_176223_P(), 2); - } - -- if (p_180709_1_.func_175623_d(blockpos4) && p_180709_1_.func_180495_p(blockpos4.func_177977_b()).func_185896_q()) -+ if (p_180709_1_.func_175623_d(blockpos4) && p_180709_1_.func_180495_p(blockpos4.func_177977_b()).isSideSolid(p_180709_1_, blockpos4.func_177977_b(), net.minecraft.util.EnumFacing.UP)) - { - p_180709_1_.func_180501_a(blockpos4, Blocks.field_150478_aa.func_176223_P(), 2); - } diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenLakes.java.patch b/patches_old_unknown/WorldGenLakes.java.patch similarity index 100% rename from patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenLakes.java.patch rename to patches_old_unknown/WorldGenLakes.java.patch diff --git a/patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenerator.java.patch b/patches_old_unknown/WorldGenerator.java.patch similarity index 100% rename from patches_old/minecraft/net/minecraft/world/gen/feature/WorldGenerator.java.patch rename to patches_old_unknown/WorldGenerator.java.patch diff --git a/src/main/java/net/minecraftforge/common/DungeonHooks.java b/src/main/java/net/minecraftforge/common/DungeonHooks.java index d61e80053d..7718533058 100644 --- a/src/main/java/net/minecraftforge/common/DungeonHooks.java +++ b/src/main/java/net/minecraftforge/common/DungeonHooks.java @@ -22,7 +22,7 @@ package net.minecraftforge.common; import java.util.ArrayList; import java.util.Random; -import net.minecraft.util.ResourceLocation; +import net.minecraft.entity.EntityType; import net.minecraft.util.WeightedRandom; public class DungeonHooks @@ -34,7 +34,7 @@ public class DungeonHooks * If the mob is already in the spawn list, the rarity will be added to the existing one, * causing the mob to be more common. * - * @param name The name of the monster, use the same name used when registering the entity. + * @param type Monster type * @param rarity The rarity of selecting this mob over others. Must be greater then 0. * Vanilla Minecraft has the following mobs: * Spider 100 @@ -43,7 +43,7 @@ public class DungeonHooks * Meaning, Zombies are twice as common as spiders or skeletons. * @return The new rarity of the monster, */ - public static float addDungeonMob(ResourceLocation name, int rarity) + public static float addDungeonMob(EntityType type, int rarity) { if (rarity <= 0) { @@ -52,13 +52,13 @@ public class DungeonHooks for (DungeonMob mob : dungeonMobs) { - if (name.equals(mob.type)) + if (type == mob.type) { return mob.itemWeight += rarity; } } - dungeonMobs.add(new DungeonMob(rarity, name)); + dungeonMobs.add(new DungeonMob(rarity, type)); return rarity; } @@ -68,11 +68,11 @@ public class DungeonHooks * @param name The name of the mob to remove * @return The rarity of the removed mob, prior to being removed. */ - public static int removeDungeonMob(ResourceLocation name) + public static int removeDungeonMob(EntityType name) { for (DungeonMob mob : dungeonMobs) { - if (name.equals(mob.type)) + if (name == mob.type) { dungeonMobs.remove(mob); return mob.itemWeight; @@ -86,7 +86,7 @@ public class DungeonHooks * @param rand World generation random number generator * @return The mob name */ - public static ResourceLocation getRandomDungeonMob(Random rand) + public static EntityType getRandomDungeonMob(Random rand) { DungeonMob mob = WeightedRandom.getRandomItem(rand, dungeonMobs); return mob.type; @@ -95,8 +95,8 @@ public class DungeonHooks public static class DungeonMob extends WeightedRandom.Item { - public ResourceLocation type; - public DungeonMob(int weight, ResourceLocation type) + public final EntityType type; + public DungeonMob(int weight, EntityType type) { super(weight); this.type = type; @@ -111,8 +111,8 @@ public class DungeonHooks static { - addDungeonMob(new ResourceLocation("skeleton"), 100); - addDungeonMob(new ResourceLocation("zombie"), 200); - addDungeonMob(new ResourceLocation("spider"), 100); + addDungeonMob(EntityType.SKELETON, 100); + addDungeonMob(EntityType.ZOMBIE, 200); + addDungeonMob(EntityType.SPIDER, 100); } } diff --git a/src/main/java/net/minecraftforge/common/Tags.java b/src/main/java/net/minecraftforge/common/Tags.java index 0fe1632c1b..e860bd3484 100644 --- a/src/main/java/net/minecraftforge/common/Tags.java +++ b/src/main/java/net/minecraftforge/common/Tags.java @@ -35,6 +35,7 @@ public class Tags public static final Tag CHESTS_TRAPPED = tag("chests/trapped"); public static final Tag CHESTS_WOODEN = tag("chests/wooden"); public static final Tag COBBLESTONE = tag("cobblestone"); + public static final Tag DIRT = tag("dirt"); public static final Tag FENCE_GATES = tag("fence_gates"); public static final Tag FENCE_GATES_WOODEN = tag("fence_gates/wooden"); public static final Tag FENCES = tag("fences"); diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeBlock.java b/src/main/java/net/minecraftforge/common/extensions/IForgeBlock.java index 9ff61e7c21..81cd109119 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeBlock.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeBlock.java @@ -374,9 +374,9 @@ public interface IForgeBlock * @param pos Block position in world * @return true if this block can be replaced by growing leaves. */ - default boolean canBeReplacedByLeaves(IBlockState state, IWorldReader world, BlockPos pos) + default boolean canBeReplacedByLeaves(IBlockState state, IWorldReaderBase world, BlockPos pos) { - return isAir(state, world, pos) || state.isIn(BlockTags.LEAVES); + return (isAir(state, world, pos) || state.isIn(BlockTags.LEAVES)) || !state.isOpaqueCube(world, pos); } /** @@ -390,7 +390,7 @@ public interface IForgeBlock * @return True to allow this block to be replaced by a ore */ default boolean isReplaceableOreGen(IBlockState state, IWorldReader world, BlockPos pos, Predicate target) - { //TODO: Re-evaluate with new world gen + { return target.test(state); } @@ -580,9 +580,9 @@ public interface IForgeBlock * @param pos Block position in world * @param source Source plant's position in world */ - default void onPlantGrow(IBlockState state, World world, BlockPos pos, BlockPos source) + default void onPlantGrow(IBlockState state, IWorld world, BlockPos pos, BlockPos source) { - if (this.getBlock() == Blocks.GRASS || this.getBlock() == Blocks.FARMLAND) + if (this.getBlock() == Blocks.GRASS || this.getBlock() == Blocks.FARMLAND || this.getBlock() == Blocks.AIR) world.setBlockState(pos, Blocks.DIRT.getDefaultState(), 2); } diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeBlockState.java b/src/main/java/net/minecraftforge/common/extensions/IForgeBlockState.java index c819fce552..23dbab058c 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeBlockState.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeBlockState.java @@ -36,6 +36,7 @@ import net.minecraft.item.EnumDyeColor; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.pathfinding.PathNodeType; +import net.minecraft.tags.BlockTags; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; @@ -184,7 +185,6 @@ public interface IForgeBlockState return getBlockState().getBlock().canHarvestBlock(getBlockState(), world, pos, player); } - /** * Called when a player removes a block. This is responsible for * actually destroying the block, and the block is intact at time of call. @@ -323,7 +323,7 @@ public interface IForgeBlockState * @param pos Block position in world * @return true if this block can be replaced by growing leaves. */ - default boolean canBeReplacedByLeaves(IWorldReader world, BlockPos pos) + default boolean canBeReplacedByLeaves(IWorldReaderBase world, BlockPos pos) { return getBlockState().getBlock().canBeReplacedByLeaves(getBlockState(), world, pos); } @@ -520,7 +520,7 @@ public interface IForgeBlockState * @param pos Block position in world * @param source Source plant's position in world */ - default void onPlantGrow(World world, BlockPos pos, BlockPos source) + default void onPlantGrow(IWorld world, BlockPos pos, BlockPos source) { getBlockState().getBlock().onPlantGrow(getBlockState(), world, pos, source); } diff --git a/src/main/resources/data/forge/tags/blocks/dirt.json b/src/main/resources/data/forge/tags/blocks/dirt.json new file mode 100644 index 0000000000..0e471849e9 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/dirt.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "minecraft:dirt", + "minecraft:coarse_dirt", + "minecraft:podzol" + ] +}