70 lines
2.2 KiB
Java
70 lines
2.2 KiB
Java
package biomesoplenty.integration.minefactoryreloaded;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.common.ForgeDirection;
|
|
import net.minecraftforge.common.IPlantable;
|
|
import powercrystals.minefactoryreloaded.api.IFactoryPlantable;
|
|
|
|
public class Plantable implements IFactoryPlantable
|
|
{
|
|
protected int sourceId;
|
|
protected int plantedBlockId;
|
|
|
|
public Plantable(int sourceId, int plantedBlockId)
|
|
{
|
|
if(plantedBlockId >= Block.blocksList.length)
|
|
{
|
|
throw new IllegalArgumentException("Passed an Item ID to FactoryPlantableStandard's planted block argument");
|
|
}
|
|
this.sourceId = sourceId;
|
|
this.plantedBlockId = plantedBlockId;
|
|
}
|
|
|
|
@Override
|
|
public boolean canBePlantedHere(World world, int x, int y, int z, ItemStack stack)
|
|
{
|
|
int groundId = world.getBlockId(x, y - 1, z);
|
|
if(!world.isAirBlock(x, y, z))
|
|
{
|
|
return false;
|
|
}
|
|
return
|
|
(Block.blocksList[plantedBlockId].canPlaceBlockAt(world, x, y, z) && Block.blocksList[plantedBlockId].canBlockStay(world, x, y, z)) ||
|
|
(Block.blocksList[plantedBlockId] instanceof IPlantable && Block.blocksList[groundId] != null &&
|
|
Block.blocksList[groundId].canSustainPlant(world, x, y, z, ForgeDirection.UP, ((IPlantable)Block.blocksList[plantedBlockId])));
|
|
}
|
|
|
|
@Override
|
|
public void prePlant(World world, int x, int y, int z, ItemStack stack)
|
|
{
|
|
}
|
|
|
|
@Override
|
|
public void postPlant(World world, int x, int y, int z, ItemStack stack)
|
|
{
|
|
}
|
|
|
|
@Override
|
|
public int getPlantedBlockId(World world, int x, int y, int z, ItemStack stack)
|
|
{
|
|
if(stack.itemID != sourceId)
|
|
{
|
|
return -1;
|
|
}
|
|
return plantedBlockId;
|
|
}
|
|
|
|
@Override
|
|
public int getPlantedBlockMetadata(World world, int x, int y, int z, ItemStack stack)
|
|
{
|
|
return stack.getItemDamage();
|
|
}
|
|
|
|
@Override
|
|
public int getSeedId()
|
|
{
|
|
return sourceId;
|
|
}
|
|
}
|