From 1e85518d146dc5d3ebbdaebb7a6b089d86f82e5f Mon Sep 17 00:00:00 2001 From: way2muchnoise Date: Sun, 18 Sep 2016 21:33:59 +0200 Subject: [PATCH 1/2] add upgrades to the manipulator --- .../container/ContainerDiskManipulator.java | 12 +++++--- .../gui/GuiDiskManipulator.java | 2 +- .../tile/TileDiskManipulator.java | 27 ++++++++++++++---- .../textures/gui/disk_manipulator.png | Bin 3425 -> 3561 bytes 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/main/java/refinedstorage/container/ContainerDiskManipulator.java b/src/main/java/refinedstorage/container/ContainerDiskManipulator.java index 0bb549016..4a25d399e 100644 --- a/src/main/java/refinedstorage/container/ContainerDiskManipulator.java +++ b/src/main/java/refinedstorage/container/ContainerDiskManipulator.java @@ -11,6 +11,10 @@ public class ContainerDiskManipulator extends ContainerBase { public ContainerDiskManipulator(TileDiskManipulator manipulator, EntityPlayer player) { super(manipulator, player); + for (int i = 0; i < 4; ++i) { + addSlotToContainer(new SlotItemHandler(manipulator.getUpgrades(), i, 187, 6 + (i * 18))); + } + for (int i = 0; i < 6; ++i) { addSlotToContainer(new SlotItemHandler(manipulator.getDisks(), i, 26 + (i % 2 * 18), ((i / 2) * 18) + 57)); } @@ -35,12 +39,12 @@ public class ContainerDiskManipulator extends ContainerBase { if (slot != null && slot.getHasStack()) { stack = slot.getStack(); - if (index < 12) { - if (!mergeItemStack(stack, 12 + 9, inventorySlots.size(), false)) { + if (index < 4 + 12) { + if (!mergeItemStack(stack, 4 + 12 + 9, inventorySlots.size(), false)) { return null; } - } else if (!mergeItemStack(stack, 0, 12, false)) { - return mergeItemStackToSpecimen(stack, 12, 12 + 9); + } else if (!mergeItemStack(stack, 0, 16, false)) { + return mergeItemStackToSpecimen(stack, 4 + 12, 4 + 12 + 9); } if (stack.stackSize == 0) { diff --git a/src/main/java/refinedstorage/gui/GuiDiskManipulator.java b/src/main/java/refinedstorage/gui/GuiDiskManipulator.java index 3ce80b208..b6ca2672b 100644 --- a/src/main/java/refinedstorage/gui/GuiDiskManipulator.java +++ b/src/main/java/refinedstorage/gui/GuiDiskManipulator.java @@ -7,7 +7,7 @@ import refinedstorage.tile.TileDiskManipulator; public class GuiDiskManipulator extends GuiBase { public GuiDiskManipulator(ContainerDiskManipulator container) { - super(container, 176, 211); + super(container, 211, 211); } @Override diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index bf3c5b2de..c01f23ee7 100755 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -20,6 +20,8 @@ import refinedstorage.block.EnumItemStorageType; import refinedstorage.inventory.IItemValidator; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; +import refinedstorage.inventory.ItemHandlerUpgrade; +import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.IComparable; import refinedstorage.tile.config.IFilterable; import refinedstorage.tile.config.IType; @@ -70,6 +72,8 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte dataManager.addWatchedParameter(IO_MODE); } + private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK); + private ItemHandlerBasic disks = new ItemHandlerBasic(12, this, IItemValidator.STORAGE_DISK) { @Override protected void onContentsChanged(int slot) { @@ -163,6 +167,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte @Override public void updateNode() { + if (ticks % upgrades.getSpeed() != 0) return; int slot = 0; if (type == IType.ITEMS) { while (slot < itemStorages.length && itemStorages[slot] == null) { @@ -199,6 +204,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } } + private int getInteractStackSize() { + return upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1; + } + private void insertIntoNetwork(ItemStorage storage, int slot) { if (storage.getStored() == 0) { moveDriveToOutput(slot); @@ -216,7 +225,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } if (stack != null) { - extracted = storage.extractItem(stack, 1, compare); + extracted = storage.extractItem(stack, getInteractStackSize(), compare); } } while (storage.getItems().size() > i && extracted == null); @@ -252,7 +261,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } if (toExtract != null) { - extracted = network.extractItem(toExtract, 1, compare); + extracted = network.extractItem(toExtract, getInteractStackSize(), compare); } } else { while (itemFilters.getSlots() > i && extracted == null) { @@ -263,7 +272,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } if (stack != null) { - extracted = network.extractItem(stack, 1, compare); + extracted = network.extractItem(stack, getInteractStackSize(), compare); } } } @@ -297,7 +306,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } if (stack != null) { - extracted = storage.extractFluid(stack, 1, compare); + extracted = storage.extractFluid(stack, getInteractStackSize(), compare); } } while (extracted == null && storage.getStacks().size() > i); @@ -333,7 +342,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } if (toExtract != null) { - extracted = network.extractFluid(toExtract, 1, compare); + extracted = network.extractFluid(toExtract, getInteractStackSize(), compare); } } else { while (fluidFilters.getSlots() > i && extracted == null) { @@ -344,7 +353,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } if (stack != null) { - extracted = network.extractFluid(stack, 1, compare); + extracted = network.extractFluid(stack, getInteractStackSize(), compare); } } } @@ -430,6 +439,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return disks; } + public IItemHandler getUpgrades() { + return upgrades; + } + @Override public void read(NBTTagCompound tag) { super.read(tag); @@ -437,6 +450,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte readItems(disks, 0, tag); readItems(itemFilters, 1, tag); readItems(fluidFilters, 2, tag); + readItems(upgrades, 3, tag); if (tag.hasKey(NBT_COMPARE)) { compare = tag.getInteger(NBT_COMPARE); @@ -462,6 +476,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte writeItems(disks, 0, tag); writeItems(itemFilters, 1, tag); writeItems(fluidFilters, 2, tag); + writeItems(upgrades, 3, tag); tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_MODE, mode); diff --git a/src/main/resources/assets/refinedstorage/textures/gui/disk_manipulator.png b/src/main/resources/assets/refinedstorage/textures/gui/disk_manipulator.png index 77cf93f689334e108b6154a784635de22eb03d20..1812d18b0e2fcd9674f74df55a367648c3cd8b9e 100644 GIT binary patch literal 3561 zcmds44N%f&7=Qm1W8tM%WM4+PX2~owi$WJi)XbBW6jR69jS;%8>#CbTDHtv-Ue@yqoZPsd*( z&%VB8+`D%U@@sFV>-imhRf%Dhp=NXL7d=?_^P63tZD4>X@8gp*4>@+OWu+XV_LI%f z=(dUTsFn5Hlw+xQdBLv3Zig^h&K~Z?j=rzZAwSuZb1!{Ao{jB6u+;earxW|h8VAu_ z!$f#f%g`UrBKSGj&8~a=e&&^<+_udYJo(k@L&J8s7q>ZMb8GkR-|1N&`-5}w;(`cO zzR4}z4oXXY^GWgfWID209kan%S#!sA33icH-Z;(qF;orS^s2caBaKfKDHWxBt~7b~D8u5Dnn=}!I5QdO5siienc8Jn0ds+{@bb&k=CC=R z1z~v@wp`-SF7p;Phu1B~%l9%saWLZD6PK;t;n5tvu;n-%*?mjVd(eeJ6{xhf=|_B2 z^Egt??%ES@VijKQNCNHX0joef%CpcAggXlxqmypZO~c20jZ&XZ;v^P<1GIGqGW?P6 z(b$qn*o1=wjv6)M!dZxB3dGWshoR`Vx#`DZFVsPbTrMJrs0>iYn^!0N2HZyz>)2t8 zXAoYb71U}M6GT%{rsXq$A{d#RQ9jx5C1y=KOtAHg*9R(%ta3Szx)djDc;&Twy*Ydw zWoWSEgSdg|vg^`{(v(b}2veGco>;4o^R8KNPa#P^-CLq8FtHoO^!SCBSRb|23}2#3 zGN#-af~Z=ZD%KB%8~rE{t_U%@HFlURkWt?=dUD_ri6{FUrYBr0)f5c3MZ>kc9HBUkbUyPp?*N5bF<(7Bpz(lN4bO5By8Q)x{l3?QUbo#8#{ zR#%S~Y?)I8d^?qb=sXO^M;p6eS~daBCl63dLl6A5Ld8c<L={Zsw?E~w5zQSrH&$$T1*rl)8RIc1d z5c#L+l?oCGJlH$q=<#`8PAD@*&gl8fK8XHAT-ENSjT~5xY?cyR6h4&UISt{v4hwif zK8q<+Pv_no;wL{?fX&^KI!wC+lI(*B)*&0Q1F3WYN1N-m?$f14e*BreT$Em5K%VK$ zYzzxViEOztWT(YTka8m)GLqYJoxf@3XQ4r#`r!*#JYF9Ec*I=0MkOnT8F~g(Is7?n z6AMjqlD(cGCI*(4!Ax%)xZI|x6=`5SEvwWMK$|~0_A&yn?O?h;>{^M)ePAWsR!YNi zG`Vkdkzp-(Y53BMuUDOA(lR1hDKe_DAj1GEuxD@y0ZW>oRs|Zx?AY9Ah1P|?VsrSU zo7URloPBlcD=C9@dw$g2z(i~5s4pa+uvVW?hh4X=#W1?;Tz03m_~Zv}@UYgeHv^&X z1>*Pxm&i&n>RtIliD9h#+=qLll8r~WZOKhWos>pr=v_sw7TtV1puYj{rTcQe&29D% zTZxjUvAlB-)#)I#Nar^XHJQ4ehh35kEIaU37xb0}{y*@Z1eZWyrQCRGBGG+aSK+u) z7h?e>fr?Cm-_h>=V$ef`{ZM%e4IMw_zx3~Xya&5V4WoQnML*RwOr3_>pa+Hp{IE1;&u>~LTyg*a literal 3425 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6&2?&#~tz_78O`%fY(kk47* z5n0T@z_%NO8IS+CVg?kHEOCt}3C>R|DNig)Whh9@%q!8$OD$0_(KFC9G;(Iie#5}P zbI;SoF{C2y?VQ^a@3`@}PMvBLpvmaEbkCGF=ZVq`%hw!Ql*nIs_v({*!KHO>(KimN zR{Z^OVY>Z~-U?y+55K>^Pqmx4QT%}IhU(tUf7yRmO!ZHG!%`q$_xIP=g)GO8pRSQg zUS7YUK(PGV@qYPrck|{Luokp#3=U}R-7#CFVcOtgO=$l2>+9>(`hR~S>;A1f^Ro8S zoSNxiS59cIvu)6pIy3Y1oH*tCs;moA--tX}V0mWenU|sGPL_KzW=LAIT4wMS>lIf` zE&dc6#1M7N&yjD|;W>S;3QCNEcD@7=L@ z&_yWm$!zU~e?=!&-@30KUi)vI+45g~{2$h5-7nwkd=BcVwI50a!c9VoSH1tiu$N)g z-1`@A*rszioW7yC;!v0eqs~O8h$ojNtXV^EaA`KE1~GJlQvL$2XhqfyZd?hyz-%EB zlBm6e;hG2Inva=1bDOksT15^>X*QVJ^@4K2+6hb%%B&lXEjKLVTD3tmh#?!O_J;{D z6^U+h0vZ5RJO3EevNb@<9>Xm&1*)Z@Wrwai#<-dSL%{#T<|jVjgbno5+xZ&dTNkgf zs}G+YTzgzS;_dHsb|2rPuC^?{ud?A8`}hBfd76F_E)~S^@U?YF{W75U z5KjJZ{(a!zpP|T}=lEQ{vhG^qd;cq+WiUfj-}V3hbs4NXw53*AUM;U_ny(5>cHL0dA(;wHR}+~Uj9~!)Og;~I z{%z=iCNqSGXsBg>?eDO6fBM*1KkS4B`?Vi`e}6A}UT&h%aK06*qd$UE*++0R)yN(R z1!pl9dv8$2dt7My{pf*oVDV}hSI@=pUXgXd(~7^E413x^l3$lIe2@c{w0+m-Gaab* z7*Iv_Vhw-q7KCrzAGhk)pV*m~e?PGVmyE|>$BQ?hRvky3&5AC_Jd1huMeF&K-Afp@ zRGe@_sVT(xZ=P^0o>4sW^6EL0-%nz?@JLY_wQjLVQD#4zcrMj%eUaZjZ(wq0&q1w? zK2GSBF=@A)Zn^gq#2s>*CN?8iJ_F_m)QZFX%-8*lF<1K*pat6bdZsIbahO^X4GUCOYpFv;haY_2d7sJ>KsuZ*XAq PLy#Swu6{1-oD!M Date: Sun, 18 Sep 2016 21:40:55 +0200 Subject: [PATCH 2/2] code style and energy usage --- src/main/java/refinedstorage/RefinedStorage.java | 2 ++ src/main/java/refinedstorage/tile/TileDiskManipulator.java | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/refinedstorage/RefinedStorage.java b/src/main/java/refinedstorage/RefinedStorage.java index 1b5ee44c5..0e7d61581 100755 --- a/src/main/java/refinedstorage/RefinedStorage.java +++ b/src/main/java/refinedstorage/RefinedStorage.java @@ -74,6 +74,7 @@ public final class RefinedStorage { public int networkTransmitterUsage; public float networkTransmitterPerBlockUsage; public int networkReceiverUsage; + public int diskManipulatorUsage; public int controllerCapacity; public boolean controllerUsesEnergy; @@ -128,6 +129,7 @@ public final class RefinedStorage { networkTransmitterUsage = config.getInt("networkTransmitter", "energy", 50, 0, Integer.MAX_VALUE, "The base energy used by Network Transmitters"); networkTransmitterPerBlockUsage = config.getFloat("networkTransmitterPerBlock", "energy", 4, 0, Float.MAX_VALUE, "The additional energy per block that the Network Transmitter uses, gets rounded up"); networkReceiverUsage = config.getInt("networkReceiver", "energy", 15, 0, Integer.MAX_VALUE, "The energy used by Network Receivers"); + diskManipulatorUsage = config.getInt("diskManipulator", "energy", 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators"); controllerCapacity = config.getInt("capacity", "controller", 32000, 0, Integer.MAX_VALUE, "The energy capacity of the Controller"); controllerUsesEnergy = config.getBoolean("usesEnergy", "controller", true, "Whether the Controller uses energy"); diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index c01f23ee7..dc74db230 100755 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -11,6 +11,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; +import refinedstorage.RefinedStorage; import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; import refinedstorage.apiimpl.storage.fluid.FluidUtils; @@ -162,12 +163,14 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte @Override public int getEnergyUsage() { - return 0; + return RefinedStorage.INSTANCE.diskManipulatorUsage + upgrades.getEnergyUsage(); } @Override public void updateNode() { - if (ticks % upgrades.getSpeed() != 0) return; + if (ticks % upgrades.getSpeed() != 0) { + return; + } int slot = 0; if (type == IType.ITEMS) { while (slot < itemStorages.length && itemStorages[slot] == null) {