From 10ba3d0f1986804eacb825330a342c6af9228bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A5=93?= Date: Mon, 9 Dec 2024 17:36:19 +0800 Subject: [PATCH] Fixes for GTNH 2.7.0 (#16) * fixed problems for gtnh 2.7.0 - updated all the deps to latest. - fixed problems caused by new gt. - removed LargeTurbine tweaks and Rocket Fuel Recipe tweaks, because I don't know how to fix them. * refactor the project structure - moved mixin classes to mixin source set - added Large Processing Factory (id: 860), untested! * updates for v2.7.0 - updated tooltips in the machines added back by gtnn - updated reversed recipe logic - added the Large Processing Factory recipe --- dependencies.gradle | 28 +- gradle.properties | 13 +- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 43504 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 7 +- gradlew.bat | 2 + settings.gradle | 2 +- src/main/java/cn/taskeren/gtnn/GTNN.java | 10 +- .../gtnn/{mod/gt5u/util => }/NNItemList.java | 74 +-- .../cn/taskeren/gtnn/common/CommonProxy.java | 31 +- .../taskeren/gtnn/common/MachineRegistry.java | 27 + .../gtnn/common/ReversedRecipeRegistry.java | 29 + .../taskeren/gtnn/common/config/Config.java | 8 + .../MTEDisassembler.java} | 12 +- .../machine/MTELargeProcessingFactory.java | 508 ++++++++++++++++++ .../recipe}/DisassemblerRecipeHelper.java | 168 +++--- .../recipe}/DisassemblerRecipes.java | 97 ++-- .../gtpp/GT_MTE_LargeTurbine_PlasmaMixin.java | 14 - .../GT_MTE_LargeTurbine_SCSteamMixin.java | 63 --- .../gtnn/mixin/gtpp/RocketFuelsMixin.java | 138 ----- .../cn/taskeren/gtnn/mixinplugin/Feature.java | 14 +- .../cn/taskeren/gtnn/mixinplugin/Mixin.java | 4 - .../mod/gt5u/recipe/ReverseShapedRecipe.java | 35 -- .../gt5u/recipe/ReverseShapelessRecipe.java | 35 -- .../LargeEssentiaGeneratorMixin.java | 4 +- .../gt5u/GTLoaderMetaTileEntitiesMixin.java | 18 +- .../GTMetaTileEntityLightningRodMixin.java | 4 +- .../gtnn/mixin/gt5u/GTShapedRecipeMixin.java | 8 +- .../mixin/gt5u/GTShapelessRecipeMixin.java | 8 +- .../GTLoaderMachinesMixin.java | 18 +- .../tectech/GTMetaTileEntityEOMMixin.java | 24 +- .../gtnn/mixin/tectech/MainLoaderMixin.java | 2 +- 32 files changed, 865 insertions(+), 542 deletions(-) rename src/main/java/cn/taskeren/gtnn/{mod/gt5u/util => }/NNItemList.java (63%) create mode 100644 src/main/java/cn/taskeren/gtnn/common/MachineRegistry.java create mode 100644 src/main/java/cn/taskeren/gtnn/common/ReversedRecipeRegistry.java rename src/main/java/cn/taskeren/gtnn/{mod/gt5u/tile/TileEntityDisassembler.java => machine/MTEDisassembler.java} (74%) create mode 100644 src/main/java/cn/taskeren/gtnn/machine/MTELargeProcessingFactory.java rename src/main/java/cn/taskeren/gtnn/{mod/gt5u/util => machine/recipe}/DisassemblerRecipeHelper.java (60%) rename src/main/java/cn/taskeren/gtnn/{mod/gt5u/util => machine/recipe}/DisassemblerRecipes.java (61%) delete mode 100644 src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_PlasmaMixin.java delete mode 100644 src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_SCSteamMixin.java delete mode 100644 src/main/java/cn/taskeren/gtnn/mixin/gtpp/RocketFuelsMixin.java delete mode 100644 src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapedRecipe.java delete mode 100644 src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapelessRecipe.java rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java (79%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java (75%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java (82%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java (75%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java (74%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java (77%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java (91%) rename src/{main => mixin}/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java (95%) diff --git a/dependencies.gradle b/dependencies.gradle index bd89015..41d7261 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -36,32 +36,34 @@ dependencies { // generated code start - DON'T CHANGE! // CodeChickenCore - implementation("com.github.GTNewHorizons:CodeChickenCore:1.2.1:dev") + implementation("com.github.GTNewHorizons:CodeChickenCore:1.3.10:dev") // CodeChickenLib - implementation("com.github.GTNewHorizons:CodeChickenLib:1.2.1:dev") + // implementation("com.github.GTNewHorizons:CodeChickenLib:1.3.0:dev") // Gregtech - implementation("com.github.GTNewHorizons:GT5-Unofficial:5.09.45.163:dev") + implementation("com.github.GTNewHorizons:GT5-Unofficial:5.09.50.103:dev") // GT++ - implementation("com.github.GTNewHorizons:GTplusplus:1.11.58:dev") + // implementation("com.github.GTNewHorizons:GTplusplus:1.12.11:dev") // GTNHLib - implementation("com.github.GTNewHorizons:GTNHLib:0.2.11:dev") + implementation("com.github.GTNewHorizons:GTNHLib:0.5.21:dev") // NewHorizonsCore - implementation("com.github.GTNewHorizons:NewHorizonsCoreMod:2.3.50:dev") + implementation("com.github.GTNewHorizons:NewHorizonsCoreMod:2.6.88:dev") // GoodGenerator - implementation("com.github.GTNewHorizons:GoodGenerator:0.8.22:dev") + // implementation("com.github.GTNewHorizons:GoodGenerator:0.9.5:dev") // TecTech - implementation("com.github.GTNewHorizons:TecTech:5.3.45:dev") + // implementation("com.github.GTNewHorizons:TecTech:5.4.3:dev") // Forestry - implementation("com.github.GTNewHorizons:ForestryMC:4.8.9:api") { transitive = false } + implementation("com.github.GTNewHorizons:ForestryMC:4.9.19:api") { transitive = false } // Railcraft - implementation("com.github.GTNewHorizons:Railcraft:9.15.8:dev") { transitive = false } + implementation("com.github.GTNewHorizons:Railcraft:9.15.15:dev") { transitive = false } // Buildcraft implementation("com.github.GTNewHorizons:BuildCraft:7.1.39:dev") { transitive = false } // EnderIO - implementation("com.github.GTNewHorizons:EnderIO:2.7.4:dev") { transitive = false } + implementation("com.github.GTNewHorizons:EnderIO:2.8.22:dev") { transitive = false } // ProjectRed - implementation("com.github.GTNewHorizons:ProjectRed:4.9.5-GTNH:dev") { transitive = false } + implementation("com.github.GTNewHorizons:ProjectRed:4.10.5-GTNH:dev") { transitive = false } // TinkerConstruct - implementation("com.github.GTNewHorizons:TinkersConstruct:1.11.15-GTNH:dev") { transitive = false } + implementation("com.github.GTNewHorizons:TinkersConstruct:1.12.16-GTNH:dev") { transitive = false } + // AppleCore + implementation("com.github.GTNewHorizons:AppleCore:3.3.4:api") // generated code end } diff --git a/gradle.properties b/gradle.properties index e661ace..82f0188 100644 --- a/gradle.properties +++ b/gradle.properties @@ -76,6 +76,11 @@ accessTransformersFile = # Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! usesMixins = true +# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main. +# This can speed up compile times thanks to not running the mixin annotation processor on all input sources. +# Mixin classes will have access to "main" classes, but not the other way around. +separateMixinSourceSet = mixin + # Adds some debug arguments like verbose output and class export. usesMixinDebug = false @@ -108,9 +113,15 @@ minimizeShadowedDependencies = true # If disabled, won't rename the shadowed classes. relocateShadowedDependencies = true -# Adds the GTNH maven, CurseMaven, Modrinth, and some more well-known 1.7.10 repositories. +# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories. includeWellKnownRepositories = true +# A list of repositories to exclude from the includeWellKnownRepositories setting. Should be a space separated +# list of strings, with the acceptable keys being(case does not matter): +# cursemaven +# modrinth +excludeWellKnownRepositories = + # Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven. # Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables. # If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle. diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136f3d4ba8a0da8d277868979cfbc8ad796..2c3521197d7c4586c843d1d3e9090525f1898cde 100644 GIT binary patch delta 8703 zcmYLtRag{&)-BQ@Dc#cDDP2Q%r*wBHJ*0FE-92)X$3_b$L+F2Fa28UVeg>}yRjC}^a^+(Cdu_FTlV;w_x7ig{yd(NYi_;SHXEq`|Qa`qPMf1B~v#%<*D zn+KWJfX#=$FMopqZ>Cv7|0WiA^M(L@tZ=_Hi z*{?)#Cn^{TIzYD|H>J3dyXQCNy8f@~OAUfR*Y@C6r=~KMZ{X}q`t@Er8NRiCUcR=?Y+RMv`o0i{krhWT6XgmUt!&X=e_Q2=u@F=PXKpr9-FL@0 zfKigQcGHyPn{3vStLFk=`h@+Lh1XBNC-_nwNU{ytxZF$o}oyVfHMj|ZHWmEmZeNIlO5eLco<=RI&3=fYK*=kmv*75aqE~&GtAp(VJ z`VN#&v2&}|)s~*yQ)-V2@RmCG8lz5Ysu&I_N*G5njY`<@HOc*Bj)ZwC%2|2O<%W;M z+T{{_bHLh~n(rM|8SpGi8Whep9(cURNRVfCBQQ2VG<6*L$CkvquqJ~9WZ~!<6-EZ&L(TN zpSEGXrDiZNz)`CzG>5&_bxzBlXBVs|RTTQi5GX6s5^)a3{6l)Wzpnc|Cc~(5mO)6; z6gVO2Zf)srRQ&BSeg0)P2en#<)X30qXB{sujc3Ppm4*)}zOa)@YZ<%1oV9K%+(VzJ zk(|p>q-$v>lImtsB)`Mm;Z0LaU;4T1BX!wbnu-PSlH1%`)jZZJ(uvbmM^is*r=Y{B zI?(l;2n)Nx!goxrWfUnZ?y5$=*mVU$Lpc_vS2UyW>tD%i&YYXvcr1v7hL2zWkHf42 z_8q$Gvl>%468i#uV`RoLgrO+R1>xP8I^7~&3(=c-Z-#I`VDnL`6stnsRlYL zJNiI`4J_0fppF<(Ot3o2w?UT*8QQrk1{#n;FW@4M7kR}oW-}k6KNQaGPTs=$5{Oz} zUj0qo@;PTg#5moUF`+?5qBZ)<%-$qw(Z?_amW*X}KW4j*FmblWo@SiU16V>;nm`Eg zE0MjvGKN_eA%R0X&RDT!hSVkLbF`BFf;{8Nym#1?#5Fb?bAHY(?me2tww}5K9AV9y+T7YaqaVx8n{d=K`dxS|=))*KJn(~8u@^J% zj;8EM+=Dq^`HL~VPag9poTmeP$E`npJFh^|=}Mxs2El)bOyoimzw8(RQle(f$n#*v zzzG@VOO(xXiG8d?gcsp-Trn-36}+S^w$U(IaP`-5*OrmjB%Ozzd;jfaeRHAzc_#?- z`0&PVZANQIcb1sS_JNA2TFyN$*yFSvmZbqrRhfME3(PJ62u%KDeJ$ZeLYuiQMC2Sc z35+Vxg^@gSR6flp>mS|$p&IS7#fL@n20YbNE9(fH;n%C{w?Y0=N5?3GnQLIJLu{lm zV6h@UDB+23dQoS>>)p`xYe^IvcXD*6nDsR;xo?1aNTCMdbZ{uyF^zMyloFDiS~P7W>WuaH2+`xp0`!d_@>Fn<2GMt z&UTBc5QlWv1)K5CoShN@|0y1M?_^8$Y*U(9VrroVq6NwAJe zxxiTWHnD#cN0kEds(wN8YGEjK&5%|1pjwMH*81r^aXR*$qf~WiD2%J^=PHDUl|=+f zkB=@_7{K$Fo0%-WmFN_pyXBxl^+lLG+m8Bk1OxtFU}$fQU8gTYCK2hOC0sVEPCb5S z4jI07>MWhA%cA{R2M7O_ltorFkJ-BbmPc`{g&Keq!IvDeg8s^PI3a^FcF z@gZ2SB8$BPfenkFc*x#6&Z;7A5#mOR5qtgE}hjZ)b!MkOQ zEqmM3s>cI_v>MzM<2>U*eHoC69t`W`^9QBU^F$ z;nU4%0$)$ILukM6$6U+Xts8FhOFb|>J-*fOLsqVfB=vC0v2U&q8kYy~x@xKXS*b6i zy=HxwsDz%)!*T5Bj3DY1r`#@Tc%LKv`?V|g6Qv~iAnrqS+48TfuhmM)V_$F8#CJ1j4;L}TBZM~PX!88IT+lSza{BY#ER3TpyMqi# z#{nTi!IsLYt9cH?*y^bxWw4djrd!#)YaG3|3>|^1mzTuXW6SV4+X8sA2dUWcjH)a3 z&rXUMHbOO?Vcdf3H<_T-=DB0M4wsB;EL3lx?|T(}@)`*C5m`H%le54I{bfg7GHqYB z9p+30u+QXMt4z&iG%LSOk1uw7KqC2}ogMEFzc{;5x`hU(rh0%SvFCBQe}M#RSWJv;`KM zf7D&z0a)3285{R$ZW%+I@JFa^oZN)vx77y_;@p0(-gz6HEE!w&b}>0b)mqz-(lfh4 zGt}~Hl@{P63b#dc`trFkguB}6Flu!S;w7lp_>yt|3U=c|@>N~mMK_t#LO{n;_wp%E zQUm=z6?JMkuQHJ!1JV$gq)q)zeBg)g7yCrP=3ZA|wt9%_l#yPjsS#C7qngav8etSX+s?JJ1eX-n-%WvP!IH1%o9j!QH zeP<8aW}@S2w|qQ`=YNC}+hN+lxv-Wh1lMh?Y;LbIHDZqVvW^r;^i1O<9e z%)ukq=r=Sd{AKp;kj?YUpRcCr*6)<@Mnp-cx{rPayiJ0!7Jng}27Xl93WgthgVEn2 zQlvj!%Q#V#j#gRWx7((Y>;cC;AVbPoX*mhbqK*QnDQQ?qH+Q*$u6_2QISr!Fn;B-F@!E+`S9?+Jr zt`)cc(ZJ$9q^rFohZJoRbP&X3)sw9CLh#-?;TD}!i>`a;FkY6(1N8U-T;F#dGE&VI zm<*Tn>EGW(TioP@hqBg zn6nEolK5(}I*c;XjG!hcI0R=WPzT)auX-g4Znr;P`GfMa*!!KLiiTqOE*STX4C(PD z&}1K|kY#>~>sx6I0;0mUn8)=lV?o#Bcn3tn|M*AQ$FscYD$0H(UKzC0R588Mi}sFl z@hG4h^*;_;PVW#KW=?>N)4?&PJF&EO(X?BKOT)OCi+Iw)B$^uE)H>KQZ54R8_2z2_ z%d-F7nY_WQiSB5vWd0+>^;G^j{1A%-B359C(Eji{4oLT9wJ~80H`6oKa&{G- z)2n-~d8S0PIkTW_*Cu~nwVlE&Zd{?7QbsGKmwETa=m*RG>g??WkZ|_WH7q@ zfaxzTsOY2B3!Fu;rBIJ~aW^yqn{V;~4LS$xA zGHP@f>X^FPnSOxEbrnEOd*W7{c(c`b;RlOEQ*x!*Ek<^p*C#8L=Ty^S&hg zaV)g8<@!3p6(@zW$n7O8H$Zej+%gf^)WYc$WT{zp<8hmn!PR&#MMOLm^hcL2;$o=Q zXJ=9_0vO)ZpNxPjYs$nukEGK2bbL%kc2|o|zxYMqK8F?$YtXk9Owx&^tf`VvCCgUz zLNmDWtociY`(}KqT~qnVUkflu#9iVqXw7Qi7}YT@{K2Uk(Wx7Q-L}u^h+M(81;I*J ze^vW&-D&=aOQq0lF5nLd)OxY&duq#IdK?-r7En0MnL~W51UXJQFVVTgSl#85=q$+| zHI%I(T3G8ci9Ubq4(snkbQ*L&ksLCnX_I(xa1`&(Bp)|fW$kFot17I)jyIi06dDTTiI%gNR z8i*FpB0y0 zjzWln{UG1qk!{DEE5?0R5jsNkJ(IbGMjgeeNL4I9;cP&>qm%q7cHT}@l0v;TrsuY0 zUg;Z53O-rR*W!{Q*Gp26h`zJ^p&FmF0!EEt@R3aT4YFR0&uI%ko6U0jzEYk_xScP@ zyk%nw`+Ic4)gm4xvCS$)y;^)B9^}O0wYFEPas)!=ijoBCbF0DbVMP z`QI7N8;88x{*g=51AfHx+*hoW3hK(?kr(xVtKE&F-%Tb}Iz1Z8FW>usLnoCwr$iWv ztOVMNMV27l*fFE29x}veeYCJ&TUVuxsd`hV-8*SxX@UD6au5NDhCQ4Qs{{CJQHE#4 z#bg6dIGO2oUZQVY0iL1(Q>%-5)<7rhnenUjOV53*9Qq?aU$exS6>;BJqz2|#{We_| zX;Nsg$KS<+`*5=WA?idE6G~kF9oQPSSAs#Mh-|)@kh#pPCgp&?&=H@Xfnz`5G2(95 z`Gx2RfBV~`&Eyq2S9m1}T~LI6q*#xC^o*EeZ#`}Uw)@RD>~<_Kvgt2?bRbO&H3&h- zjB&3bBuWs|YZSkmcZvX|GJ5u7#PAF$wj0ULv;~$7a?_R%e%ST{al;=nqj-<0pZiEgNznHM;TVjCy5E#4f?hudTr0W8)a6o;H; zhnh6iNyI^F-l_Jz$F`!KZFTG$yWdioL=AhImGr!$AJihd{j(YwqVmqxMKlqFj<_Hlj@~4nmrd~&6#f~9>r2_e-^nca(nucjf z;(VFfBrd0?k--U9L*iey5GTc|Msnn6prtF*!5AW3_BZ9KRO2(q7mmJZ5kz-yms`04e; z=uvr2o^{lVBnAkB_~7b7?1#rDUh4>LI$CH1&QdEFN4J%Bz6I$1lFZjDz?dGjmNYlD zDt}f;+xn-iHYk~V-7Fx!EkS``+w`-f&Ow>**}c5I*^1tpFdJk>vG23PKw}FrW4J#x zBm1zcp^){Bf}M|l+0UjvJXRjP3~!#`I%q*E=>?HLZ>AvB5$;cqwSf_*jzEmxxscH; zcl>V3s>*IpK`Kz1vP#APs#|tV9~#yMnCm&FOllccilcNmAwFdaaY7GKg&(AKG3KFj zk@%9hYvfMO;Vvo#%8&H_OO~XHlwKd()gD36!_;o z*7pl*o>x9fbe?jaGUO25ZZ@#qqn@|$B+q49TvTQnasc$oy`i~*o}Ka*>Wg4csQOZR z|Fs_6-04vj-Dl|B2y{&mf!JlPJBf3qG~lY=a*I7SBno8rLRdid7*Kl@sG|JLCt60# zqMJ^1u^Gsb&pBPXh8m1@4;)}mx}m%P6V8$1oK?|tAk5V6yyd@Ez}AlRPGcz_b!c;; z%(uLm1Cp=NT(4Hcbk;m`oSeW5&c^lybx8+nAn&fT(!HOi@^&l1lDci*?L#*J7-u}} z%`-*V&`F1;4fWsvcHOlZF#SD&j+I-P(Mu$L;|2IjK*aGG3QXmN$e}7IIRko8{`0h9 z7JC2vi2Nm>g`D;QeN@^AhC0hKnvL(>GUqs|X8UD1r3iUc+-R4$=!U!y+?p6rHD@TL zI!&;6+LK_E*REZ2V`IeFP;qyS*&-EOu)3%3Q2Hw19hpM$3>v!!YABs?mG44{L=@rjD%X-%$ajTW7%t_$7to%9d3 z8>lk z?_e}(m&>emlIx3%7{ER?KOVXi>MG_)cDK}v3skwd%Vqn0WaKa1;e=bK$~Jy}p#~`B zGk-XGN9v)YX)K2FM{HNY-{mloSX|a?> z8Om9viiwL|vbVF~j%~hr;|1wlC0`PUGXdK12w;5Wubw}miQZ)nUguh?7asm90n>q= z;+x?3haT5#62bg^_?VozZ-=|h2NbG%+-pJ?CY(wdMiJ6!0ma2x{R{!ys=%in;;5@v z{-rpytg){PNbCGP4Ig>=nJV#^ie|N68J4D;C<1=$6&boh&ol~#A?F-{9sBL*1rlZshXm~6EvG!X9S zD5O{ZC{EEpHvmD5K}ck+3$E~{xrrg*ITiA}@ZCoIm`%kVqaX$|#ddV$bxA{jux^uRHkH)o6#}fT6XE|2BzU zJiNOAqcxdcQdrD=U7OVqer@p>30l|ke$8h;Mny-+PP&OM&AN z9)!bENg5Mr2g+GDIMyzQpS1RHE6ow;O*ye;(Qqej%JC?!D`u;<;Y}1qi5cL&jm6d9 za{plRJ0i|4?Q%(t)l_6f8An9e2<)bL3eULUVdWanGSP9mm?PqFbyOeeSs9{qLEO-) zTeH*<$kRyrHPr*li6p+K!HUCf$OQIqwIw^R#mTN>@bm^E=H=Ger_E=ztfGV9xTgh=}Hep!i97A;IMEC9nb5DBA5J#a8H_Daq~ z6^lZ=VT)7=y}H3=gm5&j!Q79#e%J>w(L?xBcj_RNj44r*6^~nCZZYtCrLG#Njm$$E z7wP?E?@mdLN~xyWosgwkCot8bEY-rUJLDo7gukwm@;TjXeQ>fr(wKP%7LnH4Xsv?o zUh6ta5qPx8a5)WO4 zK37@GE@?tG{!2_CGeq}M8VW(gU6QXSfadNDhZEZ}W2dwm)>Y7V1G^IaRI9ugWCP#sw1tPtU|13R!nwd1;Zw8VMx4hUJECJkocrIMbJI zS9k2|`0$SD%;g_d0cmE7^MXP_;_6`APcj1yOy_NXU22taG9Z;C2=Z1|?|5c^E}dR& zRfK2Eo=Y=sHm@O1`62ciS1iKv9BX=_l7PO9VUkWS7xlqo<@OxlR*tn$_WbrR8F?ha zBQ4Y!is^AIsq-46^uh;=9B`gE#Sh+4m>o@RMZFHHi=qb7QcUrgTos$e z^4-0Z?q<7XfCP~d#*7?hwdj%LyPj2}bsdWL6HctL)@!tU$ftMmV=miEvZ2KCJXP%q zLMG&%rVu8HaaM-tn4abcSE$88EYmK|5%_29B*L9NyO|~j3m>YGXf6fQL$(7>Bm9o zjHfJ+lmYu_`+}xUa^&i81%9UGQ6t|LV45I)^+m@Lz@jEeF;?_*y>-JbK`=ZVsSEWZ z$p^SK_v(0d02AyIv$}*8m)9kjef1-%H*_daPdSXD6mpc>TW`R$h9On=Z9n>+f4swL zBz^(d9uaQ_J&hjDvEP{&6pNz-bg;A===!Ac%}bu^>0}E)wdH1nc}?W*q^J2SX_A*d zBLF@n+=flfH96zs@2RlOz&;vJPiG6In>$&{D+`DNgzPYVu8<(N&0yPt?G|>D6COM# zVd)6v$i-VtYfYi1h)pXvO}8KO#wuF=F^WJXPC+;hqpv>{Z+FZTP1w&KaPl?D)*A=( z8$S{Fh;Ww&GqSvia6|MvKJg-RpNL<6MXTl(>1}XFfziRvPaLDT1y_tjLYSGS$N;8| zZC*Hcp!~u?v~ty3&dBm`1A&kUe6@`q!#>P>ZZZgGRYhNIxFU6B>@f@YL%hOV0=9s# z?@0~aR1|d9LFoSI+li~@?g({Y0_{~~E_MycHTXz`EZmR2$J$3QVoA25j$9pe?Ub)d z`jbm8v&V0JVfY-^1mG=a`70a_tjafgi}z-8$smw7Mc`-!*6y{rB-xN1l`G3PLBGk~ z{o(KCV0HEfj*rMAiluQuIZ1tevmU@m{adQQr3xgS!e_WXw&eE?GjlS+tL0@x%Hm{1 zzUF^qF*2KAxY0$~pzVRpg9dA*)^ z7&wu-V$7+Jgb<5g;U1z*ymus?oZi7&gr!_3zEttV`=5VlLtf!e&~zv~PdspA0JCRz zZi|bO5d)>E;q)?}OADAhGgey#6(>+36XVThP%b#8%|a9B_H^)Nps1md_lVv5~OO@(*IJO@;eqE@@(y}KA- z`zj@%6q#>hIgm9}*-)n(^Xbdp8`>w~3JCC`(H{NUh8Umm{NUntE+eMg^WvSyL+ilV zff54-b59jg&r_*;*#P~ON#I=gAW99hTD;}nh_j;)B6*tMgP_gz4?=2EJZg$8IU;Ly<(TTC?^)& zj@%V!4?DU&tE=8)BX6f~x0K+w$%=M3;Fpq$VhETRlJ8LEEe;aUcG;nBe|2Gw>+h7CuJ-^gYFhQzDg(`e=!2f7t0AXrl zAx`RQ1u1+}?EkEWSb|jQN)~wOg#Ss&1oHoFBvg{Z|4#g$)mNzjKLq+8rLR(jC(QUC Ojj7^59?Sdh$^Qpp*~F>< delta 8662 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..09523c0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4..f5feea6 100644 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/gradlew.bat b/gradlew.bat index 25da30d..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/settings.gradle b/settings.gradle index f00d60e..dcbefb0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.22' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.28' } include("depTools") diff --git a/src/main/java/cn/taskeren/gtnn/GTNN.java b/src/main/java/cn/taskeren/gtnn/GTNN.java index 7124ec4..3f1fe39 100644 --- a/src/main/java/cn/taskeren/gtnn/GTNN.java +++ b/src/main/java/cn/taskeren/gtnn/GTNN.java @@ -2,17 +2,17 @@ import cn.taskeren.gtnn.common.CommonProxy; import cn.taskeren.gtnn.common.command.NoNerfCommand; -import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.*; +import net.minecraft.util.EnumChatFormatting; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @Mod(modid = GTNN.MOD_ID, name = GTNN.MOD_NAME, dependencies = GTNN.DEPENDENCIES) public class GTNN { - public static Logger logger = LogManager.getFormatterLogger("GTNN"); + public static Logger logger = LogManager.getLogger("GTNN"); static final String MOD_ID = "gtnn"; static final String MOD_NAME = "GT-NO-NERF"; @@ -36,9 +36,9 @@ public class GTNN { public GTNN() { } - public static boolean isLwjgl3ifyLoaded() { - return Loader.isModLoaded("Lwjgl3ify"); - } + public static final String MOD_NAME_TOOLTIP = EnumChatFormatting.GOLD + "GTNH-NO-NERF"; + + public static final String NOT_DEPRECATED_TOOLTIP = EnumChatFormatting.GREEN + "Not Deprecated! Brought back by " + MOD_NAME_TOOLTIP + EnumChatFormatting.GREEN + "!"; @Mod.EventHandler public void onPreInit(FMLPreInitializationEvent event) { diff --git a/src/main/java/cn/taskeren/gtnn/mod/gt5u/util/NNItemList.java b/src/main/java/cn/taskeren/gtnn/NNItemList.java similarity index 63% rename from src/main/java/cn/taskeren/gtnn/mod/gt5u/util/NNItemList.java rename to src/main/java/cn/taskeren/gtnn/NNItemList.java index 207752d..8ffc491 100644 --- a/src/main/java/cn/taskeren/gtnn/mod/gt5u/util/NNItemList.java +++ b/src/main/java/cn/taskeren/gtnn/NNItemList.java @@ -1,15 +1,16 @@ -package cn.taskeren.gtnn.mod.gt5u.util; +package cn.taskeren.gtnn; import gregtech.api.interfaces.IItemContainer; import gregtech.api.util.*; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import java.util.Locale; -import static gregtech.api.enums.GT_Values.NI; -import static gregtech.api.enums.GT_Values.W; +import static gregtech.api.enums.GTValues.NI; +import static gregtech.api.enums.GTValues.W; public enum NNItemList implements IItemContainer { @@ -25,6 +26,8 @@ public enum NNItemList implements IItemContainer { Machine_UEV_Disassembler, Machine_UIV_Disassembler, Machine_UMV_Disassembler, + + Machine_LargeProcessingFactory, ; private ItemStack mStack; @@ -41,28 +44,28 @@ public IItemContainer set(Item aItem) { mHasNotBeenSet = false; if(aItem == null) return this; ItemStack aStack = new ItemStack(aItem, 1, 0); - mStack = GT_Utility.copyAmount(1, aStack); + mStack = GTUtility.copyAmount(1, aStack); return this; } @Override public IItemContainer set(ItemStack aStack) { mHasNotBeenSet = false; - mStack = GT_Utility.copyAmount(1, aStack); + mStack = GTUtility.copyAmount(1, aStack); return this; } @Override public Item getItem() { sanityCheck(); - if(GT_Utility.isStackInvalid(mStack)) return null; + if(GTUtility.isStackInvalid(mStack)) return null; return mStack.getItem(); } @Override public Block getBlock() { sanityCheck(); - return GT_Utility.getBlockFromItem(getItem()); + return GTUtility.getBlockFromItem(getItem()); } @Override @@ -78,48 +81,58 @@ public boolean isStackEqual(Object aStack) { @Override public boolean isStackEqual(Object aStack, boolean aWildcard, boolean aIgnoreNBT) { if(mDeprecated && !mWarned) { - new Exception(this + " is now deprecated").printStackTrace(GT_Log.err); + new Exception(this + " is now deprecated").printStackTrace(GTLog.err); // warn only once mWarned = true; } - if(!(aStack instanceof ItemStack stack) || GT_Utility.isStackInvalid(stack)) return false; - return GT_Utility.areUnificationsEqual((ItemStack) aStack, aWildcard ? getWildcard(1) : get(1), aIgnoreNBT); + if(!(aStack instanceof ItemStack stack) || GTUtility.isStackInvalid(stack)) return false; + return GTUtility.areUnificationsEqual(stack, aWildcard ? getWildcard(1) : get(1), aIgnoreNBT); } @Override public ItemStack get(long aAmount, Object... aReplacements) { sanityCheck(); - if(GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount((int) aAmount, aReplacements); - return GT_Utility.copyAmount((int) aAmount, GT_OreDictUnificator.get(mStack)); + if(GTUtility.isStackInvalid(mStack)) return GTUtility.copyAmount(aAmount, aReplacements); + return GTUtility.copyAmount((int) aAmount, GTOreDictUnificator.get(mStack)); } @Override public ItemStack getWildcard(long aAmount, Object... aReplacements) { sanityCheck(); - if(GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount((int) aAmount, aReplacements); - return GT_Utility.copyAmountAndMetaData((int) aAmount, W, GT_OreDictUnificator.get(mStack)); + if(GTUtility.isStackInvalid(mStack)) return GTUtility.copyAmount(aAmount, aReplacements); + return GTUtility.copyAmountAndMetaData((int) aAmount, W, GTOreDictUnificator.get(mStack)); } @Override public ItemStack getUndamaged(long aAmount, Object... aReplacements) { sanityCheck(); - if(GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount((int) aAmount, aReplacements); - return GT_Utility.copyAmountAndMetaData((int) aAmount, 0, GT_OreDictUnificator.get(mStack)); + if(GTUtility.isStackInvalid(mStack)) return GTUtility.copyAmount(aAmount, aReplacements); + return GTUtility.copyAmountAndMetaData((int) aAmount, 0, GTOreDictUnificator.get(mStack)); } @Override public ItemStack getAlmostBroken(long aAmount, Object... aReplacements) { sanityCheck(); - if(GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount((int) aAmount, aReplacements); - return GT_Utility.copyAmountAndMetaData((int) aAmount, mStack.getMaxDamage() - 1, GT_OreDictUnificator.get(mStack)); + if(GTUtility.isStackInvalid(mStack)) return GTUtility.copyAmount(aAmount, aReplacements); + return GTUtility.copyAmountAndMetaData((int) aAmount, mStack.getMaxDamage() - 1, GTOreDictUnificator.get(mStack)); } @Override public ItemStack getWithName(long aAmount, String aDisplayName, Object... aReplacements) { ItemStack rStack = get(1, aReplacements); - if(GT_Utility.isStackInvalid(rStack)) return NI; + if(GTUtility.isStackInvalid(rStack)) return NI; // CamelCase alphanumeric words from aDisplayName + String tCamelCasedDisplayNameBuilder = getCamelCaseDisplayName(aDisplayName); + + // Construct a translation key from UnlocalizedName and CamelCased DisplayName + final String tKey = rStack.getUnlocalizedName() + ".with." + tCamelCasedDisplayNameBuilder + ".name"; + + rStack.setStackDisplayName(GTLanguageManager.addStringLocalization(tKey, aDisplayName)); + return GTUtility.copyAmount((int) aAmount, rStack); + } + + private static @NotNull String getCamelCaseDisplayName(String aDisplayName) { StringBuilder tCamelCasedDisplayNameBuilder = new StringBuilder(); final String[] tDisplayNameWords = aDisplayName.split("\\W"); for(String tWord : tDisplayNameWords) { @@ -130,40 +143,35 @@ public ItemStack getWithName(long aAmount, String aDisplayName, Object... aRepla // CamelCased DisplayName is empty, so use hash of aDisplayName tCamelCasedDisplayNameBuilder.append(((Long) (long) aDisplayName.hashCode())); } - - // Construct a translation key from UnlocalizedName and CamelCased DisplayName - final String tKey = rStack.getUnlocalizedName() + ".with." + tCamelCasedDisplayNameBuilder + ".name"; - - rStack.setStackDisplayName(GT_LanguageManager.addStringLocalization(tKey, aDisplayName)); - return GT_Utility.copyAmount((int) aAmount, rStack); + return tCamelCasedDisplayNameBuilder.toString(); } @Override public ItemStack getWithCharge(long aAmount, int aEnergy, Object... aReplacements) { ItemStack rStack = get(1, aReplacements); - if(GT_Utility.isStackInvalid(rStack)) return null; - GT_ModHandler.chargeElectricItem(rStack, aEnergy, Integer.MAX_VALUE, true, false); - return GT_Utility.copyAmount((int) aAmount, rStack); + if(GTUtility.isStackInvalid(rStack)) return null; + GTModHandler.chargeElectricItem(rStack, aEnergy, Integer.MAX_VALUE, true, false); + return GTUtility.copyAmount((int) aAmount, rStack); } @Override public ItemStack getWithDamage(long aAmount, long aMetaValue, Object... aReplacements) { sanityCheck(); - if(GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount((int) aAmount, aReplacements); - return GT_Utility.copyAmountAndMetaData((int) aAmount, aMetaValue, GT_OreDictUnificator.get(mStack)); + if(GTUtility.isStackInvalid(mStack)) return GTUtility.copyAmount(aAmount, aReplacements); + return GTUtility.copyAmountAndMetaData(aAmount, aMetaValue, GTOreDictUnificator.get(mStack)); } @Override public IItemContainer registerOre(Object... aOreNames) { sanityCheck(); - for(Object tOreName : aOreNames) GT_OreDictUnificator.registerOre(tOreName, get(1)); + for(Object tOreName : aOreNames) GTOreDictUnificator.registerOre(tOreName, get(1)); return this; } @Override public IItemContainer registerWildcardAsOre(Object... aOreNames) { sanityCheck(); - for(Object tOreName : aOreNames) GT_OreDictUnificator.registerOre(tOreName, getWildcard(1)); + for(Object tOreName : aOreNames) GTOreDictUnificator.registerOre(tOreName, getWildcard(1)); return this; } @@ -179,7 +187,7 @@ private void sanityCheck() { if(mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!"); if(mDeprecated && !mWarned) { - new Exception(this + " is now deprecated").printStackTrace(GT_Log.err); + new Exception(this + " is now deprecated").printStackTrace(GTLog.err); // warn only once mWarned = true; } diff --git a/src/main/java/cn/taskeren/gtnn/common/CommonProxy.java b/src/main/java/cn/taskeren/gtnn/common/CommonProxy.java index 63f64a9..4d85205 100644 --- a/src/main/java/cn/taskeren/gtnn/common/CommonProxy.java +++ b/src/main/java/cn/taskeren/gtnn/common/CommonProxy.java @@ -1,12 +1,12 @@ package cn.taskeren.gtnn.common; -import cn.taskeren.gtnn.mod.gt5u.recipe.ReverseShapedRecipe; -import cn.taskeren.gtnn.mod.gt5u.recipe.ReverseShapelessRecipe; -import cn.taskeren.gtnn.mod.gt5u.util.DisassemblerRecipes; +import cn.taskeren.gtnn.GTNN; +import cn.taskeren.gtnn.machine.recipe.DisassemblerRecipes; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLLoadCompleteEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import gregtech.api.GregTechAPI; public class CommonProxy { @@ -17,11 +17,32 @@ public void onInit(FMLInitializationEvent event) { } public void onPostInit(FMLPostInitializationEvent event) { - ReverseShapedRecipe.runReverseRecipes(); - ReverseShapelessRecipe.runReverseRecipes(); + MachineRegistry.registerMachines(); + + ReversedRecipeRegistry.registerRecipesToDisassemblers(); } public void onLoadComplete(FMLLoadCompleteEvent event) { DisassemblerRecipes.loadAssemblerRecipes(); + + logAvailableMachineIds(); + } + + private static void logAvailableMachineIds() { + GTNN.logger.info("Available MTE IDs:"); + + var startId = 0; + for (int id = 0; id < GregTechAPI.METATILEENTITIES.length; id++) { + if(GregTechAPI.METATILEENTITIES[id] != null) { + if(id - 1 == startId) { + GTNN.logger.info("{}", id); + } else { + GTNN.logger.info("{}-{}", startId, id); + startId = -1; + } + } else if(startId == -1) { + startId = id; + } + } } } diff --git a/src/main/java/cn/taskeren/gtnn/common/MachineRegistry.java b/src/main/java/cn/taskeren/gtnn/common/MachineRegistry.java new file mode 100644 index 0000000..9b44a5b --- /dev/null +++ b/src/main/java/cn/taskeren/gtnn/common/MachineRegistry.java @@ -0,0 +1,27 @@ +package cn.taskeren.gtnn.common; + +import cn.taskeren.gtnn.NNItemList; +import cn.taskeren.gtnn.common.config.Config; +import cn.taskeren.gtnn.machine.MTELargeProcessingFactory; +import gregtech.api.util.GTModHandler; +import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; + +public class MachineRegistry { + + public static void registerMachines() { + NNItemList.Machine_LargeProcessingFactory.set( + new MTELargeProcessingFactory( + Config.getMachineId("large-processing-factory", 10680, true), + "industrialmultimachine.controller.tier.single", + "Large Processing Factory" + ).getStackForm(1) + ); + + GTModHandler.addShapelessCraftingRecipe(NNItemList.Machine_LargeProcessingFactory.get(1), + GTModHandler.RecipeBits.DISMANTLEABLE | GTModHandler.RecipeBits.BUFFERED + | GTModHandler.RecipeBits.NOT_REMOVABLE + | GTModHandler.RecipeBits.REVERSIBLE, + new Object[]{GregtechItemList.Industrial_MultiMachine.get(1)}); + } + +} diff --git a/src/main/java/cn/taskeren/gtnn/common/ReversedRecipeRegistry.java b/src/main/java/cn/taskeren/gtnn/common/ReversedRecipeRegistry.java new file mode 100644 index 0000000..9aa8d51 --- /dev/null +++ b/src/main/java/cn/taskeren/gtnn/common/ReversedRecipeRegistry.java @@ -0,0 +1,29 @@ +package cn.taskeren.gtnn.common; + +import cn.taskeren.gtnn.machine.recipe.DisassemblerRecipes; +import gregtech.api.util.GTRecipe; +import gregtech.api.util.GTUtility; +import net.minecraft.item.ItemStack; + +import java.util.ArrayList; +import java.util.List; + +public class ReversedRecipeRegistry { + + private static final List REVERSED_RECIPES = new ArrayList<>(1024); + + public static void registerShapedRecipe(ItemStack output, Object[] recipe) { + var reversed = GTUtility.reverseShapedRecipe(output, recipe); + reversed.ifPresent(REVERSED_RECIPES::add); + } + + public static void registerShapelessRecipe(ItemStack output, Object[] recipe) { + var reversed = GTUtility.reverseShapelessRecipe(output, recipe); + reversed.ifPresent(REVERSED_RECIPES::add); + } + + public static void registerRecipesToDisassemblers() { + REVERSED_RECIPES.forEach(DisassemblerRecipes::registerReversedCraftingRecipe); + } + +} diff --git a/src/main/java/cn/taskeren/gtnn/common/config/Config.java b/src/main/java/cn/taskeren/gtnn/common/config/Config.java index 3ada992..518e8b7 100644 --- a/src/main/java/cn/taskeren/gtnn/common/config/Config.java +++ b/src/main/java/cn/taskeren/gtnn/common/config/Config.java @@ -23,4 +23,12 @@ public class Config { CONF.save(); } + public static int getMachineId(String machineId, int defaultId, boolean saveAfterAccess) { + int value = CONF.getInt("machine-id-"+machineId, "machine", defaultId, -1, Short.MAX_VALUE, "The MetaTileEntity Id for " + machineId + ". Don't change unless there is a id conflict!"); + if(saveAfterAccess) { + CONF.save(); + } + return value; + } + } diff --git a/src/main/java/cn/taskeren/gtnn/mod/gt5u/tile/TileEntityDisassembler.java b/src/main/java/cn/taskeren/gtnn/machine/MTEDisassembler.java similarity index 74% rename from src/main/java/cn/taskeren/gtnn/mod/gt5u/tile/TileEntityDisassembler.java rename to src/main/java/cn/taskeren/gtnn/machine/MTEDisassembler.java index 6df0f04..894a8a5 100644 --- a/src/main/java/cn/taskeren/gtnn/mod/gt5u/tile/TileEntityDisassembler.java +++ b/src/main/java/cn/taskeren/gtnn/machine/MTEDisassembler.java @@ -1,19 +1,19 @@ -package cn.taskeren.gtnn.mod.gt5u.tile; +package cn.taskeren.gtnn.machine; import cn.taskeren.gtnn.GTNN; -import cn.taskeren.gtnn.mod.gt5u.util.DisassemblerRecipes; +import cn.taskeren.gtnn.machine.recipe.DisassemblerRecipes; import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine_GT_Recipe; +import gregtech.api.metatileentity.implementations.MTEBasicMachineWithRecipe; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import java.util.ArrayList; import java.util.List; -public class TileEntityDisassembler extends GT_MetaTileEntity_BasicMachine_GT_Recipe { +public class MTEDisassembler extends MTEBasicMachineWithRecipe { - public TileEntityDisassembler(int aID, String aName, String aNameRegional, int aTier) { + public MTEDisassembler(int aID, String aName, String aNameRegional, int aTier) { super( aID, aName, @@ -34,7 +34,7 @@ public TileEntityDisassembler(int aID, String aName, String aNameRegional, int a @Override public void addAdditionalTooltipInformation(ItemStack stack, List tooltip) { - tooltip.add("§cPresented by GTNH-NO-NERF!"); + tooltip.add(GTNN.NOT_DEPRECATED_TOOLTIP); } @Override diff --git a/src/main/java/cn/taskeren/gtnn/machine/MTELargeProcessingFactory.java b/src/main/java/cn/taskeren/gtnn/machine/MTELargeProcessingFactory.java new file mode 100644 index 0000000..15ee35e --- /dev/null +++ b/src/main/java/cn/taskeren/gtnn/machine/MTELargeProcessingFactory.java @@ -0,0 +1,508 @@ +package cn.taskeren.gtnn.machine; + +import cn.taskeren.gtnn.GTNN; +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import gregtech.api.enums.TAE; +import gregtech.api.gui.modularui.GTUITextures; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.logic.ProcessingLogic; +import gregtech.api.metatileentity.implementations.MTEHatchInput; +import gregtech.api.metatileentity.implementations.MTEHatchInputBus; +import gregtech.api.metatileentity.implementations.MTEHatchMultiInput; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.check.CheckRecipeResultRegistry; +import gregtech.api.util.GTLanguageManager; +import gregtech.api.util.GTRecipe; +import gregtech.api.util.GTUtility; +import gregtech.api.util.MultiblockTooltipBuilder; +import gregtech.common.tileentities.machines.IDualInputHatch; +import gregtech.common.tileentities.machines.IDualInputInventory; +import gregtech.common.tileentities.machines.MTEHatchCraftingInputME; +import gregtech.common.tileentities.machines.MTEHatchInputME; +import gtPlusPlus.core.block.ModBlocks; +import gtPlusPlus.core.lib.GTPPCore; +import gtPlusPlus.core.util.minecraft.PlayerUtils; +import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.MTEHatchSolidifier; +import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GTPPMultiBlockBase; +import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.stream.Stream; + +import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.enums.HatchElement.*; +import static gregtech.api.util.GTStructureUtility.buildHatchAdder; +import static gregtech.api.util.GTUtility.filterValidMTEs; + +/** + * original source + */ +public class MTELargeProcessingFactory extends GTPPMultiBlockBase implements ISurvivalConstructable { + + private static final int MACHINE_MODE_METAL = 0; + private static final int MACHINE_MODE_FLUID = 1; + private static final int MACHINE_MODE_MISC = 2; + + private static final int MODE_COMPRESSOR = 0; + private static final int MODE_LATHE = 1; + private static final int MODE_MAGNETIC = 2; + private static final int MODE_FERMENTER = 3; + private static final int MODE_FLUID_EXTRACT = 4; + private static final int MODE_EXTRACTOR = 5; + private static final int MODE_LASER = 6; + private static final int MODE_AUTOCLAVE = 7; + private static final int MODE_FLUID_SOLIDIFY = 8; + + private static final int[][] MODE_MAP = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; + public static final String[] TOOLTIP_MAPS = new String[9]; + + private static IStructureDefinition STRUCTURE_DEFINITION = null; + + private int mCasing; + + static { + for (int id = 0; id < 9; id++) { + RecipeMap recipeMap = getRecipeMap(id); + if (recipeMap != null) { + String aNEI = GTLanguageManager.getTranslation(getRecipeMap(id).unlocalizedName); + TOOLTIP_MAPS[id] = aNEI != null ? aNEI : "BAD NEI NAME (Report to Github)"; + } + } + } + + public MTELargeProcessingFactory(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public MTELargeProcessingFactory(String aName) { + super(aName); + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new MTELargeProcessingFactory(this.mName); + } + + @Override + public String getMachineType() { + return "Nine in One (Revived)"; + } + + @Override + protected MultiblockTooltipBuilder createTooltip() { + String[] aBuiltStrings = new String[3]; + aBuiltStrings[0] = TOOLTIP_MAPS[0] + ", " + TOOLTIP_MAPS[1] + ", " + TOOLTIP_MAPS[2]; + aBuiltStrings[1] = TOOLTIP_MAPS[3] + ", " + TOOLTIP_MAPS[4] + ", " + TOOLTIP_MAPS[5]; + aBuiltStrings[2] = TOOLTIP_MAPS[6] + ", " + TOOLTIP_MAPS[7] + ", " + TOOLTIP_MAPS[8]; + + MultiblockTooltipBuilder tt = new MultiblockTooltipBuilder(); + tt.addMachineType(getMachineType()) + .addInfo("Controller Block for the Industrial Multi-Machine") + .addInfo(GTNN.NOT_DEPRECATED_TOOLTIP) + .addInfo("250% faster than using single block machines of the same voltage") + .addInfo("Only uses 80% of the EU/t normally required") + .addInfo("Processes two items per voltage tier") + .addInfo("Machine Type: Metal - " + EnumChatFormatting.YELLOW + aBuiltStrings[0] + EnumChatFormatting.RESET) + .addInfo("Machine Type: Fluid - " + EnumChatFormatting.YELLOW + aBuiltStrings[1] + EnumChatFormatting.RESET) + .addInfo("Machine Type: Misc - " + EnumChatFormatting.YELLOW + aBuiltStrings[2] + EnumChatFormatting.RESET) + .addInfo("Read Multi-Machine Manual for extra information") + .addInfo( + EnumChatFormatting.AQUA + "You can use Solidifier Hatch to solidify multiple liquids." + + EnumChatFormatting.RESET) + .addPollutionAmount(getPollutionPerSecond(null)) + .addSeparator() + .beginStructureBlock(3, 3, 3, true) + .addController("Front Center") + .addCasingInfoMin("Multi-Use Casings", 6, false) + .addInputBus("Any Casing", 1) + .addOutputBus("Any Casing", 1) + .addInputHatch("Any Casing", 1) + .addOutputHatch("Any Casing", 1) + .addEnergyHatch("Any Casing", 1) + .addMaintenanceHatch("Any Casing", 1) + .addMufflerHatch("Any Casing", 1) + .toolTipFinisher(GTPPCore.GT_Tooltip_Builder.get()); + return tt; + } + + @Override + public IStructureDefinition getStructureDefinition() { + if (STRUCTURE_DEFINITION == null) { + STRUCTURE_DEFINITION = StructureDefinition.builder() + .addShape( + mName, + transpose( + new String[][]{{"CCC", "CCC", "CCC"}, {"C~C", "C-C", "CCC"}, {"CCC", "CCC", "CCC"},})) + .addElement( + 'C', + buildHatchAdder(MTELargeProcessingFactory.class) + .atLeast(InputBus, OutputBus, Maintenance, Energy, Muffler, InputHatch, OutputHatch) + .casingIndex(getTextureIndex()) + .dot(1) + .buildAndChain(onElementPass(x -> ++x.mCasing, ofBlock(ModBlocks.blockCasings3Misc, 2)))) + .build(); + } + return STRUCTURE_DEFINITION; + } + + @Override + public void construct(ItemStack stackSize, boolean hintsOnly) { + buildPiece(mName, stackSize, hintsOnly, 1, 1, 0); + } + + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + if (mMachine) return -1; + return survivialBuildPiece(mName, stackSize, 1, 1, 0, elementBudget, env, false, true); + } + + @Override + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mCasing = 0; + return checkPiece(mName, 1, 1, 0) && mCasing >= 6 && checkHatch(); + } + + @Override + protected IIconContainer getActiveOverlay() { + return TexturesGtBlock.oMCAIndustrialMultiMachineActive; + } + + @Override + protected IIconContainer getInactiveOverlay() { + return TexturesGtBlock.oMCAIndustrialMultiMachine; + } + + @Override + protected int getCasingTextureId() { + return getTextureIndex(); + } + + @Override + public int getMaxParallelRecipes() { + return (2 * GTUtility.getTier(this.getMaxInputVoltage())); + } + + @Override + public int getMaxEfficiency(final ItemStack aStack) { + return 10000; + } + + @Override + public int getPollutionPerSecond(final ItemStack aStack) { + // removed pollution by gtnn + return 0; + } + + private ItemStack getCircuit(ItemStack[] t) { + for (ItemStack j : t) { + if (j.getItem() == GTUtility.getIntegratedCircuit(0).getItem()) { + if (j.getItemDamage() >= 20 && j.getItemDamage() <= 22) { + return j; + } + } + } + return null; + } + + private int getCircuitID(ItemStack circuit) { + int H = circuit.getItemDamage(); + int T = (H == 20 ? 0 : (H == 21 ? 1 : (H == 22 ? 2 : -1))); + return MODE_MAP[machineMode][T]; + } + + @Nonnull + @Override + public Collection> getAvailableRecipeMaps() { + return Arrays.asList( + RecipeMaps.compressorRecipes, + RecipeMaps.latheRecipes, + RecipeMaps.polarizerRecipes, + RecipeMaps.fermentingRecipes, + RecipeMaps.fluidExtractionRecipes, + RecipeMaps.extractorRecipes, + RecipeMaps.laserEngraverRecipes, + RecipeMaps.autoclaveRecipes, + RecipeMaps.fluidSolidifierRecipes); + } + + @Override + public int getRecipeCatalystPriority() { + return -10; + } + + private static RecipeMap getRecipeMap(int aMode) { + return switch (aMode) { + case MODE_COMPRESSOR -> RecipeMaps.compressorRecipes; + case MODE_LATHE -> RecipeMaps.latheRecipes; + case MODE_MAGNETIC -> RecipeMaps.polarizerRecipes; + case MODE_FERMENTER -> RecipeMaps.fermentingRecipes; + case MODE_FLUID_EXTRACT -> RecipeMaps.fluidExtractionRecipes; + case MODE_EXTRACTOR -> RecipeMaps.extractorRecipes; + case MODE_LASER -> RecipeMaps.laserEngraverRecipes; + case MODE_AUTOCLAVE -> RecipeMaps.autoclaveRecipes; + case MODE_FLUID_SOLIDIFY -> RecipeMaps.fluidSolidifierRecipes; + default -> throw new IllegalArgumentException("Unknown Mode " + aMode); + }; + } + + private int getTextureIndex() { + return TAE.getIndexFromPage(2, 2); + } + + @Override + protected ProcessingLogic createProcessingLogic() { + return new ProcessingLogic() { + + private ItemStack lastCircuit = null; + private int lastMode = -1; + + @Nonnull + @Override + protected Stream findRecipeMatches(@Nullable RecipeMap map) { + ItemStack circuit = getCircuit(inputItems); + if (circuit == null) { + return Stream.empty(); + } + if (!GTUtility.areStacksEqual(circuit, lastCircuit)) { + lastRecipe = null; + lastCircuit = circuit; + } + if (machineMode != lastMode) { + lastRecipe = null; + lastMode = machineMode; + } + RecipeMap foundMap = getRecipeMap(getCircuitID(circuit)); + if (foundMap == null) { + return Stream.empty(); + } + return super.findRecipeMatches(foundMap); + } + }.setSpeedBonus(1F / 3.5F) + .setEuModifier(0.8F) + .setMaxParallelSupplier(this::getMaxParallelRecipes); + } + + @Override + public String getMachineModeName() { + return StatCollector.translateToLocal("GT5U.GTPP_MULTI_INDUSTRIAL_MULTI_MACHINE.mode." + machineMode); + } + + @Override + public String[] getInfoData() { + String[] data = super.getInfoData(); + ArrayList mInfo = new ArrayList<>(Arrays.asList(data)); + String mode; + switch (machineMode) { + case MACHINE_MODE_METAL -> mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.metal"); + case MACHINE_MODE_FLUID -> mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.fluid"); + default -> mode = StatCollector.translateToLocal("GTPP.multiblock.multimachine.misc"); + } + mInfo.add(mode); + return mInfo.toArray(new String[0]); + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + if (aNBT.hasKey("mInternalMode")) { + machineMode = aNBT.getInteger("mInternalMode"); + } + super.loadNBTData(aNBT); + } + + @Override + public boolean isInputSeparationEnabled() { + return true; + } + + @Nonnull + @Override + protected CheckRecipeResult doCheckRecipe() { + + if (machineMode != MACHINE_MODE_MISC || !isInputSeparationEnabled()) { + return super.doCheckRecipe(); + } else { + CheckRecipeResult result = CheckRecipeResultRegistry.NO_RECIPE; + + // check crafting input hatches first + if (supportsCraftingMEBuffer()) { + for (IDualInputHatch dualInputHatch : mDualInputHatches) { + for (var it = dualInputHatch.inventories(); it.hasNext(); ) { + IDualInputInventory slot = it.next(); + processingLogic.setInputItems(slot.getItemInputs()); + processingLogic.setInputFluids(slot.getFluidInputs()); + CheckRecipeResult foundResult = processingLogic.process(); + if (foundResult.wasSuccessful()) { + return foundResult; + } + if (foundResult != CheckRecipeResultRegistry.NO_RECIPE) { + // Recipe failed in interesting way, so remember that and continue searching + result = foundResult; + } + } + } + } + + // Logic for GT_MetaTileEntity_Hatch_Solidifier + for (MTEHatchInput solidifierHatch : mInputHatches) { + if (solidifierHatch instanceof MTEHatchSolidifier) { + ItemStack mold = ((MTEHatchSolidifier) solidifierHatch).getMold(); + FluidStack fluid = solidifierHatch.getFluid(); + + if (mold != null && fluid != null) { + List inputItems = new ArrayList<>(); + inputItems.add(mold); + inputItems.add(GTUtility.getIntegratedCircuit(22)); + + processingLogic.setInputItems(inputItems.toArray(new ItemStack[0])); + processingLogic.setInputFluids(fluid); + + CheckRecipeResult foundResult = processingLogic.process(); + if (foundResult.wasSuccessful()) { + return foundResult; + } + if (foundResult != CheckRecipeResultRegistry.NO_RECIPE) { + // Recipe failed in interesting way, so remember that and continue searching + result = foundResult; + } + } + } + } + processingLogic.clear(); + processingLogic.setInputFluids(getStoredFluids()); + // Default logic + for (MTEHatchInputBus bus : mInputBusses) { + if (bus instanceof MTEHatchCraftingInputME) { + continue; + } + List inputItems = new ArrayList<>(); + for (int i = bus.getSizeInventory() - 1; i >= 0; i--) { + ItemStack stored = bus.getStackInSlot(i); + if (stored != null) { + inputItems.add(stored); + } + } + if (canUseControllerSlotForRecipe() && getControllerSlot() != null) { + inputItems.add(getControllerSlot()); + } + processingLogic.setInputItems(inputItems.toArray(new ItemStack[0])); + CheckRecipeResult foundResult = processingLogic.process(); + if (foundResult.wasSuccessful()) { + return foundResult; + } + if (foundResult != CheckRecipeResultRegistry.NO_RECIPE) { + // Recipe failed in interesting way, so remember that and continue searching + result = foundResult; + } + } + + return result; + } + } + + @Override + public ArrayList getStoredFluids() { + ArrayList rList = new ArrayList<>(); + for (MTEHatchInput tHatch : filterValidMTEs(mInputHatches)) { + if (tHatch instanceof MTEHatchSolidifier) { + continue; + } + + setHatchRecipeMap(tHatch); + if (tHatch instanceof MTEHatchMultiInput) { + for (FluidStack tFluid : ((MTEHatchMultiInput) tHatch).getStoredFluid()) { + if (tFluid != null) { + rList.add(tFluid); + } + } + } else if (tHatch instanceof MTEHatchInputME) { + if (tHatch.isValid()) { + for (FluidStack fluidStack : ((MTEHatchInputME) tHatch).getStoredFluids()) { + if (fluidStack == null) continue; + rList.add(fluidStack); + } + } + } else { + if (tHatch.getFillableStack() != null) { + rList.add(tHatch.getFillableStack()); + } + } + } + + return rList; + } + + @Override + public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, + int z) { + super.getWailaNBTData(player, tile, tag, world, x, y, z); + tag.setInteger("mode", machineMode); + } + + @Override + public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + super.getWailaBody(itemStack, currentTip, accessor, config); + final NBTTagCompound tag = accessor.getNBTData(); + if (tag.hasKey("mode")) { + currentTip.add( + StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " " + + EnumChatFormatting.WHITE + + StatCollector + .translateToLocal("GT5U.GTPP_MULTI_INDUSTRIAL_MULTI_MACHINE.mode." + tag.getInteger("mode")) + + EnumChatFormatting.RESET); + } + } + + @Override + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public void onModeChangeByScrewdriver(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { + setMachineMode(nextMachineMode()); + PlayerUtils.messagePlayer( + aPlayer, + String.format(StatCollector.translateToLocal("GT5U.MULTI_MACHINE_CHANGE"), getMachineModeName())); + } + + @Override + public int nextMachineMode() { + mLastRecipe = null; + if (machineMode == MACHINE_MODE_METAL) return MACHINE_MODE_FLUID; + else if (machineMode == MACHINE_MODE_FLUID) return MACHINE_MODE_MISC; + else return MACHINE_MODE_METAL; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.clear(); + machineModeIcons.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_LPF_METAL); + machineModeIcons.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_LPF_FLUID); + machineModeIcons.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_DEFAULT); + } +} diff --git a/src/main/java/cn/taskeren/gtnn/mod/gt5u/util/DisassemblerRecipeHelper.java b/src/main/java/cn/taskeren/gtnn/machine/recipe/DisassemblerRecipeHelper.java similarity index 60% rename from src/main/java/cn/taskeren/gtnn/mod/gt5u/util/DisassemblerRecipeHelper.java rename to src/main/java/cn/taskeren/gtnn/machine/recipe/DisassemblerRecipeHelper.java index 16c14dc..31e2114 100644 --- a/src/main/java/cn/taskeren/gtnn/mod/gt5u/util/DisassemblerRecipeHelper.java +++ b/src/main/java/cn/taskeren/gtnn/machine/recipe/DisassemblerRecipeHelper.java @@ -1,12 +1,12 @@ -package cn.taskeren.gtnn.mod.gt5u.util; +package cn.taskeren.gtnn.machine.recipe; import cn.taskeren.gtnn.util.KtCandy; import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Utility; +import gregtech.api.util.GTOreDictUnificator; +import gregtech.api.util.GTRecipe; +import gregtech.api.util.GTUtility; import gtPlusPlus.core.util.data.ArrayUtils; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -30,7 +30,7 @@ public class DisassemblerRecipeHelper { * Array<(toBeReplaced: ItemStack, replacement: ItemStack)> */ private static final ItemStack[][] ALWAYS_REPLACE = { - {new ItemStack(Blocks.trapped_chest, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(Blocks.chest, 1, OreDictionary.WILDCARD_VALUE)} + {new ItemStack(Blocks.trapped_chest, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(Blocks.chest, 1, OreDictionary.WILDCARD_VALUE)} }; /** @@ -39,12 +39,12 @@ public class DisassemblerRecipeHelper { * Array<(oreDictName: String, replacement: ItemStack)> */ private static final Object[][] ORE_DICT_REPLACE = { - {"plankWood", new ItemStack(Blocks.planks)}, - {"stoneCobble", new ItemStack(Blocks.cobblestone)}, - {"gemDiamond", new ItemStack(Items.diamond)}, - {"logWood", new ItemStack(Blocks.log)}, - {"stickWood", new ItemStack(Items.stick)}, - {"treeSapling", new ItemStack(Blocks.sapling)} + {"plankWood", new ItemStack(Blocks.planks)}, + {"stoneCobble", new ItemStack(Blocks.cobblestone)}, + {"gemDiamond", new ItemStack(Items.diamond)}, + {"logWood", new ItemStack(Blocks.log)}, + {"stickWood", new ItemStack(Items.stick)}, + {"treeSapling", new ItemStack(Blocks.sapling)} }; /** @@ -84,10 +84,10 @@ public class DisassemblerRecipeHelper { * @return the processed output itemstacks. */ public static ItemStack[] handleRecipeTransformation( - @NotNull - ItemStack[] rawOutputs, - @Nullable - Set inputItemsOfRecipes // "inputStacks" in the legacy codes + @NotNull + ItemStack[] rawOutputs, + @Nullable + Set inputItemsOfRecipes // "inputStacks" in the legacy codes ) { // the final result! ItemStack[] retOutputs = new ItemStack[rawOutputs.length]; @@ -95,14 +95,14 @@ public static ItemStack[] handleRecipeTransformation( // walk through the firstOutputs iterateRecipe: // <--- used to jump out the inner loop - for(int idx = 0; idx < rawOutputs.length; idx++) { + for (int idx = 0; idx < rawOutputs.length; idx++) { // region handleRecipeTransformationInternal // get the stack and data for the item iterated. var itemInSlotIdx = rawOutputs[idx]; - var itemDataInSlotIdx = GT_OreDictUnificator.getItemData(itemInSlotIdx); + var itemDataInSlotIdx = GTOreDictUnificator.getItemData(itemInSlotIdx); // if nothing can be transformed, just skip transformation for this item. - if(itemDataInSlotIdx == null || itemDataInSlotIdx.mMaterial == null || itemDataInSlotIdx.mMaterial.mMaterial == null || itemDataInSlotIdx.mPrefix == null) { + if (itemDataInSlotIdx == null || itemDataInSlotIdx.mMaterial == null || itemDataInSlotIdx.mMaterial.mMaterial == null || itemDataInSlotIdx.mPrefix == null) { retOutputs[idx] = itemInSlotIdx; continue; } @@ -116,19 +116,19 @@ public static ItemStack[] handleRecipeTransformation( // region handleInputStacks // if there are some other assembler recipes, // we should compare the items in the SAME slot, and get the cheaper one. - if(inputItemsOfRecipes != null) { - for(ItemStack[] inputsInOtherRecipes : inputItemsOfRecipes) { - var dataAgainst = GT_OreDictUnificator.getItemData(inputsInOtherRecipes[idx]); - if(!(dataAgainst == null || dataAgainst.mMaterial == null || dataAgainst.mMaterial.mMaterial == null || dataAgainst.mPrefix != itemDataInSlotIdx.mPrefix)) { + if (inputItemsOfRecipes != null) { + for (ItemStack[] inputsInOtherRecipes : inputItemsOfRecipes) { + var dataAgainst = GTOreDictUnificator.getItemData(inputsInOtherRecipes[idx]); + if (!(dataAgainst == null || dataAgainst.mMaterial == null || dataAgainst.mMaterial.mMaterial == null || dataAgainst.mPrefix != itemDataInSlotIdx.mPrefix)) { // region handleDifferentMaterialsOnRecipes // replaces the cheaper item in the same slot. // (e.g.: Aluminum -> Iron) var cheaper = getCheaperMaterialsBetweenTwo(materialMaterialOfFirst, dataAgainst.mMaterial.mMaterial); - if(cheaper != null) { - retOutputs[idx] = GT_OreDictUnificator.get( - OrePrefixes.valueOf(itemDataInSlotIdx.mPrefix.name()), - cheaper, - itemInSlotIdx.stackSize + if (cheaper != null) { + retOutputs[idx] = GTOreDictUnificator.get( + OrePrefixes.valueOf(itemDataInSlotIdx.mPrefix.name()), + cheaper, + itemInSlotIdx.stackSize ); continue iterateRecipe; // <--- done with this slot, no more downgrading. } @@ -137,11 +137,11 @@ public static ItemStack[] handleRecipeTransformation( // region handleAnyMaterials // get the more basic item in the slot. var nonAny = getNonAnyMaterials(materialMaterialOfFirst); - if(nonAny != null) { - retOutputs[idx] = GT_OreDictUnificator.get( - OrePrefixes.valueOf(itemDataInSlotIdx.mPrefix.name()), - nonAny, - itemInSlotIdx.stackSize + if (nonAny != null) { + retOutputs[idx] = GTOreDictUnificator.get( + OrePrefixes.valueOf(itemDataInSlotIdx.mPrefix.name()), + nonAny, + itemInSlotIdx.stackSize ); continue iterateRecipe; // <--- done with this slot, no more downgrading. } @@ -154,11 +154,11 @@ public static ItemStack[] handleRecipeTransformation( // region handleBetterMaterialsVersions // get the unprocessed item. (e.g.: AnnealedCopper -> Copper, IronMagnetic -> Iron) var unprocessed = getUnprocessedMaterials(materialMaterialOfFirst); - if(unprocessed != null) { - retOutputs[idx] = GT_OreDictUnificator.get( - OrePrefixes.valueOf(itemDataInSlotIdx.mPrefix.name()), - unprocessed, - itemInSlotIdx.stackSize + if (unprocessed != null) { + retOutputs[idx] = GTOreDictUnificator.get( + OrePrefixes.valueOf(itemDataInSlotIdx.mPrefix.name()), + unprocessed, + itemInSlotIdx.stackSize ); continue; } @@ -166,9 +166,9 @@ public static ItemStack[] handleRecipeTransformation( // region handleCircuits // if the item is CIRCUIT, replace with the cheapest (most downgrade) circuit. - if(itemDataInSlotIdx.mPrefix == OrePrefixes.circuit) { + if (itemDataInSlotIdx.mPrefix == OrePrefixes.circuit) { var circuit = getCheapestCircuit(materialMaterialOfFirst); - if(circuit != null) { + if (circuit != null) { circuit.stackSize = itemInSlotIdx.stackSize; retOutputs[idx] = circuit; } @@ -183,20 +183,20 @@ public static ItemStack[] handleRecipeTransformation( // region addOthersAndHandleAlwaysReplace // walk through again - for(int i = 0; i < rawOutputs.length; i++) { + for (int i = 0; i < rawOutputs.length; i++) { // add items if did not be downgraded and replaced - if(retOutputs[i] == null) { + if (retOutputs[i] == null) { retOutputs[i] = rawOutputs[i]; } // select smaller amount - if(GT_Utility.areStacksEqual(retOutputs[i], rawOutputs[i])) { + if (GTUtility.areStacksEqual(retOutputs[i], rawOutputs[i])) { retOutputs[i].stackSize = Math.min(retOutputs[i].stackSize, rawOutputs[i].stackSize); } // process ALWAYS_REPLACE - for(var pair : ALWAYS_REPLACE) { - if(GT_Utility.areStacksEqual(retOutputs[i], pair[0], true)) { + for (var pair : ALWAYS_REPLACE) { + if (GTUtility.areStacksEqual(retOutputs[i], pair[0], true)) { retOutputs[i] = pair[1].copy(); break; // <--- break the ALWAYS_REPLACE for-each loop } @@ -224,23 +224,23 @@ public static ItemStack[] handleRecipeTransformation( @Nullable private static Materials getCheaperMaterialsBetweenTwo(Materials first, Materials second) { // return anyone if they are the same. - if(first.equals(second)) return null; + if (first.equals(second)) return null; // if the second material is cheaper, return the second one // only except is Aluminum compare to WroughtIron result in normal Iron. - if(first.equals(Materials.Aluminium) && second.equals(Materials.Iron)) return second; - else if(first.equals(Materials.Steel) && second.equals(Materials.Iron)) return second; - else if(first.equals(Materials.WroughtIron) && second.equals(Materials.Iron)) return second; - else if(first.equals(Materials.Aluminium) && second.equals(Materials.WroughtIron)) return Materials.Iron; - else if(first.equals(Materials.Aluminium) && second.equals(Materials.Steel)) return second; - else if(first.equals(Materials.Polytetrafluoroethylene) && second.equals(Materials.Plastic)) return second; - else if(first.equals(Materials.Polybenzimidazole) && second.equals(Materials.Plastic)) return second; - else if(first.equals(Materials.Polystyrene) && second.equals(Materials.Plastic)) return second; - else if(first.equals(Materials.Silicone) && second.equals(Materials.Plastic)) return second; - else if(first.equals(Materials.NetherQuartz) || first.equals(Materials.CertusQuartz) && second.equals(Materials.Quartzite)) + if (first.equals(Materials.Aluminium) && second.equals(Materials.Iron)) return second; + else if (first.equals(Materials.Steel) && second.equals(Materials.Iron)) return second; + else if (first.equals(Materials.WroughtIron) && second.equals(Materials.Iron)) return second; + else if (first.equals(Materials.Aluminium) && second.equals(Materials.WroughtIron)) return Materials.Iron; + else if (first.equals(Materials.Aluminium) && second.equals(Materials.Steel)) return second; + else if (first.equals(Materials.Polytetrafluoroethylene) && second.equals(Materials.Plastic)) return second; + else if (first.equals(Materials.Polybenzimidazole) && second.equals(Materials.Plastic)) return second; + else if (first.equals(Materials.Polystyrene) && second.equals(Materials.Plastic)) return second; + else if (first.equals(Materials.Silicone) && second.equals(Materials.Plastic)) return second; + else if (first.equals(Materials.NetherQuartz) || first.equals(Materials.CertusQuartz) && second.equals(Materials.Quartzite)) return second; - else if(first.equals(Materials.Plastic) && second.equals(Materials.Wood)) return second; - else if(first.equals(Materials.Diamond) && second.equals(Materials.Glass)) return second; + else if (first.equals(Materials.Plastic) && second.equals(Materials.Wood)) return second; + else if (first.equals(Materials.Diamond) && second.equals(Materials.Glass)) return second; return null; } @@ -253,15 +253,15 @@ else if(first.equals(Materials.NetherQuartz) || first.equals(Materials.CertusQua */ @Nullable private static Materials getNonAnyMaterials(Materials first) { - if(first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyIron))) + if (first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyIron))) return Materials.Iron; - else if(first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyCopper))) + else if (first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyCopper))) return Materials.Copper; - else if(first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyRubber))) + else if (first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyRubber))) return Materials.Rubber; - else if(first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyBronze))) + else if (first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyBronze))) return Materials.Bronze; - else if(first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnySyntheticRubber))) + else if (first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnySyntheticRubber))) return Materials.Rubber; return null; } @@ -274,11 +274,11 @@ else if(first.mOreReRegistrations.stream().anyMatch(y -> y.equals(Materials.AnyS */ @Nullable private static Materials getUnprocessedMaterials(Materials first) { - if(first.equals(Materials.SteelMagnetic)) return Materials.Steel; - if(first.equals(Materials.IronMagnetic)) return Materials.Iron; - if(first.equals(Materials.NeodymiumMagnetic)) return Materials.Neodymium; - if(first.equals(Materials.SamariumMagnetic)) return Materials.Samarium; - if(first.equals(Materials.AnnealedCopper)) return Materials.Copper; + if (first.equals(Materials.SteelMagnetic)) return Materials.Steel; + if (first.equals(Materials.IronMagnetic)) return Materials.Iron; + if (first.equals(Materials.NeodymiumMagnetic)) return Materials.Neodymium; + if (first.equals(Materials.SamariumMagnetic)) return Materials.Samarium; + if (first.equals(Materials.AnnealedCopper)) return Materials.Copper; return null; } @@ -293,16 +293,16 @@ private static Materials getUnprocessedMaterials(Materials first) { @SuppressWarnings("deprecation") @Nullable private static ItemStack getCheapestCircuit(Materials first) { - if(first.equals(Materials.Primitive)) return ItemList.NandChip.get(1); - else if(first.equals(Materials.Basic)) return ItemList.Circuit_Microprocessor.get(1); - else if(first.equals(Materials.Good)) return ItemList.Circuit_Good.get(1); - else if(first.equals(Materials.Advanced)) return ItemList.Circuit_Advanced.get(1); - else if(first.equals(Materials.Data)) return ItemList.Circuit_Data.get(1); - else if(first.equals(Materials.Master)) return ItemList.Circuit_Master.get(1); - else if(first.equals(Materials.Ultimate)) return ItemList.Circuit_Quantummainframe.get(1); - else if(first.equals(Materials.Superconductor)) return ItemList.Circuit_Crystalmainframe.get(1); - else if(first.equals(Materials.Infinite)) return ItemList.Circuit_Wetwaremainframe.get(1); - else if(first.equals(Materials.Bio)) return ItemList.Circuit_Biomainframe.get(1); + if (first.equals(Materials.Primitive)) return ItemList.NandChip.get(1); + else if (first.equals(Materials.Basic)) return ItemList.Circuit_Microprocessor.get(1); + else if (first.equals(Materials.Good)) return ItemList.Circuit_Good.get(1); + else if (first.equals(Materials.Advanced)) return ItemList.Circuit_Advanced.get(1); + else if (first.equals(Materials.Data)) return ItemList.Circuit_Data.get(1); + else if (first.equals(Materials.Master)) return ItemList.Circuit_Master.get(1); + else if (first.equals(Materials.Ultimate)) return ItemList.Circuit_Quantummainframe.get(1); + else if (first.equals(Materials.Superconductor)) return ItemList.Circuit_Crystalmainframe.get(1); + else if (first.equals(Materials.Infinite)) return ItemList.Circuit_Wetwaremainframe.get(1); + else if (first.equals(Materials.Bio)) return ItemList.Circuit_Biomainframe.get(1); return null; } @@ -316,17 +316,17 @@ private static ItemStack getCheapestCircuit(Materials first) { * @return the unified item. */ private static ItemStack handleUnification(ItemStack stack) { - for(var oreId : OreDictionary.getOreIDs(stack)) { - for(var pair : ORE_DICT_REPLACE) { + for (var oreId : OreDictionary.getOreIDs(stack)) { + for (var pair : ORE_DICT_REPLACE) { var oreDictName = (String) pair[0]; var replacement = (ItemStack) pair[1]; // if matched, replace with the replacement. - if(OreDictionary.getOreName(oreId).equals(oreDictName)) { + if (OreDictionary.getOreName(oreId).equals(oreDictName)) { return KtCandy.apply(replacement.copy(), i -> i.stackSize = stack.stackSize); } } } - return GT_OreDictUnificator.get(stack); + return GTOreDictUnificator.get(stack); } // need document @@ -334,7 +334,7 @@ private static ItemStack handleWildcard(ItemStack stack) { // if stack is not null, then the item in the stack is not null. assert stack == null || stack.getItem() != null; - if(stack != null && stack.getItemDamage() == OreDictionary.WILDCARD_VALUE && !stack.getItem().isDamageable()) { + if (stack != null && stack.getItemDamage() == OreDictionary.WILDCARD_VALUE && !stack.getItem().isDamageable()) { stack.setItemDamage(0); } return stack; @@ -345,7 +345,7 @@ private static ItemStack handleWildcard(ItemStack stack) { private static ItemStack handleContainerItem(ItemStack stack) { assert stack == null || stack.getItem() != null; - if(stack != null && stack.getItem().hasContainerItem(stack)) { + if (stack != null && stack.getItem().hasContainerItem(stack)) { return null; } return stack; @@ -358,7 +358,7 @@ private static ItemStack handleContainerItem(ItemStack stack) { * @param recipe the forwarding recipe from Assemblers * @return the input-output-exchanged recipe from the original one */ - public static GT_Recipe getReversedRecipe(GT_Recipe recipe) { + public static GTRecipe getReversedRecipe(GTRecipe recipe) { var ret = recipe.copy(); ret.mInputs = recipe.mOutputs; diff --git a/src/main/java/cn/taskeren/gtnn/mod/gt5u/util/DisassemblerRecipes.java b/src/main/java/cn/taskeren/gtnn/machine/recipe/DisassemblerRecipes.java similarity index 61% rename from src/main/java/cn/taskeren/gtnn/mod/gt5u/util/DisassemblerRecipes.java rename to src/main/java/cn/taskeren/gtnn/machine/recipe/DisassemblerRecipes.java index 67bbe9e..6c7d53a 100644 --- a/src/main/java/cn/taskeren/gtnn/mod/gt5u/util/DisassemblerRecipes.java +++ b/src/main/java/cn/taskeren/gtnn/machine/recipe/DisassemblerRecipes.java @@ -1,4 +1,4 @@ -package cn.taskeren.gtnn.mod.gt5u.util; +package cn.taskeren.gtnn.machine.recipe; import cn.taskeren.gtnn.GTNN; import cn.taskeren.gtnn.util.KtCandy; @@ -6,11 +6,17 @@ import cn.taskeren.gtnn.util.ToStringHelper; import com.google.common.collect.ArrayListMultimap; import gregtech.api.enums.*; -import gregtech.api.gui.modularui.GT_UITextures; -import gregtech.api.items.GT_MetaGenerated_Tool; -import gregtech.api.objects.GT_ItemStack; -import gregtech.api.recipe.*; -import gregtech.api.util.*; +import gregtech.api.gui.modularui.GTUITextures; +import gregtech.api.items.MetaGeneratedTool; +import gregtech.api.objects.GTItemStack; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMapBackend; +import gregtech.api.recipe.RecipeMapBuilder; +import gregtech.api.recipe.RecipeMaps; +import gregtech.api.util.GTModHandler; +import gregtech.api.util.GTOreDictUnificator; +import gregtech.api.util.GTRecipe; +import gregtech.api.util.GTUtility; import ic2.api.item.IC2Items; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -27,54 +33,54 @@ public class DisassemblerRecipes { - private static final List INPUT_BLACKLIST = KtCandy.buildList((list) -> { - list.add(new GT_ItemStack(ItemList.Casing_Coil_Superconductor.get(1))); - list.add(new GT_ItemStack(Materials.Graphene.getDust(1))); - list.add(new GT_ItemStack(ItemList.Circuit_Parts_Vacuum_Tube.get(1))); - list.add(new GT_ItemStack(ItemList.Schematic.get(1))); + private static final List INPUT_BLACKLIST = KtCandy.buildList((list) -> { + list.add(new GTItemStack(ItemList.Casing_Coil_Superconductor.get(1))); + list.add(new GTItemStack(Materials.Graphene.getDust(1))); + list.add(new GTItemStack(ItemList.Circuit_Parts_Vacuum_Tube.get(1))); + list.add(new GTItemStack(ItemList.Schematic.get(1))); if(Mods.Railcraft.isModLoaded()) { - list.add(new GT_ItemStack(GT_ModHandler.getModItem(Mods.Railcraft.ID, "track", 1L, 0))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(Mods.Railcraft.ID, "track", 1L, 736))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(Mods.Railcraft.ID, "track", 1L, 816))); + list.add(new GTItemStack(GTModHandler.getModItem(Mods.Railcraft.ID, "track", 1L, 0))); + list.add(new GTItemStack(GTModHandler.getModItem(Mods.Railcraft.ID, "track", 1L, 736))); + list.add(new GTItemStack(GTModHandler.getModItem(Mods.Railcraft.ID, "track", 1L, 816))); } - list.add(new GT_ItemStack(IC2Items.getItem("mixedMetalIngot"))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(Mods.Railcraft.ID, "machine.alpha", 1, 14))); + list.add(new GTItemStack(IC2Items.getItem("mixedMetalIngot"))); + list.add(new GTItemStack(GTModHandler.getModItem(Mods.Railcraft.ID, "machine.alpha", 1, 14))); // region transformer - list.add(new GT_ItemStack(ItemList.Transformer_MV_LV.get(1L))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 3))); - list.add(new GT_ItemStack(ItemList.Transformer_HV_MV.get(1L))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 4))); - list.add(new GT_ItemStack(ItemList.Transformer_EV_HV.get(1L))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 5))); - list.add(new GT_ItemStack(ItemList.Transformer_IV_EV.get(1L))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 6))); + list.add(new GTItemStack(ItemList.Transformer_MV_LV.get(1L))); + list.add(new GTItemStack(GTModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 3))); + list.add(new GTItemStack(ItemList.Transformer_HV_MV.get(1L))); + list.add(new GTItemStack(GTModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 4))); + list.add(new GTItemStack(ItemList.Transformer_EV_HV.get(1L))); + list.add(new GTItemStack(GTModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 5))); + list.add(new GTItemStack(ItemList.Transformer_IV_EV.get(1L))); + list.add(new GTItemStack(GTModHandler.getModItem(IndustrialCraft2.ID, "blockElectric", 1L, 6))); // endregion transformer - list.add(new GT_ItemStack(GT_ModHandler.getModItem(AppliedEnergistics2.ID, "item.ItemMultiPart", 1L, 36))); - list.add(new GT_ItemStack(GT_ModHandler.getModItem(AppliedEnergistics2.ID, "item.ItemMultiPart", 1L, 536))); + list.add(new GTItemStack(GTModHandler.getModItem(AppliedEnergistics2.ID, "item.ItemMultiPart", 1L, 36))); + list.add(new GTItemStack(GTModHandler.getModItem(AppliedEnergistics2.ID, "item.ItemMultiPart", 1L, 536))); }); - private static final ArrayListMultimap OUTPUT_HARD_OVERRIDE = KtCandy.apply(ArrayListMultimap.create(), m -> m.put(new GT_ItemStack(new ItemStack(Blocks.torch, 6)), new ItemStack(Items.stick))); + private static final ArrayListMultimap OUTPUT_HARD_OVERRIDE = KtCandy.apply(ArrayListMultimap.create(), m -> m.put(new GTItemStack(new ItemStack(Blocks.torch, 6)), new ItemStack(Items.stick))); private static final long EUT_HARD_OVERRIDE = 30; private static final long DUR_HARD_OVERRIDE = 600; - public static final RecipeMap DISASSEMBLER_RECIPES = - RecipeMapBuilder.of("gtnn.recipe.disassembler", DisassemblerBackend::new) + public static final RecipeMap DISASSEMBLER_RECIPES = + RecipeMapBuilder.of("gtnn.recipe.disassembler") .maxIO(1, 9, 0, 0) .minInputs(1, 0) - .slotOverlays((index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_CIRCUIT : null) - .progressBar(GT_UITextures.PROGRESSBAR_ASSEMBLE) + .slotOverlays((index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GTUITextures.OVERLAY_SLOT_CIRCUIT : null) + .progressBar(GTUITextures.PROGRESSBAR_ASSEMBLE) .disableOptimize() - .recipeConfigFile("disassembling", GT_RecipeMapUtil.FIRST_ITEM_OUTPUT) .build(); public static boolean canDisassemble(ItemStack[] itemsToDisassemble) { if(itemsToDisassemble.length != 1) return false; var item = itemsToDisassemble[0]; + if(item == null) return false; - if(item.getItem() instanceof GT_MetaGenerated_Tool) return false; + if(item.getItem() instanceof MetaGeneratedTool) return false; if(isCircuit(item)) return false; - if(INPUT_BLACKLIST.stream().anyMatch(b -> GT_Utility.areStacksEqual(b.toStack(), item, true))) return false; + if(INPUT_BLACKLIST.stream().anyMatch(b -> GTUtility.areStacksEqual(b.toStack(), item, true))) return false; if(isUnpackerRecipe(item)) return false; return true; @@ -112,7 +118,7 @@ public static void loadAssemblerRecipes() { for(var hardOverridePair : OUTPUT_HARD_OVERRIDE.entries()) { var hardOverrideItem = hardOverridePair.getKey(); if(hardOverrideItem.isStackEqual(revInput)) { - GT_Values.RA.stdBuilder() + GTValues.RA.stdBuilder() .itemInputs(revInput) .itemOutputs(hardOverridePair.getValue()) .duration(DUR_HARD_OVERRIDE) @@ -135,10 +141,10 @@ public static void loadAssemblerRecipes() { var revEUT = revRecipeFirst.mEUt; // region removeInvalidStacks - revOutputs = Arrays.stream(revOutputs).filter(stack -> GT_Utility.isStackValid(stack) && stack.stackSize > 0).toArray(ItemStack[]::new); + revOutputs = Arrays.stream(revOutputs).filter(stack -> GTUtility.isStackValid(stack) && stack.stackSize > 0).toArray(ItemStack[]::new); // endregion - GT_Values.RA.stdBuilder() + GTValues.RA.stdBuilder() .itemInputs(revInput) .itemOutputs(revOutputs) .duration(revDuration) @@ -162,7 +168,7 @@ public static void loadAssemblerRecipes() { } private static boolean isCircuit(ItemStack stack) { - var data = GT_OreDictUnificator.getAssociation(stack); + var data = GTOreDictUnificator.getAssociation(stack); if(data != null) { return data.mPrefix == OrePrefixes.circuit; } @@ -170,7 +176,10 @@ private static boolean isCircuit(ItemStack stack) { } private static boolean isUnpackerRecipe(ItemStack stack) { - return RecipeMaps.unpackagerRecipes.findRecipe(null, true, true, Long.MAX_VALUE, null, stack) != null; + var unpackerRecipe = RecipeMaps.unpackagerRecipes.findRecipeQuery() + .items(stack) + .find(); + return unpackerRecipe != null; } /** @@ -182,7 +191,7 @@ private static boolean isUnpackerRecipe(ItemStack stack) { * * @param revRecipe the REVERSED recipe. */ - public static void registerReversedCraftingRecipe(@Nullable GT_Recipe revRecipe) { + public static void registerReversedCraftingRecipe(@Nullable GTRecipe revRecipe) { if(revRecipe == null) return; if(!canDisassemble(revRecipe.mInputs)) { @@ -190,7 +199,7 @@ public static void registerReversedCraftingRecipe(@Nullable GT_Recipe revRecipe) } try { - GT_Values.RA.stdBuilder() + GTValues.RA.stdBuilder() .itemInputs(revRecipe.mInputs) .itemOutputs( DisassemblerRecipeHelper.handleRecipeTransformation( @@ -207,10 +216,4 @@ public static void registerReversedCraftingRecipe(@Nullable GT_Recipe revRecipe) } } - public static class DisassemblerBackend extends RecipeMapBackend { - public DisassemblerBackend(RecipeMapBackendPropertiesBuilder propertiesBuilder) { - super(propertiesBuilder); - } - } - } diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_PlasmaMixin.java b/src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_PlasmaMixin.java deleted file mode 100644 index 0f69537..0000000 --- a/src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_PlasmaMixin.java +++ /dev/null @@ -1,14 +0,0 @@ -package cn.taskeren.gtnn.mixin.gtpp; - -import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines.GT_MTE_LargeTurbine_Plasma; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(value = GT_MTE_LargeTurbine_Plasma.class, remap = false) -public class GT_MTE_LargeTurbine_PlasmaMixin { - @Redirect(method = "checkProcessing", at = @At(target = "Ljava/lang/Math;min(FF)F", value = "INVOKE")) - public float removeEffLoss(float v, float u) { - return 1.0f; - } -} diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_SCSteamMixin.java b/src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_SCSteamMixin.java deleted file mode 100644 index 678fe62..0000000 --- a/src/main/java/cn/taskeren/gtnn/mixin/gtpp/GT_MTE_LargeTurbine_SCSteamMixin.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.taskeren.gtnn.mixin.gtpp; - -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; -import gtPlusPlus.core.util.math.MathUtils; -import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines.GT_MTE_LargeTurbine_SCSteam; -import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines.GregtechMetaTileEntity_LargerTurbineBase; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; - -import java.util.ArrayList; - -@Mixin(value = GT_MTE_LargeTurbine_SCSteam.class, remap = false) -public abstract class GT_MTE_LargeTurbine_SCSteamMixin extends GregtechMetaTileEntity_LargerTurbineBase { - - public GT_MTE_LargeTurbine_SCSteamMixin(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional); - } - - /** - * @author koiNoCirculation - * @reason revert supercritical duranium ichorium nerf - */ - @Overwrite - long fluidIntoPower(ArrayList aFluids, long aOptFlow, int aBaseEff, float[] flowMultipliers) { - int tEU = 0; - int totalFlow = 0; // Byproducts are based on actual flow - int flow = 0; - this.realOptFlow = (double) aOptFlow * (double) flowMultipliers[0]; - - int remainingFlow = MathUtils.safeInt((long) (realOptFlow * 1.25f)); // Allowed to use up to 125% of optimal flow. - // Variable required outside of loop for - // multi-hatch scenarios. - - storedFluid = 0; - FluidStack tSCSteam = FluidRegistry.getFluidStack("supercriticalsteam", 1); - for ( - int i = 0; i < aFluids.size() && remainingFlow > 0; i++) { - if (GT_Utility.areFluidsEqual(aFluids.get(i), tSCSteam, true)) { - flow = Math.min(aFluids.get(i).amount, remainingFlow); // try to use up w/o exceeding remainingFlow - depleteInput(new FluidStack(aFluids.get(i), flow)); // deplete that amount - this.storedFluid += aFluids.get(i).amount; - remainingFlow -= flow; // track amount we're allowed to continue depleting from hatches - totalFlow += flow; // track total input used - } - } - if (totalFlow <= 0) return 0; - tEU = totalFlow; - - addOutput(GT_ModHandler.getSteam(totalFlow)); - if (totalFlow != realOptFlow) { - float efficiency = 1.0f - Math.abs((totalFlow - (float) realOptFlow) / (float) realOptFlow); - tEU *= efficiency; - tEU = Math.max(1, MathUtils.safeInt((long) tEU * (long) aBaseEff / 10000L)); - } else { - tEU = MathUtils.safeInt((long) tEU * (long) aBaseEff / 10000L); - } - - return Math.min(tEU * 100L, Integer.MAX_VALUE); - } -} diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gtpp/RocketFuelsMixin.java b/src/main/java/cn/taskeren/gtnn/mixin/gtpp/RocketFuelsMixin.java deleted file mode 100644 index 5577a45..0000000 --- a/src/main/java/cn/taskeren/gtnn/mixin/gtpp/RocketFuelsMixin.java +++ /dev/null @@ -1,138 +0,0 @@ -package cn.taskeren.gtnn.mixin.gtpp; - -import cn.taskeren.gtnn.GTNN; -import gtPlusPlus.core.item.chemistry.GenericChem; -import gtPlusPlus.core.item.chemistry.RocketFuels; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.recipe.common.CI; -import gtPlusPlus.core.util.minecraft.FluidUtils; -import gtPlusPlus.core.util.minecraft.ItemUtils; -import gtPlusPlus.core.util.minecraft.MaterialUtils; -import gtPlusPlus.xmod.gregtech.api.interfaces.internal.IGregtech_RecipeAdder; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -import org.apache.logging.log4j.Marker; -import org.apache.logging.log4j.MarkerManager; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import static gtPlusPlus.core.item.chemistry.RocketFuels.*; - -/** - * Requested by #7, to revert rocket fuel recipe changes in 2.1.2.3. - */ -@Mixin(value = RocketFuels.class, remap = false) -public class RocketFuelsMixin { - - @Unique - private static final Marker GTNN$MARKER = MarkerManager.getMarker("RocketFuelsMixin"); - - @Inject(method = "createNitrogenTetroxide", at = @At("HEAD")) - private static void gtnn$createNitrogenTetroxide(CallbackInfo ci) { - CORE.RA.addChemicalPlantRecipe( - new ItemStack[]{ - ItemUtils.getItemStackOfAmountFromOreDict("dustCopper", 12), - ItemUtils.getSimpleStack(GenericChem.mOrangeCatalyst, 0),}, - new FluidStack[]{ - FluidUtils.getFluidStack("nitricacid", 4000) - }, - new ItemStack[]{ - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallAsh", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallDarkAsh", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyAsh", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyDarkAsh", 1)}, - new FluidStack[]{ - FluidUtils.getFluidStack(Nitrogen_Tetroxide, 3000), - }, - new int[]{100, 100, 50, 50}, - 20 * 30, - MaterialUtils.getVoltageForTier(3), - 3 - ); - } - - @Redirect(method = "createNitrogenTetroxide", at = @At(value = "INVOKE", target = "LgtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder;addChemicalPlantRecipe([Lnet/minecraft/item/ItemStack;[Lnet/minecraftforge/fluids/FluidStack;[Lnet/minecraft/item/ItemStack;[Lnet/minecraftforge/fluids/FluidStack;[IIJI)Z")) - private static boolean gtnn$createNitrogenTetroxide(IGregtech_RecipeAdder instance, ItemStack[] aInputs, FluidStack[] aInputFluids, ItemStack[] aOutputs, FluidStack[] aFluidOutputs, int[] aChances, int time, long eu, int aTier) { - return false; - } - - @Inject(method = "createHydrazine", at = @At("HEAD")) - private static void gtnn$createHydrazine(CallbackInfo ci) { - CORE.RA.addChemicalPlantRecipe( - new ItemStack[]{ - CI.getNumberedCircuit(21) - }, - new FluidStack[]{ - FluidUtils.getFluidStack("fluid.hydrogenperoxide", 2000), - FluidUtils.getFluidStack("ammonia", 2000), - }, - new ItemStack[]{ - }, - new FluidStack[]{ - FluidUtils.getFluidStack(Hydrazine, 4000), - }, - 20 * 30, - MaterialUtils.getVoltageForTier(2), - 1 - ); - - FluidStack aBartWorksHydrogenPeroxide = FluidUtils.getWildcardFluidStack("Hydrogen Peroxide", 2000); - if(aBartWorksHydrogenPeroxide != null) { - GTNN.logger.info(GTNN$MARKER, "Found BW Hydrogen Peroxide, adding compat recipe."); - CORE.RA.addChemicalPlantRecipe( - new ItemStack[]{ - CI.getNumberedCircuit(22) - }, - new FluidStack[]{ - aBartWorksHydrogenPeroxide, - FluidUtils.getFluidStack("ammonia", 2000), - }, - new ItemStack[]{ - }, - new FluidStack[]{ - FluidUtils.getFluidStack(Hydrazine, 4000), - }, - 20 * 30, - MaterialUtils.getVoltageForTier(2), - 1 - ); - } - } - - @Redirect(method = "createHydrazine", at = @At(value = "INVOKE", target = "LgtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder;addChemicalPlantRecipe([Lnet/minecraft/item/ItemStack;[Lnet/minecraftforge/fluids/FluidStack;[Lnet/minecraft/item/ItemStack;[Lnet/minecraftforge/fluids/FluidStack;IJI)Z")) - private static boolean gtnn$createHydrazine(IGregtech_RecipeAdder instance, ItemStack[] aInputs, FluidStack[] aInputFluids, ItemStack[] aOutputs, FluidStack[] aFluidOutputs, int time, long eu, int aTier) { - return false; - } - - @Inject(method = "createMonomethylhydrazine", at = @At("HEAD")) - private static void gtnn$createMonomethylhydrazine(CallbackInfo ci) { - CORE.RA.addChemicalPlantRecipe( - new ItemStack[]{ - CI.getNumberedCircuit(21), - ItemUtils.getItemStackOfAmountFromOreDict("dustCarbon", 2) - }, - new FluidStack[]{ - FluidUtils.getFluidStack("hydrogen", 2000), - FluidUtils.getFluidStack(Hydrazine, 2000), - }, - new ItemStack[]{ - }, - new FluidStack[]{ - FluidUtils.getFluidStack(Monomethylhydrazine, 4000), - }, - 20 * 48, - 240, - 2 - ); - } - - @Redirect(method = "createMonomethylhydrazine", at = @At(value = "INVOKE", target = "LgtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder;addChemicalPlantRecipe([Lnet/minecraft/item/ItemStack;[Lnet/minecraftforge/fluids/FluidStack;[Lnet/minecraft/item/ItemStack;[Lnet/minecraftforge/fluids/FluidStack;IJI)Z")) - private static boolean gtnn$createMonomethylhydrazine(IGregtech_RecipeAdder instance, ItemStack[] aInputs, FluidStack[] aInputFluids, ItemStack[] aOutputs, FluidStack[] aFluidOutputs, int time, long eu, int aTier) { - return false; - } - -} diff --git a/src/main/java/cn/taskeren/gtnn/mixinplugin/Feature.java b/src/main/java/cn/taskeren/gtnn/mixinplugin/Feature.java index 1c36e2d..bb6bf91 100644 --- a/src/main/java/cn/taskeren/gtnn/mixinplugin/Feature.java +++ b/src/main/java/cn/taskeren/gtnn/mixinplugin/Feature.java @@ -28,21 +28,11 @@ public enum Feature { Mixin.EyeOfHarmonyMixin ), - LegacySupercriticalTurbine( - "Replace new Supercritical Steam Turbine with legacy one.", - Mixin.XLPlasmaTurbineMixin, - Mixin.XLSCTurbineMixin - ), - - RevertRocketFuelsRecipes( - "Revert Rocket Fuels Recipes", - Mixin.RocketFuelsMixin - ), - MainLoaderProgressBarFix( "Fix the progress bar bug of TecTech", Mixin.TecTechMainLoaderFixMixin - ) + ), + ; public final String desc; diff --git a/src/main/java/cn/taskeren/gtnn/mixinplugin/Mixin.java b/src/main/java/cn/taskeren/gtnn/mixinplugin/Mixin.java index 0d93e8c..f74038f 100644 --- a/src/main/java/cn/taskeren/gtnn/mixinplugin/Mixin.java +++ b/src/main/java/cn/taskeren/gtnn/mixinplugin/Mixin.java @@ -16,10 +16,6 @@ public enum Mixin { LargeEssentiaGeneratorMixin("goodgenerator.LargeEssentiaGeneratorMixin", TargetedMod.GoodGenerator), EyeOfHarmonyMixin("tectech.GTMetaTileEntityEOMMixin", TargetedMod.TecTech), - XLPlasmaTurbineMixin("gtpp.GT_MTE_LargeTurbine_PlasmaMixin", TargetedMod.GTPlusPlus), - XLSCTurbineMixin("gtpp.GT_MTE_LargeTurbine_SCSteamMixin", TargetedMod.GTPlusPlus), - - RocketFuelsMixin("gtpp.RocketFuelsMixin", TargetedMod.GTPlusPlus), TecTechMainLoaderFixMixin("tectech.MainLoaderMixin", TargetedMod.TecTech), ; diff --git a/src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapedRecipe.java b/src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapedRecipe.java deleted file mode 100644 index 9120c28..0000000 --- a/src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapedRecipe.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.taskeren.gtnn.mod.gt5u.recipe; - -import cn.taskeren.gtnn.mod.gt5u.util.DisassemblerRecipes; -import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Utility; -import net.minecraft.item.ItemStack; - -import java.util.LinkedList; -import java.util.Optional; -import java.util.Queue; - -public class ReverseShapedRecipe { - - private static final Queue reverseRecipes = new LinkedList<>(); - private final ItemStack aResult; - private final Object[] aRecipe; - - public static Queue getReverseRecipes() { - return reverseRecipes; - } - - public ReverseShapedRecipe(ItemStack output, Object[] aRecipe) { - this.aResult = output; - this.aRecipe = aRecipe; - reverseRecipes.add(this); - } - - public static void runReverseRecipes() { - for (ReverseShapedRecipe x : reverseRecipes) { - Optional recipeOptional = GT_Utility.reverseShapedRecipe(x.aResult, x.aRecipe); - DisassemblerRecipes.registerReversedCraftingRecipe(recipeOptional.orElse(null)); - } - } - -} diff --git a/src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapelessRecipe.java b/src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapelessRecipe.java deleted file mode 100644 index 85cb610..0000000 --- a/src/main/java/cn/taskeren/gtnn/mod/gt5u/recipe/ReverseShapelessRecipe.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.taskeren.gtnn.mod.gt5u.recipe; - -import cn.taskeren.gtnn.mod.gt5u.util.DisassemblerRecipes; -import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Utility; -import net.minecraft.item.ItemStack; - -import java.util.LinkedList; -import java.util.Optional; -import java.util.Queue; - -public class ReverseShapelessRecipe { - - private static final Queue reverseRecipes = new LinkedList<>(); - private final ItemStack aResult; - private final Object[] aRecipe; - - public static Queue getReverseRecipes() { - return reverseRecipes; - } - - public ReverseShapelessRecipe(ItemStack output, Object[] aRecipe) { - this.aResult = output; - this.aRecipe = aRecipe; - reverseRecipes.add(this); - } - - public static void runReverseRecipes() { - for(ReverseShapelessRecipe x : reverseRecipes) { - Optional recipeOptional = GT_Utility.reverseShapelessRecipe(x.aResult, x.aRecipe); - DisassemblerRecipes.registerReversedCraftingRecipe(recipeOptional.orElse(null)); - } - } - -} diff --git a/src/main/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java similarity index 79% rename from src/main/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java index 71eb367..ae69bd1 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/goodgenerator/LargeEssentiaGeneratorMixin.java @@ -1,12 +1,12 @@ package cn.taskeren.gtnn.mixin.goodgenerator; -import goodgenerator.blocks.tileEntity.LargeEssentiaGenerator; +import goodgenerator.blocks.tileEntity.MTELargeEssentiaGenerator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(value = LargeEssentiaGenerator.class, remap = false) +@Mixin(value = MTELargeEssentiaGenerator.class, remap = false) public class LargeEssentiaGeneratorMixin { @Inject(method = "checkNoLaser", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java similarity index 75% rename from src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java index 6e6527f..f58d633 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTLoaderMetaTileEntitiesMixin.java @@ -1,46 +1,46 @@ package cn.taskeren.gtnn.mixin.gt5u; import cn.taskeren.gtnn.GTNN; -import cn.taskeren.gtnn.mod.gt5u.tile.TileEntityDisassembler; -import cn.taskeren.gtnn.mod.gt5u.util.NNItemList; -import gregtech.loaders.preload.GT_Loader_MetaTileEntities; +import cn.taskeren.gtnn.NNItemList; +import cn.taskeren.gtnn.machine.MTEDisassembler; +import gregtech.loaders.preload.LoaderMetaTileEntities; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = GT_Loader_MetaTileEntities.class, remap = false) +@Mixin(value = LoaderMetaTileEntities.class, remap = false) public class GTLoaderMetaTileEntitiesMixin { @Inject(method = "run", at = @At("RETURN")) private void nn$run2(CallbackInfo ci) { GTNN.logger.info("Registering disassemblers after gt5u"); NNItemList.Machine_LV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 451, "basicmachine.disassembler.tier.01", "Basic Disassembler", 1).getStackForm(1L)); NNItemList.Machine_MV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 452, "basicmachine.disassembler.tier.02", "Advanced Disassembler", 2).getStackForm(1L)); NNItemList.Machine_HV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 453, "basicmachine.disassembler.tier.03", "Advanced Disassembler II", 3).getStackForm(1L)); NNItemList.Machine_EV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 454, "basicmachine.disassembler.tier.04", "Advanced Disassembler III", 4).getStackForm(1L)); NNItemList.Machine_IV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 455, "basicmachine.disassembler.tier.05", "Advanced Disassembler IV", diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java similarity index 82% rename from src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java index 8d558d6..4264e33 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTMetaTileEntityLightningRodMixin.java @@ -2,13 +2,13 @@ import cn.taskeren.gtnn.GTNN; import cn.taskeren.gtnn.util.ToStringHelper; -import gregtech.common.tileentities.generators.GT_MetaTileEntity_LightningRod; +import gregtech.common.tileentities.generators.MTELightningRod; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(value = GT_MetaTileEntity_LightningRod.class, remap = false) +@Mixin(value = MTELightningRod.class, remap = false) public class GTMetaTileEntityLightningRodMixin { @Redirect(method = "onPostTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockToAir(III)Z"), remap = true) diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java similarity index 75% rename from src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java index 4cbc31e..d995abb 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTShapedRecipeMixin.java @@ -1,7 +1,7 @@ package cn.taskeren.gtnn.mixin.gt5u; -import cn.taskeren.gtnn.mod.gt5u.recipe.ReverseShapedRecipe; -import gregtech.api.util.GT_Shaped_Recipe; +import cn.taskeren.gtnn.common.ReversedRecipeRegistry; +import gregtech.api.util.GTShapedRecipe; import net.minecraft.enchantment.Enchantment; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; @@ -9,13 +9,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = GT_Shaped_Recipe.class, remap = false) +@Mixin(value = GTShapedRecipe.class, remap = false) public class GTShapedRecipeMixin { @Inject(method = "", at = @At("RETURN")) private void nn$init(ItemStack aResult, boolean aDismantleAble, boolean aRemovableByGT, boolean aKeepingNBT, Enchantment[] aEnchantmentsAdded, int[] aEnchantmentLevelsAdded, Object[] aRecipe, CallbackInfo ci) { if(aDismantleAble) { - new ReverseShapedRecipe(aResult, aRecipe); + ReversedRecipeRegistry.registerShapedRecipe(aResult, aRecipe); } } diff --git a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java similarity index 74% rename from src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java index 8eae72b..e0980f9 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/gt5u/GTShapelessRecipeMixin.java @@ -1,7 +1,7 @@ package cn.taskeren.gtnn.mixin.gt5u; -import cn.taskeren.gtnn.mod.gt5u.recipe.ReverseShapelessRecipe; -import gregtech.api.util.GT_Shapeless_Recipe; +import cn.taskeren.gtnn.common.ReversedRecipeRegistry; +import gregtech.api.util.GTShapelessRecipe; import net.minecraft.enchantment.Enchantment; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; @@ -9,13 +9,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = GT_Shapeless_Recipe.class, remap = false) +@Mixin(value = GTShapelessRecipe.class, remap = false) public class GTShapelessRecipeMixin { @Inject(method = "", at = @At("RETURN")) private void nn$init(ItemStack aResult, boolean aDismantleAble, boolean aRemovableByGT, boolean aKeepingNBT, Enchantment[] aEnchantmentsAdded, int[] aEnchantmentLevelsAdded, Object[] aRecipe, CallbackInfo ci) { if(aDismantleAble) { - new ReverseShapelessRecipe(aResult, aRecipe); + ReversedRecipeRegistry.registerShapelessRecipe(aResult, aRecipe); } } diff --git a/src/main/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java similarity index 77% rename from src/main/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java index e6be938..cfa880e 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/newhorizonscore/GTLoaderMachinesMixin.java @@ -1,8 +1,8 @@ package cn.taskeren.gtnn.mixin.newhorizonscore; import cn.taskeren.gtnn.GTNN; -import cn.taskeren.gtnn.mod.gt5u.tile.TileEntityDisassembler; -import cn.taskeren.gtnn.mod.gt5u.util.NNItemList; +import cn.taskeren.gtnn.NNItemList; +import cn.taskeren.gtnn.machine.MTEDisassembler; import com.dreammaster.gthandler.GT_Loader_Machines; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -16,37 +16,37 @@ public class GTLoaderMachinesMixin { private void nn$registerBeforeRecipe(CallbackInfo ci) { GTNN.logger.info("Register advanced disassemblers after gtnhcore"); NNItemList.Machine_LuV_Disassembler.set( - new TileEntityDisassembler(11160, "basicmachine.disassembler.tier.06", "Elite Disassembler", 6) + new MTEDisassembler(11160, "basicmachine.disassembler.tier.06", "Elite Disassembler", 6) .getStackForm(1L)); NNItemList.Machine_ZPM_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 11161, "basicmachine.disassembler.tier.07", "Elite Disassembler II", 7).getStackForm(1L)); NNItemList.Machine_UV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 11162, "basicmachine.disassembler.tier.08", "Ultimate Deconstructor", 8).getStackForm(1L)); NNItemList.Machine_UHV_Disassembler.set( - new TileEntityDisassembler(11163, "basicmachine.disassembler.tier.09", "Epic Deconstructor", 9) + new MTEDisassembler(11163, "basicmachine.disassembler.tier.09", "Epic Deconstructor", 9) .getStackForm(1L)); NNItemList.Machine_UEV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 11164, "basicmachine.disassembler.tier.10", "Epic Deconstructor II", 10).getStackForm(1L)); NNItemList.Machine_UIV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 11165, "basicmachine.disassembler.tier.11", "Epic Deconstructor III", 11).getStackForm(1L)); NNItemList.Machine_UMV_Disassembler.set( - new TileEntityDisassembler( + new MTEDisassembler( 11166, "basicmachine.disassembler.tier.12", "Epic Deconstructor IV", diff --git a/src/main/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java similarity index 91% rename from src/main/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java index 73a9137..5bcb312 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/tectech/GTMetaTileEntityEOMMixin.java @@ -1,18 +1,12 @@ package cn.taskeren.gtnn.mixin.tectech; import cn.taskeren.gtnn.mod.tectech.EOHHelper; -import com.github.technus.tectech.recipe.EyeOfHarmonyRecipe; -import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_EyeOfHarmony; -import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM; -import com.github.technus.tectech.util.FluidStackLong; -import com.github.technus.tectech.util.ItemStackLong; import gregtech.api.enums.Materials; import gregtech.api.enums.MaterialsUEVplus; -import gregtech.api.interfaces.IGlobalWirelessEnergy; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.recipe.check.SimpleCheckRecipeResult; -import gregtech.api.util.GT_Utility; +import gregtech.api.util.GTUtility; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraftforge.fluids.Fluid; @@ -24,16 +18,23 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import tectech.recipe.EyeOfHarmonyRecipe; +import tectech.thing.metaTileEntity.multi.MTEEyeOfHarmony; +import tectech.thing.metaTileEntity.multi.base.TTMultiblockBase; +import tectech.util.FluidStackLong; +import tectech.util.ItemStackLong; import java.math.BigDecimal; import java.math.BigInteger; import java.util.List; import java.util.Map; +import java.util.UUID; +import static gregtech.common.misc.WirelessNetworkManager.addEUToGlobalEnergyMap; import static java.lang.Math.pow; -@Mixin(value = GT_MetaTileEntity_EM_EyeOfHarmony.class, remap = false) -public abstract class GTMetaTileEntityEOMMixin extends GT_MetaTileEntity_MultiblockBase_EM implements IGlobalWirelessEnergy { +@Mixin(value = MTEEyeOfHarmony.class, remap = false) +public abstract class GTMetaTileEntityEOMMixin extends TTMultiblockBase { // region SHADOW VARIABLES @Shadow @@ -91,7 +92,7 @@ public abstract class GTMetaTileEntityEOMMixin extends GT_MetaTileEntity_Multibl protected abstract void calculateInputFluidExcessValues(long hydrogenRecipeRequirement, long heliumRecipeRequirement); @Shadow - private String userUUID; + private UUID userUUID; @Shadow private double successChance; @@ -172,10 +173,9 @@ protected GTMetaTileEntityEOMMixin(String aName) { */ @Overwrite public CheckRecipeResult processRecipe(EyeOfHarmonyRecipe recipeObject) { - // Get circuit damage, clamp it and then use it later for overclocking. for (ItemStack itemStack : mInputBusses.get(0).getRealInventory()) { - if (GT_Utility.isAnyIntegratedCircuit(itemStack)) { + if (GTUtility.isAnyIntegratedCircuit(itemStack)) { currentCircuitMultiplier = MathHelper.clamp_int(itemStack.getItemDamage(), 0, 24); break; } diff --git a/src/main/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java b/src/mixin/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java similarity index 95% rename from src/main/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java rename to src/mixin/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java index 7579e96..25ce41b 100644 --- a/src/main/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java +++ b/src/mixin/java/cn/taskeren/gtnn/mixin/tectech/MainLoaderMixin.java @@ -1,6 +1,5 @@ package cn.taskeren.gtnn.mixin.tectech; -import com.github.technus.tectech.loader.MainLoader; import cpw.mods.fml.common.ProgressManager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -8,6 +7,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; +import tectech.loader.MainLoader; @Mixin(value = MainLoader.class, remap = false) public class MainLoaderMixin {