Fix #547 wheat farm places farmland in invalid spaces

This commit is contained in:
mezz committed 2015-06-14 19:24:41 -07:00
1 parent 66da45f5bf
commit ed563d98c2
1 file changed
+22 -9
@@ -28,6 +28,7 @@ import forestry.core.utils.StackUtils;
import forestry.core.utils.Utils;
import forestry.core.vect.Vect;
import forestry.core.vect.VectUtil;
import forestry.farming.gadgets.StructureLogicFarm;
public abstract class FarmLogicWatered extends FarmLogic {
@@ -95,19 +96,25 @@ public abstract class FarmLogicWatered extends FarmLogic {
for (int i = 0; i < extent; i++) {
Vect position = translateWithOffset(x, y, z, direction, i);
Block block = VectUtil.getBlock(world, position);
if (!isAirBlock(block) && !Utils.isReplaceableBlock(block)) {
ItemStack blockStack = VectUtil.getAsItemStack(world, position);
if (!isAcceptedGround(blockStack) && housing.hasResources(resources)) {
produce.addAll(BlockUtil.getBlockDrops(getWorld(), position));
setBlock(position, Blocks.air, 0);
return trySetSoil(position);
}
Block soil = VectUtil.getBlock(world, position);
ItemStack soilStack = VectUtil.getAsItemStack(world, position);
if (isAcceptedGround(soilStack) || !housing.hasResources(resources)) {
continue;
}
Vect platformPosition = position.add(0, -1, 0);
Block platformBlock = VectUtil.getBlock(world, platformPosition);
if (!StructureLogicFarm.bricks.contains(platformBlock)) {
break;
}
if (!isAirBlock(soil) && !Utils.isReplaceableBlock(soil)) {
produce.addAll(BlockUtil.getBlockDrops(getWorld(), position));
setBlock(position, Blocks.air, 0);
return trySetSoil(position);
}
if (isManual || isWaterSourceBlock(world, position)) {
continue;
}
@@ -128,6 +135,12 @@ public abstract class FarmLogicWatered extends FarmLogic {
for (int i = 0; i < extent; i++) {
Vect position = translateWithOffset(x, y, z, direction, i);
Vect platformPosition = position.add(0, -1, 0);
Block platformBlock = VectUtil.getBlock(world, platformPosition);
if (!StructureLogicFarm.bricks.contains(platformBlock)) {
break;
}
if (trySetWater(world, position)) {
return true;
}