From 66a45e01453efca913d371cfc38c6a97a4d143ea Mon Sep 17 00:00:00 2001 From: Tonius Date: Fri, 19 Sep 2014 13:58:12 +0200 Subject: [PATCH] Moved NEI handlers to plugins package, added drying rack handler --- .../tinker/textures/gui/nei/casting.png | Bin 3699 -> 2765 bytes .../tinker/textures/gui/nei/dryingrack.png | Bin 0 -> 1881 bytes .../tinker/textures/gui/nei/smeltery.png | Bin 4335 -> 3426 bytes src/main/java/tconstruct/TConstruct.java | 61 ++++++--- .../tconstruct/plugins/nei/NEICompat.java | 21 --- .../plugins/nei/NEITConstructConfig.java | 42 ++++++ .../nei/RecipeHandlerAlloying.java | 5 +- .../nei/RecipeHandlerBase.java | 52 +++++--- .../nei/RecipeHandlerCastingBase.java | 2 +- .../nei/RecipeHandlerCastingBasin.java | 2 +- .../nei/RecipeHandlerCastingTable.java | 2 +- .../plugins/nei/RecipeHandlerDryingRack.java | 126 ++++++++++++++++++ .../nei/RecipeHandlerMelting.java | 2 +- .../tconstruct/plugins/nei/TinkerNEI.java | 20 --- .../smeltery/nei/NEITinkerSmelteryConfig.java | 38 ------ 15 files changed, 249 insertions(+), 124 deletions(-) create mode 100644 resources/assets/tinker/textures/gui/nei/dryingrack.png delete mode 100644 src/main/java/tconstruct/plugins/nei/NEICompat.java create mode 100644 src/main/java/tconstruct/plugins/nei/NEITConstructConfig.java rename src/main/java/tconstruct/{smeltery => plugins}/nei/RecipeHandlerAlloying.java (95%) rename src/main/java/tconstruct/{smeltery => plugins}/nei/RecipeHandlerBase.java (89%) rename src/main/java/tconstruct/{smeltery => plugins}/nei/RecipeHandlerCastingBase.java (99%) rename src/main/java/tconstruct/{smeltery => plugins}/nei/RecipeHandlerCastingBasin.java (96%) rename src/main/java/tconstruct/{smeltery => plugins}/nei/RecipeHandlerCastingTable.java (96%) create mode 100644 src/main/java/tconstruct/plugins/nei/RecipeHandlerDryingRack.java rename src/main/java/tconstruct/{smeltery => plugins}/nei/RecipeHandlerMelting.java (99%) delete mode 100644 src/main/java/tconstruct/plugins/nei/TinkerNEI.java delete mode 100644 src/main/java/tconstruct/smeltery/nei/NEITinkerSmelteryConfig.java diff --git a/resources/assets/tinker/textures/gui/nei/casting.png b/resources/assets/tinker/textures/gui/nei/casting.png index d9d5487a551833e379168b34d2820d1352fe51d5..6bfe3667288650889c80b06b77723dca4aac3cba 100644 GIT binary patch literal 2765 zcmeH|Yg7|Q6vt-`F)0xeE6-p^Dj+B!$fH0FHUUErh!8=9C}uRx7{vNQ1*slUsN{eWw5SN8SPd^lQ;;GmCgoweo1>rlxu0~-*_l1}&YhWi|G(MI z=Z6NG7?X_w0471JIN<<5$SVZ!7-UE~8@(18jHG_6{Q$U7NSF~}0l)x0Z*2f#H#0Lc zH#fJkva+_eCX>lFHZ}_vE~HQ>G#bs`-rm8%Ve#U{j*gB_PEJdfELpmAsk5^)olbXg zabYkRuCA_bZf@@G?j9Zg9Yt>^=(QcuMpMk`rBv@9YuUbbD7ApvQk z#1t7LMIxhlGL|vi#F}^60L=9W;`puIv2m-JTi zk^b^t(s(0Q@+ zXX2`g3eAVO`7an+b_3zo>1Jo4?YC2W@R}!YYfYtCtc>%TW7NUu4|8mhO}%*h=C9$j z9+4X--j1yVGs~?ik5pF9JI|!&wkPjBNv?}wMAf)DYPWBadJpC+TE%(D0l+z6xd(fV zVDVwG_Rai~((%yJjA2VjyqCGGn%rAf5BJU^RZc<6ubRfM z#ZGsfhc3zCgDERd?%&j9!5_zIG+sk5>s*f04KZ8y-V}Kh)x*oiN@oE@o!eouq4;8I z&K4Fs@ba1?yN06Rj;t4QcINvaf{-Pwm9q~V!g{{Nv`JfZBO|5G>Mo3TaXp+XXOCgi zPvcS+Ng$J1_)o%+Kk*6Y)*SK_bjkAi72AgV{YPtaFlMM`NOXMZ&$`{Zbw!rf%WQXm zqDOdAXD3k?*jI3ErlHZ?KfkFPLj>+N5E`$QOgwZ{J3C}NIX3sA5emr#Yg&^ANB>bg zBhUut`+kS+C@G5_Xxk*Yae zyBq^vHKy2tkI6ipz*DDx_q9=Lo=1N}m4ZpUyG_oVv~??XcW^)6 zlK;5h9&gBMikTiwlcL9jYg7;Q%b!@I>z{8(kJvxIKDaF;Xm&-jkj-=@V5r zx*dut9FM@%t;;?#(tLlBA;Iz*)s?J@8r47jLoqAv^gK0mW7M3d2GNm~TLbmSsEX=Q zAvdzlH4%zgVcLMspKL@VpD*3N^(zT9i4tSSGcC_Kgx#CC4c!arrjfbtcd-;+_r=2r z262}!>OVNR!LRMDay7zJ6}9L_akh`@Frv4ClJ|Lb87}SRVykY9cY0inYS_4_n8sGU zRbmVufLyt<|H51&XloKXb^N7wLg@XQUy4d`QX?FCveZj4Axi}vp*fTkL4?!j%tfH{gpaCVuJqUg91W1 J=lzAd{{_oq2B81| literal 3699 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 K!y*I1o&Nwe*$q|z diff --git a/resources/assets/tinker/textures/gui/nei/dryingrack.png b/resources/assets/tinker/textures/gui/nei/dryingrack.png new file mode 100644 index 0000000000000000000000000000000000000000..db78c229c41677dcbf6aead1650493c7b1d17f3c GIT binary patch literal 1881 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^@yrn8;yBCsExubOMD3Z8)ZN{E?AS4&_$U|+fngs4kI(fj z0_B>LAiv=MBO5RTe`i+(MmT4IM`SSr1K$AR|DNig)Whh9@ z%q!8$OD$0_(KFC9OnULHhJk@;lc$SgNJZS+DHr{c0!5Cp=o$b2f3zdHa;7-zdB48Q z*)#4XoQT_QxbN@XIkyd1ADr8^p}2>sAU*nqr5odp&AM-77Bk$rDOT1O$nY+Q+xoZ$ zL;1GWxyd38*7qM(?JV9a_kBLUUd*yuFQP4;0qkPUPJGvl>G=M1?H%*{=FEI zPoggCfhewqts)HBnhe*17}hLhi123IFpVi;R01_frrdrj%k*-6OzoMq{Gf8q)78&q Iol`;+09L9`NdN!< literal 0 HcmV?d00001 diff --git a/resources/assets/tinker/textures/gui/nei/smeltery.png b/resources/assets/tinker/textures/gui/nei/smeltery.png index 3c6f3228c0083f883463924d24fba5d770e5c471..a23d0ffeeff11acb597dce894299f5f17cb2291d 100644 GIT binary patch literal 3426 zcmeHKXH-+!7QP9Dkf2f|bYdLoAt40;37|NkN$4;jHPk1H6bVgnh@uDv6ws#`q^LN` z=tvU*A5s-iisHaX7o-Xr1wlX{W-dhp*IVz`{Ce-*weC9i?7h$VzWv>^&$&0j+R|h* zQU(bCz-BX3sx1IOz()um$Okrues{758~%S7S{MRA!Fi!YPZ$930oF8oBhZdQp`@gw zq@|^0WMpJzW##1Lt5~f}*0Ll9H0Lva+hGs+yV_7K_EaBy^V zbaHaqzkk28v$LzKtDBpfJ2l$V)6>VtM+7L85H3`gyMqxgP?fz80Ns+3ooI9ii8OAc z8f!&Ku-1vc8$o{fv+8MIH}+xklt7z!?~r;;*b^<-QyqZ@ia?`2oCg3r2xL(V!Bc^7 zRpDQBpQVb&}hFy>!Bf|5D zFA(hMAIQK5`Z6$@cmkg2^=2j-00f_yQ4Q@Q-8pFq5wbf)>KapT+&GM}yq0?iYGGRa zTFvCa2k0$$bwFu2H#_r~Kx8Yr$OL5;Wuq)x z0W{`9LlwIY6;xVJW?f&K#))J!{qArFhh2$7&8l&1jBMT8p2lfZ4J@8Jz3Wj;jge%4 z3p-Ec;u<3i->5J7%B@?s)bI{EiIX`{!{(3IEw%P#LBQQKwi;#Ee%JkeX}#WMBFFHU zeac12u)^0u$$e)e{Tk<}bw%(s2UM2Vag$RP02m>9wP@WYt^C$d+mwobz zO!SIGg-m!)Fz2{O5BH_H6iQ*(C?jAF+R@zljBkchKKSg|`+4!~lS}NAKH});TK`eV z!py74*5=6L5~PFaU-j7foG-BKlf*-r)K&c>(S*uF3%PETh`_#zu%EFvkK9OyHwou@ zxVeR$FNmTIuOgjt+of-O)t6?TwK7m7e0W;wgoL_Z?GHC`s|(4~(ek|Lfv1x9Ml-9w zw}!AfC$&9x7k1;kx>m7Qrzl}(=zW^O&Tua}&#$P@%*WoU7c45Reb<(yf%XVzv5Pmb zsKxp5Dki7zn0tO@Lq}JgyN=a}2jN4ocDxKd27?$d)|-0G23)kpV`R*mhA|=(7f4)q zd;byKWDRK1Qf?)W5*_Zx6!>gjsS(X3b!pi~Lz>!CY?l)XVc7}mPfS#waCuy$xKe#p zfgd84^Dkk`_r}b16oM{a&0OOpw9gXxyu=kLLRjSIXuX-5RM1_E+u01(r-}!}FDP$0 zzabX+Os0p7|Ja2Uz?$52^o|x=b$n9sbau$jRTkvZwtu#I^E=mkW2PhqRw9ylTuI_T zwf*6U=RQ3OhIgg9c8#3S?R)|g{H{;nM2^wwEX3N*Ud!-CgDb}sD7zJ-G^m6)SljZ9 zC=4bOB6M-XAeCI;-meiGLhyScH}5W& zD@@zW8XFgWF6yeK))7cemP)DFNoQhFXcJ#pVTzE*7i#r-mdpudWMJympEhyiruJk6 z3_*Ra&Ly0@qOj-5yjMS^PI}7@FqzHK0tYCry{vQD-{ROGFkM@MA}P@_FZTwCER7W} zVMalN7?kKPJ0|1YQ4sztwkqJk3(kbU7363v8?2ihlFVP_wV>$^^gp^^FC#M(3!vi2 z7TL!u`KgaWECChFkRB$c5keegh7RZfLAx*ma>17A@P7Hr3A^Cwv7?Yz3zwtN{pB&g z{JTe9Simx$At=c4C_4Z3D8yhTeVZQW2;$+3Z+%yYUt^Mi@Wk3XyEFxCOIh=Sa%l}( z)ZuLs=MkbEsemW>mCrk|+MFzr6F9`*;Tn1HRwZrnq^|d6mAEOw@4L4{yXQ9vrcEk= z24n6i!2mPnqJZ264kIq6zexv?!V|pOtm3OK@#mM#H%DG5FcKfz7l#XV@T&7y zBAm_~1$lR&=*80;=3I5#!xFdc$XA3kWtX%iYD>YQWMDgi}Ed@LwNrN+@`wiARdeh6|j=-&p$EG&8cK J=I*7R{0o2W$0q;) literal 4335 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

