/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport.pluggable;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import buildcraft.api.core.INBTStoreable;
import buildcraft.api.core.ISerializable;
import buildcraft.api.transport.IPipeTile;
/** An IPipePluggable MUST have an empty constructor for client-side rendering! */
public abstract class PipePluggable implements INBTStoreable, ISerializable {
public abstract ItemStack[] getDropItems(IPipeTile pipe);
public void update(IPipeTile pipe, EnumFacing direction) {
}
public void onAttachedPipe(IPipeTile pipe, EnumFacing direction) {
validate(pipe, direction);
}
public void onDetachedPipe(IPipeTile pipe, EnumFacing direction) {
invalidate();
}
public abstract boolean isBlocking(IPipeTile pipe, EnumFacing direction);
public void invalidate() {
}
public void validate(IPipeTile pipe, EnumFacing direction) {
}
public boolean isSolidOnSide(IPipeTile pipe, EnumFacing direction) {
return false;
}
public abstract AxisAlignedBB getBoundingBox(EnumFacing side);
@SideOnly(Side.CLIENT)
public IPipePluggableDynamicRenderer getDynamicRenderer() {
return null;
}
@SideOnly(Side.CLIENT)
public abstract PluggableModelKey<?> getModelRenderKey(EnumWorldBlockLayer layer, EnumFacing side);
public boolean requiresRenderUpdate(PipePluggable old) {
return true;
}
}