From 6c3fce648b43cd91994692aac3b811d23621deb7 Mon Sep 17 00:00:00 2001 From: Redeix <59435925+Redeix@users.noreply.github.com> Date: Mon, 16 Jun 2025 23:54:59 -0500 Subject: [PATCH] Active/food (#1176) * rearranged food recipes into hopefully a good format? * custom gregtech machines and logic to handle TFC recipes (#1160) * Change lv chem reactor quest to require any container with rubber instead of a rubber bucket Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> * Add placeholder assets for food machines (copied from gtceu) * remove greenhouse definition from kubejs * change greenhouse recipe * Rework recipes file --------- Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> Signed-off-by: Pyritie Co-authored-by: Pyritie * update greenhouse quest * update greenhouse tooltip * comment out coconut milk * langs * tooltip fix * wrong food lang * recipe fixes * Add some more food recipes (#1166) * Change lv chem reactor quest to require any container with rubber instead of a rubber bucket Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> * Add placeholder assets for food machines (copied from gtceu) * remove greenhouse definition from kubejs * change greenhouse recipe * Rework recipes file * Modify food recipes * Add some more recipes * add more recipes and tidy up food recipe file * change incorrect string --------- Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> Signed-off-by: Pyritie Co-authored-by: Pyritie * - Food changes --------- Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> Signed-off-by: Pyritie Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com> Co-authored-by: Pyritie Co-authored-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> --- .../quests/chapters/lv__low_voltage.snbt | 2 +- .../machines/food_oven/overlay_front.png | Bin 0 -> 248 bytes .../food_oven/overlay_front_active.png | Bin 0 -> 292 bytes .../overlay_front_active_emissive.png | Bin 0 -> 241 bytes .../food_oven/overlay_front_emissive.png | Bin 0 -> 149 bytes .../machines/food_processor/overlay_back.png | Bin 0 -> 75 bytes .../food_processor/overlay_back_active.png | Bin 0 -> 75 bytes .../overlay_back_active.png.mcmeta | 5 + .../machines/food_processor/overlay_front.png | Bin 0 -> 380 bytes .../food_processor/overlay_front_active.png | Bin 0 -> 919 bytes .../overlay_front_active.png.mcmeta | 5 + .../overlay_front_active_emissive.png | Bin 0 -> 659 bytes .../overlay_front_active_emissive.png.mcmeta | 5 + .../food_processor/overlay_front_emissive.png | Bin 0 -> 149 bytes .../machines/food_processor/overlay_side.png | Bin 0 -> 334 bytes .../food_processor/overlay_side_active.png | Bin 0 -> 683 bytes .../overlay_side_active.png.mcmeta | 5 + .../machines/food_processor/overlay_top.png | Bin 0 -> 348 bytes .../food_processor/overlay_top_active.png | Bin 0 -> 542 bytes .../overlay_top_active.png.mcmeta | 5 + .../food_refrigerator/overlay_back.png | Bin 0 -> 592 bytes .../food_refrigerator/overlay_back_active.png | Bin 0 -> 504 bytes .../overlay_back_active.png.mcmeta | 5 + .../overlay_back_active_emissive.png | Bin 0 -> 184 bytes .../overlay_back_active_emissive.png.mcmeta | 5 + .../overlay_back_active_emissive_ref.gif | Bin 0 -> 785 bytes .../overlay_back_active_ref.gif | Bin 0 -> 4697 bytes .../food_refrigerator/overlay_bottom.png | Bin 0 -> 75 bytes .../food_refrigerator/overlay_front.png | Bin 0 -> 350 bytes .../overlay_front_active.png | Bin 0 -> 364 bytes .../food_refrigerator/overlay_side.png | Bin 0 -> 361 bytes .../food_refrigerator/overlay_top.png | Bin 0 -> 250 bytes kubejs/client_scripts/tooltips.js | 5 +- kubejs/server_scripts/firmalife/recipes.js | 301 --------- .../gregtech/recipes.machines.js | 12 - kubejs/server_scripts/tfc/recipes.js | 47 -- kubejs/server_scripts/tfc/recipes.machines.js | 165 +---- kubejs/server_scripts/tfg/recipes.food.js | 620 ++++++++++++++++++ kubejs/server_scripts/tfg/recipes.js | 1 + kubejs/startup_scripts/firmalife/constants.js | 47 +- kubejs/startup_scripts/gtceu/machines.js | 62 -- kubejs/startup_scripts/gtceu/recipe_types.js | 7 - kubejs/startup_scripts/tfc/constants.js | 77 ++- 43 files changed, 725 insertions(+), 656 deletions(-) create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png create mode 100644 kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png create mode 100644 kubejs/server_scripts/tfg/recipes.food.js diff --git a/config/ftbquests/quests/chapters/lv__low_voltage.snbt b/config/ftbquests/quests/chapters/lv__low_voltage.snbt index 425ba06f9..99169a273 100644 --- a/config/ftbquests/quests/chapters/lv__low_voltage.snbt +++ b/config/ftbquests/quests/chapters/lv__low_voltage.snbt @@ -1401,7 +1401,7 @@ subtitle: "{quests.low_voltage.lv_greenhouse.subtitle}" tasks: [{ id: "3EB01235ED295080" - item: "gtceu:greenhouse" + item: "tfg:electric_greenhouse" type: "item" }] title: "{quests.low_voltage.lv_greenhouse.title}" diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png new file mode 100644 index 0000000000000000000000000000000000000000..de1abfe728887db34f3c30f4eb6cbdf84aea2db9 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p<)L71^VC4M4Mu-DVYF~q|E>coS*2NXD5GvD(q$llTRcvoBY z3kJRfRaWJzRWA>IiEUUhf4=^o`OR5}EyIJnOgy(-d$3nL|471GT|>87&m@u+S}xq< zY}~alfZI#+RbJ7#D~uuS*^GCLn(uyP`Yjk{;Id}MH=ciU?T$>&THN)3)i3%>#kUlJ qgevj;z6p*ArIlshESv8##LQe|wm2+s$vL3I7(8A5T-G@yGywpRJzFOL literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9e6ea6739d56cd2a782cfb033e498966bbd628 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p<)L71^VC4M4MaHpq>V~B-+vc#_jL9fG&{r%_vKR-X;xpIX= zP|&2r)6;Y{ssb#I9Xs}azHK$z(?s^5pdg;~^YdC?I~y`&9IhA8{rsGtnV+9Of`@Hi z&Cf$0T3T7pufyu$bdqoe~*+G7R@wgaY34MHN# h42;cfItd9340~>=PuqJ_R|M!H22WQ%mvv4FO#lKnPOty~ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..c20a1c9810d77b74d42b9829129c1c640700e925 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}!0G|+7AiccG_7+HONswPKgTu2MX+REVfk$L90|U1p2s75F#7_hY@_D*A jhG+yQOR#!0G%_+U3NSEcg!HfjWf(kN{an^LB{Ts5DMTI= literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f02154247c2653f7aa4f2c50135ee47eb28d1f9f GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`LY^*;Ar`&K2@jR5HP`wjG`$ox*2vH2iJ9(OeU0NNw?c2ilV0m?WZ5WaU6sYD5c1<3}Xzt-R@P?22@qW z^?F4JK^(^b&2U}UTrQXYHHhPwvMdRLfIQDJ#!yw&-wgmxrxW}A9%BsK?Y0?IO5wUL ztJUf?pePD%w;KRynv&-^gTVl$6iO+M$0OtMnCWzC9hBr3rD004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw0000#P)t-s0000cCMGvGHyaxp zwY9ZELP9$`J6c*=!NI|Tf`UawMV+0UZ*Omrk&%aohh$`AQc_Y4XAcBWG-!}b0001x z@;n6q0004WQchC-y~qKimq#t8?Cu!!W!TPR>n} zpSte7(9iSay+1GA(BBGf@@_s~-j>gTo7eSi{wVlmKCk2K#?M0d{q1@F7p}|pczwMU zy8b#W%Q*I@zWXS|>vX+#<$wJVS3@4~+#c}U9`M{AQ15|?JfPkK6?s6t2P*P_dJk0O z0Z{FMnmoe#D?Lz^2LNyn6dou%P`w984>{01NJ>A%nKwQbdet6;hx8@z25&Z55TWIy!7}x?|*#L<5KB?(gQ)a2YY=> z+#?jivj~qy`ojs2S$a4*FYeYKq{G8W4<|h4+yjIM@Of$5qwsnz_khfUq=%OND0ocV zBaT$+5tn8j=3yRX4-_643#kWU!2|a_Vxd)!0FZjn29kJ$<*!M>hsCZV(U=wj2XT*P z`y;F$*}PB`5%ZFH0Hhw_PY{WDp+-I8`uYA5L4-$A@L{pSBd$Iz1P>x;)g$f}%wrSc z`$y)%_K&!F?hy-(di>1((eC*Y+5u&MRL_g5{*dQwp+ER}TkH>1a=sMyQ_TB=&C4D8 zDK@*GS{@VmgC3DT;`z$^quKl+&fC}@M7!s0)*n>pk5=bJ=F_b`D*FR8%;3<`2T%e5xsbSYAK!z(;sAeBO%tKTzENQS>;t|D);rVfVwBhk2OCAM=1V zJ+jZ=-sb_rL%x5i$0L58F!gYc@_-Yx>LEX`&OB!G$iB~jd7RBde&2<89DE;205Xrn t!+Z1K9)&z+9^9kZ{9zvEVIFEc{sDu)E!TE+{P)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw0000FP)t-s0000DXAcBWG-!}b z0000{d^Z^Y0004WQchC%4AP@#% zJ}v-y0l*8W-2ZOd#F?=RYW)J)E%S@CO?mPHL!yj*bMdDE0pnQ@Umq005QQ-^cn&er zdCoCz_i%NIahpf4dJZwJdN?{7{J>mdT=yvSsK}#A^~h*ajsx+4N0BFDaF^a=a4sCg z9@Ut99*l+C(9=)f3CYmY1fHvP&@)9w9)_OVYSUv@JqA7Y5fA)Wf`>_s9+%2Pvl^Nn z*6Vf7WS`5!(8E|X(BR>)URgYIkq563ZF}_O%V!}m@bIR3{({GXM_4^EgdvXzJ-Rvc z-)G9fv62qX-YXXMJ1DMQ51#b-j4%cF4jDWgxDGt7OYUh$@U)`=1}u{>;1O<^2CN&B zdvpsP?U5nEfyXxL^`ZYhQ-}7?-S_)aKDb_beZ9Jz`QUk<^TG4}mX85^`h4d7>?ofJ z#^e3$((mWe`k~*`e>~>nlY8*I3)^BoxSuJXf$~YepRqs7(XQsxWbDtiAAZQE_QTDp z{cyW#Kisa`54WrK!w()Gc;40v9|`4LFFId)_Ro;h6P?$JxjeJ^#tke+qjZRXzXOqmqNLmOKhPcwgl7Fg7vRK99;L0}m_3LxpeW tOYu;Z=80gXc-~%{mEl>C)vEP1^#jR`R`5Y3R#N}~002ovPDHLkV1oKHE{6aB literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..c20a1c9810d77b74d42b9829129c1c640700e925 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}!0G|+7AiccG_7+HONswPKgTu2MX+REVfk$L90|U1p2s75F#7_hY@_D*A jhG+yQOR#!0G%_+U3NSEcg!HfjWf(kN{an^LB{Ts5DMTI= literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png new file mode 100644 index 0000000000000000000000000000000000000000..678e1b9bb4bd15fb486d5c6d42ef7815d3e13573 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p<)L71^VC4M4M@Uf?hV~B-+vP8iFj-?L|+_>>$|B@vtQ`))a z+1H;d`1U4J#8yLQ!n2*Xw>wtOcyMepKhNEhff{Wa95M|WZtnSY!jdgkRkiKz^79Qp z6%-V8Sj3#mWre4>F)Fl9e}6am$B&=f63r&f2OjswA22aGkj3C(ypdrwqe8*wgUW1m zadHNAAHT^)yg7V3JV8n_!IWW1WUM3KnYK#CG!Cl+FPU;293ps5IWa8aEig50+!Vmr z#<*Yyo2C2{UIB(yMxC$?j3Ueqn!GFyex~MTi5CJcGb9ImX*`nhv+_Y!Lc^maHWwNi a85x|u1_`uCue=NNE`z75pUXO@geCwG9(XnY literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b3c4212bf3cb561d04212b7ed709c8d48a53b0 GIT binary patch literal 683 zcmV;c0#yBpP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5C8xR5CN?ty>$Qp0zgSbK~z{r?U%hu z13?hSN3pOmNMgXVGeM%DSi}@UYKuIAt^kZhh#GOX&8pIbgI=V<@0%Mjb>o+@#z_D zt}V+aI**k$og5u%P8MV@z&~U0`Sl&`#A0-j&B@_g)zF4GAuP+)F zgL0=YdMm60EVi@NDA9JkAgv(|2a*1pn7nv%N$K~RXwir7tu$LL(OY37h=jwm9*>K0 zuiK@SXp|cDy0GoA4szM79O=NZ9oE5KD&?5GpH9n>j>AEvToQX#Q7nZ*w2?^AlW7Xu zj^+Sw8o<9Jio{?cT5GU>JPQxbLd{Y5ew70PJpil&EJjN2zCMeFu^SEtN)KKN1(646 z7~`2?I01aaj5_rDb3+$)QlO^1Eloi>IIbx)_TDW)&Z0UT3}~vJwQf!suzH@UO*ZLdN9rSK19u!5j_}H zFSMIAIU3@cOkBOd2@C50@4dBNuzqaqunssa0G{>$|B@vtQ`))a z+1H;d`1U4J#8yK_UVi?6L*2bRQb9}sf*}QuZ?dt&y4l#lZ2Gxawre(( zkL6ZqXk7@noG{_(^TZc^eNDStICYp=6w;NmrwNE9{rK^ddj?ygz>dP#Y=9isH+f|I z_5}pK0dn>4?Q7m7z%W~a;{Y#%s!)JU^CB)52Puac^QW_~lN9S!*lN&Vs@S-QOPV3` l*vttD4Of=fTxe)yWSDp{vFk{3Z4=P*44$rjF6*2UngA<3eBJ;6 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png new file mode 100644 index 0000000000000000000000000000000000000000..9b68d6c3ee81082d4b3088db2cc40beffa0c1665 GIT binary patch literal 542 zcmV+(0^$9MP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5dZ)S5dnW>Uy%R+0kcU&K~zXf?Upe} z!%z^0Pr*&AR6A5~kPcNGYbk=GlLTiG5y8<>+#KD+(M1tNM4Tl!IXDPXYDUox#X+z` zwPf(j@;on)6Bsy- z(_G%(rHRoY|4xvH=Qldp+920;O`f^Hn>PDc-(h=K~L|W{H$OK*dRfYTA>ygP9`~uclWe+bWD$x3U{NS7Pu{y zIE3kZofyOq2AZ$A(@izk4#{QwD&v+W5{{-72RIiH=o>tmc5#g6`{UZhjo#h8|F0f_XwjTh<8G^z# zwoN5Wq#B_EoDD8-imb%g|IYRsqm&5L0%#pmn42l^839v>jxS{-}jI|t0T0`EdT%j07*qoM6N<$f{g~{W&i*H literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta new file mode 100644 index 000000000..f3da053bc --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 2 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png new file mode 100644 index 0000000000000000000000000000000000000000..3c21545d173450d700ff3c857be6471b14b9deaf GIT binary patch literal 592 zcmV-W0WBZAypCzNuZM;ItrRmTpWrHog9L0;w%)Ui{K<#1fiRQ z1d4XMhMYrsM~iLMZ~4FP@!t1-d^}}19J>6c`u#ot?RJ}B zzu#v(9up3Sky4_nD&cUL@pug2uN}uh)3hV|0KvnDq?AmjQ@l_i1f$Ui+qMxxU|E*G z?GT<&U^1CFo>^I0(f?N9>gwuJCX=~PDwV$Z9TW-$cYAxAxw$!xn|HoE=WgY4 zwpOd1Z7wdpGxzpx0<(Z$AD+3rkBUW?KOGkV>;s0X&^ScU9F2|;DV=4_U5h-# zG)+>e6s=Z^`T2Q&cDr3RHa4>Ldi}HOy7vz5eN_}?%MWOLAHc!O0OwT&fNPh|0T8|Q znD_RTr|awMFM7Qm0OfKysVK^p0+7$=-Da~%B9Wk0t6>-holb{nG)lMI<;~T)*TKa< z2xc9;o^@~vNh$O4c!JKd=05pxgPoln48y=QO>|wyG))qT1g%yJDP>j&;S`I-_&;^v z$s+(5=S1WUY<$!s7HxPOp$y;`j<`RNM_3%5_3 e$z(Fa3Hl8?BqXfeAxFdj0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw0001HP)t-s0002;^77!|;JLZE z*x1<5&(FTTzQ)GJot>Sks;Z}_r;d(}-e?gXV!!mSe6ULaok9Q+NRxGSbyikZh=_<_ zU|?-+Z9YCeQ&UrUd3jAuO-DyZYHDg-U0p&#LOVME}h2H;^OA3=< zLIkA#EOp#Os_R7Ullr6tn#<;#2ZxT(VY(=fDdBKIFAJh^L=WD3Y!I8=@pZX`)W{LJ z+zD>BxA#*7fRB8?3L(a}ZDR!Z%!%-|{@$eE-x=fc7(-Zru;$Emx9#>_e+cJ_^BSoJ zlqFBmV=ukz4_9mCiU>Sbz*=@GI%#1ThFdTCFL($Sc(7=Jhe$m<^zyL@fgMI*Z&ZG-XQbr&E0000a@a2CEqi4B`cIb_Lo1C3pgSLR^8gT+)6)kI6uW)RSFoK#H*>$S;_| z;n|He5GTpo-G!lpRn`N@QS@|i46!(!oS?uW$MU}whwS0gU3h*48#QHg>(J$wHA`5QNGJb3Wn)2B~hYpFvh{$$}~0ve_GpWDwhB-q(8 zz|~04fSC~}qyw@6;_a0ZC}C)97HMh_XJ8TF zEEHxJX5(k$VXZE%pVBH?%_+c=CC16b!?Km1b<(PqX>9`Q3%Oa?53{hbh%hjoo^-a* zkpbpj8as|U_d2m{9amkQg(mx3+ia;;<=thAsp|2*SOg|BOGXS9~6h=?#S=EVy|1-T`8dnLg! zFWl51#=yzKQYgeOgot^OY8Fn;EK%f`U$-F(8uP+5lgspg-ZCCb6X&9a3LQXH*gDdd7gJTOt>i1?wOp zr+`6wa?)w+d1^GjV^oprCc+9z+*KsbG&!2zNAo+|Xnr3`_4{akC$`l|oBEw5eIZbb zm{50P&RoI;J+NU!{T4AN;TG{a&H-u>3vd$dL=ux@XcDW~dbliurH9K&L=TsRlD-6< h0g%Df!=*-F0=>Np%rfXbTwq@Uxf6-VGVs2HH2~4ibA$i@ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f02154247c2653f7aa4f2c50135ee47eb28d1f9f GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`LY^*;Ar`&K2@V8rCKIJ2mwG*6c|DXnx?@tO{A1qmW64WG))7b>+AK(a=9G5 z0~r0KTS8S;0Ib(*O}-T}ilP|U>qvE7Ns=VlcDwa%i5<@8 zGXR^-W;jqvWnb^FZIUF}XxLvc?+PIVrL3oLhXVh_oj_erccJrtzCE`eFV3WYn8SVk wDK7LGE2aKS>O1p=5F8m{PALqQ!3fj@@_-PC{D3t2f%65ELX{rl)?hH`1L2-vRK?x32BlE3#~miV zRF@*?A{k+$*YSA7 z>2yLAMaZ)3u2-O)Xsyf1WRf)bdcC#)uv)EL-)^_Fhr+<8}(Y`<3 z+s#90Ip^gd2SkKV`8Rop3wMQD>zhe!xRVq`;cPFL%cQ^kAMgV%SCgr7>V``I0000< KMNUMnLSTZep`r!= literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png new file mode 100644 index 0000000000000000000000000000000000000000..1161e23a981427087869a2d3f725bace3a7a05d7 GIT binary patch literal 361 zcmV-v0ha!WP)>FViD(A&<3_zA;T5=kuXxPZGr+kovPkw6C9px9+;iI+69USQp)8j1JLbumAUJ> z9)R!r_ca13<#Oxt8lnwOZk~8I-njdG{L|!8f|RlZ4_gkW4;Na}jN) zy7olmsQ>G_xE)ON{x==^s0mLcs$ZR<3I5YI464Hh7*}?00000NkvXX Hu0mjfP)43f literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfbd1acc014757ea3aaa9b716112032ec4ab2db GIT binary patch literal 250 zcmVUKjTjqfiK1R>{U^BM^r$hNFKr0^g`PA1SUt{e!4?1Q6`~=& zqv7%j(O_nW2FKi8q31ut@g@Cr#+);;YOTDf9~%D>?&kq}D*ylh07*qoM6N<$f-ysD A1poj5 literal 0 HcmV?d00001 diff --git a/kubejs/client_scripts/tooltips.js b/kubejs/client_scripts/tooltips.js index 9cbfe6003..213334b1a 100644 --- a/kubejs/client_scripts/tooltips.js +++ b/kubejs/client_scripts/tooltips.js @@ -27,10 +27,9 @@ const registerTooltips = (event) => event.addAdvanced(['create:blaze_burner'], (item, advanced, text) => { text.add(1, text.of('§cSuperheat§r with Coke, Anthracite, or Flawless and Exquisite coal gems.')) }) - event.addAdvanced(['gtceu:greenhouse'], (item, advanced, text) => { + event.addAdvanced(['tfg:electric_greenhouse'], (item, advanced, text) => { text.add(1, text.of('This machine has a §2Perfect Overclock§r!')), - text.add(2, text.of('Currently, due to a bug, sometimes outputs rotten food.')) - text.add(3, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) + text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) }) event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => { text.add(1, text.of('Artificial enviroment to simulate the Nether.')), diff --git a/kubejs/server_scripts/firmalife/recipes.js b/kubejs/server_scripts/firmalife/recipes.js index 38e8f5165..a9adeb1a3 100644 --- a/kubejs/server_scripts/firmalife/recipes.js +++ b/kubejs/server_scripts/firmalife/recipes.js @@ -446,276 +446,6 @@ const registerFirmaLifeRecipes = (event) => { //#endregion - //#region Рецепты муки - - global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.macerator(`tfg:${element.name}`) - .itemInputs(element.input) - .itemOutputs(element.output) - .duration(200) - .EUt(2) - }) - - //#endregion - - //#region Рецепты теста - - global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.mixer(element.name) - .itemInputs(element.input, '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yeast_starter', 100)) - .itemOutputs(element.output) - .duration(300) - .EUt(16) - .circuit(2) - }) - - //#endregion - - //#region Рецепты плоского хлеба - - global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - //#endregion - - //#region Смешивание в миске - - // Тесто для пиццы - event.recipes.gtceu.mixer('firmalife:food/pizza_dough_olive_oil') - .itemInputs('firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt') - .inputFluids(Fluid.of('tfc:olive_oil', 1000)) - .itemOutputs('4x firmalife:food/pizza_dough') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/pizza_dough_soybean_oil') - .itemInputs('firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt') - .inputFluids(Fluid.of('firmalife:soybean_oil', 1000)) - .itemOutputs('4x firmalife:food/pizza_dough') - .duration(300) - .EUt(16) - - // Vanilla Ice Cream - event.recipes.gtceu.mixer('firmalife:food/vanilla_ice_cream') - .itemInputs('firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla') - .inputFluids(Fluid.of('firmalife:cream', 1000)) - .itemOutputs('2x firmalife:food/vanilla_ice_cream') - .duration(300) - .EUt(16) - - // Pumpkin Pie Dough - event.recipes.gtceu.mixer('firmalife:food/pumpkin_pie_dough') - .itemInputs('#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour') - .inputFluids(Fluid.of('minecraft:water', 1000)) - .itemOutputs('firmalife:food/pumpkin_pie_dough') - .duration(300) - .EUt(16) - .circuit(2) - - // Butter - event.recipes.gtceu.mixer('firmalife:food/butter') - .itemInputs('tfc:powder/salt') - .inputFluids(Fluid.of('firmalife:cream', 1000)) - .itemOutputs('firmalife:food/butter') - .duration(300) - .EUt(16) - - // Pie Dough - event.recipes.gtceu.mixer('firmalife:food/pie_dough') - .itemInputs('#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour') - .inputFluids(Fluid.of('minecraft:water', 1000)) - .itemOutputs('firmalife:food/pie_dough') - .duration(300) - .EUt(16) - .circuit(2) - - // Cookie Dough - event.recipes.gtceu.mixer('firmalife:food/cookie_dough') - .itemInputs('#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour', '#forge:eggs', 'firmalife:spice/vanilla') - .itemOutputs('4x firmalife:food/cookie_dough') - .duration(300) - .EUt(16) - - // Hardtack Dough - event.recipes.gtceu.mixer('firmalife:food/hardtack_dough') - .itemInputs('tfc:powder/salt', '#tfc:foods/flour') - .inputFluids(Fluid.of('minecraft:water', 1000)) - .itemOutputs('4x firmalife:food/hardtack_dough') - .duration(300) - .EUt(16) - .circuit(2) - - // Yeast starter - event.recipes.gtceu.mixer('firmalife:yeast_starter') - .inputFluids(Fluid.of('firmalife:yeast_starter', 100)) - .itemInputs('#tfc:foods/flour') - .outputFluids(Fluid.of('firmalife:yeast_starter', 600)) - .duration(1200) - .EUt(8) - .circuit(1) - - // Cocoa Powder - event.recipes.gtceu.macerator('firmalife:food/cocoa_powder') - .itemInputs('gtceu:cocoa_dust') - .itemOutputs('4x firmalife:food/cocoa_powder') - .duration(100) - .EUt(2) - - event.recipes.tfc.quern('4x firmalife:food/cocoa_powder', 'gtceu:cocoa_dust') - .id(`tfg:quern/cocoa_powder`) - - event.recipes.tfc.quern('gtceu:cocoa_dust', 'firmalife:food/roasted_cocoa_beans') - .id('tfg:quern/cocoa_dust'); - - // Chocolate Ice Cream - event.recipes.gtceu.mixer('firmalife:food/chocolate_ice_cream') - .itemInputs('firmalife:food/vanilla_ice_cream') - .inputFluids(Fluid.of('firmalife:chocolate', 1000)) - .itemOutputs('firmalife:food/chocolate_ice_cream') - .duration(300) - .EUt(16) - - // White Chocolate Blend - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('minecraft:milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/yak_milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/goat_milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/coconut_milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:coconut_milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.smelting('firmalife:food/white_chocolate', 'firmalife:food/white_chocolate_blend') - - // Dark Chocolate Blend - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('minecraft:milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/yak_milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/goat_milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/coconut_milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:coconut_milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - event.smelting('firmalife:food/dark_chocolate', 'firmalife:food/dark_chocolate_blend') - - // Milk Chocolate Blend - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('minecraft:milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/yak_milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/goat_milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/coconut_milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:coconut_milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.smelting('firmalife:food/milk_chocolate', 'firmalife:food/milk_chocolate_blend') - - // Strawberry Ice Cream - event.recipes.gtceu.mixer('firmalife:food/strawberry_ice_cream') - .itemInputs('firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry') - .itemOutputs('firmalife:food/strawberry_ice_cream') - .duration(300) - .EUt(16) - - // Hardtack Dough - event.recipes.gtceu.mixer('firmalife:food/chocolate_chip_cookie_dough') - .itemInputs('4x firmalife:food/cookie_dough', '#firmalife:chocolate_blends') - .itemOutputs('4x firmalife:food/chocolate_chip_cookie_dough') - .duration(300) - .EUt(16) - - //#endregion - - //#region Обжарка некоторой еды - - // Cooked Pizza - event.smelting('firmalife:food/cooked_pizza', 'firmalife:food/raw_pizza') - - // Taco Shell - event.smelting('firmalife:food/taco_shell', 'firmalife:food/corn_tortilla') - - // Sugar Cookie - event.smelting('firmalife:food/sugar_cookie', 'firmalife:food/cookie_dough') - - // Chocolate Chip Cookie - event.smelting('firmalife:food/chocolate_chip_cookie', 'firmalife:food/chocolate_chip_cookie_dough') - - // Hardtack - event.smelting('firmalife:food/hardtack', 'firmalife:food/hardtack_dough') - - // Cooked Pie - event.smelting('firmalife:food/cooked_pie', 'firmalife:food/filled_pie') - - // Roasted Cocoa Beans - event.smelting('firmalife:food/roasted_cocoa_beans', 'firmalife:food/cocoa_beans') - - // Pumpkin Pie - event.smelting('minecraft:pumpkin_pie', 'firmalife:food/raw_pumpkin_pie') - - //#endregion - //#region Sticky Resin by Vat event.recipes.firmalife.vat() @@ -751,28 +481,6 @@ const registerFirmaLifeRecipes = (event) => { // #endregion - // #region Smashed food - - event.recipes.gtceu.forge_hammer('firmalife:soybean_paste') - .itemInputs('firmalife:food/dehydrated_soybeans') - .itemOutputs('firmalife:food/soybean_paste') - .duration(20) - .EUt(7) - - event.recipes.gtceu.forge_hammer('firmalife:red_grapes') - .itemInputs('firmalife:food/red_grapes') - .itemOutputs('firmalife:food/smashed_red_grapes') - .duration(20) - .EUt(7) - - event.recipes.gtceu.forge_hammer('firmalife:white_grapes') - .itemInputs('firmalife:food/white_grapes') - .itemOutputs('firmalife:food/smashed_white_grapes') - .duration(20) - .EUt(7) - - // #endregion - // #region Drying mat alternatives event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/leafy_kelp' }).id('tfg:shaped/drying_mat_leafy_kelp') @@ -787,13 +495,4 @@ const registerFirmaLifeRecipes = (event) => { .circuit(5) .EUt(GTValues.VA[GTValues.ULV]) .duration(200) - - event.smelting('firmalife:food/dehydrated_soybeans', 'tfc:food/soybean') - - event.recipes.gtceu.fermenter('soybean_oil') - .itemInputs('firmalife:food/soybean_paste') - .inputFluids(Fluid.of('minecraft:water', 100)) - .outputFluids(Fluid.of('firmalife:soybean_oil', 250)) - .EUt(GTValues.VA[GTValues.ULV]) - .duration(600) } diff --git a/kubejs/server_scripts/gregtech/recipes.machines.js b/kubejs/server_scripts/gregtech/recipes.machines.js index 83c352ad9..7e90107f4 100644 --- a/kubejs/server_scripts/gregtech/recipes.machines.js +++ b/kubejs/server_scripts/gregtech/recipes.machines.js @@ -744,18 +744,6 @@ function registerGTCEuMachineRecipes(event) { // #endregion - // Контроллер теплицы - event.shaped('gtceu:greenhouse', [ - 'ABA', - 'CDC', - 'BCB' - ], { - A: '#gtceu:circuits/mv', - B: 'gtceu:copper_single_cable', - C: 'tfc:compost', - D: 'gtceu:solid_machine_casing' - }).id('tfg:shaped/greenhouse') - // Drums const DRUMS_AND_CRATES = [ 'bismuth_bronze', diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index d23cb4aad..064774d05 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -34,44 +34,6 @@ const registerTFCRecipes = (event) => { //#endregion - //#region Рецепты зерен - - global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS.forEach(element => { - - event.recipes.gtceu.macerator(`tfg:${element.name}`) - .itemInputs(element.input) - .itemOutputs(element.output) - .chancedOutput('tfc:straw', 7000, 500) - .duration(200) - .EUt(2) - - event.recipes.tfc.quern(element.output, element.input) - .id(`tfg:quern/${element.name}`) - }) - - //#endregion - - //#region Рецепты муки - - global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.macerator(`tfg:${element.name}`) - .itemInputs(element.input) - .itemOutputs(element.output) - .duration(200) - .EUt(2) - }) - - //#endregion - - //#region Рецепты обжарки мяса - - global.TFC_FURNACE_MEAT_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - //#endregion - //#region Рецепты обжарки форм global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { @@ -126,15 +88,6 @@ const registerTFCRecipes = (event) => { //#endregion - //#region Рецепты хлеба - - global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - //#endregion - event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') diff --git a/kubejs/server_scripts/tfc/recipes.machines.js b/kubejs/server_scripts/tfc/recipes.machines.js index ac2370124..44df72c83 100644 --- a/kubejs/server_scripts/tfc/recipes.machines.js +++ b/kubejs/server_scripts/tfc/recipes.machines.js @@ -117,20 +117,6 @@ function registerTFCMachineRecipes(event) { .duration(3200) .EUt(16) - //#region Рецепты плоского теста - - global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.mixer(element.name) - .itemInputs(element.input) - .inputFluids(Fluid.of('minecraft:water', 100)) - .itemOutputs(element.output) - .duration(300) - .EUt(16) - .circuit(3) - }) - - //#endregion - //#region Молды в ассемблере for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { @@ -174,158 +160,9 @@ function registerTFCMachineRecipes(event) { .duration(2400) .EUt(16) - // Curdled milk - event.recipes.gtceu.fermenter('tfg:fermenter/curdled_milk') - .inputFluids(Fluid.of('minecraft:milk', 2000)) - .itemInputs('firmalife:rennet') - .outputFluids(Fluid.of('tfc:curdled_milk', 2000)) - .duration(2400) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/curdled_yak_milk') - .inputFluids(Fluid.of('firmalife:yak_milk', 2000)) - .itemInputs('firmalife:rennet') - .outputFluids(Fluid.of('firmalife:curdled_yak_milk', 2000)) - .duration(2400) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/curdled_goat_milk') - .inputFluids(Fluid.of('firmalife:goat_milk', 2000)) - .itemInputs('firmalife:rennet') - .outputFluids(Fluid.of('firmalife:curdled_goat_milk', 2000)) - .duration(2400) - .EUt(16) - - //Curds - event.recipes.gtceu.fermenter('tfg:fermenter/milk_curd') - .inputFluids(Fluid.of('tfc:curdled_milk', 1000)) - .itemOutputs('firmalife:food/milk_curd') - .duration(1200) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/yak_curd') - .inputFluids(Fluid.of('firmalife:curdled_yak_milk', 1000)) - .itemOutputs('firmalife:food/yak_curd') - .duration(1200) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/goat_curd') - .inputFluids(Fluid.of('firmalife:curdled_goat_milk', 1000)) - .itemOutputs('firmalife:food/goat_curd') - .duration(1200) - .EUt(16) - - // Cheese wheels - event.recipes.gtceu.fermenter('tfg:fermenter/gouda_wheel') - .inputFluids(Fluid.of('tfc:salt_water', 750)) - .itemInputs('3x firmalife:food/milk_curd') - .itemOutputs('firmalife:gouda_wheel') - .duration(12000) - .EUt(24) - - event.recipes.gtceu.fermenter('tfg:fermenter/shosha_wheel') - .inputFluids(Fluid.of('tfc:salt_water', 750)) - .itemInputs('3x firmalife:food/yak_curd') - .itemOutputs('firmalife:shosha_wheel') - .duration(12000) - .EUt(24) - - event.recipes.gtceu.fermenter('tfg:fermenter/feta_wheel') - .inputFluids(Fluid.of('tfc:salt_water', 750)) - .itemInputs('3x firmalife:food/goat_curd') - .itemOutputs('firmalife:feta_wheel') - .duration(12000) - .EUt(24) - - // Cutting - event.recipes.gtceu.cutter('tfg:cutter/gouda') - .itemInputs('firmalife:gouda_wheel') - .itemOutputs('4x firmalife:food/gouda') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/shosha') - .itemInputs('firmalife:shosha_wheel') - .itemOutputs('4x firmalife:food/shosha') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/feta') - .itemInputs('firmalife:feta_wheel') - .itemOutputs('4x firmalife:food/feta') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/cheddar') - .itemInputs('firmalife:cheddar_wheel') - .itemOutputs('4x firmalife:food/cheddar') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/chevre') - .itemInputs('firmalife:chevre_wheel') - .itemOutputs('4x firmalife:food/chevre') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/rajya_metok') - .itemInputs('firmalife:rajya_metok_wheel') - .itemOutputs('4x firmalife:food/rajya_metok') - .duration(40) - .EUt(7) - - // Misc - global.TFC_MILKS.forEach(milk => { - event.recipes.gtceu.fermenter(`tfg:fermenter/cream_from_${milk.id.replace(':', '_')}`) - .inputFluids(Fluid.of(milk.id, 1000)) - .outputFluids(Fluid.of('firmalife:cream')) - .circuit(6) - .duration(1200) - .EUt(24) - }) - - event.recipes.gtceu.mixer('tfg:mixer/tomato_sauce') - .itemInputs('firmalife:food/tomato_sauce_mix') - .inputFluids(Fluid.of('minecraft:water', 200)) - .itemOutputs('firmalife:food/tomato_sauce') - .duration(200) - .EUt(24) - //#endregion - //#region Оливки - - event.recipes.gtceu.macerator(`tfg:tfc/olive_paste`) - .itemInputs('tfc:food/olive') - .itemOutputs('2x tfc:olive_paste') - .duration(60) - .EUt(2) - - event.recipes.gtceu.mixer('tfg:tfc/olive_oil_water') - .inputFluids(Fluid.of('water', 200)) - .itemInputs('1x tfc:olive_paste') - .outputFluids(Fluid.of('tfc:olive_oil_water', 200)) - .duration(200) - .EUt(28) - - event.recipes.gtceu.distillery('tfg:tfc/olive_oil') - .inputFluids(Fluid.of('tfc:olive_oil_water', 250)) - .outputFluids(Fluid.of('tfc:olive_oil', 50)) - .duration(600) - .EUt(28) - - //#endregion - - // Vinegar and Brine - - global.TFC_ALCOHOL.forEach(alcohol => { - event.recipes.gtceu.fermenter(`tfg:tfc/vinegar/${alcohol.id.replace(':', '_')}`) - .itemInputs('#tfc:foods/fruits') - .inputFluids(Fluid.of(alcohol.id, 250)) - .outputFluids(Fluid.of('tfc:vinegar', 250)) - .duration(600) - .EUt(28) - }) + // Brine event.recipes.gtceu.mixer('tfg:tfc/brine') .inputFluids(Fluid.of('tfc:salt_water', 900)) diff --git a/kubejs/server_scripts/tfg/recipes.food.js b/kubejs/server_scripts/tfg/recipes.food.js new file mode 100644 index 000000000..0a8fa9c76 --- /dev/null +++ b/kubejs/server_scripts/tfg/recipes.food.js @@ -0,0 +1,620 @@ +// priority: 0 +/** + * @param {Internal.RecipesEventJS} event + */ +function registerTFGFoodRecipes(event) { + + const $ISPRecipeLogic = Java.loadClass("su.terrafirmagreg.core.common.data.machines.ISPOutputRecipeLogic") + const $SizedIngredient = Java.loadClass("com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient") + const Sized = (ing, amount) => $SizedIngredient.create(ing, amount) + + /** + * @typedef {Object} FoodRecipeData + * @property {number?} circuit + * @property {Internal.GTRecipeComponents$FluidIngredientJS_[]?} fluidInputs + * @property {Internal.FluidStackJS[]?} fluidOutputs + * @property {(string | [string, Internal.Ingredient])[]?} itemInputs + * @property {string[]?} itemOutputs Ingredient outputs - first output is replaced with ISP output if defined + * @property {Internal.ItemStackProviderJS?} itemOutputProvider ItemStackProvider which provides the recipe output. + * + * **NOTE:** TFC Ingredients do not support item counts higher than 1. Do `Sized(TFCIngredient('item:item'), count)` instead of `TFCIngredient('[count]x item:item')` + */ + + //#region Helper funcs + + /** + * @param {"food_oven"|"food_processor"} type + * @param {string} id + * @param {string} duration + * @param {string} EUt + * @param {FoodRecipeData} data + */ + function registerFoodRecipe(type, id, duration, EUt, data) { + if (data.itemInputs === undefined) data.itemInputs = [] + if (data.itemOutputs === undefined) data.itemOutputs = [] + if (data.fluidInputs === undefined) data.fluidInputs = [] + if (data.fluidOutputs === undefined) data.fluidOutputs = [] + let gregInputs = [], inputs= [] + let outputFirstIndex = (data.itemOutputProvider === undefined) ? 0 : 1 + data.itemInputs.forEach(item => { + if (typeof item === "string") { + gregInputs.push(item) + + const match = item.match(/^(\d+)\s*x\s*/i); + let count = 1 + if (match) { + count = parseInt(match[1]); + item = item.slice(match[0].length); + } + inputs.push($SizedIngredient.create(item, count)) + } else { + gregInputs.push(item[0]) + inputs.push(item[1]) + } + }) + + $ISPRecipeLogic.RegisterRecipeData(type + "/" + id, inputs, (data.itemOutputProvider === undefined) ? null : data.itemOutputProvider.asCanonClass(), data.itemOutputs.slice(outputFirstIndex).map(i => Item.of(i))) + + let r = event.recipes.gtceu[type](id) + .duration(duration) + .EUt(EUt) + + if (data.circuit) r.circuit(data.circuit) + if (data.itemOutputs.length > 0) r.itemOutputs(data.itemOutputs) + if (data.itemInputs.length > 0) r.itemInputs(data.itemInputs) + if (data.fluidInputs.length > 0) r.inputFluids(data.fluidInputs); + if (data.fluidOutputs.length > 0) r.outputFluids(data.fluidOutputs); + } + + /** + * @param {string} id + * @param {number} duration + * @param {EUt} EUt + * @param {FoodRecipeData} data + */ + const processorRecipe = (id, duration, EUt, data) => registerFoodRecipe("food_processor", id, duration, EUt, data) + + /** + * @param {string} id + * @param {string} input + * @param {string} out + * @param {Internal.FluidIngredient?} fluid + * @param {boolean?} isFirmaDynamic + */ + function cookingRecipe(id, input, out, fluid, isFirmaDynamic) { + registerFoodRecipe("food_oven", id, 300, 32, { + itemInputs: [input], + itemOutputs: [out], + fluidInputs: (fluid === undefined) ? [] : [fluid], + itemInputs: [input], + itemOutputProvider: (isFirmaDynamic) ? TFC.isp.of(out).firmaLifeCopyDynamicFood() : TFC.isp.of(out).copyFood().addTrait("firmalife:oven_baked") + }) + } + + //#endregion + + //#region ================= Meat cooking ================= + + global.TFC_MEAT_RECIPE_COMPONENTS.forEach(item => { + cookingRecipe(item.name, item.input, item.output) + }) + + //#endregion + //#region ================= TFC Grains ================= + + global.TFC_GRAINS.forEach(grain => { + + // Raw crop to grain + processorRecipe(`${grain}_grain`, 100, 8, { + itemInputs: [`tfc:food/${grain}`], + itemOutputs: [`tfc:food/${grain}_grain`], + itemOutputProvider: TFC.isp.of(`tfc:food/${grain}_grain`).copyOldestFood() + }) + + // Grain to flour + processorRecipe(`${grain}_flour`, 100, 8, { + itemInputs: [`tfc:food/${grain}_grain`], + itemOutputs: [`2x tfc:food/${grain}_flour`], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_flour`).copyOldestFood() + }) + + // Flatbread dough + processorRecipe(`${grain}_flatbread_dough`, 300, 8, { + itemInputs: [`tfc:food/${grain}_flour`], + itemOutputs: [`2x tfc:food/${grain}_dough`], + fluidInputs: [Fluid.of('minecraft:water', 100)], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_dough`).copyFood() + }) + + // Firmalife dough + processorRecipe(`${grain}_dough`, 300, 16, { + itemInputs: [`tfc:food/${grain}_flour`, `#tfc:sweetener`], + itemOutputs: [`4x firmalife:food/${grain}_dough`], + fluidInputs: [Fluid.of('firmalife:yeast_starter', 200)], + itemOutputProvider: TFC.isp.of(`4x firmalife:food/${grain}_dough`).copyFood() + }) + + // Bread baking + cookingRecipe(`${grain}_flatbread`, `tfc:food/${grain}_dough`, `firmalife:food/${grain}_flatbread`) + cookingRecipe(`${grain}_bread`, `firmalife:food/${grain}_dough`, `tfc:food/${grain}_bread`) + + processorRecipe(`${grain}_bread_slice`, 10, 8, { + circuit: 1, + itemInputs: [`tfc:food/${grain}_bread`], + itemOutputs: [`2x firmalife:food/${grain}_slice`], + itemOutputProvider: TFC.isp.of(`2x firmalife:food/${grain}_slice`).copyOldestFood() + }) + + //Sandwich making + + let breadTypes = [["bread", `tfc:food/${grain}_bread`], ["flatbread", `firmalife:food/${grain}_flatbread`], ["slice", `firmalife:food/${grain}_slice`]] + breadTypes.forEach((type) => { + processorRecipe(`${grain}_${type[0]}_sandwich`, 100, 16, { + circuit: 3, + itemInputs: [`2x ${type[1]}`, "3x #tfc:foods/usable_in_sandwich"], + itemOutputs: [`2x tfc:food/${grain}_bread_sandwich`], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_sandwich`).meal( + (food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [ + (portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5), + (portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8), + ]) + }) + + //Note: Jam needs to be first in the recipe code or else it will consider it as the usable_in_jam_sandwhich ingredients. + processorRecipe(`${grain}_${type[0]}_jam_sandwich`, 100, 16, { + circuit: 4, + itemInputs: [`2x ${type[1]}`, '#tfc:foods/preserves', '2x #tfc:foods/usable_in_jam_sandwich'], + itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, 'tfc:empty_jar'], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal( + (food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [ + (portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5), + (portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8), + ]), + }) + }) + + + }) + + //#endregion + + //#region ================= Firmalife ================= + + global.FIRMALIFE_COOKING_RECIPE_COMPONENTS.forEach(item => { + cookingRecipe(item.name, item.input, item.output, undefined, true) + }) + + //#endregion + //#region ================= Dairy ================= + + global.TFC_CURDS_AND_CHEESES.forEach(item => { + + processorRecipe(`${item.curd}_curd`, 1200, 16, { + itemOutputs: [item.curd], + fluidInputs: [Fluid.of(item.input_fluid, 1000)], + itemOutputProvider: TFC.isp.of(item.curd).resetFood() + }) + + processorRecipe(`${item.cheese1}_cheese_wheel_1`, 8000, 16, { + itemInputs: [`3x ${item.curd}`], + itemOutputs: [`firmalife:${item.cheese1}_wheel`], + fluidInputs: [Fluid.of('tfc:salt_water', 750)], + itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese1}_wheel`).copyOldestFood() + }) + + processorRecipe(`${item.cheese2}_cheese_wheel_2`, 1000, 16, { + circuit: 2, + itemInputs: [`3x ${item.curd}`, `6x tfc:powder/salt`], + itemOutputs: [`firmalife:${item.cheese2}_wheel`], + itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese2}_wheel`).copyOldestFood() + }) + + processorRecipe(`${item.cheese1}_cheese_cutting_1`, 100, 8, { + itemInputs: [`firmalife:${item.cheese1}_wheel`], + itemOutputs: [`4x firmalife:food/${item.cheese1}`], + itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese1}`).copyOldestFood() + }) + + processorRecipe(`${item.cheese2}_cheese_cutting_2`, 100, 8, { + itemInputs: [`firmalife:${item.cheese2}_wheel`], + itemOutputs: [`4x firmalife:food/${item.cheese2}`], + itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese2}`).copyOldestFood() + }) + + }) + + global.TFC_MILKS.forEach(milk => { + const milkID = milk.id.split(':')[1]; + + processorRecipe(`white_chocolate_blend_from_${milkID}`, 300, 16, { + circuit: 3, + itemInputs: ['2x firmalife:food/cocoa_butter', '#tfc:sweetener'], + itemOutputs: ['2x firmalife:food/white_chocolate_blend'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of('2x firmalife:food/white_chocolate_blend').resetFood(), + }) + + processorRecipe(`dark_chocolate_blend_from_${milkID}`, 300, 16, { + circuit: 2, + itemInputs: ['2x firmalife:food/cocoa_powder', '#tfc:sweetener'], + itemOutputs: ['2x firmalife:food/dark_chocolate_blend'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of('2x firmalife:food/dark_chocolate_blend').resetFood(), + }) + + processorRecipe(`milk_chocolate_blend_from_${milkID}`, 300, 16, { + circuit: 1, + itemInputs: ['firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener'], + itemOutputs: ['2x firmalife:food/milk_chocolate_blend'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of('2x firmalife:food/milk_chocolate_blend').resetFood(), + }) + + processorRecipe(`egg_noodles_from_${milkID}`, 50, 8, { + circuit: 6, + itemInputs: ["#tfc:foods/flour", 'tfc:powder/salt', '#forge:eggs'], + itemOutputs: ['firmalife:food/raw_egg_noodles'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_egg_noodles").copyOldestFood(), + }) + + processorRecipe(`rice_noodles_from_${milkID}`, 50, 8, { + itemInputs: ["tfc:food/rice_flour", 'tfc:food/maize_flour', 'tfc:powder/salt'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputs: ['2x firmalife:food/raw_rice_noodles'], + itemOutputProvider: TFC.isp.of('2x firmalife:food/raw_rice_noodles').copyOldestFood() + }) + + // No ISP needed here + event.recipes.gtceu.fermenter(`tfg:fermenter/cream_from_${milkID}`) + .inputFluids(Fluid.of(milk.id, 1000)) + .outputFluids(Fluid.of('firmalife:cream')) + .circuit(6) + .duration(1200) + .EUt(24) + }) + + //#endregion + + //#region ================= Food preservation ================= + + const smoking_meats = Ingredient.of('#tfc:foods/raw_meats').itemIds; + const brining_veg = Ingredient.of('#firmalife:foods/pizza_ingredients').itemIds; + + const brining_ingredients = smoking_meats.concat(brining_veg); + + brining_ingredients.forEach(item => { + processorRecipe(`${item}/brining`, 200, 16, { + circuit: 5, + itemInputs: [item], + itemOutputs: [item], + fluidInputs: [Fluid.of("tfc:brine", 100)], + itemOutputProvider: TFC.isp.of(item).copyOldestFood().addTrait('tfc:brined') + }) + }) + + smoking_meats.forEach(item => { + processorRecipe(`${item}/smoking`, 200, 16, { + circuit: 6, + itemInputs: [[item, TFC.ingredient.lacksTrait(item, "firmalife:smoked")]], + itemOutputs: [item], + fluidInputs: [Fluid.of('gtceu:wood_gas', 50)], + itemOutputProvider: TFC.isp.of(item).copyOldestFood().addTrait("firmalife:smoked") + }) + }) + + //#endregion + + //#region ================= Misc ================= + + global.TFC_JAMS.forEach(name => { + processorRecipe(`${name}_jam`, 200, 8, { + circuit: 15, + itemInputs: [`4x tfc:food/${name}`, "#tfg:sugars", "#tfc:empty_jar_with_lid"], + itemOutputs: [`4x tfc:jar/${name}`], + fluidInputs: [Fluid.of("minecraft:water", 100)], + itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}`).copyFood() + }) + + processorRecipe(`${name}_jam_no_seal`, 200, 8, { + circuit: 16, + itemInputs: [`4x tfc:food/${name}`, "#tfg:sugars", "tfc:empty_jar"], + itemOutputs: [`4x tfc:jar/${name}_unsealed`], + fluidInputs: [Fluid.of("minecraft:water", 100)], + itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}_unsealed`).copyFood() + }) + }) + + cookingRecipe("pasta", "firmalife:food/raw_egg_noodles", "firmalife:food/cooked_pasta", Fluid.of("minecraft:water", 100)) + cookingRecipe("corn_tortilla", "firmalife:food/masa", "firmalife:food/corn_tortilla") + cookingRecipe("boiled_egg", "#firmalife:foods/raw_eggs", "tfc:food/boiled_egg", Fluid.of("minecraft:water", 200)) + cookingRecipe("cooked_rice", "tfc:food/rice_grain", "tfc:food/cooked_rice", Fluid.of("minecraft:water", 200)) + + processorRecipe("pasta_tomato_sauce", 60, 8, { + itemInputs: ["firmalife:food/cooked_pasta", "firmalife:food/tomato_sauce"], + itemOutputs: ["firmalife:food/pasta_with_tomato_sauce"], + itemOutputProvider: TFC.isp.of('firmalife:food/pasta_with_tomato_sauce').copyFood() + }) + + processorRecipe('firmalife_masa', 300, 2, { + itemInputs: ["firmalife:food/masa_flour"], + itemOutputs: ["2x firmalife:food/masa"], + fluidInputs: [Fluid.of('minecraft:water', 100)], + itemOutputProvider: TFC.isp.of("2x firmalife:food/masa").copyFood() + }) + + processorRecipe("tortilla_chips", 40, 16, { + itemInputs: ["firmalife:food/taco_shell", "tfc:powder/salt"], + itemOutputs: ["firmalife:food/tortilla_chips"], + itemOutputProvider: TFC.isp.of("firmalife:food/tortilla_chips").copyFood() + }) + + processorRecipe("tomato_sauce_mix", 600, 8, { + itemInputs: ['tfc:food/tomato', 'tfc:powder/salt', 'tfc:food/garlic'], + itemOutputs: ['5x firmalife:food/tomato_sauce_mix'], + itemOutputProvider: TFC.isp.of('5x firmalife:food/tomato_sauce_mix').copyOldestFood(), + }) + + processorRecipe("tomato_sauce_from_mix", 200, 8, { + itemInputs: ['firmalife:food/tomato_sauce_mix'], + itemOutputs: ['firmalife:food/tomato_sauce'], + fluidInputs: [Fluid.of('minecraft:water', 200)], + itemOutputProvider: TFC.isp.of('firmalife:food/tomato_sauce').copyOldestFood(), + }) + + processorRecipe("olive_paste", 60, 8, { + itemInputs: ['tfc:food/olive'], + itemOutputs: ['2x tfc:olive_paste'], + itemOutputProvider: TFC.isp.of('2x tfc:olive_paste'), + }) + + processorRecipe("soybean_paste", 60, 8, { + itemInputs: ['firmalife:food/dehydrated_soybeans'], + itemOutputs: ['firmalife:food/soybean_paste'], + itemOutputProvider: TFC.isp.of('firmalife:food/soybean_paste').copyOldestFood(), + }) + + // Vinegar + global.TFC_ALCOHOL.forEach(alcohol => { + let name = `vinegar_${alcohol.id.replace(':', '_')}`; + + processorRecipe(name, 600, 32, { + circuit: 5, + itemInputs: ['#tfc:foods/fruits'], + fluidInputs: [Fluid.of(alcohol.id, 250)], + fluidOutputs: [Fluid.of('tfc:vinegar', 250)], + }) + + }) + + processorRecipe("pizza_no_extra", 600, 16, { + itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese"], + itemOutputs: ["firmalife:food/raw_pizza"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal( + (food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5), + [(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)] + ) + }) + + processorRecipe("pizza_1_extra", 600, 16, { + circuit: 1, + itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "#firmalife:foods/pizza_ingredients"], + itemOutputs: ["firmalife:food/raw_pizza"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal( + (food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5), + [(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)] + ) + }) + + processorRecipe("pizza_2_extra", 600, 16, { + circuit: 2, + itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "2x #firmalife:foods/pizza_ingredients"], + itemOutputs: ["firmalife:food/raw_pizza"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal( + (food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5), + [(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)] + ) + }) + + processorRecipe("pizza_dough_olive_oil", 300, 16, { + itemInputs: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'], + itemOutputs: ['4x firmalife:food/pizza_dough'], + fluidInputs: [Fluid.of('tfc:olive_oil', 1000)], + itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood() + }) + + processorRecipe("pizza_dough_soybean_oil", 300, 16, { + itemInputs: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'], + itemOutputs: ['4x firmalife:food/pizza_dough'], + fluidInputs: [Fluid.of('firmalife:soybean_oil', 1000)], + itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood() + }) + + processorRecipe("vanilla_ice_cream", 300, 16, { + itemInputs: ['firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla'], + itemOutputs: ['2x firmalife:food/vanilla_ice_cream'], + fluidInputs: [Fluid.of('firmalife:cream', 1000)], + itemOutputProvider: TFC.isp.of("2x firmalife:food/vanilla_ice_cream").resetFood() + }) + + processorRecipe("chocolate_ice_cream", 300, 16, { + itemInputs: ['firmalife:food/vanilla_ice_cream'], + itemOutputs: ['firmalife:food/chocolate_ice_cream'], + fluidInputs: [Fluid.of('firmalife:chocolate', 1000)], + itemOutputProvider: TFC.isp.of("firmalife:food/chocolate_ice_cream").resetFood() + }) + + processorRecipe("strawberry_ice_cream", 300, 16, { + itemInputs: ['firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry'], + itemOutputs: ['firmalife:food/strawberry_ice_cream'], + itemOutputProvider: TFC.isp.of("firmalife:food/strawberry_ice_cream").resetFood() + }) + + processorRecipe("cookie_dough_ice_cream", 300, 16, { + itemInputs: [`firmalife:food/vanilla_ice_cream`, `firmalife:food/chocolate_chip_cookie_dough`], + itemOutputs: [`firmalife:food/cookie_dough_ice_cream`], + itemOutputProvider: TFC.isp.of("firmalife:food/cookie_dough_ice_cream").resetFood() + }) + + processorRecipe("butter", 300, 16, { + itemInputs: ["tfc:powder/salt"], + itemOutputs: ["firmalife:food/butter"], + fluidInputs: [Fluid.of('firmalife:cream', 1000)], + itemOutputProvider: TFC.isp.of('firmalife:food/butter').resetFood() + }) + + processorRecipe("pie_dough", 300, 16, { + circuit: 2, + itemInputs: ['#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour'], + itemOutputs: ['firmalife:food/pie_dough'], + fluidInputs: [Fluid.of('minecraft:water', 1000)], + itemOutputProvider: TFC.isp.of('firmalife:food/pie_dough').copyOldestFood() + }) + + processorRecipe("pumpkin_pie_dough", 300, 16, { + circuit: 2, + itemInputs: ['#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour'], + itemOutputs: ['firmalife:food/pumpkin_pie_dough'], + fluidInputs: [Fluid.of('minecraft:water', 1000)], + itemOutputProvider: TFC.isp.of('firmalife:food/pumpkin_pie_dough').copyOldestFood() + }) + + processorRecipe("raw_pumpkin_pie", 20, 8, { + itemInputs: ["firmalife:food/pumpkin_pie_dough", "firmalife:pie_pan"], + itemOutputs: ["firmalife:raw_pumpkin_pie"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pumpkin_pie").copyFood() + }) + + processorRecipe("cookie_dough", 300, 16, { + itemInputs: ['#tfc:sweetener', '#forge:eggs', 'firmalife:food/butter', '#tfc:foods/flour', "firmalife:spice/vanilla"], + itemOutputs: ['4x firmalife:food/cookie_dough'], + itemOutputProvider: TFC.isp.of('4x firmalife:food/cookie_dough').copyOldestFood() + }) + + processorRecipe("chocolate_chip_cookie_dough", 300, 16, { + itemInputs: ['4x firmalife:food/cookie_dough', '#firmalife:chocolate_blends'], + itemOutputs: ['4x firmalife:food/chocolate_chip_cookie_dough'], + itemOutputProvider: TFC.isp.of('4x firmalife:food/chocolate_chip_cookie_dough').copyOldestFood() + }) + + processorRecipe("hardtack_dough", 300, 16, { + itemInputs: ['tfc:powder/salt', '#tfc:foods/flour'], + itemOutputs: ['4x firmalife:food/hardtack_dough'], + fluidInputs: [Fluid.of('minecraft:water', 1000)], + itemOutputProvider: TFC.isp.of('4x firmalife:food/hardtack_dough').copyOldestFood() + }) + + processorRecipe("yeast_starter", 1200, 8, { + circuit: 1, + fluidInputs: [Fluid.of('firmalife:yeast_starter', 100)], + fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)], + itemInputs: ['#tfc:foods/flour'], + }) + + processorRecipe("yeast_starter_from_water", 7200, 8, { + circuit: 10, + fluidInputs: [Fluid.of('minecraft:water', 100)], + fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)], + itemInputs: ['#tfc:foods/fruits'], + }) + + processorRecipe("cocoa_dust", 100, 4, { + itemInputs: ["firmalife:food/roasted_cocoa_beans"], + itemOutputs: ["gtceu:cocoa_dust"], + itemOutputProvider: TFC.isp.of("gtceu:cocoa_dust") + }) + + processorRecipe("red_grapes", 50, 8, { + itemInputs: ["firmalife:food/red_grapes"], + itemOutputs: ["firmalife:food/smashed_red_grapes"], + itemOutputProvider: TFC.isp.of('firmalife:food/smashed_red_grapes').copyOldestFood() + }) + + processorRecipe("white_grapes", 50, 8, { + itemInputs: ["firmalife:food/white_grapes"], + itemOutputs: ["firmalife:food/smashed_white_grapes"], + itemOutputProvider: TFC.isp.of('firmalife:food/smashed_white_grapes').copyOldestFood() + }) + + processorRecipe("cured_maize", 300, 8, { + itemInputs: ["tfc:food/maize_grain"], + itemOutputs: ["firmalife:food/cured_maize"], + itemOutputProvider: TFC.isp.of('firmalife:food/cured_maize').copyOldestFood() + }) + + processorRecipe("soy_mixture", 300, 8, { + itemInputs: ["tfc:food/soybean", 'tfc:powder/salt'], + itemOutputs: ["firmalife:food/soy_mixture"], + fluidInputs: [Fluid.of('minecraft:water', 50)], + itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyOldestFood(), + + }) + + // These don't need the ISP handling, they're just here to keep all the food recipes together + + event.recipes.gtceu.mixer('tfg:tfc/olive_oil_water') + .inputFluids(Fluid.of('water', 200)) + .itemInputs('1x tfc:olive_paste') + .outputFluids(Fluid.of('tfc:olive_oil_water', 200)) + .duration(200) + .EUt(28) + + event.recipes.gtceu.distillery('tfg:tfc/olive_oil') + .inputFluids(Fluid.of('tfc:olive_oil_water', 250)) + .outputFluids(Fluid.of('tfc:olive_oil', 50)) + .duration(600) + .EUt(28) + + event.recipes.gtceu.fermenter('soybean_oil') + .itemInputs('firmalife:food/soybean_paste') + .inputFluids(Fluid.of('minecraft:water', 100)) + .outputFluids(Fluid.of('firmalife:soybean_oil', 250)) + .EUt(GTValues.VA[GTValues.ULV]) + .duration(600) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_milk') + .inputFluids(Fluid.of('minecraft:milk', 2000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('tfc:curdled_milk', 2000)) + .duration(2400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_yak_milk') + .inputFluids(Fluid.of('firmalife:yak_milk', 2000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('firmalife:curdled_yak_milk', 2000)) + .duration(2400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_goat_milk') + .inputFluids(Fluid.of('firmalife:goat_milk', 2000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('firmalife:curdled_goat_milk', 2000)) + .duration(2400) + .EUt(16) + + // GT cocoa dust compat + event.recipes.gtceu.macerator('firmalife:food/cocoa_powder') + .itemInputs('gtceu:cocoa_dust') + .itemOutputs('4x firmalife:food/cocoa_powder') + .duration(100) + .EUt(2) + + event.recipes.tfc.quern('4x firmalife:food/cocoa_powder', 'gtceu:cocoa_dust') + .id(`tfg:quern/cocoa_powder`) + + event.recipes.tfc.quern('gtceu:cocoa_dust', 'firmalife:food/roasted_cocoa_beans') + .id('tfg:quern/cocoa_dust'); + + //#endregion + + event.replaceInput({id: 'gtceu:shaped/lv_food_processor'}, 'gtceu:lv_electric_piston', 'gtceu:steel_whisk') + event.replaceInput({id: 'gtceu:shaped/mv_food_processor'}, 'gtceu:mv_electric_piston', 'gtceu:aluminium_whisk') + event.replaceInput({id: 'gtceu:shaped/hv_food_processor'}, 'gtceu:hv_electric_piston', 'gtceu:stainless_steel_whisk') + event.replaceInput({id: 'gtceu:shaped/ev_food_processor'}, 'gtceu:ev_electric_piston', 'gtceu:titanium_whisk') + + event.replaceInput({id: 'gtceu:shaped/lv_food_oven'}, 'gtceu:lv_electric_piston', '#tfg:metal_bars') + event.replaceInput({id: 'gtceu:shaped/mv_food_oven'}, 'gtceu:mv_electric_piston', '#tfg:metal_bars') + event.replaceInput({id: 'gtceu:shaped/hv_food_oven'}, 'gtceu:hv_electric_piston', '#tfg:metal_bars') + event.replaceInput({id: 'gtceu:shaped/ev_food_oven'}, 'gtceu:ev_electric_piston', '#tfg:metal_bars') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index eec0f9d35..0f4bc7713 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -14,4 +14,5 @@ const registerTFGRecipes = (event) => { registerTFGSupportRecipes(event) registerTFGFishingNetsRecipes(event) registerTFGConvertingRecipes(event) + registerTFGFoodRecipes(event) } \ No newline at end of file diff --git a/kubejs/startup_scripts/firmalife/constants.js b/kubejs/startup_scripts/firmalife/constants.js index e0e9b6220..6bc9a7428 100644 --- a/kubejs/startup_scripts/firmalife/constants.js +++ b/kubejs/startup_scripts/firmalife/constants.js @@ -84,6 +84,13 @@ global.FIRMALIFE_ORE_MATERIALS = [ 'chromite' ]; +global.FIRMALIFE_JAMS = [ + "fig", + "pineapple", + "red_grapes", + "white_grapes" +] + global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [ { input: 'firmalife:plant/cocoa_sapling', fluid_amount: 8000, output: '3x firmalife:food/cocoa_beans', name: 'cocoa_beans' }, { input: 'firmalife:plant/fig_sapling', fluid_amount: 8000, output: '3x firmalife:food/fig', name: 'fig' }, @@ -94,26 +101,20 @@ global.FIRMALIFE_GREENHOUSE_BERRY_RECIPE_COMPONENTS = [ { input: 'firmalife:plant/nightshade_bush', fluid_amount: 6000, output: '3x firmalife:food/nightshade_berry', name: 'nightshade' }, ]; -global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS = [ - { input: 'firmalife:food/nixtamal', output: '2x firmalife:food/masa_flour', name: 'masa_flour' }, -]; - -global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_flour', output: '4x firmalife:food/barley_dough', name: 'firmalife_barley_dough' }, - { input: 'tfc:food/maize_flour', output: '4x firmalife:food/maize_dough', name: 'firmalife_maize_dough' }, - { input: 'tfc:food/oat_flour', output: '4x firmalife:food/oat_dough', name: 'firmalife_oat_dough' }, - { input: 'tfc:food/rye_flour', output: '4x firmalife:food/rye_dough', name: 'firmalife_rye_dough' }, - { input: 'tfc:food/rice_flour', output: '4x firmalife:food/rice_dough', name: 'firmalife_rice_dough' }, - { input: 'tfc:food/wheat_flour', output: '4x firmalife:food/wheat_dough', name: 'firmalife_wheat_dough' }, - { input: 'firmalife:food/masa_flour', output: '2x firmalife:food/masa', name: 'firmalife_masa' }, -]; - -global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_dough', output: 'firmalife:food/barley_flatbread', name: 'barley_flatbread' }, - { input: 'tfc:food/maize_dough', output: 'firmalife:food/maize_flatbread', name: 'maize_flatbread' }, - { input: 'tfc:food/oat_dough', output: 'firmalife:food/oat_flatbread', name: 'oat_flatbread' }, - { input: 'tfc:food/rye_dough', output: 'firmalife:food/rye_flatbread', name: 'rye_flatbread' }, - { input: 'tfc:food/rice_dough', output: 'firmalife:food/rice_flatbread', name: 'rice_flatbread' }, - { input: 'tfc:food/wheat_dough', output: 'firmalife:food/wheat_flatbread', name: 'wheat_flatbread' }, - { input: 'firmalife:food/masa', output: 'firmalife:food/corn_tortilla', name: 'corn_tortilla' }, -]; +global.FIRMALIFE_COOKING_RECIPE_COMPONENTS = [ + { input: 'firmalife:food/white_chocolate_blend', output: 'firmalife:food/white_chocolate', name: 'white_chocolate' }, + { input: 'firmalife:food/dark_chocolate_blend', output: 'firmalife:food/dark_chocolate', name: 'dark_chocolate' }, + { input: 'firmalife:food/milk_chocolate_blend', output: 'firmalife:food/milk_chocolate', name: 'milk_chocolate' }, + { input: 'firmalife:food/raw_pizza', output: 'firmalife:food/cooked_pizza', name: 'cooked_pizza' }, + { input: 'firmalife:food/corn_tortilla', output: 'firmalife:food/taco_shell', name: 'taco_shell' }, + { input: 'firmalife:food/cookie_dough', output: 'firmalife:food/sugar_cookie', name: 'sugar_cookie' }, + { input: 'firmalife:food/chocolate_chip_cookie_dough', output: 'firmalife:food/chocolate_chip_cookie', name: 'chocolate_chip_cookie' }, + { input: 'firmalife:food/hardtack_dough', output: 'firmalife:food/hardtack', name: 'hardtack' }, + { input: 'firmalife:food/filled_pie', output: 'firmalife:food/cooked_pie', name: 'cooked_pie' }, + { input: 'firmalife:food/cocoa_beans', output: 'firmalife:food/roasted_cocoa_beans', name: 'roasted_cocoa_beans' }, + { input: 'firmalife:food/raw_pumpkin_pie', output: 'minecraft:pumpkin_pie', name: 'pumpkin_pie' }, + { input: 'tfc:food/soybean', output: 'firmalife:food/dehydrated_soybeans', name: 'dehydrated_soybeans' }, + { input: 'firmalife:food/raw_lasagna', output: 'firmalife:food/cooked_lasagna', name: 'cooked_lasagna' }, + { input: 'firmalife:food/bacon', output: 'firmalife:food/cooked_bacon', name: 'cooked_bacon' }, + { input: '#firmalife:foods/slices', output: 'firmalife:food/toast', name: 'toast' } +]; \ No newline at end of file diff --git a/kubejs/startup_scripts/gtceu/machines.js b/kubejs/startup_scripts/gtceu/machines.js index 936294408..21cb9ddfd 100644 --- a/kubejs/startup_scripts/gtceu/machines.js +++ b/kubejs/startup_scripts/gtceu/machines.js @@ -1,7 +1,5 @@ // priority: 0 -//#region Greenhouse - const registerGTCEuMachines = (event) => { GTMachineUtils.registerCrate(GTMaterials.BismuthBronze, 54, "Bismuth Bronze Crate"); @@ -12,66 +10,6 @@ const registerGTCEuMachines = (event) => { const $SteamMulti = Java.loadClass('com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine'); const $Tags = Java.loadClass("dev.latvian.mods.kubejs.util.Tags") - event.create('greenhouse', 'multiblock') - .rotationState(RotationState.NON_Y_AXIS) - .recipeType('greenhouse') - .recipeModifiers([GTRecipeModifiers.OC_PERFECT]) - .appearanceBlock(GTBlocks.CASING_STEEL_SOLID) - .pattern(definition => FactoryBlockPattern.start() - .aisle("CCCCCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "FFFFFFF") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CCCYCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .where('X', Predicates.blocks('ae2:quartz_glass')) - .where('F', Predicates.frames('steel')) - .where('D', Predicates.blocks('tfc:grass/silt') - .or(Predicates.blocks('tfc:dirt/loam')) - .or(Predicates.blocks('tfc:dirt/sandy_loam')) - .or(Predicates.blocks('tfc:dirt/silty_loam')) - .or(Predicates.blocks('tfc:grass/silt')) - .or(Predicates.blocks('tfc:grass/loam')) - .or(Predicates.blocks('tfc:grass/sandy_loam')) - .or(Predicates.blocks('tfc:grass/silty_loam'))) - .where('C', Predicates.blocks('gtceu:steel_machine_casing').or(Predicates.autoAbilities(definition.getRecipeTypes()))) - .where('#', Predicates.air() - .or(Predicates.blockTag($Tags.block("minecraft:logs"))) - .or(Predicates.blockTag($Tags.block("minecraft:leaves")))) - .where(' ', Predicates.any()) - .where('Y', Predicates.controller(Predicates.blocks(definition.get()))) - .build() - ) - .shapeInfo(controller => MultiblockShapeInfo.builder() - .aisle("CCCCCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X##L##X", "X#LLL#X", "X##L##X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "F##W##F", "F##W##F", "F##W##F", "F#LWL#F", "F#LWL#F", "F#LLL#F", "F#####F", "FFFFFFF") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X##L##X", "X#LLL#X", "X##L##X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CitYfeC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .where('Y', controller, Direction.SOUTH) - .where('C', GTBlocks.STEEL_HULL.get()) - .where('D', Block.getBlock('tfc:grass/silt')) - .where('F', Block.getBlock('gtceu:steel_frame')) - .where('X', Block.getBlock('ae2:quartz_glass')) - .where('W', Block.getBlock('tfc:wood/log/oak')) - .where('L', Block.getBlock('tfc:wood/leaves/oak')) - .where(' ', Block.getBlock('minecraft:air')) - .where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.SOUTH) - .where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.SOUTH) - .where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.ULV], Direction.SOUTH) - .where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.LV], Direction.SOUTH) - .build() - ) - .workableCasingRenderer( - 'gtceu:block/casings/solid/machine_casing_solid_steel', - 'gtceu:block/multiblock/implosion_compressor', false - ) - - //#endregion - //#region Nether Dome event.create('nether_dome', 'multiblock') diff --git a/kubejs/startup_scripts/gtceu/recipe_types.js b/kubejs/startup_scripts/gtceu/recipe_types.js index 7ba54d0be..979ef3a46 100644 --- a/kubejs/startup_scripts/gtceu/recipe_types.js +++ b/kubejs/startup_scripts/gtceu/recipe_types.js @@ -1,13 +1,6 @@ // priority: 0 const registerGTCEuRecipeTypes = (event) => { - event.create('greenhouse') - .category('greenhouse') - .setEUIO('in') - .setMaxIOSize(3, 4, 1, 0) - .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT) - .setSound(GTSoundEntries.BATH) - event.create('nether_dome') .category('nether_dome') .setEUIO('in') diff --git a/kubejs/startup_scripts/tfc/constants.js b/kubejs/startup_scripts/tfc/constants.js index ce425b1ff..d7f2c995e 100644 --- a/kubejs/startup_scripts/tfc/constants.js +++ b/kubejs/startup_scripts/tfc/constants.js @@ -852,7 +852,7 @@ global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS = [ { input: 'tfc:volcanic_glass_batch', output: 'tfc:volcanic_glass_bottle', name: 'volcanic_glass_bottle' }, ]; -global.TFC_FURNACE_MEAT_RECIPE_COMPONENTS = [ +global.TFC_MEAT_RECIPE_COMPONENTS = [ { input: 'tfc:food/horse_meat', output: 'tfc:food/cooked_horse_meat', name: 'cooked_horse_meat' }, { input: 'tfc:food/bear', output: 'tfc:food/cooked_bear', name: 'cooked_bear' }, { input: 'tfc:food/mutton', output: 'tfc:food/cooked_mutton', name: 'cooked_mutton' }, @@ -924,41 +924,39 @@ global.TFC_QUERN_POWDER_RECIPE_COMPONENTS = [ { input: 'firmalife:ore/small_chromite', output: 'gtceu:small_chromite_dust', name: 'chromite' } ]; -global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley', output: 'tfc:food/barley_grain', name: 'barley_grain' }, - { input: 'tfc:food/maize', output: 'tfc:food/maize_grain', name: 'maize_grain' }, - { input: 'tfc:food/oat', output: 'tfc:food/oat_grain', name: 'oat_grain' }, - { input: 'tfc:food/rye', output: 'tfc:food/rye_grain', name: 'rye_grain' }, - { input: 'tfc:food/rice', output: 'tfc:food/rice_grain', name: 'rice_grain' }, - { input: 'tfc:food/wheat', output: 'tfc:food/wheat_grain', name: 'wheat_grain' }, -]; +global.TFC_GRAINS = [ + "barley", + "maize", + "oat", + "rye", + "rice", + "wheat", +] -global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_grain', output: '2x tfc:food/barley_flour', name: 'barley_flour' }, - { input: 'tfc:food/maize_grain', output: '2x tfc:food/maize_flour', name: 'maize_flour' }, - { input: 'tfc:food/oat_grain', output: '2x tfc:food/oat_flour', name: 'oat_flour' }, - { input: 'tfc:food/rye_grain', output: '2x tfc:food/rye_flour', name: 'rye_flour' }, - { input: 'tfc:food/rice_grain', output: '2x tfc:food/rice_flour', name: 'rice_flour' }, - { input: 'tfc:food/wheat_grain', output: '2x tfc:food/wheat_flour', name: 'wheat_flour' }, -]; - -global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_flour', output: '2x tfc:food/barley_dough', name: 'tfc_barley_dough' }, - { input: 'tfc:food/maize_flour', output: '2x tfc:food/maize_dough', name: 'tfc_maize_dough' }, - { input: 'tfc:food/oat_flour', output: '2x tfc:food/oat_dough', name: 'tfc_oat_dough' }, - { input: 'tfc:food/rye_flour', output: '2x tfc:food/rye_dough', name: 'tfc_rye_dough' }, - { input: 'tfc:food/rice_flour', output: '2x tfc:food/rice_dough', name: 'tfc_rice_dough' }, - { input: 'tfc:food/wheat_flour', output: '2x tfc:food/wheat_dough', name: 'tfc_wheat_dough' }, -]; - -global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS = [ - { input: 'firmalife:food/barley_dough', output: 'tfc:food/barley_bread', name: 'barley_bread' }, - { input: 'firmalife:food/maize_dough', output: 'tfc:food/maize_bread', name: 'maize_bread' }, - { input: 'firmalife:food/oat_dough', output: 'tfc:food/oat_bread', name: 'oat_bread' }, - { input: 'firmalife:food/rye_dough', output: 'tfc:food/rye_bread', name: 'rye_bread' }, - { input: 'firmalife:food/rice_dough', output: 'tfc:food/rice_bread', name: 'rice_bread' }, - { input: 'firmalife:food/wheat_dough', output: 'tfc:food/wheat_bread', name: 'wheat_bread' }, -]; +global.TFC_JAMS = [ + "blackberry", + "blueberry", + "bunchberry", + "cloudberry", + "cranberry", + "elderberry", + "gooseberry", + "raspberry", + "snowberry", + "strawberry", + "wintergreen_berry", + "banana", + "cherry", + "green_apple", + "lemon", + "olive", + "orange", + "peach", + "plum", + "red_apple", + "pumpkin_chunks", + "melon_slice", +] global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [ { input: 'tfc:plant/cherry_sapling', fluid_amount: 8000, output: '32x tfc:food/cherry', name: 'cherry' }, @@ -1016,7 +1014,14 @@ global.TFC_MILKS = [ {id: 'minecraft:milk'}, {id: 'firmalife:yak_milk'}, {id: 'firmalife:goat_milk'}, - {id: 'firmalife:coconut_milk'}, + // Uncomment this if firmalife ever makes this obtainable + //{id: 'firmalife:coconut_milk'}, +]; + +global.TFC_CURDS_AND_CHEESES = [ + { id: 'milk', input_fluid: 'tfc:curdled_milk', curd: 'firmalife:food/milk_curd', cheese1: 'gouda', cheese2: 'cheddar' }, + { id: 'yak', input_fluid: 'firmalife:curdled_yak_milk', curd: 'firmalife:food/yak_curd', cheese1: 'shosha', cheese2: 'rajya_metok' }, + { id: 'goat', input_fluid: 'firmalife:curdled_goat_milk', curd: 'firmalife:food/goat_curd', cheese1: 'feta', cheese2: 'chevre' }, ]; global.TFC_ALCOHOL = [