Yrm<`zDWtBrSs=$7DCO1 z*yenD>8bqe35<6SCC@_M0e|YoUv{y1yG8(MNqrxjL`Ga5q6UkArDj8F48qCnvqBeR|E;usRx_(Wpp1RJswHI7A(L z1yjZCVY-P9W@Tk1*9f)jH_SUeXECr6VzD-L7IO1kDI9|xs!=p|u}qE0by=)03}^+6 zpw&knC#7|-`4|m!K_5JMLzS`LNi;zLjEX$7Z#(A6e_u50flpexjtl4N<2eujctT?B z9Jv+-TV9bDoeCVz_&|F#s@JmhLP(-lkkB(4Whg5;xbLOfq(Cd zQ%Ht2Wymffb|27MT9;;=sS#VYULMb;pF;j!oQL;!@n7?K>*e_W^zCb_)F8H20Y|JYc-<8AKJvw7q~sUq*YUZw z@@m`4bfAKS!jK$@Kz}_Kb{*J4?`^{X_srZD1PExx3X2kkC$@zPU?gk103^gCT6jOm zhxEuRgM00ieleiiZwM7^#(tGIhLD8a7k_xwYM{@n0xDq`CJlN%`mqEF3jcurW6S@4 cTKXBbzC!3`%Lwe^KN!Grx6Q75JH5~S8_#vA0ssI2 diff --git a/src/main/java/tconstruct/TConstruct.java b/src/main/java/tconstruct/TConstruct.java index 6c1382e0..95ac8c35 100644 --- a/src/main/java/tconstruct/TConstruct.java +++ b/src/main/java/tconstruct/TConstruct.java @@ -1,42 +1,65 @@ package tconstruct; -import cpw.mods.fml.common.*; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.event.*; -import cpw.mods.fml.common.network.*; -import cpw.mods.fml.common.registry.*; -import cpw.mods.fml.relauncher.Side; -import java.util.*; +import java.util.Map; +import java.util.Random; + import mantle.pulsar.config.ForgeCFG; import mantle.pulsar.control.PulseManager; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraftforge.common.MinecraftForge; -import org.apache.logging.log4j.*; -import tconstruct.achievements.*; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import tconstruct.achievements.AchievementEvents; +import tconstruct.achievements.TAchievements; import tconstruct.api.TConstructAPI; import tconstruct.armor.TinkerArmor; -import tconstruct.armor.player.*; +import tconstruct.armor.player.TPlayerHandler; +import tconstruct.armor.player.TPlayerStats; import tconstruct.common.TProxyCommon; -import tconstruct.library.*; -import tconstruct.library.crafting.*; +import tconstruct.library.TConstructCreativeTab; +import tconstruct.library.TConstructRegistry; +import tconstruct.library.crafting.Detailing; +import tconstruct.library.crafting.LiquidCasting; import tconstruct.mechworks.TinkerMechworks; import tconstruct.mechworks.landmine.behavior.Behavior; import tconstruct.mechworks.landmine.behavior.stackCombo.SpecialStackHandler; import tconstruct.plugins.ic2.TinkerIC2; -import tconstruct.plugins.imc.*; +import tconstruct.plugins.imc.TinkerAE2; +import tconstruct.plugins.imc.TinkerBuildCraft; +import tconstruct.plugins.imc.TinkerMystcraft; +import tconstruct.plugins.imc.TinkerThaumcraft; import tconstruct.plugins.mfr.TinkerMFR; -import tconstruct.plugins.nei.TinkerNEI; import tconstruct.plugins.te4.TinkerTE4; import tconstruct.plugins.waila.TinkerWaila; import tconstruct.smeltery.TinkerSmeltery; import tconstruct.tools.TinkerTools; import tconstruct.util.EnvironmentChecks; -import tconstruct.util.config.*; +import tconstruct.util.config.DimensionBlacklist; +import tconstruct.util.config.PHConstruct; import tconstruct.util.network.PacketPipeline; import tconstruct.world.TinkerWorld; import tconstruct.world.gen.SlimeIslandGen; -import tconstruct.world.village.*; +import tconstruct.world.village.ComponentSmeltery; +import tconstruct.world.village.ComponentToolWorkshop; +import tconstruct.world.village.TVillageTrades; +import tconstruct.world.village.VillageSmelteryHandler; +import tconstruct.world.village.VillageToolStationHandler; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.Mod.Instance; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.network.NetworkCheckHandler; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.common.registry.VillagerRegistry; +import cpw.mods.fml.relauncher.Side; /** * TConstruct, the tool mod. Craft your tools with style, then modify until the @@ -45,7 +68,8 @@ import tconstruct.world.village.*; * @author mDiyo */ -@Mod(modid = "TConstruct", name = "TConstruct", version = "${version}", dependencies = "required-after:Forge@[10.13,);required-after:Mantle;after:MineFactoryReloaded;after:NotEnoughItems;after:Waila;after:ThermalExpansion") +@Mod(modid = "TConstruct", name = "TConstruct", version = "${version}", + dependencies = "required-after:Forge@[10.13,);required-after:Mantle;after:MineFactoryReloaded;after:NotEnoughItems;after:Waila;after:ThermalExpansion") public class TConstruct { public static final String modVersion = "${version}"; @@ -104,7 +128,6 @@ public class TConstruct pulsar.registerPulse(new TinkerSmeltery()); pulsar.registerPulse(new TinkerMechworks()); pulsar.registerPulse(new TinkerArmor()); - pulsar.registerPulse(new TinkerNEI()); pulsar.registerPulse(new TinkerThaumcraft()); pulsar.registerPulse(new TinkerWaila()); pulsar.registerPulse(new TinkerBuildCraft()); diff --git a/src/main/java/tconstruct/plugins/nei/NEICompat.java b/src/main/java/tconstruct/plugins/nei/NEICompat.java deleted file mode 100644 index 18e10360..00000000 --- a/src/main/java/tconstruct/plugins/nei/NEICompat.java +++ /dev/null @@ -1,21 +0,0 @@ -package tconstruct.plugins.nei; - -import codechicken.nei.api.API; -import codechicken.nei.recipe.DefaultOverlayHandler; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.Side; -import tconstruct.tools.gui.CraftingStationGui; - -public class NEICompat -{ - - public static void registerNEICompat () - { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) - { - API.registerGuiOverlay(CraftingStationGui.class, "crafting"); - API.registerGuiOverlayHandler(CraftingStationGui.class, new DefaultOverlayHandler(), "crafting"); - } - } - -} diff --git a/src/main/java/tconstruct/plugins/nei/NEITConstructConfig.java b/src/main/java/tconstruct/plugins/nei/NEITConstructConfig.java new file mode 100644 index 00000000..1b162a4e --- /dev/null +++ b/src/main/java/tconstruct/plugins/nei/NEITConstructConfig.java @@ -0,0 +1,42 @@ +package tconstruct.plugins.nei; + +import tconstruct.tools.gui.CraftingStationGui; +import codechicken.nei.api.API; +import codechicken.nei.api.IConfigureNEI; +import codechicken.nei.recipe.DefaultOverlayHandler; + +public class NEITConstructConfig implements IConfigureNEI +{ + + @Override + public void loadConfig () + { + API.registerGuiOverlay(CraftingStationGui.class, "crafting"); + API.registerGuiOverlayHandler(CraftingStationGui.class, new DefaultOverlayHandler(), "crafting"); + + API.registerRecipeHandler(new RecipeHandlerDryingRack()); + API.registerUsageHandler(new RecipeHandlerDryingRack()); + + API.registerRecipeHandler(new RecipeHandlerMelting()); + API.registerUsageHandler(new RecipeHandlerMelting()); + API.registerRecipeHandler(new RecipeHandlerAlloying()); + API.registerUsageHandler(new RecipeHandlerAlloying()); + API.registerRecipeHandler(new RecipeHandlerCastingTable()); + API.registerUsageHandler(new RecipeHandlerCastingTable()); + API.registerRecipeHandler(new RecipeHandlerCastingBasin()); + API.registerUsageHandler(new RecipeHandlerCastingBasin()); + } + + @Override + public String getName () + { + return "TConstruct"; + } + + @Override + public String getVersion () + { + return "${version}"; + } + +} diff --git a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerAlloying.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerAlloying.java similarity index 95% rename from src/main/java/tconstruct/smeltery/nei/RecipeHandlerAlloying.java rename to src/main/java/tconstruct/plugins/nei/RecipeHandlerAlloying.java index 17539dce..2ea55b82 100644 --- a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerAlloying.java +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerAlloying.java @@ -1,4 +1,4 @@ -package tconstruct.smeltery.nei; +package tconstruct.plugins.nei; import java.awt.Rectangle; import java.util.ArrayList; @@ -13,7 +13,6 @@ import tconstruct.library.crafting.AlloyMix; import tconstruct.library.crafting.Smeltery; import codechicken.lib.gui.GuiDraw; import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; public class RecipeHandlerAlloying extends RecipeHandlerBase { @@ -105,7 +104,7 @@ public class RecipeHandlerAlloying extends RecipeHandlerBase @Override public void loadTransferRects () { - this.transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(76, 21, 22, 15), this.getRecipeID(), new Object[0])); + this.transferRects.add(new RecipeTransferRect(new Rectangle(76, 21, 22, 15), this.getRecipeID(), new Object[0])); } @Override diff --git a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerBase.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerBase.java similarity index 89% rename from src/main/java/tconstruct/smeltery/nei/RecipeHandlerBase.java rename to src/main/java/tconstruct/plugins/nei/RecipeHandlerBase.java index f886dd27..0fc687c9 100644 --- a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerBase.java +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerBase.java @@ -1,4 +1,4 @@ -package tconstruct.smeltery.nei; +package tconstruct.plugins.nei; import java.awt.Point; import java.awt.Rectangle; @@ -32,7 +32,10 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler public abstract class CachedBaseRecipe extends CachedRecipe { - public abstract List getFluidTanks (); + public List getFluidTanks () + { + return null; + } } public abstract String getRecipeID (); @@ -122,11 +125,15 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler Point mouse = GuiDraw.getMousePosition(); Point offset = guiRecipe.getRecipePosition(recipe); Point relMouse = new Point(mouse.x - ((guiRecipe.width - 176) / 2) - offset.x, mouse.y - ((guiRecipe.height - 166) / 2) - offset.y); - for (FluidTankElement tank : crecipe.getFluidTanks()) + + if (crecipe.getFluidTanks() != null) { - if (tank.position.contains(relMouse)) + for (FluidTankElement tank : crecipe.getFluidTanks()) { - tank.handleTooltip(currenttip); + if (tank.position.contains(relMouse)) + { + tank.handleTooltip(currenttip); + } } } } @@ -179,27 +186,31 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler Point mousepos = GuiDraw.getMousePosition(); Point offset = guiRecipe.getRecipePosition(recipe); Point relMouse = new Point(mousepos.x - ((guiRecipe.width - 176) / 2) - offset.x, mousepos.y - ((guiRecipe.height - 166) / 2) - offset.y); - for (FluidTankElement tank : crecipe.getFluidTanks()) + + if (crecipe.getFluidTanks() != null) { - if (tank.position.contains(relMouse)) + for (FluidTankElement tank : crecipe.getFluidTanks()) { - if ((tank.fluid != null) && tank.fluid.amount > 0) + if (tank.position.contains(relMouse)) { - if (usage) + if ((tank.fluid != null) && tank.fluid.amount > 0) { - if (!GuiUsageRecipe.openRecipeGui("liquid", new Object[] { tank.fluid })) + if (usage) { - return false; + if (!GuiUsageRecipe.openRecipeGui("liquid", new Object[] { tank.fluid })) + { + return false; + } } - } - else - { - if (!GuiCraftingRecipe.openRecipeGui("liquid", new Object[] { tank.fluid })) + else { - return false; + if (!GuiCraftingRecipe.openRecipeGui("liquid", new Object[] { tank.fluid })) + { + return false; + } } + return true; } - return true; } } } @@ -210,9 +221,12 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler public void drawFluidTanks (int recipe) { CachedBaseRecipe crecipe = (CachedBaseRecipe) this.arecipes.get(recipe); - for (FluidTankElement fluidTank : crecipe.getFluidTanks()) + if (crecipe.getFluidTanks() != null) { - fluidTank.draw(); + for (FluidTankElement fluidTank : crecipe.getFluidTanks()) + { + fluidTank.draw(); + } } } diff --git a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingBase.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingBase.java similarity index 99% rename from src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingBase.java rename to src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingBase.java index ca50f7cc..606b7fd7 100644 --- a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingBase.java +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingBase.java @@ -1,4 +1,4 @@ -package tconstruct.smeltery.nei; +package tconstruct.plugins.nei; import java.awt.Rectangle; import java.util.ArrayList; diff --git a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingBasin.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingBasin.java similarity index 96% rename from src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingBasin.java rename to src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingBasin.java index 1c977d74..d9f2e50a 100644 --- a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingBasin.java +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingBasin.java @@ -1,4 +1,4 @@ -package tconstruct.smeltery.nei; +package tconstruct.plugins.nei; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingTable.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingTable.java similarity index 96% rename from src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingTable.java rename to src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingTable.java index 1021733f..d29c5a65 100644 --- a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerCastingTable.java +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerCastingTable.java @@ -1,4 +1,4 @@ -package tconstruct.smeltery.nei; +package tconstruct.plugins.nei; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/tconstruct/plugins/nei/RecipeHandlerDryingRack.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerDryingRack.java new file mode 100644 index 00000000..e4083cfb --- /dev/null +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerDryingRack.java @@ -0,0 +1,126 @@ +package tconstruct.plugins.nei; + +import java.awt.Rectangle; + +import net.minecraft.item.ItemStack; + +import org.lwjgl.opengl.GL11; + +import tconstruct.library.crafting.DryingRackRecipes; +import tconstruct.library.crafting.DryingRackRecipes.DryingRecipe; +import codechicken.lib.gui.GuiDraw; +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; + +public class RecipeHandlerDryingRack extends RecipeHandlerBase +{ + + public class CachedDryingRackRecipe extends CachedBaseRecipe + { + + public PositionedStack input; + public PositionedStack output; + public int time; + + public CachedDryingRackRecipe(DryingRecipe drying) + { + this.input = new PositionedStack(drying.input, 44, 18); + this.output = new PositionedStack(drying.result, 98, 18); + this.time = drying.time; + } + + @Override + public PositionedStack getIngredient () + { + return this.input; + } + + @Override + public PositionedStack getResult () + { + return this.output; + } + + } + + @Override + public String getRecipeName () + { + return "Drying Rack"; + } + + @Override + public String getRecipeID () + { + return "tconstruct.dryingrack"; + } + + @Override + public void loadTransferRects () + { + this.transferRects.add(new RecipeTransferRect(new Rectangle(68, 20, 22, 15), this.getRecipeID(), new Object[0])); + } + + @Override + public String getGuiTexture () + { + return "tinker:textures/gui/nei/dryingrack.png"; + } + + @Override + public void drawBackground (int recipe) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiDraw.changeTexture(this.getGuiTexture()); + GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 160, 65); + } + + @Override + public void drawExtras (int recipe) + { + int time = ((CachedDryingRackRecipe) this.arecipes.get(recipe)).time; + int seconds = time / 20; + GuiDraw.drawStringC(time + " ticks (" + seconds + " secs)", 81, 40, 0x808080, false); + } + + @Override + public void loadCraftingRecipes (String outputId, Object... results) + { + if (outputId.equals(this.getRecipeID())) + { + for (DryingRecipe drying : DryingRackRecipes.recipes) + { + this.arecipes.add(new CachedDryingRackRecipe(drying)); + } + } + else + { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes (ItemStack result) + { + for (DryingRecipe drying : DryingRackRecipes.recipes) + { + if (NEIServerUtils.areStacksSameTypeCrafting(drying.result, result)) + { + this.arecipes.add(new CachedDryingRackRecipe(drying)); + } + } + } + + @Override + public void loadUsageRecipes (ItemStack ingred) + { + for (DryingRecipe drying : DryingRackRecipes.recipes) + { + if (NEIServerUtils.areStacksSameTypeCrafting(drying.input, ingred)) + { + this.arecipes.add(new CachedDryingRackRecipe(drying)); + } + } + } + +} diff --git a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerMelting.java b/src/main/java/tconstruct/plugins/nei/RecipeHandlerMelting.java similarity index 99% rename from src/main/java/tconstruct/smeltery/nei/RecipeHandlerMelting.java rename to src/main/java/tconstruct/plugins/nei/RecipeHandlerMelting.java index 9706ff91..a39636ba 100644 --- a/src/main/java/tconstruct/smeltery/nei/RecipeHandlerMelting.java +++ b/src/main/java/tconstruct/plugins/nei/RecipeHandlerMelting.java @@ -1,4 +1,4 @@ -package tconstruct.smeltery.nei; +package tconstruct.plugins.nei; import java.awt.Rectangle; import java.util.ArrayList; diff --git a/src/main/java/tconstruct/plugins/nei/TinkerNEI.java b/src/main/java/tconstruct/plugins/nei/TinkerNEI.java deleted file mode 100644 index 86f27286..00000000 --- a/src/main/java/tconstruct/plugins/nei/TinkerNEI.java +++ /dev/null @@ -1,20 +0,0 @@ -package tconstruct.plugins.nei; - -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.registry.GameRegistry.ObjectHolder; -import mantle.pulsar.pulse.*; -import tconstruct.TConstruct; - -@ObjectHolder(TConstruct.modID) -@Pulse(id = "Tinkers NEI Compatibility", description = "Tinkers Construct compatibility for NEI", modsRequired = "NotEnoughItems") -public class TinkerNEI -{ - - @Handler - public void init (FMLInitializationEvent event) - { - TConstruct.logger.info("NotEnoughItems detected. Registering TConstruct NEI plugin."); - NEICompat.registerNEICompat(); - } - -} diff --git a/src/main/java/tconstruct/smeltery/nei/NEITinkerSmelteryConfig.java b/src/main/java/tconstruct/smeltery/nei/NEITinkerSmelteryConfig.java deleted file mode 100644 index 73faabb5..00000000 --- a/src/main/java/tconstruct/smeltery/nei/NEITinkerSmelteryConfig.java +++ /dev/null @@ -1,38 +0,0 @@ -package tconstruct.smeltery.nei; - -import tconstruct.TConstruct; -import codechicken.nei.api.API; -import codechicken.nei.api.IConfigureNEI; - -public class NEITinkerSmelteryConfig implements IConfigureNEI -{ - - @Override - public void loadConfig () - { - if (TConstruct.pulsar.isPulseLoaded("Tinkers' Smeltery")) - { - API.registerRecipeHandler(new RecipeHandlerMelting()); - API.registerUsageHandler(new RecipeHandlerMelting()); - API.registerRecipeHandler(new RecipeHandlerAlloying()); - API.registerUsageHandler(new RecipeHandlerAlloying()); - API.registerRecipeHandler(new RecipeHandlerCastingTable()); - API.registerUsageHandler(new RecipeHandlerCastingTable()); - API.registerRecipeHandler(new RecipeHandlerCastingBasin()); - API.registerUsageHandler(new RecipeHandlerCastingBasin()); - } - } - - @Override - public String getName () - { - return "TinkerSmeltery"; - } - - @Override - public String getVersion () - { - return "${version}"; - } - -}