ForgePatch/patches/minecraft/net/minecraft/block/SugarCaneBlock.java.patch

51 lines
2.1 KiB
Diff

--- a/net/minecraft/block/SugarCaneBlock.java
+++ b/net/minecraft/block/SugarCaneBlock.java
@@ -15,7 +15,7 @@
import net.minecraft.world.IWorldReader;
import net.minecraft.world.server.ServerWorld;
-public class SugarCaneBlock extends Block {
+public class SugarCaneBlock extends Block implements net.minecraftforge.common.IPlantable {
public static final IntegerProperty field_176355_a = BlockStateProperties.field_208171_X;
protected static final VoxelShape field_196503_b = Block.func_208617_a(2.0D, 0.0D, 2.0D, 14.0D, 16.0D, 14.0D);
@@ -43,12 +43,14 @@
if (i < 3) {
int j = p_225542_1_.func_177229_b(field_176355_a);
+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225542_2_, p_225542_3_, p_225542_1_, true)) {
if (j == 15) {
p_225542_2_.func_175656_a(p_225542_3_.func_177984_a(), this.func_176223_P());
p_225542_2_.func_180501_a(p_225542_3_, p_225542_1_.func_206870_a(field_176355_a, Integer.valueOf(0)), 4);
} else {
p_225542_2_.func_180501_a(p_225542_3_, p_225542_1_.func_206870_a(field_176355_a, Integer.valueOf(j + 1)), 4);
}
+ }
}
}
@@ -63,6 +65,8 @@
}
public boolean func_196260_a(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) {
+ BlockState soil = p_196260_2_.func_180495_p(p_196260_3_.func_177977_b());
+ if (soil.canSustainPlant(p_196260_2_, p_196260_3_.func_177977_b(), Direction.UP, this)) return true;
BlockState blockstate = p_196260_2_.func_180495_p(p_196260_3_.func_177977_b());
if (blockstate.func_177230_c() == this) {
return true;
@@ -86,4 +90,14 @@
protected void func_206840_a(StateContainer.Builder<Block, BlockState> p_206840_1_) {
p_206840_1_.func_206894_a(field_176355_a);
}
+
+ @Override
+ public net.minecraftforge.common.PlantType getPlantType(IBlockReader world, BlockPos pos) {
+ return net.minecraftforge.common.PlantType.BEACH;
+ }
+
+ @Override
+ public BlockState getPlant(IBlockReader world, BlockPos pos) {
+ return func_176223_P();
+ }
}