package miscperipherals.module;
import miscperipherals.api.IInteractiveSorterOutput;
import miscperipherals.core.MiscPeripherals;
import miscperipherals.core.Module;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.network.packet.NetHandler;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Facing;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.oredict.OreDictionary;
import buildcraft.api.transport.IPipeEntry;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.registry.GameRegistry;
public class ModuleBuildCraftTransport extends Module {
@Override
public void onPreInit() {
}
@Override
public void onInit() {
}
@Override
public void onPostInit() {
if (MiscPeripherals.instance.enableChargeStation) {
ItemStack pipePowerGold = ModuleBuildCraftCore.getBCItem("Transport", "pipePowerGold");
ItemStack ironGearItem = ModuleBuildCraftCore.getBCItem("Core", "ironGearItem");
if (pipePowerGold != null && ironGearItem != null) {
GameRegistry.addShapelessRecipe(new ItemStack(MiscPeripherals.instance.blockAlpha, 1, 0), pipePowerGold, ironGearItem, Item.redstone);
}
}
for (String name : new String[] {"pipeGate", "pipeGateAutarchic"}) {
ItemStack gate = ModuleBuildCraftCore.getBCItem("Transport", name);
if (gate != null) {
gate = gate.copy();
gate.setItemDamage(OreDictionary.WILDCARD_VALUE);
OreDictionary.registerOre("MiscPeripherals$bcGate", gate);
}
}
for (String name : new String[] {"redPipeWire", "bluePipeWire", "greenPipeWire", "yellowPipeWire"}) {
ItemStack wire = ModuleBuildCraftCore.getBCItem("Transport", name);
if (wire != null) {
wire = wire.copy();
wire.setItemDamage(OreDictionary.WILDCARD_VALUE);
OreDictionary.registerOre("MiscPeripherals$bcPipeWire", wire);
}
}
IInteractiveSorterOutput.handlers.add(new IInteractiveSorterOutput() {
@Override
public void output(ItemStack stack, World world, int posX, int posY, int posZ, int direction) {
TileEntity te = world.getBlockTileEntity(posX + Facing.offsetsXForSide[direction], posY + Facing.offsetsYForSide[direction], posZ + Facing.offsetsZForSide[direction]);
if (te instanceof IPipeEntry) { // try pipe
IPipeEntry pipe = (IPipeEntry)te;
if (pipe.acceptItems()) {
pipe.entityEntering(stack.copy(), ForgeDirection.getOrientation(direction));
stack.stackSize = 0;
}
}
}
});
}
@Override
public void handleNetworkMessage(NetHandler source, boolean isClient, ByteArrayDataInput data) {
}
}