From ec4ed4df99ffef23e4e2922b3dfb618d89a222c0 Mon Sep 17 00:00:00 2001 From: SandGrainOne Date: Thu, 21 Nov 2013 20:57:18 +0100 Subject: [PATCH] Adding Logemerald pipe This is an action sensitive extraction pipe. The pipe can be configured with 4 different items and actions will decide which one to extract from the connected inventory. --- .../blocks/pipeAllLogemerald_solid.png | Bin 0 -> 325 bytes .../blocks/pipeItemsLogemerald_standard.png | Bin 0 -> 215 bytes .../textures/gui/logemerald_pipe_gui.png | Bin 0 -> 1367 bytes .../items/triggers/extraction_preset_blue.png | Bin 0 -> 169 bytes .../triggers/extraction_preset_green.png | Bin 0 -> 183 bytes .../items/triggers/extraction_preset_red.png | Bin 0 -> 159 bytes .../triggers/extraction_preset_yellow.png | Bin 0 -> 192 bytes .../lang/buildcraft/en_US.properties | 3 + common/buildcraft/BuildCraftTransport.java | 19 +- common/buildcraft/core/DefaultProps.java | 1 + common/buildcraft/core/GuiIds.java | 1 + common/buildcraft/transport/GuiHandler.java | 9 + .../transport/PipeConnectionBans.java | 3 + .../transport/PipeIconProvider.java | 3 + .../transport/TransportProxyClient.java | 1 + .../gui/ContainerLogemeraldPipe.java | 49 ++++ .../transport/gui/GuiLogemeraldPipe.java | 52 ++++ .../transport/pipes/PipeItemsLogemerald.java | 246 ++++++++++++++++++ .../triggers/ActionExtractionPreset.java | 41 +++ 19 files changed, 423 insertions(+), 5 deletions(-) create mode 100644 buildcraft_resources/assets/buildcraft/textures/blocks/pipeAllLogemerald_solid.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/blocks/pipeItemsLogemerald_standard.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/gui/logemerald_pipe_gui.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_blue.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_green.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_red.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_yellow.png create mode 100644 common/buildcraft/transport/gui/ContainerLogemeraldPipe.java create mode 100644 common/buildcraft/transport/gui/GuiLogemeraldPipe.java create mode 100644 common/buildcraft/transport/pipes/PipeItemsLogemerald.java create mode 100644 common/buildcraft/transport/triggers/ActionExtractionPreset.java diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/pipeAllLogemerald_solid.png b/buildcraft_resources/assets/buildcraft/textures/blocks/pipeAllLogemerald_solid.png new file mode 100644 index 0000000000000000000000000000000000000000..1cdefd74053f0f6bf1772b1eb9d969415ad38a3c GIT binary patch literal 325 zcmV-L0lNN)P)V(Rq-z(srBErY7Of^Uk{*qoXqGgP+Nz&0_Uz`3w8BgC7%+RXGXv^<$FA_^myrhX4Zr XDQ9<_JUwCP00000NkvXXu0mjf4p4yQ literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/blocks/pipeItemsLogemerald_standard.png b/buildcraft_resources/assets/buildcraft/textures/blocks/pipeItemsLogemerald_standard.png new file mode 100644 index 0000000000000000000000000000000000000000..96a09f191faaac03ef6716719a94df795bbf7f5f GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=0db&7pZM+TIS(n*&FQlxpDg_OdCA?1TgNOa=eY}es)g5I&WUqt_`A3GozQ5U=)m;UXKf7Z^#^x;<9y$_#nIfLn9MF9pagMAm?ewqAN z?tq^D^Qpfk-H)#O{r~m$KOc;Nl90ewVBh`b!}UK}2ey^&3uolm!xg|eyH-T9;i35+ zbEds-^$z6Mb?ss49&4jN~Wl&&fU|?VZMmZ(}B<7I2Z63RT-Dz37e%aF&#}s|f9-e=;`S^bc z`8^L@6do@zIQPS4!PBCjKfY&ekeEZ8BTS1PXCoT%0qyh}8Z<|VmFRVOp%rkM$$CU^EEN9^1ci>rmPfEQ^X7=T2 zxIM1`^!zelf><#jxUqNg9}A!3D-WaqF+__)>GuCJZZ}wR~V`tJ2o+N118M4 b&&0zZw$O7{>Vo-O7=Xaj)z4*}Q$iB}UCGJ3 literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_blue.png b/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..9162f16decab42469419fe973abd7d73501974f3 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i<^X^@m0;_@H1P+gD z2bj{QPOCe*c-`*Vvy-GR_#8?#ers#XVY=Y~zwoMC4U){vPcj=Am>JeT;yURy^VL(J OF$|urelF{r5}E*lH8)lO literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_green.png b/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_green.png new file mode 100644 index 0000000000000000000000000000000000000000..84f34b2cd4ba96767e06801d4910620530ad3152 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=Kdb&7^X^@m0;_@H1P+gD z2bwfPer**w_wL!dW6K#MH8*i=GUNKwkZBX9d8=KBRm#9wV6{l9AiH5_ONa6cvt2Dh c4h@V9%jSr@vez@#0~*TU>FVdQ&MBb@0F1La{r~^~ literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_red.png b/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_red.png new file mode 100644 index 0000000000000000000000000000000000000000..6c63995268b4cfb9e64526a7d52e068a61eb8795 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i<9db&7^X^@m0;_@H1P+gD z2bj`pb#;#}?vs92bjvz3gt<3)*6bZ29@XlMED{WiuUVhneZ{T-)Xd=N>gTe~DWM4f D2SYGi literal 0 HcmV?d00001 diff --git a/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_yellow.png b/buildcraft_resources/assets/buildcraft/textures/items/triggers/extraction_preset_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..3db999b2e927a951575357b47a9643f480d87b1b GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i;=dAc};RNP8>^X^@m0;_@H1P+gD z2bwgO91P@2zyIT6uRrsqpcKKB+=v{9X~#^OIQtU|^fsB@Y8PUaGMMX~qmkIgbFSjR lmKKL24})Cp2QYCMFubjjKl@W{`x>C>44$rjF6*2UngHY4Kw 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 actions) { + super.actionsActivated(actions); + + activeFlags.clear(); + + for (Entry 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 getActions() { + LinkedList 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()); + } +} diff --git a/common/buildcraft/transport/triggers/ActionExtractionPreset.java b/common/buildcraft/transport/triggers/ActionExtractionPreset.java new file mode 100644 index 00000000..7df4992c --- /dev/null +++ b/common/buildcraft/transport/triggers/ActionExtractionPreset.java @@ -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)); + } +}