diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 313a5bca0..cc42ad675 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -1486,20 +1486,26 @@ bec8c280b717306f87050b08a418feab53be71cb data/create/advancements/recipes/create 5af08853632fb5970fe542b3ecbde0ad16d64714 data/create/advancements/recipes/create.base/crafting/kinetics/belt_connector.json 80d87f1dde60adb5334e0cff25a9f0b7f67c1526 data/create/advancements/recipes/create.base/crafting/kinetics/black_seat.json 771e2fc2f3be2867f6d83af8030ed321c0b8ab8d data/create/advancements/recipes/create.base/crafting/kinetics/black_seat_from_other_seat.json +86d3e8ba30723ad87e32a589171a35ca907b5db9 data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json ffbe212a442084b0688bbee82ad71c482c9b032c data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat.json 2cc2a11839ad826340fcc7bca1aa1a4d92953b96 data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat_from_other_seat.json +17ffdf52575a3905a8b6372f749858604334c5f0 data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json 0a49cc7cb958c64de1dd35b0acd30070d6a0d81d data/create/advancements/recipes/create.base/crafting/kinetics/brass_hand.json 3d16de97e9821ea473d6fc8b22026cca9e9e172b data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat.json 5a53f4229ce56608207d430c7f87ee44f8d41f6f data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat_from_other_seat.json +d12c6127aa397138d490ccfcf31148fb3754b7a6 data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json d3ca638ffbca177b4970f046f6c42770e757e33e data/create/advancements/recipes/create.base/crafting/kinetics/cart_assembler.json 1afaa6917411aa5c9fb1355588b481552bb0e3f8 data/create/advancements/recipes/create.base/crafting/kinetics/chute.json a49a70403523bc9d4eadffdac5507806aca9fd9d data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json 403fd0da8ee42a52234e544cf532e454fb80137b data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json 5bbaac432fce5435c8c3df56ec81d31a0b76a4ee data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json +27930edef02aac6e74bfab62128688ecfb575008 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json +512e4d45657f6df3df2639040e8c5e76f9119f17 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json 7b80f6b25e1e21e9545120592bc1a3561ee49603 data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json 7f55c18bdf5eafe2be65c7afb46ec40777f1aed8 data/create/advancements/recipes/create.base/crafting/kinetics/cuckoo_clock.json 44cf4c0a792e8742a030c82f92a529ade059b475 data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat.json 80dc8151d0b9dff01a8a2abf6b84057c9ef5b908 data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat_from_other_seat.json +2691122d20392bffa45a2b39c84555c90fe07e7d data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json 9698f2e43c3edcf6bdc31f4b893cdaee2298476c data/create/advancements/recipes/create.base/crafting/kinetics/deployer.json 9840f103d4094b04ebf8c1ffbe154e5698dd4d25 data/create/advancements/recipes/create.base/crafting/kinetics/depot.json 81a3fe7e87c26767e3be6f97ea1de50f1cd74b65 data/create/advancements/recipes/create.base/crafting/kinetics/empty_blaze_burner.json @@ -1508,26 +1514,33 @@ a49a70403523bc9d4eadffdac5507806aca9fd9d data/create/advancements/recipes/create 40bbc4d9df2911721a58481f68a6bd8cfcfbeb98 data/create/advancements/recipes/create.base/crafting/kinetics/filter.json 11d89eca0ccb0f1a8cd27acc9fc0c10d7bf83285 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json a2b33e972c7130cbf105f34d88dd7a9a53d5465c data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json +a91b11ae44d9b1f479c6dee1f1a4580104059287 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json dae9e65a089955c0367dc1453e104c3153ebad79 data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json 8f9819912605cb2499cb3e79ecb0e709b0e38c19 data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json 94b8a1f976b9f853cb6e24b0cef72d2e16c3282f data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json 1609e317d4dcd830be7356301f6685d71d87d34c data/create/advancements/recipes/create.base/crafting/kinetics/goggles.json 585378d03f5ae23e43a587468d183951e3fa58a9 data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat.json f0a0c371c6851a5418b4b9480797677c8e871372 data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat_from_other_seat.json +c023b9221d7983487d21e5ecc7d92246cfc7e791 data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json 72194ca0c9820e8b098534007df7f2b2d3813af6 data/create/advancements/recipes/create.base/crafting/kinetics/green_seat.json 2ba23f019a110a3e035a49e56ee8156fc11d74c0 data/create/advancements/recipes/create.base/crafting/kinetics/green_seat_from_other_seat.json +9af3d92d11c3f520df3e22f3069042bf34585010 data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json dbb96a4db4ef8172af73a626bed9727278d804bd data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json a71b626b6ee58a4eabee56f67c48f041a1323506 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json eb007bb079bbe6b6aaad2ca90f5af84261e3f8ea data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json 571da50fbf5f2fcd3363b3dab91e7233e0ebffa0 data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json +ddd80e84a7d595bbb3cf405a902ebbfd4ea5263c data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json e72a9e36ee72b838d83dee29129085c9717bd1c0 data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat.json b670caaa6822ba7d9dc59ab4b6f21ab7d1ab2482 data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat_from_other_seat.json +ef79bf45e7aa43374d05a258ccb62a8243047fbb data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json 471b41b1beb16be7885b32e3ab5e37e835888ed3 data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat.json 7621220bcda54b559156a5dfb047de3429f1d4d2 data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat_from_other_seat.json +0ce3062d3094ac20cc191b37fe948b54afe1f939 data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json 4375ad2e70aa1311d86093983b4342fcc25fa3f8 data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassis.json 88cf153c96c72c6945f4de7c11523bfd82905e61 data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassisfrom_conversion.json bf36904e7e691a150379561fb6f945123ebd3978 data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat.json da90875fb845ee952ca2cb71f96b8de4f6420c21 data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat_from_other_seat.json +8ae8701f89b0881fbf9fcdf18b550e4bdf8d1483 data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json 3264bf9c4adeea21b250c65a78a7ef9c15fa9720 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_bearing.json d096f7343b42827c4832bf6c68e7d0135e21c8a9 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_crafter.json 8e8bb7aa8da72913a69bc4792cfc61f8cf827386 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_drill.json @@ -1543,15 +1556,19 @@ d38e8ff9dd33558227678d69393b57a360caa28e data/create/advancements/recipes/create afeb2a152697b68bc953986d6886cbe527c6d2b5 data/create/advancements/recipes/create.base/crafting/kinetics/nozzle.json ccd49c33260333ba850d0b843c4913cb6371eee9 data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat.json 0556cca38a52f819e7f786ffbf284d5ef3364d0a data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat_from_other_seat.json +58c0a2742e8f10e45a09cb97e40b542a58c7134b data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json 460240d4e8437b35c24262c5724884ae213e1b9c data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat.json ca21e2192a2fea0f112764f96c928d337762158b data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat_from_other_seat.json +6c11444884679c4dd03d43f5893fca5cdc271915 data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json 960d03f13b383fca0d9b7d3a2885da346d97c4ef data/create/advancements/recipes/create.base/crafting/kinetics/piston_extension_pole.json 02258b70f1db3d91f0ccb5a5ffd362349f8f359d data/create/advancements/recipes/create.base/crafting/kinetics/propeller.json d2a430820a87c24104729eede57628c6a92b277e data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat.json 8eb1319984a8bf9502d8fddb717b11a1ee082f39 data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat_from_other_seat.json +a295c929f7c9b31fd97607f8f6a1f8c56c16c7c8 data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json f80c4cf0e9c649609a8e615d2eefc603cec316cf data/create/advancements/recipes/create.base/crafting/kinetics/radial_chassis.json f639481c8e1485019bf120463e67811b6d2d8ef9 data/create/advancements/recipes/create.base/crafting/kinetics/red_seat.json 038e18d0815e7de55fc8fcb5fe7127cdad62210f data/create/advancements/recipes/create.base/crafting/kinetics/red_seat_from_other_seat.json +dba0696069fe0850120dc6e1ca1ab741b0fe6d21 data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json 74522fbb454832fc0eefa5f52b82b7d7d4e9b7fb data/create/advancements/recipes/create.base/crafting/kinetics/rope_pulley.json 48e29ec1b301bf4857db06913ee340f49d61cdf9 data/create/advancements/recipes/create.base/crafting/kinetics/rotation_speed_controller.json b463cf9343f8d08b8ed3e87f46a19facadd657b0 data/create/advancements/recipes/create.base/crafting/kinetics/secondary_linear_chassisfrom_conversion.json @@ -1569,9 +1586,11 @@ f3fc3d4fee0712906f833aa17185f0bacb21922f data/create/advancements/recipes/create 7c146cc51139c2a8e287a60c8d645fa6f6f48cb1 data/create/advancements/recipes/create.base/crafting/kinetics/whisk.json 37e545b016a7c5cd283168ac71ace6467a5ad3ef data/create/advancements/recipes/create.base/crafting/kinetics/white_seat.json 856760c4b120f7b29a94dd22fe04d62df061d409 data/create/advancements/recipes/create.base/crafting/kinetics/white_seat_from_other_seat.json +b73e6f8b89e6ef94167b6fa3d0837a27222edb01 data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json ddbe7ae23f48dcaee3ad44a0e597c24380b51682 data/create/advancements/recipes/create.base/crafting/kinetics/wrench.json 14c1cac4545f544a78bfd80cf7dd6355794c6679 data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat.json e8c2001863d9819d2a2c1fddeda41a4f126a5c09 data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat_from_other_seat.json +f05bbae1e39eabb51dffa0babecf07f5de2cee3d data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json afc74c4dda92c4976703a1c488182188c3482839 data/create/advancements/recipes/create.base/crafting/logistics/adjustable_crate.json 146d55f3c5c9247c9992278873c6b8be890d733f data/create/advancements/recipes/create.base/crafting/logistics/adjustable_pulse_repeater.json 4793d335955c9d6c293e1358dc227eac93a5fe61 data/create/advancements/recipes/create.base/crafting/logistics/adjustable_repeater.json @@ -2444,20 +2463,26 @@ cf1f3a6306d47025cebe153cf05949ef69ccbe5a data/create/recipes/crafting/kinetics/a dcf98e667d321fb4bd9fa6dfec7927a84cdbd5d6 data/create/recipes/crafting/kinetics/belt_connector.json 1123903a11b13448b61cf8f8a5dc2e8013d39ac0 data/create/recipes/crafting/kinetics/black_seat.json a6243a671bf852a6f92e1927e234ecf23b1c903d data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json +c237d1cd362454b25d3756e742c4a2237b5ec2db data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json 0b747fc291b86fa14f86569160d56a48a15c69d3 data/create/recipes/crafting/kinetics/blue_seat.json 30240bae036699b8c9404893983cb7b70332159e data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json +249c1f67d8b56262d286a027d50023e5d672b1c9 data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json 23fe800a45e81a08eb0aa732c5cb52e4e8ebfe86 data/create/recipes/crafting/kinetics/brass_hand.json c50077a130bc43cd3659faa02ce95789399478b2 data/create/recipes/crafting/kinetics/brown_seat.json a3c99b38fc8896c9971a5e9dcbae747786ff610d data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json +43233c87cfb80d57345a561c3dd2646c8d3c0d8a data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json 860796dce8756c4cd234f18bbe52108f3b2254c2 data/create/recipes/crafting/kinetics/cart_assembler.json 3bc3510b64e576d68b19f4ceb5d9bd6591dbcf6c data/create/recipes/crafting/kinetics/chute.json a80e3eabbeba2931d0d58dd9492018a0d78da8b5 data/create/recipes/crafting/kinetics/clockwork_bearing.json 501ad764d087b40ce36f3d4256b0d5ee25b2081e data/create/recipes/crafting/kinetics/clutch.json e46bcc6778ff5118252fe6371ef817ae1302253a data/create/recipes/crafting/kinetics/cogwheel.json +3093be508f6597eee2f3230cd9072f12d2821a6f data/create/recipes/crafting/kinetics/copper_valve_handle.json +886caa21481e62d44d70fd103f8d29f9bac64d60 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json 59db5170cec390fe6c20a27d6154deebe044580c data/create/recipes/crafting/kinetics/crafter_slot_cover.json cc2ab4b619aa55c03db18b67a62e12b6089e7019 data/create/recipes/crafting/kinetics/cuckoo_clock.json f11892864a26c4ba79eb46d890a1a4bd96a1ad93 data/create/recipes/crafting/kinetics/cyan_seat.json 8c35fd379244f72f73e1be6115ed8f5f5484f599 data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json +dc62d932f6a3723e050cb043fea233efd685f775 data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json ad1c3ce1e98b8483512bdd754f2e5930c7b3ae85 data/create/recipes/crafting/kinetics/deployer.json be86df1c4d7af14bc5dcfe044d07c03b6c6d2a75 data/create/recipes/crafting/kinetics/depot.json 9c5d30f25a130d591b924c50e5c83e3b787c2758 data/create/recipes/crafting/kinetics/empty_blaze_burner.json @@ -2466,6 +2491,7 @@ e416a453316cc6a2f68795b0ab9c91a842d72510 data/create/recipes/crafting/kinetics/e 0dd0cc11eaa6789fc612af3231ed247893852178 data/create/recipes/crafting/kinetics/filter.json 30ae02825e54c0cc07be8f4decf9d432e7d61ba2 data/create/recipes/crafting/kinetics/fluid_pipe.json 86ad4d2820e8e2b01de8d977af7796119dfb7430 data/create/recipes/crafting/kinetics/fluid_tank.json +3dad2a849796df268cd3a06ed37376f2cc529957 data/create/recipes/crafting/kinetics/fluid_valve.json 84153bd478c0e63a04c77579d6595043f604b7ab data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json 5eb05cdf88bccdaddfe7ebfbd8b70d1196d422a6 data/create/recipes/crafting/kinetics/gearbox.json b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json @@ -2473,20 +2499,26 @@ b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/g 5b07af1b09125f874500c3fb140efda90061a19e data/create/recipes/crafting/kinetics/goggles.json beb7715310352988d5a58d1b39c62f02544795f8 data/create/recipes/crafting/kinetics/gray_seat.json 14e8927183f91c09a2d96fd68d1a722d192b29e8 data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json +b7fa20d10c0e0e7270b1c0d6f3881b8e25b39bea data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json 9899501f18e7f3452d4ab4bf658079ab414aa176 data/create/recipes/crafting/kinetics/green_seat.json 6f65a84e00f25d956a6ae834678ff781569b243a data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json +63edaccace961a65aa7bd406d36894c7ca4816b8 data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json 9af4b862db77034f61d2d35e45db00f8dda6dc4b data/create/recipes/crafting/kinetics/hand_crank.json 237541c1c318b8426734c1c43be31fbd01413d39 data/create/recipes/crafting/kinetics/large_cogwheel.json a33e3301fc6d3a446e61a1c4b8a93aff079baeba data/create/recipes/crafting/kinetics/light_blue_seat.json 958bb5d3aeb8d8e5dbf5d97cf5fd9ff5151575dc data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json +df1942d27ce3d0548872fe39d3cac24af3122b61 data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json 9531407075ad027e01063aeabc40ae3e4c100df3 data/create/recipes/crafting/kinetics/light_gray_seat.json fb66f55b31a60f2168d3b9e80a56ecadebb1db75 data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json +e78fec9814d6d0c5c4669c17a8f4d86979972624 data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json 3e18f619a50c1e5fabd6d3acc6d029e4cfec661f data/create/recipes/crafting/kinetics/lime_seat.json d214afbd44e580f5fd1ebb4f16f07ffe34d87cba data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json +505a6d895319b1c73509045ecf5d9dc4e8554cde data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json 61332f88f51bbd465ee0da879e706b994710d949 data/create/recipes/crafting/kinetics/linear_chassis.json 9bf76daab65d048a135d70db522989ebc77ccaf1 data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json d7d96071874a87edf7bbdcf7a462f95a130d2991 data/create/recipes/crafting/kinetics/magenta_seat.json 5836881feef8fa8b18e4cceb9c3a9a2748b8cf3a data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json +2ea43d6527dcb734578067ff442ec20395b0093b data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json 946389078db31de69a7dc4fec5feebddf48dcfc3 data/create/recipes/crafting/kinetics/mechanical_bearing.json a5c7aad0d86cbb66b8688d295e62547da4a2ce0f data/create/recipes/crafting/kinetics/mechanical_crafter.json 4372830100d39c4a89ff397a62b01940e1a28cb3 data/create/recipes/crafting/kinetics/mechanical_drill.json @@ -2503,15 +2535,19 @@ be4c7fdb0ba1e9ee6d3dcf200dc2718ad83ec8fb data/create/recipes/crafting/kinetics/m 6b1b626394d7269a6861a836992ccdb344b6e7dd data/create/recipes/crafting/kinetics/nozzle.json 9c41cd91a0716d591ed6d1b5128ec731b418850f data/create/recipes/crafting/kinetics/orange_seat.json a8da214f0a521be1204b669f118348a142bc9a3d data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json +2fa6b1dd7fe3c8d5bb60345d6b7c5213a54d7e31 data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json af871a02d363a619fff8e9dde753aa417b265a80 data/create/recipes/crafting/kinetics/pink_seat.json 840dc5aac716e3d1b79883e8db4bf56f2dc427f9 data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json +7e73bcde2b599f1ae5a241dd707c8ab6ce8c5a6e data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json 5399c3496a90bed9428c48fdd334ad4f763cbf9a data/create/recipes/crafting/kinetics/piston_extension_pole.json 16199a6729005a279854cb1838401f6e73bdebae data/create/recipes/crafting/kinetics/propeller.json 76ba751b65d312d1b34229d76fff2111b593091a data/create/recipes/crafting/kinetics/purple_seat.json e6c462d64e1de9c7fca95f9c9a25b8d1575979da data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json +9332957af2e72dee5fc78abcf1995773e08f7561 data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json af84b939ced1c0254a27469f857f571afbadc4f6 data/create/recipes/crafting/kinetics/radial_chassis.json 1059f08b016e1c222f13bd9976d0fcd8fc982619 data/create/recipes/crafting/kinetics/red_seat.json 0827e86e4b5f9d7023ccc19922bcbbaefd5b42d8 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json +5a10019d23726940152e26af3239d55d16bc7880 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json af525e135eb927b64462120d201ecae7a7ec61ed data/create/recipes/crafting/kinetics/rope_pulley.json e9f1597d40f62c2247b319303f375f0da271346f data/create/recipes/crafting/kinetics/rotation_speed_controller.json 66922e18791c87fadb7629cdf32d3dd2f50ccd13 data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json @@ -2529,9 +2565,11 @@ af5854ee2fa3be195ad9abcdeebe6ed7306b651c data/create/recipes/crafting/kinetics/s f508d510576c93712e7f5265345a32e8818bbf0d data/create/recipes/crafting/kinetics/whisk.json f4d88aa2edea548d29cf2678a111d8bb5db7720a data/create/recipes/crafting/kinetics/white_seat.json 7e0d276cd56f04f35d02c25810bffdf8fc297fcd data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json +4d3890621caa0bdbb752a395c1f5761dbbc1121e data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json 3ec8bb5660656f1c676035d8ba5460462c1d1865 data/create/recipes/crafting/kinetics/wrench.json 5579e58473474c4e59efd1ee39ddf0140d66b618 data/create/recipes/crafting/kinetics/yellow_seat.json f055d233ac7ee9eac840a658afa01bedd793ff38 data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json +19c5c8bddeec51c9b47183c728e9ec4313c54410 data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json 3f6f3a547dc06c9462da880360f29b49ac3f5e2a data/create/recipes/crafting/logistics/adjustable_crate.json c465151b64381e2222203bf069b717435fdc2b26 data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json 34bcdffae0b104829161c86b7d161068f890daa2 data/create/recipes/crafting/logistics/adjustable_repeater.json @@ -3095,15 +3133,17 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone 0f3c993eb6dd3f37953f304b8fad15bf60469ef4 data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json 6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json -6d73642c6c64a8f7ebe6041218ac5a9fe2379e52 data/create/tags/blocks/brittle.json +f9ecec40e11a87de73c9dc7c2963c1cb10b1a180 data/create/tags/blocks/brittle.json 246ee2ec4e778e38a362f319506564886d4e0e76 data/create/tags/blocks/fan_heaters.json 798ef82869dbe22682121504a372e95607a785dc data/create/tags/blocks/fan_transparent.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json +50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json 7fa13854a216ee49c0ae3b1e0e23c4cd1fbc4859 data/create/tags/blocks/windmill_sails.json 081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data/create/tags/items/crushed_ores.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json abbe5d7cc9d1705509257888154ed7ca23292586 data/create/tags/items/upright_on_belt.json +50936b211d94167a35ec78c89954082a336b6269 data/create/tags/items/valve_handles.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/blocks/glass/colorless.json 81ced867d24ec814942909965dd4576eff1db685 data/forge/tags/blocks/glass_panes.json 4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data/forge/tags/blocks/ores/copper.json diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..8bdf74353 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/black_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/black_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..1a3031598 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/blue_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/blue_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..bd82388be --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/brown_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/brown_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json new file mode 100644 index 000000000..db57fc099 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/copper_valve_handle" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/copper_valve_handle" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json new file mode 100644 index 000000000..a90d4393a --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/copper_valve_handle_from_others" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/copper_valve_handle_from_others" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..5187127a4 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/cyan_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/cyan_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json new file mode 100644 index 000000000..75d57d1cb --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/fluid_valve" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/fluid_valve" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..ffab588b5 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/gray_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/gray_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..cfe2c2170 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/green_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/green_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..fa0b2fb03 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/light_blue_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/light_blue_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..72a937bc2 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/light_gray_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/light_gray_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..6737701bc --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/lime_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/lime_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..1bcad6d5e --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/magenta_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/magenta_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..16ed46126 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/orange_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/orange_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..15e4c19d3 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/pink_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/pink_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..c786dc642 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/purple_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/purple_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..0b9c8a9b9 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/red_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/red_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..705e2397e --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/white_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/white_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..907e43247 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/yellow_valve_handle_from_other_valve_handle" + ] + }, + "criteria": { + "has_valve": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "create:valve_handles" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/yellow_valve_handle_from_other_valve_handle" + } + } + }, + "requirements": [ + [ + "has_valve", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..2a299aea9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/black" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:black_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..d0ab35dc9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/blue" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:blue_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..eb82a4f83 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/brown" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:brown_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle.json new file mode 100644 index 000000000..77c81c0b2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CCC", + " S " + ], + "key": { + "S": { + "item": "create:andesite_alloy" + }, + "C": { + "tag": "forge:plates/copper" + } + }, + "result": { + "item": "create:copper_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json b/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json new file mode 100644 index 000000000..679b198a6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "create:valve_handles" + } + ], + "result": { + "item": "create:copper_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..ed3ad74ea --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/cyan" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:cyan_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_valve.json b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_valve.json new file mode 100644 index 000000000..68fb533f5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_valve.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "I", + "S", + "P" + ], + "key": { + "P": { + "item": "create:shaft" + }, + "S": { + "item": "create:fluid_pipe" + }, + "I": { + "tag": "forge:plates/iron" + } + }, + "result": { + "item": "create:fluid_valve" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..14aaac1c2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/gray" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:gray_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..28a61f2c4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/green" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:green_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..186c59e53 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/light_blue" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:light_blue_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..a5e2f0c52 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/light_gray" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:light_gray_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..fbcf4548d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/lime" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:lime_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..ab8d6ab36 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/magenta" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:magenta_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..78de18ef1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/orange" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:orange_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..a04c92752 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/pink" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:pink_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..ae277c7fe --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/purple" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:purple_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..51598f0b1 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/red" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:red_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..71cfc416c --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/white" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:white_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json new file mode 100644 index 000000000..4babd7f03 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "-" + ], + "key": { + "#": { + "tag": "forge:dyes/yellow" + }, + "-": { + "tag": "create:valve_handles" + } + }, + "result": { + "item": "create:yellow_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json index dba3575c4..07cbfbb2c 100644 --- a/src/generated/resources/data/create/tags/blocks/brittle.json +++ b/src/generated/resources/data/create/tags/blocks/brittle.json @@ -3,6 +3,7 @@ "values": [ "create:nozzle", "create:hand_crank", + "create:copper_valve_handle", "create:white_valve_handle", "create:orange_valve_handle", "create:magenta_valve_handle", @@ -19,7 +20,6 @@ "create:green_valve_handle", "create:red_valve_handle", "create:black_valve_handle", - "create:copper_valve_handle", "create:rope", "create:pulley_magnet", "create:furnace_engine", diff --git a/src/generated/resources/data/create/tags/blocks/valve_handles.json b/src/generated/resources/data/create/tags/blocks/valve_handles.json new file mode 100644 index 000000000..b86fee3d4 --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/valve_handles.json @@ -0,0 +1,22 @@ +{ + "replace": false, + "values": [ + "create:copper_valve_handle", + "create:white_valve_handle", + "create:orange_valve_handle", + "create:magenta_valve_handle", + "create:light_blue_valve_handle", + "create:yellow_valve_handle", + "create:lime_valve_handle", + "create:pink_valve_handle", + "create:gray_valve_handle", + "create:light_gray_valve_handle", + "create:cyan_valve_handle", + "create:purple_valve_handle", + "create:blue_valve_handle", + "create:brown_valve_handle", + "create:green_valve_handle", + "create:red_valve_handle", + "create:black_valve_handle" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/valve_handles.json b/src/generated/resources/data/create/tags/items/valve_handles.json new file mode 100644 index 000000000..b86fee3d4 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/valve_handles.json @@ -0,0 +1,22 @@ +{ + "replace": false, + "values": [ + "create:copper_valve_handle", + "create:white_valve_handle", + "create:orange_valve_handle", + "create:magenta_valve_handle", + "create:light_blue_valve_handle", + "create:yellow_valve_handle", + "create:lime_valve_handle", + "create:pink_valve_handle", + "create:gray_valve_handle", + "create:light_gray_valve_handle", + "create:cyan_valve_handle", + "create:purple_valve_handle", + "create:blue_valve_handle", + "create:brown_valve_handle", + "create:green_valve_handle", + "create:red_valve_handle", + "create:black_valve_handle" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index e764dd788..4db1334c5 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -27,8 +27,8 @@ import com.simibubi.create.content.contraptions.components.actors.SeatMovementBe import com.simibubi.create.content.contraptions.components.clock.CuckooClockBlock; import com.simibubi.create.content.contraptions.components.crafter.CrafterCTBehaviour; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; -import com.simibubi.create.content.contraptions.components.crank.AllValveHandles; import com.simibubi.create.content.contraptions.components.crank.HandCrankBlock; +import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelBlock; import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerBlock; import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; @@ -507,8 +507,28 @@ public class AllBlocks { .transform(customItemModel()) .register(); + public static final BlockEntry COPPER_VALVE_HANDLE = + REGISTRATE.block("copper_valve_handle", ValveHandleBlock::copper) + .transform(BuilderTransformers.valveHandle(null)) + .register(); + + public static final BlockEntry[] DYED_VALVE_HANDLES = new BlockEntry[DyeColor.values().length]; + static { - AllValveHandles.register(REGISTRATE); + for (DyeColor colour : DyeColor.values()) { + String colourName = colour.getName(); + DYED_VALVE_HANDLES[colour.ordinal()] = + REGISTRATE.block(colourName + "_valve_handle", ValveHandleBlock::dyed) + .transform(BuilderTransformers.valveHandle(colour)) + .recipe((c, p) -> ShapedRecipeBuilder.shapedRecipe(c.get()) + .patternLine("#") + .patternLine("-") + .key('#', DyeHelper.getTagOfDye(colour)) + .key('-', AllItemTags.VALVE_HANDLES.tag) + .addCriterion("has_valve", p.hasItem(AllItemTags.VALVE_HANDLES.tag)) + .build(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle"))) + .register(); + } } public static final BlockEntry FLUID_TANK = REGISTRATE.block("fluid_tank", FluidTankBlock::new) diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index 303f8165e..e8b2158a8 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -65,6 +65,7 @@ public class AllTags { public static enum AllItemTags { CRUSHED_ORES(MOD), SEATS(MOD), + VALVE_HANDLES(MOD), UPRIGHT_ON_BELT(MOD), CREATE_INGOTS(MOD), BEACON_PAYMENT(FORGE), @@ -102,7 +103,7 @@ public class AllTags { } public static enum AllBlockTags { - WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE, NON_MOVABLE, BRITTLE, SEATS, FAN_TRANSPARENT + WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE, NON_MOVABLE, BRITTLE, SEATS, VALVE_HANDLES, FAN_TRANSPARENT ; diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 3c64fc2f4..e352bbad6 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -11,7 +11,6 @@ import com.simibubi.create.content.contraptions.components.clock.CuckooClockRend import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterRenderer; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; -import com.simibubi.create.content.contraptions.components.crank.AllValveHandles; import com.simibubi.create.content.contraptions.components.crank.HandCrankRenderer; import com.simibubi.create.content.contraptions.components.crank.HandCrankTileEntity; import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerTileEntity; @@ -185,8 +184,8 @@ public class AllTileEntities { public static final TileEntityEntry HAND_CRANK = Create.registrate() .tileEntity("hand_crank", HandCrankTileEntity::new) - .validBlocks(AllBlocks.HAND_CRANK) - .validBlocks(AllValveHandles.variants) + .validBlocks(AllBlocks.HAND_CRANK, AllBlocks.COPPER_VALVE_HANDLE) + .validBlocks(AllBlocks.DYED_VALVE_HANDLES) .renderer(() -> HandCrankRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java index 186b1bd1f..cee93393c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java @@ -183,7 +183,7 @@ public class ConnectedInputHandler { List list = data.stream() .map(l -> CrafterHelper.getCrafter(world, pos.add(l))) .filter(Predicates.notNull()) - .map(crafter -> crafter.inventory) + .map(crafter -> crafter.getInventory()) .collect(Collectors.toList()); return new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java index 4d34fd6a7..3dbb19558 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java @@ -169,6 +169,9 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock implements IT MechanicalCrafterTileEntity crafter = (MechanicalCrafterTileEntity) te; boolean wrenched = AllItems.WRENCH.isIn(heldItem); + if (AllBlocks.MECHANICAL_ARM.isIn(heldItem)) + return ActionResultType.PASS; + if (hit.getFace() == state.get(HORIZONTAL_FACING)) { if (crafter.phase != Phase.IDLE && !wrenched) { @@ -202,7 +205,7 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock implements IT return ActionResultType.SUCCESS; } - ItemStack inSlot = crafter.inventory.getStackInSlot(0); + ItemStack inSlot = crafter.getInventory().getStackInSlot(0); if (inSlot.isEmpty()) { if (crafter.covered && !wrenched) { if (worldIn.isRemote) @@ -221,7 +224,7 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock implements IT if (worldIn.isRemote) return ActionResultType.SUCCESS; player.inventory.placeItemBackInInventory(worldIn, inSlot); - crafter.inventory.setStackInSlot(0, ItemStack.EMPTY); + crafter.getInventory().setStackInSlot(0, ItemStack.EMPTY); return ActionResultType.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java index 69caac6d9..9de9abd72 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java @@ -65,7 +65,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer { + if (getStackInSlot(slot).isEmpty()) + return; + if(te.phase == Phase.IDLE) + te.checkCompletedRecipe(false); + }); } - - public ItemStack extractItem(int slot, int amount, boolean simulate) { - return ItemStack.EMPTY; - }; - + + @Override public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (phase != Phase.IDLE) + if (te.phase != Phase.IDLE) return stack; - if (covered) + if (te.covered) return stack; return super.insertItem(slot, stack, simulate); - }; - - protected void onContentsChanged(int slot) { - if (!getStackInSlot(slot).isEmpty() && phase == Phase.IDLE) - checkCompletedRecipe(false); - markDirty(); - sendData(); - }; - - }; - + } + + } + + protected Inventory inventory; protected GroupedItems groupedItems = new GroupedItems(); protected ConnectedInput input = new ConnectedInput(); protected LazyOptional invSupplier = LazyOptional.of(() -> input.getItemHandler(world, pos)); @@ -92,7 +92,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { setLazyTickRate(20); phase = Phase.IDLE; groupedItemsBeforeCraft = new GroupedItems(); - + inventory = new Inventory(this); + // Does not get serialized due to active checking in tick wasPoweredBefore = true; } @@ -485,4 +486,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { invSupplier = LazyOptional.of(() -> input.getItemHandler(world, pos)); } + public Inventory getInventory() { + return inventory; + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/AllValveHandles.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/AllValveHandles.java deleted file mode 100644 index ede5dc1d7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/AllValveHandles.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crank; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.AllTags; -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.data.SharedProperties; -import com.tterrag.registrate.util.entry.BlockEntry; - -import net.minecraft.item.DyeColor; - -public class AllValveHandles { - private static final List types = new ArrayList<>(); - static { - for (DyeColor color : DyeColor.values()) - types.add(color.getName()); - types.add("copper"); - } - public static final BlockEntry[] variants = new BlockEntry[types.size()]; - - public static void register(CreateRegistrate registrate) { - for (int i = 0; i < variants.length; i++) { - String type = types.get(i); - variants[i] = registrate.block(type + "_valve_handle", properties -> new ValveHandleBlock(properties, type.equals("copper"))) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.directionalBlock(c.get(), p.models() - .withExistingParent(type + "_valve_handle", p.modLoc("block/valve_handle")) - .texture("3", p.modLoc("block/valve_handle/valve_handle_" + type)))) - .tag(AllTags.AllBlockTags.BRITTLE.tag) - .simpleItem() - .register(); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java index 01c590b28..a6cc4c35f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java @@ -5,8 +5,8 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.foundation.block.ITE; - import com.simibubi.create.foundation.config.AllConfigs; + import net.minecraft.block.Block; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java index 619587dc8..cd222ae53 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java @@ -1,8 +1,12 @@ package com.simibubi.create.content.contraptions.components.crank; +import java.util.ArrayList; +import java.util.List; + import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlockPartials; +import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; @@ -12,9 +16,20 @@ import net.minecraftforge.api.distmarker.OnlyIn; @ParametersAreNonnullByDefault public class ValveHandleBlock extends HandCrankBlock { + + public static final List> entries = new ArrayList<>(); + private final boolean inCreativeTab; - public ValveHandleBlock(Properties properties, boolean inCreativeTab) { + public static ValveHandleBlock copper(Properties properties) { + return new ValveHandleBlock(properties, true); + } + + public static ValveHandleBlock dyed(Properties properties) { + return new ValveHandleBlock(properties, false); + } + + private ValveHandleBlock(Properties properties, boolean inCreativeTab) { super(properties); this.inCreativeTab = inCreativeTab; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java index 47cbabe5d..f7d42fdef 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java @@ -11,6 +11,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import mcp.MethodsReturnNonnullByDefault; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.material.PushReaction; import net.minecraft.entity.player.PlayerEntity; @@ -107,5 +108,17 @@ public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE getTileEntityClass() { return DeployerTileEntity.class; } + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { + super.onBlockAdded(state, world, pos, oldState, isMoving); + withTileEntityDo(world, pos, DeployerTileEntity::redstoneUpdate); + } + + @Override + public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, + BlockPos p_220069_5_, boolean p_220069_6_) { + withTileEntityDo(world, pos, DeployerTileEntity::redstoneUpdate); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 3c1086348..8325e86d2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -49,6 +49,7 @@ public class DeployerTileEntity extends KineticTileEntity { protected boolean boop = false; protected List overflowItems = new ArrayList<>(); protected FilteringBehaviour filtering; + protected boolean redstoneLocked; private LazyOptional invHandler; private ListNBT deferredInventoryList; @@ -65,6 +66,7 @@ public class DeployerTileEntity extends KineticTileEntity { state = State.WAITING; mode = Mode.USE; heldItem = ItemStack.EMPTY; + redstoneLocked = false; } @Override @@ -148,6 +150,9 @@ public class DeployerTileEntity extends KineticTileEntity { if (mode == Mode.PUNCH && !boop && startBoop(facing)) return; + if (redstoneLocked) + return; + state = State.EXPANDING; Vec3d movementVector = getMovementVector(); Vec3d rayOrigin = VecHelper.getCenterOf(pos) @@ -259,6 +264,8 @@ public class DeployerTileEntity extends KineticTileEntity { state = NBTHelper.readEnum(compound, "State", State.class); mode = NBTHelper.readEnum(compound, "Mode", Mode.class); timer = compound.getInt("Timer"); + redstoneLocked = compound.getBoolean("Powered"); + deferredInventoryList = compound.getList("Inventory", NBT.TAG_COMPOUND); overflowItems = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); if (compound.contains("HeldItem")) @@ -280,6 +287,8 @@ public class DeployerTileEntity extends KineticTileEntity { NBTHelper.writeEnum(compound, "Mode", mode); NBTHelper.writeEnum(compound, "State", state); compound.putInt("Timer", timer); + compound.putBoolean("Powered", redstoneLocked); + if (player != null) { compound.put("HeldItem", player.getHeldItemMainhand() .serializeNBT()); @@ -308,6 +317,16 @@ public class DeployerTileEntity extends KineticTileEntity { return new DeployerItemHandler(this); } + public void redstoneUpdate() { + if (world.isRemote) + return; + boolean blockPowered = world.isBlockPowered(pos); + if (blockPowered == redstoneLocked) + return; + redstoneLocked = blockPowered; + sendData(); + } + @Override public boolean hasFastRenderer() { return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java index d52123a8c..db7f42639 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.components.fan; +import javax.annotation.Nullable; + import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; @@ -16,8 +18,6 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import javax.annotation.Nullable; - @MethodsReturnNonnullByDefault public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements IAirCurrentSource { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java index 7e93a5ded..bee9d4852 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java @@ -1,15 +1,16 @@ package com.simibubi.create.content.contraptions.components.fan; +import javax.annotation.Nullable; + import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CKinetics; + import mcp.MethodsReturnNonnullByDefault; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import javax.annotation.Nullable; - @MethodsReturnNonnullByDefault public interface IAirCurrentSource { @Nullable diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java index ccfc5fa5f..6439b9e43 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java +++ b/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.particle; +import javax.annotation.Nonnull; + import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.fan.IAirCurrentSource; import com.simibubi.create.content.logistics.InWorldProcessing; @@ -21,8 +23,6 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -import javax.annotation.Nonnull; - public class AirFlowParticle extends SimpleAnimatedParticle { private final IAirCurrentSource source; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 1ee7746c8..db721c609 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -58,7 +58,7 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt public BasinTileEntity(TileEntityType type) { super(type); inputInventory = new BasinInventory(9, this); - inputInventory.whenContentsChanged(() -> contentsChanged = true); + inputInventory.whenContentsChanged($ -> contentsChanged = true); outputInventory = new BasinInventory(9, this).forbidInsertion(); itemCapability = LazyOptional.of(() -> new CombinedInvWrapper(inputInventory, outputInventory)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java index 5120c3beb..238930988 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java @@ -42,6 +42,7 @@ import net.minecraft.world.storage.loot.LootTable; import net.minecraft.world.storage.loot.conditions.BlockStateProperty; import net.minecraft.world.storage.loot.conditions.ILootCondition.IBuilder; import net.minecraft.world.storage.loot.conditions.SurvivesExplosion; +import net.minecraftforge.common.util.FakePlayer; @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault @@ -86,21 +87,29 @@ public class BlazeBurnerBlock extends Block implements ITE 0) @@ -185,20 +183,22 @@ public class BlazeBurnerTileEntity extends SmartTileEntity { return false; if (newFuel == activeFuel) { - if (remainingBurnTime + burnTick > maxHeatCapacity && player instanceof DeployerFakePlayer) + if (remainingBurnTime + burnTick > maxHeatCapacity && !forceOverflow) return false; - + if (simulate) + return true; remainingBurnTime = MathHelper.clamp(remainingBurnTime + burnTick, 0, maxHeatCapacity); } else { + if (simulate) + return true; activeFuel = newFuel; remainingBurnTime = burnTick; } updateHeatLevel(); HeatLevel level = getHeatLevel(); - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 20; i++) spawnParticles(level, 1 + (.25 * (i / 4))); - } return true; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java index 6354da3e4..93dfb4ee4 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java @@ -100,11 +100,10 @@ public class ZapperScreen extends AbstractSimiScreen { } @Override - public void onClose() { + public void removed() { CompoundNBT nbt = zapper.getTag(); writeAdditionalOptions(nbt); AllPackets.channel.sendToServer(new NbtPacket(zapper, offhand ? Hand.OFF_HAND : Hand.MAIN_HAND)); - super.onClose(); } @Override @@ -122,7 +121,7 @@ public class ZapperScreen extends AbstractSimiScreen { } if (confirmButton.isHovered()) { - Minecraft.getInstance().player.closeScreen(); + onClose(); return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java b/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java index 0f718e32b..e1eaeae27 100644 --- a/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java +++ b/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java @@ -7,6 +7,8 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import javax.annotation.Nullable; + import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; @@ -43,8 +45,6 @@ import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.RecipeWrapper; -import javax.annotation.Nullable; - public class InWorldProcessing { public static class SplashingInv extends RecipeWrapper { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index 854a64ca2..19fca9691 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -1,5 +1,11 @@ package com.simibubi.create.content.logistics.block.chute; +import java.util.LinkedList; +import java.util.List; + +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.fan.AirCurrent; @@ -23,6 +29,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VecHelper; + import mcp.MethodsReturnNonnullByDefault; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -47,11 +54,6 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; -import java.util.LinkedList; -import java.util.List; - @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInformation, IAirCurrentSource { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java index fb3895718..f16b10656 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.logistics.block.depot; +import javax.annotation.ParametersAreNonnullByDefault; + import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; @@ -29,8 +31,6 @@ import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraftforge.items.ItemStackHandler; -import javax.annotation.ParametersAreNonnullByDefault; - @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java index 3489785f5..5ab990160 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java @@ -5,7 +5,6 @@ import java.util.function.Function; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.content.logistics.InWorldProcessing; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java index 979b10795..f57aee3ac 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java @@ -24,6 +24,7 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; +import net.minecraftforge.items.ItemHandlerHelper; public class FunnelTileEntity extends SmartTileEntity { @@ -95,9 +96,12 @@ public class FunnelTileEntity extends SmartTileEntity { amountToExtract = 1; Predicate filter = s -> !filtering.isActive() || filtering.test(s); - Function amountThreshold = s -> s.getMaxStackSize() - invManipulation.simulate() - .insert(s) - .getCount(); + Function amountThreshold = s -> { + int maxStackSize = s.getMaxStackSize(); + return maxStackSize - invManipulation.simulate() + .insert(ItemHandlerHelper.copyStackWithSize(s, maxStackSize)) + .getCount(); + }; if (amountToExtract != -1 && !invManipulation.simulate() .insert(autoExtractor.simulate() @@ -108,7 +112,7 @@ public class FunnelTileEntity extends SmartTileEntity { ItemStack stack = autoExtractor.extract(amountToExtract, filter, amountThreshold); if (stack.isEmpty()) return; - + onTransfer(stack); invManipulation.insert(stack); startCooldown(); @@ -192,8 +196,9 @@ public class FunnelTileEntity extends SmartTileEntity { BlockState blockState = getBlockState(); boolean pushingToBelt = blockState.getBlock() instanceof HorizontalInteractionFunnelBlock && blockState.get(HorizontalInteractionFunnelBlock.PUSHING); - boolean hopper = FunnelBlock.getFunnelFacing(blockState) == Direction.UP && invManipulation.hasInventory() - && autoExtractor.hasInventory(); + boolean hopper = FunnelBlock.getFunnelFacing(blockState) == Direction.UP && !world.getBlockState(pos.up()) + .getMaterial() + .isReplaceable(); return pushingToBelt || hopper; } @@ -259,9 +264,10 @@ public class FunnelTileEntity extends SmartTileEntity { public double getMaxRenderDistanceSquared() { return hasFlap() ? super.getMaxRenderDistanceSquared() : 64; } - + public void onTransfer(ItemStack stack) { - AllBlocks.CONTENT_OBSERVER.get().onFunnelTransfer(world, pos, stack); + AllBlocks.CONTENT_OBSERVER.get() + .onFunnelTransfer(world, pos, stack); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java index 7265722c8..13354fc17 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java @@ -58,6 +58,18 @@ public class ArmBlock extends KineticBlock implements ITE { ISelectionContext p_220053_4_) { return state.get(CEILING) ? AllShapes.MECHANICAL_ARM_CEILING : AllShapes.MECHANICAL_ARM; } + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { + super.onBlockAdded(state, world, pos, oldState, isMoving); + withTileEntityDo(world, pos, ArmTileEntity::redstoneUpdate); + } + + @Override + public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, + BlockPos p_220069_5_, boolean p_220069_6_) { + withTileEntityDo(world, pos, ArmTileEntity::redstoneUpdate); + } @Override public Axis getRotationAxis(BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java index 338ee843f..451537bee 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -8,11 +8,16 @@ import com.google.common.collect.ImmutableMap; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; +import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; +import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; import com.simibubi.create.content.contraptions.components.saw.SawBlock; +import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; @@ -24,6 +29,7 @@ import net.minecraft.block.JukeboxBlock; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.MusicDiscItem; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.NBTUtil; import net.minecraft.state.properties.BlockStateProperties; @@ -56,14 +62,17 @@ public abstract class ArmInteractionPoint { private static ImmutableMap> POINTS = ImmutableMap.>builder() + .put(new Saw(), Saw::new) .put(new Belt(), Belt::new) .put(new Depot(), Depot::new) - .put(new Saw(), Saw::new) .put(new Chute(), Chute::new) - .put(new Jukebox(), Jukebox::new) .put(new Basin(), Basin::new) - .put(new Millstone(), Millstone::new) .put(new Funnel(), Funnel::new) + .put(new Jukebox(), Jukebox::new) + .put(new Crafter(), Crafter::new) + .put(new Deployer(), Deployer::new) + .put(new Millstone(), Millstone::new) + .put(new BlazeBurner(), BlazeBurner::new) .put(new CrushingWheels(), CrushingWheels::new) .build(); @@ -90,6 +99,10 @@ public abstract class ArmInteractionPoint { return Direction.DOWN; } + boolean isStillValid(IBlockReader reader) { + return isValid(reader, pos, reader.getBlockState(pos)); + } + abstract boolean isValid(IBlockReader reader, BlockPos pos, BlockState state); static boolean isInteractable(IBlockReader reader, BlockPos pos, BlockState state) { @@ -228,6 +241,84 @@ public abstract class ArmInteractionPoint { } + static class Deployer extends ArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.DEPLOYER.has(state); + } + + @Override + Direction getInteractionDirection() { + return state.get(DeployerBlock.FACING) + .getOpposite(); + } + + @Override + Vec3d getInteractionPositionVector() { + return super.getInteractionPositionVector() + .add(new Vec3d(getInteractionDirection().getDirectionVec()).scale(.65f)); + } + + } + + static class BlazeBurner extends ArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.BLAZE_BURNER.has(state); + } + + @Override + ItemStack extract(World world, int slot, int amount, boolean simulate) { + return ItemStack.EMPTY; + } + + @Override + ItemStack insert(World world, ItemStack stack, boolean simulate) { + boolean success = BlazeBurnerBlock.tryInsert(state, world, pos, stack.copy(), false, simulate); + return success ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - 1) : stack; + } + + @Override + void cycleMode() {} + + } + + static class Crafter extends ArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.MECHANICAL_CRAFTER.has(state); + } + + @Override + Direction getInteractionDirection() { + return state.get(MechanicalCrafterBlock.HORIZONTAL_FACING) + .getOpposite(); + } + + @Override + ItemStack extract(World world, int slot, int amount, boolean simulate) { + TileEntity te = world.getTileEntity(pos); + if (!(te instanceof MechanicalCrafterTileEntity)) + return ItemStack.EMPTY; + MechanicalCrafterTileEntity crafter = (MechanicalCrafterTileEntity) te; + SmartInventory inventory = crafter.getInventory(); + inventory.allowExtraction(); + ItemStack extract = super.extract(world, slot, amount, simulate); + inventory.forbidExtraction(); + return extract; + } + + @Override + Vec3d getInteractionPositionVector() { + return super.getInteractionPositionVector() + .add(new Vec3d(getInteractionDirection().getDirectionVec()).scale(.5f)); + } + + } + static class Basin extends ArmInteractionPoint { @Override @@ -261,6 +352,8 @@ public abstract class ArmInteractionPoint { if (!jukeboxTE.getRecord() .isEmpty()) return stack; + if (!(stack.getItem() instanceof MusicDiscItem)) + return stack; ItemStack remainder = stack.copy(); ItemStack toInsert = remainder.split(1); if (!simulate && !world.isRemote) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 93d21dea1..9cd8f43ea 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -60,6 +60,7 @@ public class ArmTileEntity extends KineticTileEntity { protected ScrollOptionBehaviour selectionMode; protected int lastInputIndex = -1; protected int lastOutputIndex = -1; + protected boolean redstoneLocked; enum Phase { SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, DANCING @@ -79,6 +80,7 @@ public class ArmTileEntity extends KineticTileEntity { previousTarget = ArmAngleTarget.NO_TARGET; previousBaseAngle = previousTarget.baseAngle; updateInteractionPoints = true; + redstoneLocked = false; } @Override @@ -188,6 +190,9 @@ public class ArmTileEntity extends KineticTileEntity { } protected void searchForItem() { + if (redstoneLocked) + return; + boolean foundInput = false; // for round robin, we start looking after the last used index, for default we // start at 0; @@ -201,6 +206,8 @@ public class ArmTileEntity extends KineticTileEntity { InteractionPoints: for (int i = startIndex; i < scanRange; i++) { ArmInteractionPoint armInteractionPoint = inputs.get(i); + if (!armInteractionPoint.isStillValid(world)) + continue; for (int j = 0; j < armInteractionPoint.getSlotCount(world); j++) { if (getDistributableAmount(armInteractionPoint, j) == 0) continue; @@ -237,6 +244,9 @@ public class ArmTileEntity extends KineticTileEntity { for (int i = startIndex; i < scanRange; i++) { ArmInteractionPoint armInteractionPoint = outputs.get(i); + if (!armInteractionPoint.isStillValid(world)) + continue; + ItemStack remainder = armInteractionPoint.insert(world, held, true); if (remainder.equals(heldItem, false)) continue; @@ -325,6 +335,18 @@ public class ArmTileEntity extends KineticTileEntity { } return stack; } + + public void redstoneUpdate() { + if (world.isRemote) + return; + boolean blockPowered = world.isBlockPowered(pos); + if (blockPowered == redstoneLocked) + return; + redstoneLocked = blockPowered; + sendData(); + if (!redstoneLocked) + searchForItem(); + } protected void initInteractionPoints() { if (!updateInteractionPoints || interactionPointTag == null) @@ -366,6 +388,7 @@ public class ArmTileEntity extends KineticTileEntity { } NBTHelper.writeEnum(compound, "Phase", phase); + compound.putBoolean("Powered", redstoneLocked); compound.put("HeldItem", heldItem.serializeNBT()); compound.putInt("TargetPointIndex", chasedPointIndex); compound.putFloat("MovementProgress", chasedPointProgress); @@ -383,6 +406,7 @@ public class ArmTileEntity extends KineticTileEntity { chasedPointIndex = compound.getInt("TargetPointIndex"); chasedPointProgress = compound.getFloat("MovementProgress"); interactionPointTag = compound.getList("InteractionPoints", NBT.TAG_COMPOUND); + redstoneLocked = compound.getBoolean("Powered"); if (!clientPacket) return; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java index 401aff0c9..a2fe91a5a 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java @@ -15,7 +15,6 @@ import com.simibubi.create.foundation.gui.widgets.ScrollInput; import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput; import com.simibubi.create.foundation.utility.Lang; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTUtil; @@ -191,7 +190,7 @@ public class SchematicEditScreen extends AbstractSimiScreen { @Override public boolean mouseClicked(double x, double y, int button) { if (confirmButton.isHovered()) { - Minecraft.getInstance().player.closeScreen(); + onClose(); return true; } diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index e437fba6b..55eab466e 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -6,8 +6,13 @@ import java.util.HashMap; import java.util.Map; import java.util.function.Function; +import javax.annotation.Nullable; + +import com.simibubi.create.AllTags.AllBlockTags; +import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.CasingBlock; +import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonGenerator; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; @@ -24,6 +29,7 @@ import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.RenderType; +import net.minecraft.item.DyeColor; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.PistonType; import net.minecraft.util.Direction; @@ -44,6 +50,21 @@ public class BuilderTransformers { .transform(ModelGen.customItemModel("cuckoo_clock", "item")); } + public static NonNullUnaryOperator> valveHandle( + @Nullable DyeColor color) { + return b -> b.initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> { + String variant = color == null ? "copper" : color.getName(); + p.directionalBlock(c.get(), p.models() + .withExistingParent(variant + "_valve_handle", p.modLoc("block/valve_handle")) + .texture("3", p.modLoc("block/valve_handle/valve_handle_" + variant))); + }) + .tag(AllBlockTags.BRITTLE.tag, AllBlockTags.VALVE_HANDLES.tag) + .item() + .tag(AllItemTags.VALVE_HANDLES.tag) + .build(); + } + public static NonNullUnaryOperator> casing( CTSpriteShiftEntry ct) { return b -> b.onRegister(connectedTextures(new StandardCTBehaviour(ct))) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index 4b72a6da6..f34c5f336 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -8,6 +8,7 @@ import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTags; +import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.Create; import com.simibubi.create.content.AllSections; import com.simibubi.create.content.palettes.AllPaletteBlocks; @@ -336,6 +337,16 @@ public class StandardRecipeGen extends CreateRecipeProvider { .patternLine("CCC") .patternLine(" S")), + COPPER_VALVE_HANDLE = create(AllBlocks.COPPER_VALVE_HANDLE).unlockedByTag(I::copper) + .viaShaped(b -> b.key('S', I.andesite()) + .key('C', I.copperSheet()) + .patternLine("CCC") + .patternLine(" S ")), + + COPPER_VALVE_HANDLE_FROM_OTHER_HANDLES = create(AllBlocks.COPPER_VALVE_HANDLE).withSuffix("_from_others") + .unlockedByTag(I::copper) + .viaShapeless(b -> b.addIngredient(AllItemTags.VALVE_HANDLES.tag)), + NOZZLE = create(AllBlocks.NOZZLE).unlockedBy(AllBlocks.ENCASED_FAN::get) .viaShaped(b -> b.key('S', I.andesite()) .key('C', ItemTags.WOOL) @@ -416,6 +427,14 @@ public class StandardRecipeGen extends CreateRecipeProvider { .patternLine("P") .patternLine("S")), + FLUID_VALVE = create(AllBlocks.FLUID_VALVE).unlockedByTag(I::copper) + .viaShaped(b -> b.key('P', I.shaft()) + .key('S', AllBlocks.FLUID_PIPE.get()) + .key('I', I.ironSheet()) + .patternLine("I") + .patternLine("S") + .patternLine("P")), + SPOUT = create(AllBlocks.SPOUT).unlockedBy(I::copperCasing) .viaShaped(b -> b.key('T', AllBlocks.FLUID_TANK.get()) .key('P', Items.DRIED_KELP) @@ -851,20 +870,22 @@ public class StandardRecipeGen extends CreateRecipeProvider { GeneratedRecipeBuilder create(Supplier result) { return new GeneratedRecipeBuilder(currentFolder, result); } - + GeneratedRecipeBuilder create(ItemProviderEntry result) { return create(result::get); } GeneratedRecipe blastCrushedMetal(Supplier result, Supplier ingredient) { - return create(result::get).withSuffix("_from_crushed").viaCooking(ingredient::get) + return create(result::get).withSuffix("_from_crushed") + .viaCooking(ingredient::get) .rewardXP(.1f) .inBlastFurnace(); } GeneratedRecipe blastMetalOre(Supplier result, Tag ore) { - return create(result::get).withSuffix("_from_ore").viaCookingTag(() -> ore) + return create(result::get).withSuffix("_from_ore") + .viaCookingTag(() -> ore) .rewardXP(.1f) .inBlastFurnace(); } diff --git a/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java b/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java index 19773a317..95be9e73e 100644 --- a/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java +++ b/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.item; +import java.util.function.Consumer; + import javax.annotation.Nonnull; import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; @@ -30,7 +32,7 @@ public class SmartInventory extends RecipeWrapper this.stackSize = stackSize; } - public SmartInventory whenContentsChanged(Runnable updateCallback) { + public SmartInventory whenContentsChanged(Consumer updateCallback) { ((SyncedStackHandler) inv).whenContentsChange(updateCallback); return this; } @@ -122,7 +124,7 @@ public class SmartInventory extends RecipeWrapper private SyncedTileEntity te; private boolean stackNonStackables; private int stackSize; - private Runnable updateCallback; + private Consumer updateCallback; public SyncedStackHandler(int slots, SyncedTileEntity te, boolean stackNonStackables, int stackSize) { super(slots); @@ -135,7 +137,7 @@ public class SmartInventory extends RecipeWrapper protected void onContentsChanged(int slot) { super.onContentsChanged(slot); if (updateCallback != null) - updateCallback.run(); + updateCallback.accept(slot); te.notifyUpdate(); } @@ -144,7 +146,7 @@ public class SmartInventory extends RecipeWrapper return Math.min(stackNonStackables ? 64 : super.getSlotLimit(slot), stackSize); } - public void whenContentsChange(Runnable updateCallback) { + public void whenContentsChange(Consumer updateCallback) { this.updateCallback = updateCallback; }