ForgePatch/patches/minecraft/net/minecraft/world/gen/feature/WorldGenSwamp.java.patch

99 lines
6.4 KiB
Diff

--- ../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 && isAir(p_180709_1_, 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 && isAir(p_180709_1_, 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 && isAir(p_180709_1_, 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 && isAir(p_180709_1_, blockpos2))
{
this.func_181647_a(p_180709_1_, blockpos2, BlockVine.field_176273_b);
}
@@ -193,10 +197,16 @@
this.func_175903_a(p_181647_1_, p_181647_2_, iblockstate);
int i = 4;
- for (p_181647_2_ = p_181647_2_.func_177977_b(); p_181647_1_.func_180495_p(p_181647_2_).func_185904_a() == Material.field_151579_a && i > 0; --i)
+ for (p_181647_2_ = p_181647_2_.func_177977_b(); isAir(p_181647_1_, p_181647_2_) && i > 0; --i)
{
this.func_175903_a(p_181647_1_, p_181647_2_, iblockstate);
p_181647_2_ = p_181647_2_.func_177977_b();
}
}
+
+ private boolean isAir(World world, BlockPos pos)
+ {
+ IBlockState state = world.func_180495_p(pos);
+ return state.func_177230_c().isAir(state, world, pos);
+ }
}