Merge branch 'master' of git://github.com/SandGrainOne/BuildCraft into SandGrainOne-master

This commit is contained in:
CovertJaguar 2013-11-23 12:28:24 -08:00
commit 9b724724b4
19 changed files with 423 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

View file

@ -33,6 +33,7 @@ gui.pipes.emerald.blocking=Blocking
gui.pipes.emerald.blocking.tip=Extraction is blocked if one element in filter is missing gui.pipes.emerald.blocking.tip=Extraction is blocked if one element in filter is missing
gui.pipes.emerald.nonblocking=Non Blocking gui.pipes.emerald.nonblocking=Non Blocking
gui.pipes.emerald.nonblocking.tip=Extraction continues with the next element in filter if one element is missing gui.pipes.emerald.nonblocking.tip=Extraction continues with the next element in filter if one element is missing
gui.pipes.logemerald.title=Extraction presets
item.bucketFuel=Fuel Bucket item.bucketFuel=Fuel Bucket
item.bucketOil=Oil Bucket item.bucketOil=Oil Bucket
item.woodenGearItem=Wood Gear item.woodenGearItem=Wood Gear
@ -78,6 +79,7 @@ item.PipeItemsObsidian=Obsidian Transport Pipe
item.PipeItemsEmerald=Emerald Transport Pipe item.PipeItemsEmerald=Emerald Transport Pipe
item.PipeItemsLapis=Lapis Transport Pipe item.PipeItemsLapis=Lapis Transport Pipe
item.PipeItemsDaizuli=Daizuli Transport Pipe item.PipeItemsDaizuli=Daizuli Transport Pipe
item.PipeItemsLogemerald=Logemerald Transport Pipe
item.PipeFluidsWood=Wooden Fluid Pipe item.PipeFluidsWood=Wooden Fluid Pipe
item.PipeFluidsCobblestone=Cobblestone Fluid Pipe item.PipeFluidsCobblestone=Cobblestone Fluid Pipe
item.PipeFluidsStone=Stone Fluid Pipe item.PipeFluidsStone=Stone Fluid Pipe
@ -152,6 +154,7 @@ tip.PipeItemsSandstone=Only connects to other pipes
tip.PipeItemsStone=Basic pipe, medium drag\nWon't connect to Cobblestone or Quartz tip.PipeItemsStone=Basic pipe, medium drag\nWon't connect to Cobblestone or Quartz
tip.PipeItemsVoid=Destroys items tip.PipeItemsVoid=Destroys items
tip.PipeItemsWood=Extraction pipe tip.PipeItemsWood=Extraction pipe
tip.PipeItemsLogemerald=Action controlled extraction pipe
tip.PipePowerWood=Power Input Pipe tip.PipePowerWood=Power Input Pipe
tip.PipePowerIron=Selectable Limiter Pipe tip.PipePowerIron=Selectable Limiter Pipe
tip.PipeStructureCobblestone=Support pipe tip.PipeStructureCobblestone=Support pipe

View file

