本帖最后由 蝙蝠森林 于 2021-2-24 19:49 编辑
问题:1.耕地无法检测周围的流体或者方块
2.周围没有需要的流体或者方块不会变回沙子
目标:
检测到对应流体不变回沙子
周围没有需要的方块和流体会 和原版耕地一样的速度变回沙子
详细代码如下
问题:1.耕地无法检测周围的流体或者方块
2.周围没有需要的流体或者方块不会变回沙子
目标:
检测到对应流体不变回沙子
周围没有需要的方块和流体会 和原版耕地一样的速度变回沙子
详细代码如下
为什么不直接参考原版耕地呢
复制代码
复制代码
来自原版BlockFarmLand
- private boolean hasWater(World worldIn, BlockPos pos)
- {
- for (BlockPos.MutableBlockPos blockpos$mutableblockpos : BlockPos.getAllInBoxMutable(pos.add(-4, 0, -4), pos.add(4, 1, 4)))
- {
- if (worldIn.getBlockState(blockpos$mutableblockpos).getMaterial() == Material.WATER)
- {
- return true;
- }
- }
- return net.minecraftforge.common.FarmlandWaterManager.hasBlockWaterTicket(worldIn, pos);
- }
- public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
- {
- int i = ((Integer)state.getValue(MOISTURE)).intValue();
- if (!this.hasWater(worldIn, pos) && !worldIn.isRainingAt(pos.up()))
- {
- if (i > 0)
- {
- worldIn.setBlockState(pos, state.withProperty(MOISTURE, Integer.valueOf(i - 1)), 2);
- }
- else if (!this.hasCrops(worldIn, pos))
- {
- turnToDirt(worldIn, pos);
- }
- }
- else if (i < 7)
- {
- worldIn.setBlockState(pos, state.withProperty(MOISTURE, Integer.valueOf(7)), 2);
- }
- }
来自原版BlockFarmLand
除了判断WATER,还有个Blocks.FLOWING_WATER别忘了
另外我觉得楼上那种检测Material的也挺好
另外我觉得楼上那种检测Material的也挺好
f (this.hasLiquidOrBlock(worldIn, pos))
{
worldIn.setBlockState(pos,ModBlocks.SOUL_SAND.getDefaultState());
}
else if (!this.hasLiquidOrBlock(worldIn, pos))
以及你这一段有点迷啊,前面if判断好了,后面你为啥不直接else呢,还要再判断一次elseif有点多余吧