package com.amadornes.framez.movement.handler; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.BlockFluidBase; import com.amadornes.framez.api.Priority; import com.amadornes.framez.api.Priority.PriorityEnum; import com.amadornes.framez.api.movement.BlockMovementType; import com.amadornes.framez.api.movement.IMovement; import com.amadornes.framez.api.movement.IMovementHandler; import com.amadornes.framez.api.movement.IMovingBlock; public class MovementHandlerFluid implements IMovementHandler { @Override @Priority(PriorityEnum.OVERRIDE) public BlockMovementType getMovementType(World world, int x, int y, int z, ForgeDirection side, IMovement movement) { Block b = world.getBlock(x, y, z); if (b instanceof BlockFluidBase) { if (((BlockFluidBase) b).getFilledPercentage(world, x, y, z) == 1F) return BlockMovementType.SEMI_MOVABLE; return BlockMovementType.UNMOVABLE; } if (b instanceof BlockLiquid) { if (BlockLiquid.getLiquidHeightPercent(world.getBlockMetadata(x, y, z)) == 1 / 9F) return BlockMovementType.SEMI_MOVABLE; return BlockMovementType.UNMOVABLE; } return null; } @Override public boolean startMoving(IMovingBlock block) { return false; } @Override public boolean finishMoving(IMovingBlock block) { return false; } @Override public boolean canHandle(World world, int x, int y, int z) { return getMovementType(world, x, y, z, null, null) != null; } }