@ -54,6 +54,7 @@ import buildcraft.transport.pipes.PipeItemsDiamond;
import buildcraft.transport.pipes.PipeItemsEmerald; import buildcraft.transport.pipes.PipeItemsEmerald;
import buildcraft.transport.pipes.PipeItemsGold; import buildcraft.transport.pipes.PipeItemsGold;
import buildcraft.transport.pipes.PipeItemsIron; import buildcraft.transport.pipes.PipeItemsIron;
import buildcraft.transport.pipes.PipeItemsLogemerald;
import buildcraft.transport.pipes.PipeItemsLapis; import buildcraft.transport.pipes.PipeItemsLapis;
import buildcraft.transport.pipes.PipeItemsObsidian; import buildcraft.transport.pipes.PipeItemsObsidian;
import buildcraft.transport.pipes.PipeItemsQuartz; import buildcraft.transport.pipes.PipeItemsQuartz;
@ -71,6 +72,7 @@ import buildcraft.transport.pipes.PipePowerStone;
import buildcraft.transport.pipes.PipePowerWood; import buildcraft.transport.pipes.PipePowerWood;
import buildcraft.transport.pipes.PipeStructureCobblestone; import buildcraft.transport.pipes.PipeStructureCobblestone;
import buildcraft.transport.triggers.ActionEnergyPulser; import buildcraft.transport.triggers.ActionEnergyPulser;
import buildcraft.transport.triggers.ActionExtractionPreset;
import buildcraft.transport.triggers.ActionPipeColor; import buildcraft.transport.triggers.ActionPipeColor;
import buildcraft.transport.triggers.ActionPipeDirection; import buildcraft.transport.triggers.ActionPipeDirection;
import buildcraft.transport.triggers.ActionPowerLimiter; import buildcraft.transport.triggers.ActionPowerLimiter;
@ -126,6 +128,7 @@ public class BuildCraftTransport {
public static Item pipeItemsDaizuli; public static Item pipeItemsDaizuli;
public static Item pipeItemsVoid; public static Item pipeItemsVoid;
public static Item pipeItemsSandstone; public static Item pipeItemsSandstone;
public static Item pipeItemsLogemerald;
public static Item pipeFluidsWood; public static Item pipeFluidsWood;
public static Item pipeFluidsCobblestone; public static Item pipeFluidsCobblestone;
public static Item pipeFluidsStone; public static Item pipeFluidsStone;
@ -170,12 +173,18 @@ public class BuildCraftTransport {
public static BCAction[] actionPipeColor = new BCAction[16]; public static BCAction[] actionPipeColor = new BCAction[16];
public static BCAction[] actionPipeDirection = new BCAction[16]; public static BCAction[] actionPipeDirection = new BCAction[16];
public static BCAction[] actionPowerLimiter = new BCAction[7]; public static BCAction[] actionPowerLimiter = new BCAction[7];
@Instance("BuildCraft|Transport") public static BCAction actionExtractionPresetRed = new ActionExtractionPreset(-1, EnumColor.RED);
public static BuildCraftTransport instance; public static BCAction actionExtractionPresetBlue = new ActionExtractionPreset(-1, EnumColor.BLUE);
public static BCAction actionExtractionPresetGreen = new ActionExtractionPreset(-1, EnumColor.GREEN);
public static BCAction actionExtractionPresetYellow = new ActionExtractionPreset(-1, EnumColor.YELLOW);
public IIconProvider pipeIconProvider = new PipeIconProvider(); public IIconProvider pipeIconProvider = new PipeIconProvider();
public IIconProvider gateIconProvider = new GateIconProvider(); public IIconProvider gateIconProvider = new GateIconProvider();
public IIconProvider wireIconProvider = new WireIconProvider(); public IIconProvider wireIconProvider = new WireIconProvider();
@Instance("BuildCraft|Transport")
public static BuildCraftTransport instance;
private static class PipeRecipe { private static class PipeRecipe {
boolean isShapeless = false; // pipe recipes come shaped and unshaped. boolean isShapeless = false; // pipe recipes come shaped and unshaped.
@ -270,7 +279,6 @@ public class BuildCraftTransport {
genericPipeBlock = new BlockGenericPipe(genericPipeId.getInt()); genericPipeBlock = new BlockGenericPipe(genericPipeId.getInt());
CoreProxy.proxy.registerBlock(genericPipeBlock.setUnlocalizedName("pipeBlock"), ItemBlock.class); CoreProxy.proxy.registerBlock(genericPipeBlock.setUnlocalizedName("pipeBlock"), ItemBlock.class);
// Fixing retro-compatiblity
pipeItemsWood = buildPipe(DefaultProps.PIPE_ITEMS_WOOD_ID, PipeItemsWood.class, "Wooden Transport Pipe", "plankWood", Block.glass, "plankWood"); pipeItemsWood = buildPipe(DefaultProps.PIPE_ITEMS_WOOD_ID, PipeItemsWood.class, "Wooden Transport Pipe", "plankWood", Block.glass, "plankWood");
pipeItemsEmerald = buildPipe(DefaultProps.PIPE_ITEMS_EMERALD_ID, PipeItemsEmerald.class, "Emerald Transport Pipe", Item.emerald, Block.glass, Item.emerald); pipeItemsEmerald = buildPipe(DefaultProps.PIPE_ITEMS_EMERALD_ID, PipeItemsEmerald.class, "Emerald Transport Pipe", Item.emerald, Block.glass, Item.emerald);
pipeItemsCobblestone = buildPipe(DefaultProps.PIPE_ITEMS_COBBLESTONE_ID, PipeItemsCobblestone.class, "Cobblestone Transport Pipe", "cobblestone", Block.glass, "cobblestone"); pipeItemsCobblestone = buildPipe(DefaultProps.PIPE_ITEMS_COBBLESTONE_ID, PipeItemsCobblestone.class, "Cobblestone Transport Pipe", "cobblestone", Block.glass, "cobblestone");
@ -284,6 +292,7 @@ public class BuildCraftTransport {
pipeItemsDaizuli = buildPipe(DefaultProps.PIPE_ITEMS_DAIZULI_ID, PipeItemsDaizuli.class, "Daizuli Transport Pipe", Block.blockLapis, Block.glass, Item.diamond); pipeItemsDaizuli = buildPipe(DefaultProps.PIPE_ITEMS_DAIZULI_ID, PipeItemsDaizuli.class, "Daizuli Transport Pipe", Block.blockLapis, Block.glass, Item.diamond);
pipeItemsSandstone = buildPipe(DefaultProps.PIPE_ITEMS_SANDSTONE_ID, PipeItemsSandstone.class, "Sandstone Transport Pipe", Block.sandStone, Block.glass, Block.sandStone); pipeItemsSandstone = buildPipe(DefaultProps.PIPE_ITEMS_SANDSTONE_ID, PipeItemsSandstone.class, "Sandstone Transport Pipe", Block.sandStone, Block.glass, Block.sandStone);
pipeItemsVoid = buildPipe(DefaultProps.PIPE_ITEMS_VOID_ID, PipeItemsVoid.class, "Void Transport Pipe", "dyeBlack", Block.glass, Item.redstone); pipeItemsVoid = buildPipe(DefaultProps.PIPE_ITEMS_VOID_ID, PipeItemsVoid.class, "Void Transport Pipe", "dyeBlack", Block.glass, Item.redstone);
pipeItemsLogemerald = buildPipe(DefaultProps.PIPE_ITEMS_LOGEMERALD_ID, PipeItemsLogemerald.class, "Logemerald Transport Pipe", "logWood", Block.glass, Item.emerald);
pipeFluidsWood = buildPipe(DefaultProps.PIPE_LIQUIDS_WOOD_ID, PipeFluidsWood.class, "Wooden Waterproof Pipe", pipeWaterproof, pipeItemsWood); pipeFluidsWood = buildPipe(DefaultProps.PIPE_LIQUIDS_WOOD_ID, PipeFluidsWood.class, "Wooden Waterproof Pipe", pipeWaterproof, pipeItemsWood);
pipeFluidsCobblestone = buildPipe(DefaultProps.PIPE_LIQUIDS_COBBLESTONE_ID, PipeFluidsCobblestone.class, "Cobblestone Waterproof Pipe", pipeWaterproof, pipeItemsCobblestone); pipeFluidsCobblestone = buildPipe(DefaultProps.PIPE_LIQUIDS_COBBLESTONE_ID, PipeFluidsCobblestone.class, "Cobblestone Waterproof Pipe", pipeWaterproof, pipeItemsCobblestone);
@ -367,7 +376,7 @@ public class BuildCraftTransport {
// Register connection handler // Register connection handler
// MinecraftForge.registerConnectionHandler(new ConnectionHandler()); // MinecraftForge.registerConnectionHandler(new ConnectionHandler());
// Register gui handler // Register GUI handler
// MinecraftForge.setGuiHandler(mod_BuildCraftTransport.instance, new GuiHandler()); // MinecraftForge.setGuiHandler(mod_BuildCraftTransport.instance, new GuiHandler());
TransportProxy.proxy.registerTileEntities(); TransportProxy.proxy.registerTileEntities();

View file

@ -63,6 +63,7 @@ public class DefaultProps {
public static int PIPE_ITEMS_QUARTZ_ID = 19168; public static int PIPE_ITEMS_QUARTZ_ID = 19168;
public static int PIPE_ITEMS_LAPIS_ID = 19169; public static int PIPE_ITEMS_LAPIS_ID = 19169;
public static int PIPE_ITEMS_DAIZULI_ID = 19170; public static int PIPE_ITEMS_DAIZULI_ID = 19170;
public static int PIPE_ITEMS_LOGEMERALD_ID = 19171;
public static int PIPE_LIQUIDS_WOOD_ID = 19180; public static int PIPE_LIQUIDS_WOOD_ID = 19180;
public static int PIPE_LIQUIDS_COBBLESTONE_ID = 19181; public static int PIPE_LIQUIDS_COBBLESTONE_ID = 19181;

View file

@ -19,6 +19,7 @@ public class GuiIds {
public static final int PIPE_DIAMOND = 50; public static final int PIPE_DIAMOND = 50;
public static final int GATES = 51; public static final int GATES = 51;
public static final int PIPE_EMERALD_ITEM = 52; public static final int PIPE_EMERALD_ITEM = 52;
public static final int PIPE_LOGEMERALD_ITEM = 53;
public static final int FILTERED_BUFFER = 60; public static final int FILTERED_BUFFER = 60;
} }

View file

@ -6,12 +6,15 @@ import buildcraft.transport.gui.ContainerDiamondPipe;
import buildcraft.transport.gui.ContainerEmeraldPipe; import buildcraft.transport.gui.ContainerEmeraldPipe;
import buildcraft.transport.gui.ContainerFilteredBuffer; import buildcraft.transport.gui.ContainerFilteredBuffer;
import buildcraft.transport.gui.ContainerGateInterface; import buildcraft.transport.gui.ContainerGateInterface;
import buildcraft.transport.gui.ContainerLogemeraldPipe;
import buildcraft.transport.gui.GuiDiamondPipe; import buildcraft.transport.gui.GuiDiamondPipe;
import buildcraft.transport.gui.GuiEmeraldPipe; import buildcraft.transport.gui.GuiEmeraldPipe;
import buildcraft.transport.gui.GuiFilteredBuffer; import buildcraft.transport.gui.GuiFilteredBuffer;
import buildcraft.transport.gui.GuiGateInterface; import buildcraft.transport.gui.GuiGateInterface;
import buildcraft.transport.gui.GuiLogemeraldPipe;
import buildcraft.transport.pipes.PipeItemsDiamond; import buildcraft.transport.pipes.PipeItemsDiamond;
import buildcraft.transport.pipes.PipeItemsEmerald; import buildcraft.transport.pipes.PipeItemsEmerald;
import buildcraft.transport.pipes.PipeItemsLogemerald;
import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.IGuiHandler;
import java.util.logging.Level; import java.util.logging.Level;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -48,6 +51,9 @@ public class GuiHandler implements IGuiHandler {
case GuiIds.PIPE_EMERALD_ITEM: case GuiIds.PIPE_EMERALD_ITEM:
return new ContainerEmeraldPipe(player.inventory, (PipeItemsEmerald) pipe.pipe); return new ContainerEmeraldPipe(player.inventory, (PipeItemsEmerald) pipe.pipe);
case GuiIds.PIPE_LOGEMERALD_ITEM:
return new ContainerLogemeraldPipe(player.inventory, (PipeItemsLogemerald) pipe.pipe);
case GuiIds.GATES: case GuiIds.GATES:
if (pipe.pipe.hasGate()) if (pipe.pipe.hasGate())
return new ContainerGateInterface(player.inventory, pipe.pipe); return new ContainerGateInterface(player.inventory, pipe.pipe);
@ -89,6 +95,9 @@ public class GuiHandler implements IGuiHandler {
case GuiIds.PIPE_EMERALD_ITEM: case GuiIds.PIPE_EMERALD_ITEM:
return new GuiEmeraldPipe(player.inventory, (PipeItemsEmerald) pipe.pipe); return new GuiEmeraldPipe(player.inventory, (PipeItemsEmerald) pipe.pipe);
case GuiIds.PIPE_LOGEMERALD_ITEM:
return new GuiLogemeraldPipe(player.inventory, (PipeItemsLogemerald) pipe.pipe);
case GuiIds.GATES: case GuiIds.GATES:
if (pipe.pipe.hasGate()) if (pipe.pipe.hasGate())
return new GuiGateInterface(player.inventory, pipe.pipe); return new GuiGateInterface(player.inventory, pipe.pipe);

View file

@ -12,6 +12,7 @@ import buildcraft.transport.pipes.PipeFluidsCobblestone;
import buildcraft.transport.pipes.PipeFluidsStone; import buildcraft.transport.pipes.PipeFluidsStone;
import buildcraft.transport.pipes.PipeFluidsWood; import buildcraft.transport.pipes.PipeFluidsWood;
import buildcraft.transport.pipes.PipeItemsCobblestone; import buildcraft.transport.pipes.PipeItemsCobblestone;
import buildcraft.transport.pipes.PipeItemsLogemerald;
import buildcraft.transport.pipes.PipeItemsObsidian; import buildcraft.transport.pipes.PipeItemsObsidian;
import buildcraft.transport.pipes.PipeItemsQuartz; import buildcraft.transport.pipes.PipeItemsQuartz;
import buildcraft.transport.pipes.PipeItemsStone; import buildcraft.transport.pipes.PipeItemsStone;
@ -42,6 +43,8 @@ public class PipeConnectionBans {
banConnection(PipeItemsObsidian.class); banConnection(PipeItemsObsidian.class);
banConnection(PipeItemsLogemerald.class);
// Power Pipes // Power Pipes
banConnection(PipePowerWood.class); banConnection(PipePowerWood.class);
} }

View file

@ -64,6 +64,9 @@ public class PipeIconProvider implements IIconProvider {
PipeItemsEmerald_Standard("pipeItemsEmerald_standard"), PipeItemsEmerald_Standard("pipeItemsEmerald_standard"),
PipeAllEmerald_Solid("pipeAllEmerald_solid"), PipeAllEmerald_Solid("pipeAllEmerald_solid"),
// //
PipeItemsLogemerald_Standard("pipeItemsLogemerald_standard"),
PipeAllLogemerald_Solid("pipeAllLogemerald_solid"),
//
PipeItemsGold("pipeItemsGold"), PipeItemsGold("pipeItemsGold"),
// //
PipeItemsIron_Standard("pipeItemsIron_standard"), PipeItemsIron_Standard("pipeItemsIron_standard"),

View file

@ -39,6 +39,7 @@ public class TransportProxyClient extends TransportProxy {
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsEmerald.itemID, pipeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsEmerald.itemID, pipeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsLapis.itemID, pipeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsLapis.itemID, pipeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsDaizuli.itemID, pipeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsDaizuli.itemID, pipeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeItemsLogemerald.itemID, pipeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeFluidsWood.itemID, pipeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeFluidsWood.itemID, pipeItemRenderer);
MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeFluidsCobblestone.itemID, pipeItemRenderer); MinecraftForgeClient.registerItemRenderer(BuildCraftTransport.pipeFluidsCobblestone.itemID, pipeItemRenderer);

View file

@ -0,0 +1,49 @@
/**
* Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License
* 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.transport.gui;
import buildcraft.core.gui.BuildCraftContainer;
import buildcraft.core.gui.slots.SlotPhantom;
import buildcraft.transport.pipes.PipeItemsLogemerald;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
public class ContainerLogemeraldPipe extends BuildCraftContainer {
private final PipeItemsLogemerald logemeraldPipe;
private final IInventory filterInv;
public ContainerLogemeraldPipe(IInventory playerInventory, PipeItemsLogemerald pipe) {
super(pipe.getFilters().getSizeInventory());
logemeraldPipe = pipe;
filterInv = logemeraldPipe.getFilters();
addSlotToContainer(new SlotPhantom(filterInv, 0, 44, 21));
addSlotToContainer(new SlotPhantom(filterInv, 1, 116, 21));
addSlotToContainer(new SlotPhantom(filterInv, 2, 44, 49));
addSlotToContainer(new SlotPhantom(filterInv, 3, 116, 49));
for (int l = 0; l < 3; l++) {
for (int k1 = 0; k1 < 9; k1++) {
addSlotToContainer(new Slot(playerInventory, k1 + l * 9 + 9, 8 + k1 * 18, 84 + l * 18));
}
}
for (int i1 = 0; i1 < 9; i1++) {
addSlotToContainer(new Slot(playerInventory, i1, 8 + i1 * 18, 142));
}
}
@Override
public boolean canInteractWith(EntityPlayer entityplayer) {
return logemeraldPipe.container.isUseableByPlayer(entityplayer);
}
}

View file

@ -0,0 +1,52 @@
/**
* Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License
* 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.transport.gui;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import buildcraft.core.DefaultProps;
import buildcraft.core.gui.GuiBuildCraft;
import buildcraft.core.utils.StringUtils;
import buildcraft.transport.pipes.PipeItemsLogemerald;
public class GuiLogemeraldPipe extends GuiBuildCraft {
private static final ResourceLocation TEXTURE = new ResourceLocation("buildcraft", DefaultProps.TEXTURE_PATH_GUI + "/logemerald_pipe_gui.png");
IInventory filterInventory;
PipeItemsLogemerald logemeraldPipe;
public GuiLogemeraldPipe(IInventory playerInventory, PipeItemsLogemerald pipe) {
super(new ContainerLogemeraldPipe(playerInventory, pipe), pipe.getFilters());
logemeraldPipe = pipe;
filterInventory = pipe.getFilters();
xSize = 175;
ySize = 166;
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
String title = StringUtils.localize("gui.pipes.logemerald.title");
fontRenderer.drawString(title, (xSize - fontRenderer.getStringWidth(title)) / 2, 6, 0x404040);
fontRenderer.drawString(StringUtils.localize("gui.inventory"), 8, ySize - 93, 0x404040);
}
@Override
protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(TEXTURE);
int j = (width - xSize) / 2;
int k = (height - ySize) / 2;
drawTexturedModalRect(j, k, 0, 0, xSize, ySize);
}
}

View file

@ -0,0 +1,246 @@
/*
* Copyright (c) SpaceToad, 2011-2012
* http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.transport.pipes;
import java.util.BitSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.ForgeDirection;
import buildcraft.BuildCraftTransport;
import buildcraft.api.gates.IAction;
import buildcraft.api.inventory.ISelectiveInventory;
import buildcraft.api.inventory.ISpecialInventory;
import buildcraft.core.GuiIds;
import buildcraft.core.inventory.SimpleInventory;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.core.utils.EnumColor;
import buildcraft.core.utils.Utils;
import buildcraft.transport.BlockGenericPipe;
import buildcraft.transport.PipeIconProvider;
import buildcraft.transport.pipes.PipeItemsEmerald.ButtonState;
import buildcraft.transport.triggers.ActionExtractionPreset;
public class PipeItemsLogemerald extends PipeItemsWood {
private final SimpleInventory filters = new SimpleInventory(4, "Filters", 1);
private BitSet activeFlags = new BitSet(4);
private int filterCount = filters.getSizeInventory();
private int currentFilter = 0;
public PipeItemsLogemerald(int itemID) {
super(itemID);
standardIconIndex = PipeIconProvider.TYPE.PipeItemsLogemerald_Standard.ordinal();
solidIconIndex = PipeIconProvider.TYPE.PipeAllLogemerald_Solid.ordinal();
}
@Override
public boolean blockActivated(EntityPlayer entityplayer) {
if (entityplayer.getCurrentEquippedItem() != null && entityplayer.getCurrentEquippedItem().itemID < Block.blocksList.length) {
if (Block.blocksList[entityplayer.getCurrentEquippedItem().itemID] instanceof BlockGenericPipe) {
return false;
}
}
if (super.blockActivated(entityplayer)) {
return true;
}
if (!CoreProxy.proxy.isRenderWorld(container.worldObj)) {
entityplayer.openGui(BuildCraftTransport.instance, GuiIds.PIPE_LOGEMERALD_ITEM, container.worldObj, container.xCoord, container.yCoord, container.zCoord);
}
return true;
}
/**
* Return the itemstack that can be if something can be extracted from this
* inventory, null if none. On certain cases, the extractable slot depends
* on the position of the pipe.
*/
@Override
public ItemStack[] checkExtract(IInventory inventory, boolean doRemove, ForgeDirection from) {
if (activeFlags.isEmpty()){
return null;
}
incrementFilter();
if (filters.getStackInSlot(currentFilter % filterCount) == null || !activeFlags.get(currentFilter % filterCount)){
return null;
}
/* ISELECTIVEINVENTORY */
if (inventory instanceof ISelectiveInventory) {
ItemStack[] stacks = ((ISelectiveInventory) inventory).extractItem(new ItemStack[] { getCurrentFilter() }, false, doRemove, from, (int) powerHandler.getEnergyStored());
if (doRemove) {
for (ItemStack stack : stacks) {
if (stack != null) {
powerHandler.useEnergy(stack.stackSize, stack.stackSize, true);
}
}
}
return stacks;
/* ISPECIALINVENTORY */
} else if (inventory instanceof ISpecialInventory) {
ItemStack[] stacks = ((ISpecialInventory) inventory).extractItem(false, from, (int) powerHandler.getEnergyStored());
if (stacks != null) {
for (ItemStack stack : stacks) {
if (stack == null)
continue;
boolean matches = false;
for (int i = 0; i < filters.getSizeInventory(); i++) {
ItemStack filter = filters.getStackInSlot(i);
if (filter != null && filter.isItemEqual(stack)) {
matches = true;
break;
}
}
if (!matches) {
return null;
}
}
if (doRemove) {
stacks = ((ISpecialInventory) inventory).extractItem(true, from, (int) powerHandler.getEnergyStored());
for (ItemStack stack : stacks) {
if (stack != null) {
powerHandler.useEnergy(stack.stackSize, stack.stackSize, true);
}
}
}
}
return stacks;
} else {
// This is a generic inventory
IInventory inv = Utils.getInventory(inventory);
ItemStack result = checkExtractGeneric(inv, doRemove, from);
if (result != null) {
return new ItemStack[] { result };
}
}
return null;
}
@Override
public ItemStack checkExtractGeneric(net.minecraft.inventory.ISidedInventory inventory, boolean doRemove, ForgeDirection from) {
for (int i : inventory.getAccessibleSlotsFromSide(from.ordinal())) {
ItemStack stack = inventory.getStackInSlot(i);
if (stack != null && stack.stackSize > 0) {
ItemStack filter = getCurrentFilter();
if (filter == null) {
return null;
}
if (!filter.isItemEqual(stack)) {
continue;
}
if (!inventory.canExtractItem(i, stack, from.ordinal())) {
continue;
}
if (doRemove) {
return inventory.decrStackSize(i, (int) powerHandler.useEnergy(1, stack.stackSize, true));
} else {
return stack;
}
}
}
return null;
}
public IInventory getFilters() {
return filters;
}
@Override
protected void actionsActivated(Map<IAction, Boolean> actions) {
super.actionsActivated(actions);
activeFlags.clear();
for (Entry<IAction, Boolean> action : actions.entrySet()) {
if (action.getKey() instanceof ActionExtractionPreset && action.getValue() != null && action.getValue()) {
setActivePreset(((ActionExtractionPreset) action.getKey()).color);
}
}
}
private void setActivePreset(EnumColor color) {
switch (color){
case RED:
activeFlags.set(0);
break;
case BLUE:
activeFlags.set(1);
break;
case GREEN:
activeFlags.set(2);
break;
case YELLOW:
activeFlags.set(3);
break;
default:
break;
}
}
@Override
public LinkedList<IAction> getActions() {
LinkedList<IAction> result = super.getActions();
result.add(BuildCraftTransport.actionExtractionPresetRed);
result.add(BuildCraftTransport.actionExtractionPresetBlue);
result.add(BuildCraftTransport.actionExtractionPresetGreen);
result.add(BuildCraftTransport.actionExtractionPresetYellow);
return result;
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
filters.readFromNBT(nbt);
currentFilter = nbt.getInteger("currentFilter");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
filters.writeToNBT(nbt);
nbt.setInteger("currentFilter", currentFilter);
}
private void incrementFilter() {
int count = 0;
currentFilter++;
while (!(filters.getStackInSlot(currentFilter % filterCount) != null && activeFlags.get(currentFilter % filterCount)) && count < filterCount) {
currentFilter++;
count++;
}
}
private ItemStack getCurrentFilter() {
return filters.getStackInSlot(currentFilter % filters.getSizeInventory());
}
}

View file

@ -0,0 +1,41 @@
/**
* Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License
* 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.transport.triggers;
import buildcraft.core.triggers.BCAction;
import buildcraft.core.utils.EnumColor;
import java.util.Locale;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.util.Icon;
public class ActionExtractionPreset extends BCAction {
private Icon icon;
public final EnumColor color;
public ActionExtractionPreset(int id, EnumColor color) {
super(id, "buildcraft.extraction.preset." + color.getTag());
this.color = color;
}
@Override
public String getDescription() {
return color.getName() + " Extraction Preset";
}
@Override
public Icon getIcon() {
return icon;
}
@Override
public void registerIcons(IconRegister iconRegister) {
icon = iconRegister.registerIcon("buildcraft:triggers/extraction_preset_" + color.name().toLowerCase(Locale.ENGLISH));
}
}