From 539bb564fa42e3488854e03679cd827a3cf3cea7 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 30 Jan 2015 18:53:52 -0500 Subject: [PATCH] Removed needing a buffer chest for the new item routing ritual - working on a few odd quirks, however. --- .../AlchemicalWizardry.java | 39 +- .../alchemicalWizardry/api/Int3.java | 6 + .../api/RoutingFocusParadigm.java | 12 + .../api/event/TeleposeEvent.java | 1 + .../book/entries/EntryImage.java | 2 +- .../common/AlchemicalWizardryEventHooks.java | 14 +- .../common/book/BUEntries.java | 29 +- .../rituals/RitualEffectItemRouting.java | 500 ++++++++++++------ .../assets/alchemicalwizardryBooks/books.txt | 10 +- .../alchemicalwizardryBooks/books/book.txt | 1 + .../alchemicalwizardryBooks/lang/en_US.lang | 11 +- .../assets/bloodutils/textures/gui/front.png | Bin 2690 -> 2881 bytes 12 files changed, 437 insertions(+), 188 deletions(-) diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 923236f1..fc816938 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -1508,8 +1508,8 @@ public class AlchemicalWizardry String strLine; //Read File Line By Line - int maxWidth = 25; - int maxLines = 16; + int defMaxLines = 16; + int maxLines = defMaxLines; int currentPage = 0; @@ -1545,6 +1545,31 @@ public class AlchemicalWizardry String title = strLine.replaceFirst("//TITLE ", " ").trim(); currentTitle = "aw.entry." + title; + continue; + }else if(strLine.startsWith("//SPECIAL ")) + { + if(strings[currentPage].isEmpty()) + { + String lines = strLine.replaceFirst("//SPECIAL ", ""); + Integer ln = Integer.decode(lines); + if(ln != null) + { + maxLines = ln; + } + }else + { + String[] newStrings = new String[currentPage + 1 + 1]; //Just to show that it is increasing + for(int i=0; i maxWidth) -// { -// currentLine++; -// currentWidth = 0; -// } - //if(currentLine > maxLines) if(list.size() > maxLines) { changePage = true; @@ -1593,7 +1612,9 @@ public class AlchemicalWizardry strings = newStrings; pageIndex++; - + + maxLines = defMaxLines; + changePage = false; }else { diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java b/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java index e3b61b8f..16facc02 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java @@ -35,4 +35,10 @@ public class Int3 { return o instanceof Int3 ? ((Int3) o).xCoord == this.xCoord && ((Int3) o).yCoord == this.yCoord && ((Int3) o).zCoord == this.zCoord : false; } + + @Override + public int hashCode() + { + return this.xCoord + this.yCoord << 8 + this.zCoord << 16; + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java b/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java index 301d6398..dc648f36 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java @@ -11,6 +11,8 @@ public class RoutingFocusParadigm public List locationList = new LinkedList(); + public int maximumAmount = 0; + public void addRoutingFocusPosAndFacing(RoutingFocusPosAndFacing facing) { locationList.add(facing); @@ -38,4 +40,14 @@ public class RoutingFocusParadigm logicList.clear(); locationList.clear(); } + + public void setMaximumAmount(int amt) + { + this.maximumAmount = amt; + } + + public int getMaximumAmount() + { + return this.maximumAmount; + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/event/TeleposeEvent.java b/src/main/java/WayofTime/alchemicalWizardry/api/event/TeleposeEvent.java index 79fd36fc..40c3170e 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/event/TeleposeEvent.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/event/TeleposeEvent.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.api.event; import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.common.eventhandler.Cancelable; import cpw.mods.fml.common.eventhandler.Event; diff --git a/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryImage.java b/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryImage.java index 94fda191..5843876d 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryImage.java +++ b/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryImage.java @@ -49,7 +49,7 @@ public class EntryImage implements IEntry{ if(this.entryName == null) this.entryName = key; - String s = StatCollector.translateToLocal("bu.entry." + this.entryName + "." + page); + String s = StatCollector.translateToLocal("aw.entry." + this.entryName + "." + page); x = left + width / 2 - 58; y = (top + 15) + 65; diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java b/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java index 62474998..bdd7fa13 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java @@ -685,8 +685,18 @@ public class AlchemicalWizardryEventHooks } @Optional.Method(modid = "Botania") - private boolean isManaBurst(Entity projectile) + private boolean isManaBurst(Entity entity) { - return projectile instanceof IManaBurst; + if(entity instanceof IManaBurst) { + ItemStack lens = ((IManaBurst)entity).getSourceLens(); + if(lens.getItemDamage()!=8 && lens.getItemDamage()!=11) + return false; + else + return true; + } + else + return false; + + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/book/BUEntries.java b/src/main/java/WayofTime/alchemicalWizardry/common/book/BUEntries.java index 36e40691..167285b8 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/book/BUEntries.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/book/BUEntries.java @@ -1,5 +1,8 @@ package WayofTime.alchemicalWizardry.common.book; +import java.util.HashMap; +import java.util.Map; + import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import WayofTime.alchemicalWizardry.ModBlocks; @@ -41,9 +44,10 @@ public class BUEntries public void initEntries() { + HashMap aIntroMap = new HashMap(); + aIntroMap.put(0, new EntryImage("bloodutils:textures/misc/screenshots/t1.png", 854, 480)); /* The Architect */ - - aIntro = this.getPureTextEntry(5, "Your classic tragic backstory", 1); + aIntro = this.getMixedTextEntry(6, "Your classic tragic backstory", 1, aIntroMap); aBloodAltar = this.getPureTextEntry(3, "The Blood Altar", 1); aSoulNetwork = this.getPureTextEntry(3, "The Soul Network", 1); aBasicsOfSigils = this.getPureTextEntry(4, "Basics of sigils and a glimpse into the soul", 1); @@ -142,6 +146,25 @@ public class BUEntries return new Entry(entries, name, pageNumber); } + public Entry getMixedTextEntry(int numberOfPages, String name, int pageNumber, Map map) + { + IEntry[] entries = new IEntry[numberOfPages]; + for(int i=0; i ent : map.entrySet()) + { + if(ent.getKey() < entries.length) + { + entries[ent.getKey()] = ent.getValue(); + } + } + + return new Entry(entries, name, pageNumber); + } + /* Architect */ public static Entry aIntro; public static Entry aBloodAltar; @@ -310,4 +333,4 @@ public class BUEntries /** Debug */ EntryRegistry.registerEntry(BUEntries.categoryBasics, EntryRegistry.basics, BUEntries.debug); } -} +} \ No newline at end of file diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java index 18a997e7..582efe26 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemRouting.java @@ -1,7 +1,9 @@ package WayofTime.alchemicalWizardry.common.rituals; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Random; import net.minecraft.inventory.IInventory; @@ -51,26 +53,44 @@ public class RitualEffectItemRouting extends RitualEffect { return; } - + + Map tileMap = new HashMap(); + IInventory bufferInventory = (IInventory)bufferTile; + List outputList = new ArrayList(); + for(int i=0; i<4; i++) //Check output foci chests, return if none available + { + Int3 outputFocusChest = this.getOutputBufferChestLocation(i); + TileEntity outputFocusInv = world.getTileEntity(x + outputFocusChest.xCoord, y + outputFocusChest.yCoord, z + outputFocusChest.zCoord); + if(outputFocusInv instanceof IInventory) + { + outputList.add((IInventory)outputFocusInv); + } + } + + if(outputList.isEmpty()) + { + return; + } + for(int i=0; i<4; i++) { Int3 inputFocusChest = this.getInputBufferChestLocation(i); TileEntity inputFocusInv = world.getTileEntity(x + inputFocusChest.xCoord, y + inputFocusChest.yCoord, z + inputFocusChest.zCoord); if(inputFocusInv instanceof IInventory) { - for(int j=0; j<((IInventory) inputFocusInv).getSizeInventory(); j++) + for(int ji=0; ji<((IInventory) inputFocusInv).getSizeInventory(); ji++) //Iterate through foci inventory { - ItemStack stack = ((IInventory) inputFocusInv).getStackInSlot(j); - if(stack != null && stack.getItem() instanceof InputRoutingFocus) + ItemStack inputFocusStack = ((IInventory) inputFocusInv).getStackInSlot(ji); + if(inputFocusStack != null && inputFocusStack.getItem() instanceof InputRoutingFocus) { - InputRoutingFocus inputFocus = (InputRoutingFocus)stack.getItem(); - TileEntity inputChest = world.getTileEntity(inputFocus.xCoord(stack), inputFocus.yCoord(stack), inputFocus.zCoord(stack)); + InputRoutingFocus inputFocus = (InputRoutingFocus)inputFocusStack.getItem(); + TileEntity inputChest = world.getTileEntity(inputFocus.xCoord(inputFocusStack), inputFocus.yCoord(inputFocusStack), inputFocus.zCoord(inputFocusStack)); if(inputChest instanceof IInventory) { IInventory inputChestInventory = (IInventory)inputChest; - ForgeDirection syphonDirection = inputFocus.getSetDirection(stack); + ForgeDirection syphonDirection = inputFocus.getSetDirection(inputFocusStack); boolean[] canSyphonList = new boolean[inputChestInventory.getSizeInventory()]; if(inputChest instanceof ISidedInventory) { @@ -81,33 +101,187 @@ public class RitualEffectItemRouting extends RitualEffect } }else { - for(int n=0; n7(fxoAWe}bB@QAjgeD-;F5u|cU?>Tl0aQXj z1B!HsJbfkz2nqs9P*4m(0U4wX31u$K%v+E&T-QW54-skS`Ty=J|MT;tk z0szo>JL?kwAYc;#P{Q!w9aVJ>9)y3gx3vZiKozKZ30T#_Ga?aop3wkEJl%Q`tnjL{ z@Z^s3c!y&<#t>LpjF4Ri1BMdq#ammsUKp8u7wXQoK{DrUA82>VDHUJ7L_Gb7T2!2q z+?ZIL*tj?o+$Q$!Y|cK#UH(LzXaCIgPI`o{k)UqS#$#iGHpO7btWf?YP6TQwW_xsY zCyzP5HtDNL7r1hwDiZW)Z0-)Y89lQLxrB!D))_RnHAkr`xy!jcv?A{L8s8UF8t=2d zTD|GRP0{A@pKYFAW4jdYM8=?@5DxX@L`9wa9rfMLR8aOU+;=iQ8>iDv*&w~0GnN*- z)N!uac#uo|7EZ|vus^Ue6Bk$h&F|snxa@LH(S?Dh->vr)^-GpPKOk zUpKDbIXwO(xWiG(u2}T87>o}rK^c7tyA#yKi$etv3?uOkx;` zi>IfcuZ)NsH4knGX~RB7U&+?vvC?-ah9SU;1ggPQ(tao{4e^o@^>I(QN2x$d z?3DM%v9jL&9_!1!xE6IDXPV*bs?nxrlQBVjBm}MtsP-Ogm(TpJm5#N|$~GHT#V1|=HLqYcfS#+uk6xwZ`}R4Px2rJ*sma zb}5u;Hk`LGBMzy`Ftxi)pNeQwK;!#aCPVz^*1_}cF(tA;zh~X|Dy5d_zJ92-IF^&6 z|6(FD@@^%UHo;d2ED)a0%es=B|LQRTmk2b}OTnMIN5k z4!z7pz7)!b(-*cQRXFl)CY5^87#qr7;WX2KIKJ;tsUw-&(qrn-QRf zQ?nN|_tH50i_I}hXQ%<)1r+k9*$a1@Cguw!ms;5ch|PLCAf$MVOZ|k z+-cpEVzYaIj~st`wgT5T_$`UU3_4h%5o91^pm0cC2NP_P0UzH_J74rX!I)+zD@%Nj zPo1c8|2oc??$Wbi4bYyL47nsO$%}>c_Xx9QW~ZaUnvf$;2j(Ne1>(xfi2$ zCFkmfiK)x$AUjS=C@T`@-%I?(zvmHtWI0J5ZxI$g9p7|dY+;eElo+jSn=sor8s$tn zjCwd2)H7DYdtXDDFjnA|zjGtqfLSl`rtE4nGjcV(XJcQ*^5`{l?64MkjU<&Ss(>~} zrRjGwf=p|MT(VO>~o&FEChuo=l){4x$jUp2}=csJcu z%jL8<)*mmO{$kSoI-+>>vk3&M?z3EOuP~>^|L}-XI#x=h2IwoQf)MR*X6s1_MNT~I zc>g?`bw)}RKxjj&`Wt*?zYxerS&M-ii0vK=3#oJ5AS*r6R2KoR|4xwlyS+n6@4!B! zG^iUUO4YG;-9`bp!4pk+18e&MxJv8zr`toovP5sI6>~1Ep+Mq$&Zv>^A#{a7cZ8J` z0u&XNc}pAzKxthBKwP90s1uPBkOp9z#;Rq%M}(YIFW=MUs2Xu1{`*s<9?LdwpKzT6UqMptI>Qf9h6%s zBl@>j8Donoqz8!AYwE~Rp;7TmvOtqbhPHP%IwQ3e&DQqYnQRxbksjAJQM!pE8w-B8 z2*H{+GfK)iY39)=KuL%ACB1$YIPf(Exb{smbM+~m4~SS~I_{O4Lxa=((M>&YF80Gg zE$~`%8x92stC+t6BG#LrI@7ICz~h>Inh5Y98c6~}5y&cAR|Vu9ksGJ95sa6ZgSbEq zU4kb#pGJ63_1Dntz<>xEW$$)PzFgbZXy)Kw%;C!Xla(#zC@`8LX}akIKphTj=wnZg z8-R1WRZA>%QEe}HYpxp#J1h+ap<}Me;Q#xK a53Q^0mFi+i*r{yYi2?qYqc!~qA?;7ghqkT& literal 2690 zcmb_ei$9dv8$UCcVahea)JJ7)TZ~JZ5Mq?Uv=N(ize~AGE*aZq(8V>C-;P_uq)&*L zN{sv1h~H|NM#7j}8ljA#A-5Rwdq=zf!S8)P@8`Uq^PKa2zRx+&`93Gz(ZN<0g+>7Y zWC?cGzW@M(eqlfw0X1HiD=t6{BH(9RYakN8)YkG`s7L0KoqG%bavkCi)*V%G9_mEK z672EFF&PyZB_&kVA!7hg@&s!u=Y$ddC_9nUrH+``_a2{q8uO$5{jZOwUf8x8`8w28 zp9t0Y(cZ(%r#OR)NWsa&wH2zfZ&%z%7~l0;=}?NoOowIap9b)X>W>!1AK$T@J~+k{ zEac?uvh~lD@MEu?-5aJSI4K<-1zJo^wJT+l-hA$~qVp=EhBw%Ao4nM>)t92GamMFo zbmHG}9GXRB9LK*9l^h{U3Y{GK(x?}HGeldm{xHC9-O8);P*h~~Jl9Ezf5+UXDSf@Y zBRIU0NfTH;aUpxN8}clF+nFtDT9se@V!`gzKhgN0q!Amp8CLDOo(Op*xJ!vCIK$7H z0CLisBJ`Gj)s(*DxrOJLvLI;;QoHIv`!0DB56!sA3?jQqCA?D?EadMN-%g8jgv;I8+ezXl0KDm48R-z%X2NMghC z!#(>!#oh3rl>B5I443`ljHD81-;E%xk5b`~-LVL`-JYIBv`^Nt@K$-Na5rI|&NxXY z4~C>TT>m+_={pSP^r|CpoH+uH!lb}4Igt4Z1>7zly#uH=Pf!?85d%KKr9p*hv~>Ls zV2pX83?5VMGsR1NE?SuUbAj14OPlp`7+;+5^7oK|UEI<|fmQg^NGXF)v0hRJ2;8VP zL?uqw%2iLoL&XgMI8XrL$4YkW2PEX8*0lc?zvEU;Tb?rht4H-(=}>d*MDTh(!{WD< ziH+Y!ExcAnYL@QMF23!vbnsE3!W#&8wT`%BxZSKnHcO2Rt?)3Zr->^%8Jf?{bBy1H zZ0g%j_MTVL=kR}8M>fo5ZK+kNI)faSds?hWqsb}?B`qz#=}~N$nxr%Ay@hm7Qc>@8 zb-k}Le$%j^Go-M~ocVAxxbs^1F5me%>!Sn!B zXyc+RrcoPj);7#e@9GiYKzO~#SNX0AzJ+o|QJ}8(8x#{yEHgr#GFhp$s#sJXc2bKEUgi-Bf*nmGD3sBHXh1~iqO&o7;1F8lV62Q zWtlKx}Yw%dKYC za&}fUIRXm?*^JYS!?#yfN;$!u&7ZMjeHWq&%UBUclSS7oo3d?MbQz*Z!$t+La4^?R z86R8Jn=rOuOJirT0~AH-If0NDf1}J)&rR7#?qGBv;4wnV-X2 z8gGW4a-S!%9V>rlo@KA_D3sxdx<0zF0v1UvxmqOjO!PtEYgr8n`OFRBa7bM#EBL-K zxAqnHWgxSs3X?Rq`p~zni{hfwrrUhHyyj&Em_HTgY_6Y?ue)1t!7!cv)_39X#;N0n z5(Q+ao)uT@+EE-yZ=yH&#iCeM#~>Dh#w7mZ1k;e zb?N48XmkfNibv(d8B-U$x~N=v0_(PVG6DUCla(i|QoKdFsqW~E`7 zfzZZL7li_ZzI{z?(v=6J;WmXcf*GOk)7WB0<`JOMZZk#H$i-xqbWi%e{;=mDT$hQV zL7Cb+b5|9g1*Ma>#Wi~Wok8|W?IJNrBbyuE7(sr;la+&u@z$?eX4@RmD~T$e5hNO> zGm_R6EWKFAa8j4bYl@7MyhWCp+)N*R=uGsNrsdYw?y%%x(So3qy-$oA*atSbbqacx@J^kzW({x>%8%dAP*L3A$6qy8yNcbv z;?#c(Ex4RyDc3X_{3F5I$=Zy-rE-MJO~kq#PrK@~7Z*pMBZln}jzrNXd9prIZWl%K zCyx@iQ+^7_(a0BjveQb_Y^>+%JfdGP_N9&=mu)r$!3QT!&>uE$-JspRosqki;PmFy z!xrb3s;s+TwF5y1Hd|FuAQU_+z-t2>q)sIMM~Rb=4%Y9LH2)&=i&(7&rsimyszAYC z`{{Q*2C#Oc*Jl(}!2svw0mwc?_3D>};bbYZ2x&3MsvZAT2SdiQ+T`$%%HCL03k@&e zX#Dzy?X3_rQtlR@`jF}HeX-4oF6u@I+=<2mcEGV*X@K7j2ls_iV9g7_aFhmhyYFJT zt@WOL=1^@`{E(Y0E(qc>4eARDNN^H5Mg<3O)(v|g4QHTms@pN3d$M5CAapNif&xP4 zz$zdKhDyb8V+k3EpJUMxkP1!xc3Iu=Ul-JafdB#N|8mel>c2rkKA^$K-BK#w3k8IL z)Pai;Ak-1{SW~$a@la1@;hIv(xB@mbo2(Cyc?8G2S;nc48 zGKU~5j-n>13$@&^x=IDvwYE z1OM?%5%21KWII_Bn)vrsFj%_d64U#sy^tGvuL!mC*bb6adCXY(Q5Cf;Si8p`KWrB& zo$aDH9l1?Y95|E@r0)xq@J-HJqzZ8M@QH5Le_7M-&CZc{t}tm>WulIVt~D%drr#dE z>~tq|k%xRqMzllupI?@zx6`n=w{)DZEz#J%811P9^fkF3Gw#vQ@PVPw#we>dx-ul_ zmXqshYm2W_aucRPdD7ozBOH6jSdOEyf07udoj=D|gYH94)$mGhSi|g`sMI{&MEk5c zs6iz+QG^*v6SnDz26UO^X3V3gr82KJ8T#WLi_X61>Yyu5 zR0zPF+Rt4~wwjG#&kU{6O+e)VP=&n){%=pi6%q1~nttEGfwponC;{(aU31be<$vNE Br&j;~