world.gen.feature patches, worldgen should be stable with vanilla. In all places I looked.

This commit is contained in:
LexManos 2018-12-06 18:09:47 -08:00
parent eb22f42fea
commit bbf1ea41b8
66 changed files with 1066 additions and 1026 deletions

View File

@ -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 ||

View File

@ -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;
}

View File

@ -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<NoFeatureConfig> 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<NoFeatureConfig> 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);
}
}

View File

@ -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_) {

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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<BlockPos> 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);

View File

@ -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);
}
}

View File

@ -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<NoFeatureConfig> {
public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator<? extends IChunkGenSettings> 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);
}

View File

@ -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;
}

View File

@ -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<BlockPos> 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);
}

View File

@ -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<? extends IChunkGenSettings> 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();
}

View File

@ -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;
}

View File

@ -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_);
}
}

View File

@ -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<NoFeatureConfig> field_202339_q = new BigTreeFeature(false);
public static final AbstractTreeFeature<NoFeatureConfig> field_202340_r = new BirchTreeFeature(false, false);
public static final AbstractTreeFeature<NoFeatureConfig> field_202341_s = new BirchTreeFeature(false, true);
- public static final AbstractTreeFeature<NoFeatureConfig> field_202342_t = new ShrubFeature(Blocks.field_196620_N.func_176223_P(), Blocks.field_196642_W.func_176223_P());
- public static final AbstractTreeFeature<NoFeatureConfig> 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<NoFeatureConfig> 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<NoFeatureConfig> 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<NoFeatureConfig> field_202344_v = new PointyTaigaTreeFeature();
public static final AbstractTreeFeature<NoFeatureConfig> field_202345_w = new CanopyTreeFeature(false);
public static final AbstractTreeFeature<NoFeatureConfig> field_202346_x = new SavannaTreeFeature(false);
public static final AbstractTreeFeature<NoFeatureConfig> field_202347_y = new TallTaigaTreeFeature(false);
public static final AbstractTreeFeature<NoFeatureConfig> field_202348_z = new SwampTreeFeature();
public static final AbstractTreeFeature<NoFeatureConfig> field_202301_A = new TreeFeature(false);
- public static final HugeTreesFeature<NoFeatureConfig> 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<NoFeatureConfig> 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<NoFeatureConfig> field_202303_C = new MegaPineTree(false, false);
public static final HugeTreesFeature<NoFeatureConfig> field_202304_D = new MegaPineTree(false, true);
public static final AbstractFlowersFeature field_202305_E = new DefaultFlowersFeature();

View File

@ -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()) {

View File

@ -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<? extends IChunkGenSettings> 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;

View File

@ -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<T> setSapling(net.minecraftforge.common.IPlantable sapling) {
+ this.sapling = sapling;
+ return this;
+ }
}

View File

@ -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;
}

View File

@ -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<? extends IChunkGenSettings> 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();
}

View File

@ -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;

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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<BlockPos> 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);
}

View File

@ -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<NoFeatureConfig> {
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<BlockPos> 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;
+ }
}

View File

@ -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();
}

View File

@ -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<? extends IChunkGenSettings> 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();
}

View File

@ -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<TallGrassConfig> {
public boolean func_212245_a(IWorld p_212245_1_, IChunkGenerator<? extends IChunkGenSettings> 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();
}

View File

@ -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);
}
}

View File

@ -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<BlockPos> 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;
+ }
}

View File

@ -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<? extends IChunkGenSettings> 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);

View File

@ -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());
+ }
}

View File

@ -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));
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
+ }
}

View File

@ -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();
}

View File

@ -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_);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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);
+ }
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
+ }
}

View File

@ -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);
+ }
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -35,6 +35,7 @@ public class Tags
public static final Tag<Block> CHESTS_TRAPPED = tag("chests/trapped");
public static final Tag<Block> CHESTS_WOODEN = tag("chests/wooden");
public static final Tag<Block> COBBLESTONE = tag("cobblestone");
public static final Tag<Block> DIRT = tag("dirt");
public static final Tag<Block> FENCE_GATES = tag("fence_gates");
public static final Tag<Block> FENCE_GATES_WOODEN = tag("fence_gates/wooden");
public static final Tag<Block> FENCES = tag("fences");

View File

@ -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<IBlockState> 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);
}

View File

@ -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);
}

View File

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:dirt",
"minecraft:coarse_dirt",
"minecraft:podzol"
]
}