diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index e924ecd39..ee1179b75 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -5,7 +5,7 @@ f0d6baaabda94151134f569246d61a6e710c35a9 assets/create/blockstates/acacia_window 79c50afcea3a360783a5b3c73de9823511e9aed9 assets/create/blockstates/adjustable_pulse_repeater.json 1d730df54c9eae94063e37396d224fb3c87517e0 assets/create/blockstates/adjustable_repeater.json 9dd79bf5430f674e7d3e3fc7d59edee3d66e241e assets/create/blockstates/analog_lever.json -0a172dea0746027be3676e87271615f1307245a6 assets/create/blockstates/andesite_belt_funnel.json +dd468657a73fc2ad6e1ac08ace2996b6997d33e0 assets/create/blockstates/andesite_belt_funnel.json 585481e97c5066af63ea12fa5dd658798844d64c assets/create/blockstates/andesite_bricks.json 4e8d61aa2c8490301317ef747f67f0169ebfc2ed assets/create/blockstates/andesite_bricks_slab.json da63a8be3191d6d72afef6c79e3aea3f607631f9 assets/create/blockstates/andesite_bricks_stairs.json @@ -29,7 +29,7 @@ a71ddf3291bd13d7877f2fe32c42f50407f99afb assets/create/blockstates/black_valve_h ec2ab87734acc209e6be3bc4898b1199f819bfd3 assets/create/blockstates/blue_sail.json 4854d1ef52130a7887aecc60bcaffbd66f0871a8 assets/create/blockstates/blue_seat.json 9d7341a5cae5d47788c595167946dfb6441cebd1 assets/create/blockstates/blue_valve_handle.json -fba967b1f6e44b34a9d9662e2fedfc13aad7f36c assets/create/blockstates/brass_belt_funnel.json +ee1299a15fca849eb42bf81507f85a54c167bbfe assets/create/blockstates/brass_belt_funnel.json 8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json 3057e1121117c0cd651c288cd8e2d46bdf64afb1 assets/create/blockstates/brass_funnel.json @@ -137,7 +137,7 @@ fc652317e03b57c76e23a805da16a28d15254029 assets/create/blockstates/fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json 8e532856c3c2b4e4e59c65a2a81a694e35d14658 assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json -5ba9fc9e7b29c76040329367cfb45affdd473404 assets/create/blockstates/fluid_pipe.json +3d97226b5e8d8f70ed08e45e78db1faf78d5e28b assets/create/blockstates/fluid_pipe.json f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json 5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json @@ -210,6 +210,7 @@ e7c7b952137c4cb615988ea59b9f14303c9a4dfe assets/create/blockstates/limestone_bri 10513d55f7c621162a13d474d8f4eb54305d0f60 assets/create/blockstates/limestone_cobblestone_wall.json b7506b862d13b3f915c60d38bb7a20afc935f70a assets/create/blockstates/limestone_pillar.json 69790737767e06f000c7824749c46664a123160e assets/create/blockstates/linear_chassis.json +07bae932a163b81f8749f98287b4fb4949fe0b8b assets/create/blockstates/lit_blaze_burner.json 85a58ac539775f90903d9ce66374f3f2ffd4fecf assets/create/blockstates/magenta_sail.json 84c494d24cc58af274fdd054896c680e8095d2d0 assets/create/blockstates/magenta_seat.json 3bfce5016e5c929b74368dc2d734e62ae34587a4 assets/create/blockstates/magenta_valve_handle.json @@ -329,7 +330,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json 92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json 61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json -d2e6f19325be65457e94bea44fd52863c0f66be7 assets/create/blockstates/radial_chassis.json +143d66a7262ccd29f36784d6b064d4a13ba374b6 assets/create/blockstates/radial_chassis.json 45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json 722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json @@ -391,17 +392,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -be82e2e68c74c572e72979a6d4a5ec5e571931e2 assets/create/lang/en_ud.json -b953a264ec3044b955431fb988c0bafcb9b57388 assets/create/lang/en_us.json -97fe71d544f1bc7552e6c9d1f328ae02cb1a1947 assets/create/lang/unfinished/de_de.json -052819c4d2177bfc5cee9675300866d724f4b63f assets/create/lang/unfinished/fr_fr.json -67d67f305c83e021e2ae37e03b9bf4aa2661bc87 assets/create/lang/unfinished/it_it.json -b0e3fc5a71b5127b832e38daece78ca9db9ce303 assets/create/lang/unfinished/ja_jp.json -610f399864dfa9d7fd258570853f7d577c5aee31 assets/create/lang/unfinished/ko_kr.json -12215221adcb015c5c74dbfe5affa920cd570580 assets/create/lang/unfinished/nl_nl.json -ead7216188692e96fb060b35213f1ef6b0682e87 assets/create/lang/unfinished/pt_br.json -e9d95034f9b33eb8e41792740ed2d8c488af6676 assets/create/lang/unfinished/ru_ru.json -32a2c4af9a5247f3bc7a5c2f502376e1e580d8bc assets/create/lang/unfinished/zh_cn.json +69f3eb168fafdc42a2cba5c5821eeb87dbcdbce7 assets/create/lang/en_ud.json +83a8328bc741c1414536cda04dd9851c6b62fafe assets/create/lang/en_us.json +30e9741d978aa10141b4173ee805ff73306479c7 assets/create/lang/unfinished/de_de.json +1179406deedf240244a3f1d2c46c5f50c5fd9d28 assets/create/lang/unfinished/fr_fr.json +c78ed168a8891e4b8689f7040d75b69886ec8624 assets/create/lang/unfinished/it_it.json +859806f0d375938e07db1bb64abddade04f3d54b assets/create/lang/unfinished/ja_jp.json +5cb7908df97c2080dd393a22da71409881cc2ae4 assets/create/lang/unfinished/ko_kr.json +87b31c690863eb570b90d83f612af0dd0069c0b0 assets/create/lang/unfinished/nl_nl.json +71aaab91d665a02decbb2230698311b34e3b6936 assets/create/lang/unfinished/pt_br.json +e88e4e5ad08f7b49ee08d5715d02eba1886b5bb0 assets/create/lang/unfinished/ru_ru.json +55655931d8773aab371710fb30b075005a8f34db assets/create/lang/unfinished/zh_cn.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json @@ -424,14 +425,14 @@ fde9ff3520cd7d2cc2926cf95cad8c7ec5bdcae9 assets/create/models/block/adjustable_p ce5e0cd1598cf2228bb77a68c304dd210f3848f8 assets/create/models/block/adjustable_repeater_powered.json b62a75c96400bf75287091ce324727f00754bf31 assets/create/models/block/adjustable_repeater_powered_powering.json ea279b9b1a2d1eab8a69e5e35627ada170013b89 assets/create/models/block/adjustable_repeater_powering.json -bd552b6d51736cf04a7fb215585d7d7111b918f7 assets/create/models/block/andesite_belt_funnel_pull_extended.json -904e7f37e843a6a803bec41f5296bfa27dc490f2 assets/create/models/block/andesite_belt_funnel_pull_powered_extended.json -27340414ae404c55fe10d35fb47c677070acb440 assets/create/models/block/andesite_belt_funnel_pull_powered_retracted.json -2c4c06839846545ef6352fd099cf8c9b7b37f266 assets/create/models/block/andesite_belt_funnel_pull_retracted.json -82f0aec90405c6fd55640af7ff838e1bb0df19ec assets/create/models/block/andesite_belt_funnel_push_extended.json -04af9301845d528abe5814af8a8e76accafddabd assets/create/models/block/andesite_belt_funnel_push_powered_extended.json -f266353d3116e5e87dc91f446d00cf74c15e89c8 assets/create/models/block/andesite_belt_funnel_push_powered_retracted.json -fc615c44a852238de92162b08034c29701f45430 assets/create/models/block/andesite_belt_funnel_push_retracted.json +10832d276445d8a5f94413de1979349db1364ec4 assets/create/models/block/andesite_belt_funnel__extended.json +d01611179d3ed6c013f4f649127239772cbdeba3 assets/create/models/block/andesite_belt_funnel__powered_extended.json +ed52e27fd7d645c25dc9dc58a44f29be12cb6d5e assets/create/models/block/andesite_belt_funnel__powered_pulling.json +3c8ed64100de95994580a8e6e24c7b72f2332081 assets/create/models/block/andesite_belt_funnel__powered_pushing.json +240230f29d092505d47c83ae59f5c908e4bf4932 assets/create/models/block/andesite_belt_funnel__powered_retracted.json +c862af2b37ccfd0123e9e96a5400be82033bbdd3 assets/create/models/block/andesite_belt_funnel__pulling.json +884aaf754de0bfd51690aab6e01f775419728cf7 assets/create/models/block/andesite_belt_funnel__pushing.json +7b1888eec72c04677a3dfb709b04ad10d08d74d0 assets/create/models/block/andesite_belt_funnel__retracted.json de448acc19ddd984f2599ce9ce5bf9489235fdc9 assets/create/models/block/andesite_bricks.json 3d285d395c45662a0ffe89c0259f519285cae899 assets/create/models/block/andesite_bricks_slab.json 6eecf3e3d3f184aa69d224bbb3b82b5164a8726b assets/create/models/block/andesite_bricks_slab_top.json @@ -483,14 +484,14 @@ c86a455b8e85ef190261718726b344cf15ba1e4f assets/create/models/block/bracket/shaf 8fa9ce896412af894d7c431a50104445d91b1d4d assets/create/models/block/bracket/shaft/ground_wooden.json 3956168840aca9425d3bf240650406c1dbc8ea66 assets/create/models/block/bracket/shaft/wall_metal.json 7aaa2fbdb618e8aab7e0da19a5393e1eaa608623 assets/create/models/block/bracket/shaft/wall_wooden.json -24dff9a8d22c9a88286d2b7d08384ac9f281a512 assets/create/models/block/brass_belt_funnel_pull_extended.json -c9c5f53c9d4f6cf6f509452e91cab1ba5b57f807 assets/create/models/block/brass_belt_funnel_pull_powered_extended.json -addcf821a2348c0985bf9a72229355cfab818069 assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json -332c7b8bf2feb635290b05788b61ead0b2cc813a assets/create/models/block/brass_belt_funnel_pull_retracted.json -094a5aedd53295aaa9b78deedf7899f9875dc5d8 assets/create/models/block/brass_belt_funnel_push_extended.json -44d2cf63398e5e4c39f43412a00d7f0213d8703c assets/create/models/block/brass_belt_funnel_push_powered_extended.json -07eb19291e5c6108e9e25f57f512747bc48352dd assets/create/models/block/brass_belt_funnel_push_powered_retracted.json -6ff63956c71363f198588aca3fd849ad4e0c8863 assets/create/models/block/brass_belt_funnel_push_retracted.json +3fac6b1da6a81fc44a1ffe1e13dc6cfe37c3b738 assets/create/models/block/brass_belt_funnel__extended.json +2d10825bfd94419d5dbb4e60187127c4a1ce1526 assets/create/models/block/brass_belt_funnel__powered_extended.json +5ff7e01c5b65eb210a054556068d75426b547d9b assets/create/models/block/brass_belt_funnel__powered_pulling.json +e981727fd71e32ea2ecb8e057dfe123f1b940101 assets/create/models/block/brass_belt_funnel__powered_pushing.json +bc23a91f300e46761bb14c597fad39c3d414e84d assets/create/models/block/brass_belt_funnel__powered_retracted.json +dfc6250e28e12ff193a45891978ec50c406fc0c2 assets/create/models/block/brass_belt_funnel__pulling.json +5409325494780afe32e6e30377314e2992ca4aa5 assets/create/models/block/brass_belt_funnel__pushing.json +97410a12b7c1461f88fb633f26ff566a0636b627 assets/create/models/block/brass_belt_funnel__retracted.json 2b1ca994d2feec8321fdb0388028c20d40326eb7 assets/create/models/block/brass_block.json 2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json 838e7ab4c0c9d89eacfa078daf64995e505db896 assets/create/models/block/brass_funnel.json @@ -2393,6 +2394,7 @@ cb315814960850b5080598b89ee94c833b5048f7 data/create/loot_tables/blocks/limeston 92fb16606f289ad33860270d098fad2522b24e09 data/create/loot_tables/blocks/limestone_cobblestone_wall.json 371115e5ceb08c07a9ab2371509960c31e0baa8a data/create/loot_tables/blocks/limestone_pillar.json aa751d2e8a7889907c08c4bec6f6ca266230b6d7 data/create/loot_tables/blocks/linear_chassis.json +4005c244387ea824202c4c7cd44403e537d9766b data/create/loot_tables/blocks/lit_blaze_burner.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/magenta_sail.json 9e5e017cd3b4f544f487a5ca22ef610a4addc8ec data/create/loot_tables/blocks/magenta_seat.json 517e983d7387ec0d86845d4cf3deaa6d68c71170 data/create/loot_tables/blocks/magenta_valve_handle.json @@ -2804,7 +2806,7 @@ d73a0ed13112e001dad61d6ea66fd729c86e7b62 data/create/recipes/crushing/nether_qua 70116a5a9d1f93ae377e1526ca99582190cf2e3e data/create/recipes/crushing/nether_wart_block_quark.json 0dfe5092af96fbaeddaace6d3b1c45fa6f4cf7fe data/create/recipes/crushing/netherrack.json 71397f0ae2e175181195b8b2894d108e0cdc3da7 data/create/recipes/crushing/obsidian.json -88d7ab3d6407010876e328f5f20a4ed9ddda7e3e data/create/recipes/crushing/prismarine_crystals.json +0185e8d17cc17b0ac822169f4b2968d95468b4a2 data/create/recipes/crushing/prismarine_crystals.json 42299b3a0596c7743404496205854ac2324aedd7 data/create/recipes/crushing/redstone_ore.json 94589aa3171fcfda8eed76000d53a36ea6fd7e53 data/create/recipes/crushing/sand.json dc4cf8b759f5eeee0ccfa6aaad204fbeea487b7f data/create/recipes/crushing/wool.json @@ -3303,8 +3305,8 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone 6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json f9ecec40e11a87de73c9dc7c2963c1cb10b1a180 data/create/tags/blocks/brittle.json -246ee2ec4e778e38a362f319506564886d4e0e76 data/create/tags/blocks/fan_heaters.json -551299f2f784435859bef13057c2b033eaefc784 data/create/tags/blocks/fan_transparent.json +13b55d6e905a02403d2e95e9ba2357f99c5f2241 data/create/tags/blocks/fan_heaters.json +3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/non_movable.json c9ac7e3e5ec18554e7184168d65e9b8e44ef5610 data/create/tags/blocks/sails.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json diff --git a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json index 369be6128..4bbd11c49 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json @@ -1,123 +1,123 @@ { "variants": { - "facing=north,powered=false,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_retracted" + "facing=north,powered=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel__retracted" }, - "facing=south,powered=false,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_retracted", + "facing=south,powered=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel__retracted", "y": 180 }, - "facing=west,powered=false,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_retracted", + "facing=west,powered=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel__retracted", "y": 270 }, - "facing=east,powered=false,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_retracted", + "facing=east,powered=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel__retracted", "y": 90 }, - "facing=north,powered=true,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_powered_retracted" + "facing=north,powered=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel__powered_retracted" }, - "facing=south,powered=true,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_powered_retracted", + "facing=south,powered=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel__powered_retracted", "y": 180 }, - "facing=west,powered=true,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_powered_retracted", + "facing=west,powered=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel__powered_retracted", "y": 270 }, - "facing=east,powered=true,pushing=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_pull_powered_retracted", + "facing=east,powered=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel__powered_retracted", "y": 90 }, - "facing=north,powered=false,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_retracted" + "facing=north,powered=false,shape=extended": { + "model": "create:block/andesite_belt_funnel__extended" }, - "facing=south,powered=false,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_retracted", + "facing=south,powered=false,shape=extended": { + "model": "create:block/andesite_belt_funnel__extended", "y": 180 }, - "facing=west,powered=false,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_retracted", + "facing=west,powered=false,shape=extended": { + "model": "create:block/andesite_belt_funnel__extended", "y": 270 }, - "facing=east,powered=false,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_retracted", + "facing=east,powered=false,shape=extended": { + "model": "create:block/andesite_belt_funnel__extended", "y": 90 }, - "facing=north,powered=true,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_powered_retracted" + "facing=north,powered=true,shape=extended": { + "model": "create:block/andesite_belt_funnel__powered_extended" }, - "facing=south,powered=true,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_powered_retracted", + "facing=south,powered=true,shape=extended": { + "model": "create:block/andesite_belt_funnel__powered_extended", "y": 180 }, - "facing=west,powered=true,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_powered_retracted", + "facing=west,powered=true,shape=extended": { + "model": "create:block/andesite_belt_funnel__powered_extended", "y": 270 }, - "facing=east,powered=true,pushing=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel_push_powered_retracted", + "facing=east,powered=true,shape=extended": { + "model": "create:block/andesite_belt_funnel__powered_extended", "y": 90 }, - "facing=north,powered=false,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_extended" + "facing=north,powered=false,shape=pushing": { + "model": "create:block/andesite_belt_funnel__pushing" }, - "facing=south,powered=false,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_extended", + "facing=south,powered=false,shape=pushing": { + "model": "create:block/andesite_belt_funnel__pushing", "y": 180 }, - "facing=west,powered=false,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_extended", + "facing=west,powered=false,shape=pushing": { + "model": "create:block/andesite_belt_funnel__pushing", "y": 270 }, - "facing=east,powered=false,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_extended", + "facing=east,powered=false,shape=pushing": { + "model": "create:block/andesite_belt_funnel__pushing", "y": 90 }, - "facing=north,powered=true,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_powered_extended" + "facing=north,powered=true,shape=pushing": { + "model": "create:block/andesite_belt_funnel__powered_pushing" }, - "facing=south,powered=true,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_powered_extended", + "facing=south,powered=true,shape=pushing": { + "model": "create:block/andesite_belt_funnel__powered_pushing", "y": 180 }, - "facing=west,powered=true,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_powered_extended", + "facing=west,powered=true,shape=pushing": { + "model": "create:block/andesite_belt_funnel__powered_pushing", "y": 270 }, - "facing=east,powered=true,pushing=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_pull_powered_extended", + "facing=east,powered=true,shape=pushing": { + "model": "create:block/andesite_belt_funnel__powered_pushing", "y": 90 }, - "facing=north,powered=false,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_extended" + "facing=north,powered=false,shape=pulling": { + "model": "create:block/andesite_belt_funnel__pulling" }, - "facing=south,powered=false,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_extended", + "facing=south,powered=false,shape=pulling": { + "model": "create:block/andesite_belt_funnel__pulling", "y": 180 }, - "facing=west,powered=false,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_extended", + "facing=west,powered=false,shape=pulling": { + "model": "create:block/andesite_belt_funnel__pulling", "y": 270 }, - "facing=east,powered=false,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_extended", + "facing=east,powered=false,shape=pulling": { + "model": "create:block/andesite_belt_funnel__pulling", "y": 90 }, - "facing=north,powered=true,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_powered_extended" + "facing=north,powered=true,shape=pulling": { + "model": "create:block/andesite_belt_funnel__powered_pulling" }, - "facing=south,powered=true,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_powered_extended", + "facing=south,powered=true,shape=pulling": { + "model": "create:block/andesite_belt_funnel__powered_pulling", "y": 180 }, - "facing=west,powered=true,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_powered_extended", + "facing=west,powered=true,shape=pulling": { + "model": "create:block/andesite_belt_funnel__powered_pulling", "y": 270 }, - "facing=east,powered=true,pushing=true,shape=extended": { - "model": "create:block/andesite_belt_funnel_push_powered_extended", + "facing=east,powered=true,shape=pulling": { + "model": "create:block/andesite_belt_funnel__powered_pulling", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json index 779a55e87..5f68caef4 100644 --- a/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json @@ -1,123 +1,123 @@ { "variants": { - "facing=north,powered=false,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_retracted" + "facing=north,powered=false,shape=retracted": { + "model": "create:block/brass_belt_funnel__retracted" }, - "facing=south,powered=false,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_retracted", + "facing=south,powered=false,shape=retracted": { + "model": "create:block/brass_belt_funnel__retracted", "y": 180 }, - "facing=west,powered=false,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_retracted", + "facing=west,powered=false,shape=retracted": { + "model": "create:block/brass_belt_funnel__retracted", "y": 270 }, - "facing=east,powered=false,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_retracted", + "facing=east,powered=false,shape=retracted": { + "model": "create:block/brass_belt_funnel__retracted", "y": 90 }, - "facing=north,powered=true,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_powered_retracted" + "facing=north,powered=true,shape=retracted": { + "model": "create:block/brass_belt_funnel__powered_retracted" }, - "facing=south,powered=true,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_powered_retracted", + "facing=south,powered=true,shape=retracted": { + "model": "create:block/brass_belt_funnel__powered_retracted", "y": 180 }, - "facing=west,powered=true,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_powered_retracted", + "facing=west,powered=true,shape=retracted": { + "model": "create:block/brass_belt_funnel__powered_retracted", "y": 270 }, - "facing=east,powered=true,pushing=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_pull_powered_retracted", + "facing=east,powered=true,shape=retracted": { + "model": "create:block/brass_belt_funnel__powered_retracted", "y": 90 }, - "facing=north,powered=false,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_retracted" + "facing=north,powered=false,shape=extended": { + "model": "create:block/brass_belt_funnel__extended" }, - "facing=south,powered=false,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_retracted", + "facing=south,powered=false,shape=extended": { + "model": "create:block/brass_belt_funnel__extended", "y": 180 }, - "facing=west,powered=false,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_retracted", + "facing=west,powered=false,shape=extended": { + "model": "create:block/brass_belt_funnel__extended", "y": 270 }, - "facing=east,powered=false,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_retracted", + "facing=east,powered=false,shape=extended": { + "model": "create:block/brass_belt_funnel__extended", "y": 90 }, - "facing=north,powered=true,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_powered_retracted" + "facing=north,powered=true,shape=extended": { + "model": "create:block/brass_belt_funnel__powered_extended" }, - "facing=south,powered=true,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_powered_retracted", + "facing=south,powered=true,shape=extended": { + "model": "create:block/brass_belt_funnel__powered_extended", "y": 180 }, - "facing=west,powered=true,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_powered_retracted", + "facing=west,powered=true,shape=extended": { + "model": "create:block/brass_belt_funnel__powered_extended", "y": 270 }, - "facing=east,powered=true,pushing=true,shape=retracted": { - "model": "create:block/brass_belt_funnel_push_powered_retracted", + "facing=east,powered=true,shape=extended": { + "model": "create:block/brass_belt_funnel__powered_extended", "y": 90 }, - "facing=north,powered=false,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_extended" + "facing=north,powered=false,shape=pushing": { + "model": "create:block/brass_belt_funnel__pushing" }, - "facing=south,powered=false,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_extended", + "facing=south,powered=false,shape=pushing": { + "model": "create:block/brass_belt_funnel__pushing", "y": 180 }, - "facing=west,powered=false,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_extended", + "facing=west,powered=false,shape=pushing": { + "model": "create:block/brass_belt_funnel__pushing", "y": 270 }, - "facing=east,powered=false,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_extended", + "facing=east,powered=false,shape=pushing": { + "model": "create:block/brass_belt_funnel__pushing", "y": 90 }, - "facing=north,powered=true,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_powered_extended" + "facing=north,powered=true,shape=pushing": { + "model": "create:block/brass_belt_funnel__powered_pushing" }, - "facing=south,powered=true,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_powered_extended", + "facing=south,powered=true,shape=pushing": { + "model": "create:block/brass_belt_funnel__powered_pushing", "y": 180 }, - "facing=west,powered=true,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_powered_extended", + "facing=west,powered=true,shape=pushing": { + "model": "create:block/brass_belt_funnel__powered_pushing", "y": 270 }, - "facing=east,powered=true,pushing=false,shape=extended": { - "model": "create:block/brass_belt_funnel_pull_powered_extended", + "facing=east,powered=true,shape=pushing": { + "model": "create:block/brass_belt_funnel__powered_pushing", "y": 90 }, - "facing=north,powered=false,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_extended" + "facing=north,powered=false,shape=pulling": { + "model": "create:block/brass_belt_funnel__pulling" }, - "facing=south,powered=false,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_extended", + "facing=south,powered=false,shape=pulling": { + "model": "create:block/brass_belt_funnel__pulling", "y": 180 }, - "facing=west,powered=false,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_extended", + "facing=west,powered=false,shape=pulling": { + "model": "create:block/brass_belt_funnel__pulling", "y": 270 }, - "facing=east,powered=false,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_extended", + "facing=east,powered=false,shape=pulling": { + "model": "create:block/brass_belt_funnel__pulling", "y": 90 }, - "facing=north,powered=true,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_powered_extended" + "facing=north,powered=true,shape=pulling": { + "model": "create:block/brass_belt_funnel__powered_pulling" }, - "facing=south,powered=true,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_powered_extended", + "facing=south,powered=true,shape=pulling": { + "model": "create:block/brass_belt_funnel__powered_pulling", "y": 180 }, - "facing=west,powered=true,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_powered_extended", + "facing=west,powered=true,shape=pulling": { + "model": "create:block/brass_belt_funnel__powered_pulling", "y": 270 }, - "facing=east,powered=true,pushing=true,shape=extended": { - "model": "create:block/brass_belt_funnel_push_powered_extended", + "facing=east,powered=true,shape=pulling": { + "model": "create:block/brass_belt_funnel__powered_pulling", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index d79073dc8..a4cffcde7 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -60,10 +60,10 @@ }, { "when": { - "up": "true", "down": "false", - "south": "false", - "north": "true" + "north": "true", + "up": "true", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lu_x" @@ -71,10 +71,10 @@ }, { "when": { - "up": "true", "down": "false", - "south": "true", - "north": "false" + "north": "false", + "up": "true", + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_x" @@ -82,10 +82,10 @@ }, { "when": { - "up": "false", "down": "true", - "south": "false", - "north": "true" + "north": "true", + "up": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_x" @@ -93,10 +93,10 @@ }, { "when": { - "up": "false", "down": "true", - "south": "true", - "north": "false" + "north": "false", + "up": "false", + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/rd_x" @@ -104,21 +104,21 @@ }, { "when": { - "up": "true", "down": "true", - "south": "false", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_x" - } - }, - { - "when": { + "north": "false", "up": "true", - "down": "false", - "south": "false", - "north": "false" + "south": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/ud_x" + } + }, + { + "when": { + "down": "false", + "north": "false", + "up": "true", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -126,10 +126,10 @@ }, { "when": { - "up": "false", "down": "true", - "south": "false", - "north": "false" + "north": "false", + "up": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -137,10 +137,10 @@ }, { "when": { - "up": "false", "down": "false", - "south": "true", - "north": "true" + "north": "true", + "up": "false", + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -148,10 +148,10 @@ }, { "when": { - "up": "false", "down": "false", - "south": "false", - "north": "true" + "north": "true", + "up": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -159,10 +159,10 @@ }, { "when": { - "up": "false", "down": "false", - "south": "true", - "north": "false" + "north": "false", + "up": "false", + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -170,10 +170,10 @@ }, { "when": { - "up": "false", "down": "false", - "south": "false", - "north": "false" + "north": "false", + "up": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/none_x" @@ -182,9 +182,9 @@ { "when": { "west": "true", - "south": "true", + "east": "false", "north": "false", - "east": "false" + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_y" @@ -193,9 +193,9 @@ { "when": { "west": "false", - "south": "true", + "east": "true", "north": "false", - "east": "true" + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_y" @@ -204,9 +204,9 @@ { "when": { "west": "true", - "south": "false", + "east": "false", "north": "true", - "east": "false" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_y" @@ -215,9 +215,9 @@ { "when": { "west": "false", - "south": "false", + "east": "true", "north": "true", - "east": "true" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_y" @@ -226,9 +226,9 @@ { "when": { "west": "false", - "south": "true", + "east": "false", "north": "true", - "east": "false" + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -237,9 +237,9 @@ { "when": { "west": "false", - "south": "true", + "east": "false", "north": "false", - "east": "false" + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -248,9 +248,9 @@ { "when": { "west": "false", - "south": "false", + "east": "false", "north": "true", - "east": "false" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -259,9 +259,9 @@ { "when": { "west": "true", - "south": "false", + "east": "true", "north": "false", - "east": "true" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -270,9 +270,9 @@ { "when": { "west": "true", - "south": "false", + "east": "false", "north": "false", - "east": "false" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -281,9 +281,9 @@ { "when": { "west": "false", - "south": "false", + "east": "true", "north": "false", - "east": "true" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -292,9 +292,9 @@ { "when": { "west": "false", - "south": "false", + "east": "false", "north": "false", - "east": "false" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/none_y" @@ -302,10 +302,10 @@ }, { "when": { - "up": "true", "west": "false", "down": "false", - "east": "true" + "east": "true", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_z" @@ -313,10 +313,10 @@ }, { "when": { - "up": "true", "west": "true", "down": "false", - "east": "false" + "east": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_z" @@ -324,10 +324,10 @@ }, { "when": { - "up": "false", "west": "false", "down": "true", - "east": "true" + "east": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_z" @@ -335,10 +335,10 @@ }, { "when": { - "up": "false", "west": "true", "down": "true", - "east": "false" + "east": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_z" @@ -346,10 +346,10 @@ }, { "when": { - "up": "true", "west": "false", "down": "true", - "east": "false" + "east": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -357,10 +357,10 @@ }, { "when": { - "up": "true", "west": "false", "down": "false", - "east": "false" + "east": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -368,10 +368,10 @@ }, { "when": { - "up": "false", "west": "false", "down": "true", - "east": "false" + "east": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -379,10 +379,10 @@ }, { "when": { - "up": "false", "west": "true", "down": "false", - "east": "true" + "east": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -390,10 +390,10 @@ }, { "when": { - "up": "false", "west": "false", "down": "false", - "east": "true" + "east": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -401,10 +401,10 @@ }, { "when": { - "up": "false", "west": "true", "down": "false", - "east": "false" + "east": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -412,10 +412,10 @@ }, { "when": { - "up": "false", "west": "false", "down": "false", - "east": "false" + "east": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/none_z" diff --git a/src/generated/resources/assets/create/blockstates/lit_blaze_burner.json b/src/generated/resources/assets/create/blockstates/lit_blaze_burner.json new file mode 100644 index 000000000..5befc1351 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/lit_blaze_burner.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/blaze_burner/block_with_fire" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 49576633e..83d44d583 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -89,8 +89,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "x" + "axis": "x", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -99,8 +99,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "y" + "axis": "y", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -109,8 +109,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "z" + "axis": "z", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky", @@ -119,8 +119,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "x" + "axis": "x", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -129,8 +129,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "y" + "axis": "y", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -139,8 +139,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "z" + "axis": "z", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_z", @@ -149,8 +149,8 @@ }, { "when": { - "axis": "x", - "sticky_north": "true" + "sticky_north": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky" @@ -158,8 +158,8 @@ }, { "when": { - "axis": "y", - "sticky_north": "true" + "sticky_north": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -168,8 +168,8 @@ }, { "when": { - "axis": "z", - "sticky_north": "true" + "sticky_north": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -178,8 +178,8 @@ }, { "when": { - "axis": "x", - "sticky_north": "false" + "sticky_north": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x" @@ -187,8 +187,8 @@ }, { "when": { - "axis": "y", - "sticky_north": "false" + "sticky_north": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -197,8 +197,8 @@ }, { "when": { - "axis": "z", - "sticky_north": "false" + "sticky_north": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x", diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 31d33664b..e376faec4 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -211,6 +211,7 @@ "block.create.limestone_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", "block.create.limestone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", "block.create.linear_chassis": "s\u0131ss\u0250\u0265\u0186 \u0279\u0250\u01DDu\u0131\uA780", + "block.create.lit_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u0287\u0131\uA780", "block.create.magenta_sail": "\u05DF\u0131\u0250S \u0250\u0287u\u01DDb\u0250W", "block.create.magenta_seat": "\u0287\u0250\u01DDS \u0250\u0287u\u01DDb\u0250W", "block.create.magenta_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u0250\u0287u\u01DDb\u0250W", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index d5d409eae..afc342f22 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -214,6 +214,7 @@ "block.create.limestone_cobblestone_wall": "Limestone Cobblestone Wall", "block.create.limestone_pillar": "Limestone Pillar", "block.create.linear_chassis": "Linear Chassis", + "block.create.lit_blaze_burner": "Lit Blaze Burner", "block.create.magenta_sail": "Magenta Sail", "block.create.magenta_seat": "Magenta Seat", "block.create.magenta_valve_handle": "Magenta Valve Handle", @@ -584,6 +585,8 @@ "create.recipe.blockzapper_upgrade": "Handheld Blockzapper", "create.recipe.sandpaper_polishing": "Sandpaper Polishing", "create.recipe.mystery_conversion": "Mysterious Conversion", + "create.recipe.spout_filling": "Filling by Spout", + "create.recipe.draining": "Item Draining", "create.recipe.processing.chance": "%1$s%% Chance", "create.recipe.heat_requirement.none": "No Heating Required", "create.recipe.heat_requirement.heated": "Heated", @@ -709,6 +712,9 @@ "create.logistics.fluid_filter": "Fluid Filter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "Applied extraction count to filter.", "create.gui.goggles.generator_stats": "Generator Stats:", "create.gui.goggles.kinetic_stats": "Kinetic Stats:", @@ -749,7 +755,7 @@ "create.schematicAndQuill.noTarget": "Hold [Ctrl] to select Air blocks.", "create.schematicAndQuill.abort": "Removed selection.", "create.schematicAndQuill.title": "Schematic Name:", - "create.schematicAndQuill.convert": "Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "Saved as %1$s", @@ -949,6 +955,7 @@ "create.mechanical_arm.extract_from": "Take items from %1$s", "create.mechanical_arm.deposit_to": "Deposit items to %1$s", + "create.mechanical_arm.summary": "Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "%1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "When Multiple Outputs Available", @@ -965,6 +972,15 @@ "create.tunnel.selection_mode.randomize": "Randomize", "create.tunnel.selection_mode.synchronize": "Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "No Targets", + "create.hint.mechanical_arm_no_targets": "It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "Horizontal Funnels", + "create.hint.horizontal_funnel": "cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "Funnels facing upward", + "create.hint.upward_funnel": "can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "Update Bearing", + "create.hint.empty_bearing": "_Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "This is a sample overlay", "create.gui.config.overlay3": "Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index a23e4c29a..3166ec854 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1026", + "_": "Missing Localizations: 1041", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Kalksteinsäule", "block.create.linear_chassis": "Schubgerüst", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "Blockpistole", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "Chance: %1$s%%", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "Mein Bauplan", "create.schematicAndQuill.saved": "Gespeichert als %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index a0ee15143..902af31ba 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 655", + "_": "Missing Localizations: 670", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pillier de calcaire", "block.create.linear_chassis": "Châssis linéaire", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "Blockzappeur portable", "create.recipe.sandpaper_polishing": "Polissage au papier de verre", "create.recipe.mystery_conversion": "Métamorphose chromatique", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% de chance", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "Statistiques du générateur:", "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", "create.schematicAndQuill.abort": "Sélection supprimée.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "Mon schéma", "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index d188b68c1..334e554a3 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 639", + "_": "Missing Localizations: 654", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pilastro di Calcare", "block.create.linear_chassis": "Telaio Lineare", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", "create.recipe.sandpaper_polishing": "Carta Vetrata Levigata", "create.recipe.mystery_conversion": "Metamorfosi Cromatica", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% Possibilità", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "Statistiche del Generatore:", "create.gui.goggles.kinetic_stats": "Statistiche Cinetiche:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "Premi [Ctrl] per selezionare il Blocco d'Aria.", "create.schematicAndQuill.abort": "Selezione rimossa.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "La mia Schematica", "create.schematicAndQuill.saved": "Salvata come %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 4e720b00c..87e75b46b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 638", + "_": "Missing Localizations: 653", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "石灰岩の柱", "block.create.linear_chassis": "リニアシャーシ", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "携帯型ブロックザッパー", "create.recipe.sandpaper_polishing": "紙やすりでの研磨", "create.recipe.mystery_conversion": "色彩変態", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%%チャンス", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "ジェネレータの統計:", "create.gui.goggles.kinetic_stats": "動力の統計:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", "create.schematicAndQuill.abort": "選択を削除しました。", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "%1$s として保存しました", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 9729d9e81..5ffb8c435 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 639", + "_": "Missing Localizations: 654", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "석회암 기둥", "block.create.linear_chassis": "직선 섀시", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", "create.recipe.sandpaper_polishing": "사포 연마", "create.recipe.mystery_conversion": "?", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% 확률", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "주파수. #1", "create.logistics.secondFrequency": "주파수. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "발전 상태:", "create.gui.goggles.kinetic_stats": "가동 상태:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "[Ctrl]을 눌러 공기 블럭을 선택하기.", "create.schematicAndQuill.abort": "위치 제거됨.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "내 청사진", "create.schematicAndQuill.saved": "%1$s로 저장됨", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 93c43a6d1..cf1a481e4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 967", + "_": "Missing Localizations: 982", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Kalksteen Pillar", "block.create.linear_chassis": "Lineaar Frame", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "Blokzapper", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% Kans", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "Houd [Ctrl] ingedrukt om een Lucht block te kiezen.", "create.schematicAndQuill.abort": "Keuze verwijderd.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "Mijn Bouwtekening", "create.schematicAndQuill.saved": "Opgeslagen als %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index b7aa3e484..7af70d235 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1033", + "_": "Missing Localizations: 1048", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis de Translado", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% de chance", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", "create.schematicAndQuill.abort": "Seleção removida.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index c31c1bcb5..b79779e3d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 308", + "_": "Missing Localizations: 323", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "Стена из известняк-булыжника", "block.create.limestone_pillar": "Известковая колонна", "block.create.linear_chassis": "Линейное шасси", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "Ручная блоковая пушка", "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", "create.recipe.mystery_conversion": "Хроматический метаморфоз", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% шанса", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "Частота #1", "create.logistics.secondFrequency": "Частота #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "Статистика генератора:", "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "Удерживайте [Ctrl], чтобы выбрать воздушные блоки.", "create.schematicAndQuill.abort": "Выделение убрано", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "Моя схематика", "create.schematicAndQuill.saved": "Сохранено как %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 23a3412e0..d2d4f65f2 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 321", + "_": "Missing Localizations: 336", "_": "->------------------------] Game Elements [------------------------<-", @@ -215,6 +215,7 @@ "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", "block.create.limestone_pillar": "竖纹石灰岩", "block.create.linear_chassis": "机壳底盘", + "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", @@ -585,6 +586,8 @@ "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", "create.recipe.sandpaper_polishing": "砂纸抛光", "create.recipe.mystery_conversion": "化合物变异", + "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", + "create.recipe.draining": "UNLOCALIZED: Item Draining", "create.recipe.processing.chance": "%1$s%% 概率", "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", @@ -710,6 +713,9 @@ "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", "create.logistics.firstFrequency": "频道. #1", "create.logistics.secondFrequency": "频道. #2", + "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", "create.gui.goggles.generator_stats": "产能器状态:", "create.gui.goggles.kinetic_stats": "动能状态:", @@ -750,7 +756,7 @@ "create.schematicAndQuill.noTarget": "按住Ctrl选择空气方块.", "create.schematicAndQuill.abort": "删除选择.", "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "UNLOCALIZED: Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "我的蓝图", "create.schematicAndQuill.saved": "另存为 %1$s", @@ -950,6 +956,7 @@ "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", + "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", @@ -966,6 +973,15 @@ "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", + "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels", + "create.hint.horizontal_funnel": "UNLOCALIZED: cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "UNLOCALIZED: Funnels facing upward", + "create.hint.upward_funnel": "UNLOCALIZED: can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", + "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__extended.json similarity index 68% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__extended.json index f0b4335fb..5036d51eb 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__extended.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_extended", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_pull", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall", "6": "create:block/andesite_funnel", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_powered_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_extended.json similarity index 69% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_powered_extended.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_extended.json index 091ac0340..d4d5598d2 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_powered_extended.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_extended.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_extended", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_push", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall_powered", "6": "create:block/andesite_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_powered_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pulling.json similarity index 57% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_powered_extended.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pulling.json index 490e5ca1e..a43488f11 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_powered_extended.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pulling.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_extended", + "parent": "create:block/belt_funnel/block_pulling", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_pull", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall_powered", "6": "create:block/andesite_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_powered_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pushing.json similarity index 57% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_powered_retracted.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pushing.json index bc3fa09f2..651382173 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_powered_retracted.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pushing.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_retracted", + "parent": "create:block/belt_funnel/block_pushing", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_push", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall_powered", "6": "create:block/andesite_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_powered_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_retracted.json similarity index 69% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_powered_retracted.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_retracted.json index 6ea17062a..5552e989d 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_powered_retracted.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_retracted.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_retracted", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_pull", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall_powered", "6": "create:block/andesite_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pulling.json similarity index 56% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__pulling.json index 633e2b0c1..5a4fd73da 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pulling.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_extended", + "parent": "create:block/belt_funnel/block_pulling", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_push", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall", "6": "create:block/andesite_funnel", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pushing.json similarity index 56% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__pushing.json index dacd8963d..47130f005 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pushing.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_retracted", + "parent": "create:block/belt_funnel/block_pushing", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_pull", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall", "6": "create:block/andesite_funnel", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__retracted.json similarity index 68% rename from src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json rename to src/generated/resources/assets/create/models/block/andesite_belt_funnel__retracted.json index 86fc4c4d1..4b272eeee 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__retracted.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_retracted", "textures": { "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_push", + "2": "create:block/andesite_funnel_neutral", + "2_1": "create:block/andesite_funnel_push", + "2_2": "create:block/andesite_funnel_pull", "3": "create:block/andesite_funnel_back", "5": "create:block/andesite_funnel_tall", "6": "create:block/andesite_funnel", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__extended.json similarity index 68% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__extended.json index fadd65788..0fce1a25a 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__extended.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_extended", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_pull", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall", "6": "create:block/brass_funnel", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_extended.json similarity index 69% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_extended.json index 455499d7f..ff664c508 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_extended.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_extended", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_push", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall_powered", "6": "create:block/brass_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pulling.json similarity index 57% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pulling.json index 5133a0a73..b2afb7d4e 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pulling.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_extended", + "parent": "create:block/belt_funnel/block_pulling", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_pull", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall_powered", "6": "create:block/brass_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pushing.json similarity index 57% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pushing.json index c5d444dd5..99b733775 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pushing.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_retracted", + "parent": "create:block/belt_funnel/block_pushing", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_push", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall_powered", "6": "create:block/brass_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_retracted.json similarity index 69% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_retracted.json index d64a5168c..60060dfb5 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_retracted.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_retracted", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_pull", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall_powered", "6": "create:block/brass_funnel_powered", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__pulling.json similarity index 55% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__pulling.json index 98a177099..2975e7830 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__pulling.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_extended", + "parent": "create:block/belt_funnel/block_pulling", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_push", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall", "6": "create:block/brass_funnel", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__pushing.json similarity index 55% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__pushing.json index b4e776036..a1130fb8e 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__pushing.json @@ -1,8 +1,10 @@ { - "parent": "create:block/belt_funnel/block_retracted", + "parent": "create:block/belt_funnel/block_pushing", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_pull", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall", "6": "create:block/brass_funnel", diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__retracted.json similarity index 68% rename from src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json rename to src/generated/resources/assets/create/models/block/brass_belt_funnel__retracted.json index 4f23ee54f..693ec38e6 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel__retracted.json @@ -2,7 +2,9 @@ "parent": "create:block/belt_funnel/block_retracted", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_push", + "2": "create:block/brass_funnel_neutral", + "2_1": "create:block/brass_funnel_push", + "2_2": "create:block/brass_funnel_pull", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall", "6": "create:block/brass_funnel", diff --git a/src/generated/resources/data/create/loot_tables/blocks/lit_blaze_burner.json b/src/generated/resources/data/create/loot_tables/blocks/lit_blaze_burner.json new file mode 100644 index 000000000..a74eb7287 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/lit_blaze_burner.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:empty_blaze_burner" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json b/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json index bedfb41c0..0bacec70e 100644 --- a/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json +++ b/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json @@ -7,18 +7,13 @@ ], "results": [ { - "item": "minecraft:prismarine_shard", - "count": 2 + "item": "minecraft:quartz", + "count": 1 }, { "item": "minecraft:quartz", "count": 2, - "chance": 0.75 - }, - { - "item": "minecraft:prismarine_shard", - "count": 2, - "chance": 0.25 + "chance": 0.5 }, { "item": "minecraft:glowstone_dust", diff --git a/src/generated/resources/data/create/tags/blocks/fan_heaters.json b/src/generated/resources/data/create/tags/blocks/fan_heaters.json index ef385188e..a9595ab9c 100644 --- a/src/generated/resources/data/create/tags/blocks/fan_heaters.json +++ b/src/generated/resources/data/create/tags/blocks/fan_heaters.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "create:blaze_burner", + "create:lit_blaze_burner", "minecraft:magma_block", "minecraft:campfire", "minecraft:lava", diff --git a/src/generated/resources/data/create/tags/blocks/fan_transparent.json b/src/generated/resources/data/create/tags/blocks/fan_transparent.json index 9c90933ae..5e6279801 100644 --- a/src/generated/resources/data/create/tags/blocks/fan_transparent.json +++ b/src/generated/resources/data/create/tags/blocks/fan_transparent.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "create:blaze_burner", + "create:lit_blaze_burner", "create:sail_frame", "#minecraft:fences", "minecraft:iron_bars" diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 453d59b73..bbedf7601 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -86,6 +86,7 @@ import com.simibubi.create.content.contraptions.processing.BasinGenerator; import com.simibubi.create.content.contraptions.processing.BasinMovementBehaviour; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlockItem; +import com.simibubi.create.content.contraptions.processing.burner.LitBlazeBurnerBlock; import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftBlock; import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftGenerator; @@ -446,6 +447,17 @@ public class AllBlocks { .build() .register(); + public static final BlockEntry LIT_BLAZE_BURNER = + REGISTRATE.block("lit_blaze_burner", LitBlazeBurnerBlock::new) + .initialProperties(SharedProperties::softMetal) + .properties(p -> p.luminance($ -> 12)) + .addLayer(() -> RenderType::getCutoutMipped) + .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) + .loot((lt, block) -> lt.registerDropping(block, AllItems.EMPTY_BLAZE_BURNER.get())) + .blockstate((c, p) -> p.simpleBlock(c.getEntry(), p.models() + .getExistingFile(p.modLoc("block/blaze_burner/block_with_fire")))) + .register(); + public static final BlockEntry DEPOT = REGISTRATE.block("depot", DepotBlock::new) .initialProperties(SharedProperties::stone) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) @@ -615,7 +627,7 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .addLayer(() -> RenderType::getCutoutMipped) - .item() + .item(BasinOperatorBlockItem::new) .transform(customItemModel()) .register(); diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 60f71a3e8..5daece9ab 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -77,12 +77,27 @@ public class AllShapes { .add(2, 6, 2, 14, 10, 14) .add(0, 10, 0, 16, 13, 16) .forDirectional(UP), - BELT_FUNNEL_RETRACTED = shape(2, -5, 14, 12, 14, 18).add(0, -5, 8, 16, 16, 14) + BELT_FUNNEL_RETRACTED = shape(2, -2, 14, 14, 14, 18).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), - BELT_FUNNEL_EXTENDED = shape(2, -4, 14, 14, 14, 18).add(3, -4, 10, 13, 13, 14) + BELT_FUNNEL_EXTENDED = shape(2, -2, 14, 14, 14, 18).add(3, -4, 10, 13, 13, 14) .add(2, -4, 6, 14, 14, 10) .add(0, -5, 0, 16, 16, 6) .forHorizontal(NORTH), + BELT_FUNNEL_PERPENDICULAR = + shape(2, -2, 14, 14, 14, 18) + .add(1, 8, 12, 15, 15, 14) + .add(0.1, 13, 7, 15.9, 15, 11) + .add(0.1, 9, 8, 15.9, 13, 12) + .add(0.1, 5, 9, 15.9, 9, 13) + .add(0.1, 1, 10, 15.9, 5, 14) + .add(0.1, -3, 11, 15.9, 1, 15) + .forHorizontal(NORTH), + BELT_FUNNEL_CONNECTED = + shape(2, -2, 14, 14, 14, 18) + .add(0, -5, 5, 16, 16, 11) + .add(2, -4, 2, 14, 14, -2) + .add(3, -2, 0, 13, 13, 16) + .forHorizontal(NORTH), FLUID_VALVE = shape(3, -1, 3, 13, 17, 13).add(2, 2, 2, 14, 14, 14) .forAxis(), SMART_FLUID_PIPE_FLOOR = shape(4, 4, 0, 12, 12, 16).add(3, 3, 3, 13, 13, 13) diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index a90208b6a..ac6ba9397 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -23,6 +23,7 @@ import com.simibubi.create.compat.jei.category.CrushingCategory; import com.simibubi.create.compat.jei.category.FanBlastingCategory; import com.simibubi.create.compat.jei.category.FanSmokingCategory; import com.simibubi.create.compat.jei.category.FanWashingCategory; +import com.simibubi.create.compat.jei.category.ItemDrainCategory; import com.simibubi.create.compat.jei.category.MechanicalCraftingCategory; import com.simibubi.create.compat.jei.category.MillingCategory; import com.simibubi.create.compat.jei.category.MixingCategory; @@ -32,8 +33,9 @@ import com.simibubi.create.compat.jei.category.PolishingCategory; import com.simibubi.create.compat.jei.category.PressingCategory; import com.simibubi.create.compat.jei.category.ProcessingViaFanCategory; import com.simibubi.create.compat.jei.category.SawingCategory; +import com.simibubi.create.compat.jei.category.SpoutCategory; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; -import com.simibubi.create.content.contraptions.fluids.potion.PotionMixingRecipeManager; +import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateScreen; import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen; @@ -49,6 +51,7 @@ import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; import mezz.jei.api.registration.ISubtypeRegistration; +import mezz.jei.api.runtime.IIngredientManager; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.ICraftingRecipe; @@ -70,6 +73,7 @@ public class CreateJEI implements IModPlugin { return ID; } + public IIngredientManager ingredientManager; final List> ALL = new ArrayList<>(); final CreateRecipeCategory @@ -155,6 +159,18 @@ public class CreateJEI implements IModPlugin { .recipeList(MysteriousItemConversionCategory::getRecipes) .build(), + spoutFilling = + register("spout_filling", SpoutCategory::new).recipeList(() -> SpoutCategory.getRecipes(ingredientManager)) + .recipes(AllRecipeTypes.FILLING) + .catalyst(AllBlocks.SPOUT::get) + .build(), + + draining = register("draining", ItemDrainCategory::new) + .recipeList(() -> ItemDrainCategory.getRecipes(ingredientManager)) + .recipes(AllRecipeTypes.EMPTYING) + .catalyst(AllBlocks.ITEM_DRAIN::get) + .build(), + autoShaped = register("automatic_shaped", MechanicalCraftingCategory::new) .recipes( r -> (r.getType() == IRecipeType.CRAFTING && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.type) @@ -187,6 +203,7 @@ public class CreateJEI implements IModPlugin { @Override public void registerRecipes(IRecipeRegistration registration) { + ingredientManager = registration.getIngredientManager(); ALL.forEach(c -> c.recipes.forEach(s -> registration.addRecipes(s.get(), c.getUid()))); } @@ -213,9 +230,10 @@ public class CreateJEI implements IModPlugin { } CategoryBuilder catalyst(Supplier supplier) { - return catalystStack(() -> new ItemStack(supplier.get().asItem())); + return catalystStack(() -> new ItemStack(supplier.get() + .asItem())); } - + CategoryBuilder catalystStack(Supplier supplier) { category.recipeCatalysts.add(supplier); return this; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java index e6e8f5568..32526f37f 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java @@ -140,19 +140,6 @@ public class BasinCategory extends CreateRecipeCategory { } } - public List withImprovedVisibility(List stacks) { - return stacks.stream() - .map(this::withImprovedVisibility) - .collect(Collectors.toList()); - } - - public FluidStack withImprovedVisibility(FluidStack stack) { - FluidStack display = stack.copy(); - int displayedAmount = (int) (stack.getAmount() * .75f) + 250; - display.setAmount(displayedAmount); - return display; - } - @Override public void draw(BasinRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { List> actualIngredients = ItemHelper.condenseIngredients(recipe.getIngredients()); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java index 4749d57a3..0f071cc23 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java @@ -107,6 +107,19 @@ public abstract class CreateRecipeCategory> implements IRec .formatted(TextFormatting.GOLD)); }); } + + public List withImprovedVisibility(List stacks) { + return stacks.stream() + .map(this::withImprovedVisibility) + .collect(Collectors.toList()); + } + + public FluidStack withImprovedVisibility(FluidStack stack) { + FluidStack display = stack.copy(); + int displayedAmount = (int) (stack.getAmount() * .75f) + 250; + display.setAmount(displayedAmount); + return display; + } protected static void addFluidTooltip(IGuiFluidStackGroup fluidStacks, List inputs, List outputs) { diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java new file mode 100644 index 000000000..ba8f9042f --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java @@ -0,0 +1,138 @@ +package com.simibubi.create.compat.jei.category; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.Create; +import com.simibubi.create.compat.jei.category.animations.AnimatedItemDrain; +import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; +import com.simibubi.create.content.contraptions.processing.EmptyingRecipe; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; +import com.simibubi.create.foundation.gui.AllGuiTextures; + +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.runtime.IIngredientManager; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.PotionItem; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; +import net.minecraftforge.fluids.capability.IFluidHandlerItem; + +public class ItemDrainCategory extends CreateRecipeCategory { + + AnimatedItemDrain drain; + + public ItemDrainCategory() { + super(doubleItemIcon(AllBlocks.ITEM_DRAIN.get(), Items.WATER_BUCKET), emptyBackground(177, 50)); + drain = new AnimatedItemDrain(); + } + + public static List getRecipes(IIngredientManager ingredientManager) { + List recipes = new ArrayList<>(); + + ingredientManager.getAllIngredients(VanillaTypes.ITEM) + .stream() + .forEach(stack -> { + if (stack.getItem() instanceof PotionItem) { + FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); + Ingredient potion = Ingredient.fromStacks(stack); + recipes.add(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, Create.asResource("potions")) + .withItemIngredients(potion) + .withFluidOutputs(fluidFromPotionItem) + .withSingleItemOutput(new ItemStack(Items.GLASS_BOTTLE)) + .build()); + return; + } + + LazyOptional capability = + stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); + if (!capability.isPresent()) + return; + + ItemStack copy = stack.copy(); + capability = copy.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); + IFluidHandlerItem handler = capability.orElse(null); + FluidStack extracted = handler.drain(1000, FluidAction.EXECUTE); + ItemStack result = handler.getContainer(); + if (extracted.isEmpty()) + return; + + Ingredient ingredient = Ingredient.fromStacks(stack); + ResourceLocation itemName = stack.getItem() + .getRegistryName(); + ResourceLocation fluidName = extracted.getFluid() + .getRegistryName(); + + recipes.add(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, + Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" + + fluidName.getNamespace() + "_" + fluidName.getPath())).withItemIngredients(ingredient) + .withFluidOutputs(extracted) + .withSingleItemOutput(result) + .build()); + }); + + return recipes; + } + + @Override + public Class getRecipeClass() { + return EmptyingRecipe.class; + } + + @Override + public void setIngredients(EmptyingRecipe recipe, IIngredients ingredients) { + ingredients.setInputIngredients(recipe.getIngredients()); + + if (!recipe.getRollableResults() + .isEmpty()) + ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); + if (!recipe.getFluidResults() + .isEmpty()) + ingredients.setOutputs(VanillaTypes.FLUID, recipe.getFluidResults()); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, EmptyingRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks(); + FluidStack fluidOutput = recipe.getResultingFluid(); + List matchingIngredients = Arrays.asList(recipe.getIngredients() + .get(0) + .getMatchingStacks()); + + fluidStacks.init(0, true, 132, 8); + fluidStacks.set(0, withImprovedVisibility(fluidOutput)); + itemStacks.init(0, true, 26, 7); + itemStacks.set(0, matchingIngredients); + itemStacks.init(1, false, 131, 26); + itemStacks.set(1, recipe.getRecipeOutput()); + + addFluidTooltip(fluidStacks, Collections.emptyList(), ImmutableList.of(fluidOutput)); + } + + @Override + public void draw(EmptyingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { + AllGuiTextures.JEI_SLOT.draw(matrixStack, 131, 7); + AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 7); + getRenderedSlot(recipe, 0).draw(matrixStack, 131, 26); + AllGuiTextures.JEI_SHADOW.draw(matrixStack, 62, 37); + AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 73, 4); + drain.withFluid(recipe.getResultingFluid()) + .draw(matrixStack, getBackground().getWidth() / 2 - 13, 40); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java new file mode 100644 index 000000000..d252b40f3 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -0,0 +1,152 @@ +package com.simibubi.create.compat.jei.category; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.Create; +import com.simibubi.create.compat.jei.category.animations.AnimatedSpout; +import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe; +import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; +import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; +import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.gui.AllGuiTextures; + +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.runtime.IIngredientManager; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.PotionItem; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; +import net.minecraftforge.fluids.capability.IFluidHandlerItem; + +public class SpoutCategory extends CreateRecipeCategory { + + AnimatedSpout spout; + + public SpoutCategory() { + super(doubleItemIcon(AllBlocks.SPOUT.get(), Items.WATER_BUCKET), emptyBackground(177, 70)); + spout = new AnimatedSpout(); + } + + public static List getRecipes(IIngredientManager ingredientManager) { + List recipes = new ArrayList<>(); + + ingredientManager.getAllIngredients(VanillaTypes.ITEM) + .stream() + .forEach(stack -> { + if (stack.getItem() instanceof PotionItem) { + FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); + Ingredient bottle = Ingredient.fromItems(Items.GLASS_BOTTLE); + recipes.add(new ProcessingRecipeBuilder<>(FillingRecipe::new, Create.asResource("potions")) + .withItemIngredients(bottle) + .withFluidIngredients(FluidIngredient.fromFluidStack(fluidFromPotionItem)) + .withSingleItemOutput(stack) + .build()); + return; + } + + LazyOptional capability = + stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); + if (!capability.isPresent()) + return; + + ingredientManager.getAllIngredients(VanillaTypes.FLUID) + .stream() + .forEach(fluidStack -> { + ItemStack copy = stack.copy(); + copy.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY) + .ifPresent(fhi -> { + FluidStack fluidCopy = fluidStack.copy(); + fluidCopy.setAmount(1000); + fhi.fill(fluidCopy, FluidAction.EXECUTE); + ItemStack container = fhi.getContainer(); + if (container.isItemEqual(copy)) + return; + + Ingredient bucket = Ingredient.fromStacks(stack); + ResourceLocation itemName = stack.getItem() + .getRegistryName(); + ResourceLocation fluidName = fluidCopy.getFluid() + .getRegistryName(); + recipes.add(new ProcessingRecipeBuilder<>(FillingRecipe::new, + Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() + + "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath())) + .withItemIngredients(bucket) + .withFluidIngredients(FluidIngredient.fromFluidStack(fluidCopy)) + .withSingleItemOutput(container) + .build()); + }); + }); + }); + + return recipes; + } + + @Override + public Class getRecipeClass() { + return FillingRecipe.class; + } + + @Override + public void setIngredients(FillingRecipe recipe, IIngredients ingredients) { + ingredients.setInputIngredients(recipe.getIngredients()); + ingredients.setInputLists(VanillaTypes.FLUID, recipe.getFluidIngredients() + .stream() + .map(FluidIngredient::getMatchingFluidStacks) + .collect(Collectors.toList())); + + if (!recipe.getRollableResults() + .isEmpty()) + ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); + if (!recipe.getFluidResults() + .isEmpty()) + ingredients.setOutputs(VanillaTypes.FLUID, recipe.getFluidResults()); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, FillingRecipe recipe, IIngredients ingredients) { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks(); + FluidIngredient fluidIngredient = recipe.getRequiredFluid(); + List matchingIngredients = Arrays.asList(recipe.getIngredients() + .get(0) + .getMatchingStacks()); + + fluidStacks.init(0, true, 27, 32); + fluidStacks.set(0, withImprovedVisibility(fluidIngredient.getMatchingFluidStacks())); + itemStacks.init(0, true, 26, 50); + itemStacks.set(0, matchingIngredients); + itemStacks.init(1, false, 131, 50); + itemStacks.set(1, recipe.getRecipeOutput()); + + addFluidTooltip(fluidStacks, ImmutableList.of(fluidIngredient), Collections.emptyList()); + } + + @Override + public void draw(FillingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { + AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 31); + AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 50); + getRenderedSlot(recipe, 0).draw(matrixStack, 131, 50); + AllGuiTextures.JEI_SHADOW.draw(matrixStack, 62, 57); + AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 126, 29); + spout.withFluids(recipe.getRequiredFluid() + .getMatchingFluidStacks()) + .draw(matrixStack, getBackground().getWidth() / 2 - 13, 22); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java new file mode 100644 index 000000000..301874aed --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java @@ -0,0 +1,47 @@ +package com.simibubi.create.compat.jei.category.animations; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.fluid.FluidRenderer; +import com.simibubi.create.foundation.gui.GuiGameElement; + +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraftforge.fluids.FluidStack; + +public class AnimatedItemDrain extends AnimatedKinetics { + + private FluidStack fluid; + + public AnimatedItemDrain withFluid(FluidStack fluid) { + this.fluid = fluid; + return this; + } + + @Override + public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { + matrixStack.push(); + matrixStack.translate(xOffset, yOffset, 100); + matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); + matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); + int scale = 20; + + GuiGameElement.of(AllBlocks.ITEM_DRAIN.getDefaultState()) + .scale(scale) + .render(matrixStack); + + Impl buffer = IRenderTypeBuffer.immediate(Tessellator.getInstance() + .getBuffer()); + MatrixStack ms = new MatrixStack(); + ms.scale(scale, -scale, scale); + float from = 2/16f; + float to = 1f - from; + FluidRenderer.renderTiledFluidBB(fluid, from, from, from, to, 3/4f, to, buffer, ms, 0xf000f0, false); + buffer.draw(); + + matrixStack.pop(); + } +} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java new file mode 100644 index 000000000..7dd84891b --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java @@ -0,0 +1,89 @@ +package com.simibubi.create.compat.jei.category.animations; + +import static com.simibubi.create.foundation.utility.AnimationTickHolder.ticks; + +import java.util.List; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.fluid.FluidRenderer; +import com.simibubi.create.foundation.gui.GuiGameElement; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraftforge.fluids.FluidStack; + +public class AnimatedSpout extends AnimatedKinetics { + + private List fluids; + + public AnimatedSpout withFluids(List fluids) { + this.fluids = fluids; + return this; + } + + @Override + public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { + matrixStack.push(); + matrixStack.translate(xOffset, yOffset, 100); + matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); + matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); + int scale = 20; + + GuiGameElement.of(AllBlocks.SPOUT.getDefaultState()) + .scale(scale) + .render(matrixStack); + + float cycle = (ticks + Minecraft.getInstance() + .getRenderPartialTicks()) % 30; + float squeeze = cycle < 20 ? MathHelper.sin((float) (cycle / 20f * Math.PI)) : 0; + squeeze *= 20; + + matrixStack.push(); + + GuiGameElement.of(AllBlockPartials.SPOUT_TOP) + .scale(scale) + .render(matrixStack); + matrixStack.translate(0, -3 * squeeze / 32f, 0); + GuiGameElement.of(AllBlockPartials.SPOUT_MIDDLE) + .scale(scale) + .render(matrixStack); + matrixStack.translate(0, -3 * squeeze / 32f, 0); + GuiGameElement.of(AllBlockPartials.SPOUT_BOTTOM) + .scale(scale) + .render(matrixStack); + matrixStack.translate(0, -3 * squeeze / 32f, 0); + + matrixStack.pop(); + + GuiGameElement.of(AllBlocks.DEPOT.getDefaultState()) + .atLocal(0, 2, 0) + .scale(scale) + .render(matrixStack); + + Impl buffer = IRenderTypeBuffer.immediate(Tessellator.getInstance() + .getBuffer()); + matrixStack.push(); + matrixStack.scale(16, -16, 16); + float from = 2/16f; + float to = 1f - from; + FluidRenderer.renderTiledFluidBB(fluids.get(0), from, from, from, to, to, to, buffer, matrixStack, 0xf000f0, false); + matrixStack.pop(); + + float width = 1 / 128f * squeeze; + matrixStack.translate(scale / 2f, scale * 1.5f, scale / 2f); + matrixStack.scale(16, -16, 16); + matrixStack.translate(-width / 2, 0, -width / 2); + FluidRenderer.renderTiledFluidBB(fluids.get(0), 0, -0.001f, 0, width, 2.001f, width, buffer, matrixStack, 0xf000f0, + false); + buffer.draw(); + + matrixStack.pop(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java index 4604140d2..ae91c16c8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java @@ -18,11 +18,17 @@ public class BasinOperatorBlockItem extends BlockItem { @Override public ActionResultType tryPlace(BlockItemUseContext context) { - - BlockPos placedOnPos = context.getPos().offset(context.getFace().getOpposite()); - BlockState placedOnState = context.getWorld().getBlockState(placedOnPos); - if (AllBlocks.BASIN.has(placedOnState)) { - if (context.getWorld().getBlockState(placedOnPos.up(2)).getMaterial().isReplaceable()) + BlockPos placedOnPos = context.getPos() + .offset(context.getFace() + .getOpposite()); + BlockState placedOnState = context.getWorld() + .getBlockState(placedOnPos); + if (AllBlocks.BASIN.has(placedOnState) || AllBlocks.BELT.has(placedOnState) + || AllBlocks.DEPOT.has(placedOnState)) { + if (context.getWorld() + .getBlockState(placedOnPos.up(2)) + .getMaterial() + .isReplaceable()) context = BlockItemUseContext.func_221536_a(context, placedOnPos.up(2), Direction.UP); else return ActionResultType.FAIL; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index d75adfe7c..71defb6d8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -6,7 +6,7 @@ import java.util.Optional; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; import com.simibubi.create.content.contraptions.fluids.FluidFX; -import com.simibubi.create.content.contraptions.fluids.potion.PotionMixingRecipeManager; +import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity; import com.simibubi.create.content.contraptions.processing.BasinTileEntity; import com.simibubi.create.foundation.advancement.AllTriggers; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java index a9d2a119d..41a078b63 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java @@ -1,15 +1,16 @@ package com.simibubi.create.content.contraptions.components.structureMovement; +import java.util.List; import java.util.Random; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.opengl.GL11; import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.utility.MatrixStacker; import com.simibubi.create.foundation.utility.SuperByteBuffer; +import com.simibubi.create.foundation.utility.SuperByteBufferCache; import com.simibubi.create.foundation.utility.SuperByteBufferCache.Compartment; import com.simibubi.create.foundation.utility.TileEntityRenderHelper; import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; @@ -22,6 +23,7 @@ import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.RenderTypeLookup; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; @@ -30,28 +32,40 @@ import net.minecraft.util.math.vector.Matrix4f; import net.minecraft.world.LightType; import net.minecraft.world.World; import net.minecraft.world.gen.feature.template.Template.BlockInfo; +import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.model.data.EmptyModelData; public class ContraptionRenderer { - public static final Compartment CONTRAPTION = new Compartment<>(); + public static final Compartment> CONTRAPTION = new Compartment<>(); protected static PlacementSimulationWorld renderWorld; public static void render(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, IRenderTypeBuffer buffer) { - renderStructure(world, c, ms, msLocal, buffer); renderTileEntities(world, c, ms, msLocal, buffer); + if (buffer instanceof IRenderTypeBuffer.Impl) + ((IRenderTypeBuffer.Impl) buffer).draw(); + renderStructure(world, c, ms, msLocal, buffer); renderActors(world, c, ms, msLocal, buffer); } protected static void renderStructure(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, IRenderTypeBuffer buffer) { - IVertexBuilder translucent = buffer.getBuffer(RenderType.getTranslucent()); - SuperByteBuffer contraptionBuffer = CreateClient.bufferCache.get(CONTRAPTION, c, () -> buildStructureBuffer(c)); - Matrix4f model = msLocal.peek() - .getModel(); - contraptionBuffer.light(model) - .renderInto(ms, translucent); + SuperByteBufferCache bufferCache = CreateClient.bufferCache; + List blockLayers = RenderType.getBlockLayers(); + + buffer.getBuffer(RenderType.getSolid()); + for (int i = 0; i < blockLayers.size(); i++) { + RenderType layer = blockLayers.get(i); + Pair key = Pair.of(c, i); + SuperByteBuffer contraptionBuffer = bufferCache.get(CONTRAPTION, key, () -> buildStructureBuffer(c, layer)); + if (contraptionBuffer.isEmpty()) + continue; + Matrix4f model = msLocal.peek() + .getModel(); + contraptionBuffer.light(model) + .renderInto(ms, buffer.getBuffer(layer)); + } } private static void renderTileEntities(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, @@ -59,10 +73,11 @@ public class ContraptionRenderer { TileEntityRenderHelper.renderTileEntities(world, c.customRenderTEs, ms, msLocal, buffer); } - private static SuperByteBuffer buildStructureBuffer(Contraption c) { + private static SuperByteBuffer buildStructureBuffer(Contraption c, RenderType layer) { if (renderWorld == null || renderWorld.getWrappedWorld() != Minecraft.getInstance().world) renderWorld = new PlacementSimulationWorld(Minecraft.getInstance().world); + ForgeHooksClient.setRenderLayer(layer); MatrixStack ms = new MatrixStack(); BlockRendererDispatcher dispatcher = Minecraft.getInstance() .getBlockRendererDispatcher(); @@ -79,7 +94,9 @@ public class ContraptionRenderer { if (state.getRenderType() == BlockRenderType.ENTITYBLOCK_ANIMATED) continue; - + if (!RenderTypeLookup.canRenderInLayer(state, layer)) + continue; + IBakedModel originalModel = dispatcher.getModelForState(state); ms.push(); ms.translate(info.pos.getX(), info.pos.getY(), info.pos.getZ()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java index 1bc216d4e..9b1f838ae 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java @@ -6,6 +6,7 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionEntity; +import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; import com.simibubi.create.foundation.utility.AngleHelper; @@ -22,6 +23,7 @@ import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.util.text.ITextComponent; public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity implements IBearingTileEntity { @@ -96,6 +98,8 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity imp public float getAngularSpeed() { float speed = (isWindmill() ? getGeneratedSpeed() : getSpeed()) * 3 / 10f; + if (getSpeed() == 0) + speed = 0; if (world.isRemote) { speed *= ServerSpeedProvider.get(); speed += clientAngleDiff / 3f; @@ -256,4 +260,27 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity imp return running; } + @Override + public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { + if (super.addToTooltip(tooltip, isPlayerSneaking)) + return true; + if (isPlayerSneaking) + return false; + if (isWindmill()) + return false; + if (getSpeed() == 0) + return false; + if (running) + return false; + BlockState state = getBlockState(); + if (!(state.getBlock() instanceof BearingBlock)) + return false; + BlockState attachedState = world.getBlockState(pos.offset(state.get(BearingBlock.FACING))); + if (attachedState.getMaterial() + .isReplaceable()) + return false; + TooltipHelper.addHint(tooltip, "hint.empty_bearing"); + return true; + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java new file mode 100644 index 000000000..975989cdb --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java @@ -0,0 +1,35 @@ +package com.simibubi.create.content.contraptions.fluids.recipe; + +import java.util.ArrayList; +import java.util.List; + +import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe; + +import net.minecraft.client.resources.ReloadListener; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.profiler.IProfiler; +import net.minecraft.resources.IResourceManager; + +public class FluidTransferRecipes { + + public static List POTION_ITEMS = new ArrayList<>(); + public static List FILLED_BUCKETS = new ArrayList<>(); + + + + public static final ReloadListener LISTENER = new ReloadListener() { + + @Override + protected Object prepare(IResourceManager p_212854_1_, IProfiler p_212854_2_) { + return new Object(); + } + + @Override + protected void apply(Object p_212853_1_, IResourceManager p_212853_2_, IProfiler p_212853_3_) { + POTION_ITEMS.clear(); + FILLED_BUCKETS.clear(); + } + + }; +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionMixingRecipeManager.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java similarity index 97% rename from src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionMixingRecipeManager.java rename to src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java index 2fac429f0..7639a06ed 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionMixingRecipeManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.contraptions.fluids.potion; +package com.simibubi.create.content.contraptions.fluids.recipe; import java.util.ArrayList; import java.util.Collection; @@ -11,6 +11,7 @@ import java.util.stream.Collectors; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.mixer.MixingRecipe; +import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.contraptions.processing.HeatCondition; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.fluid.FluidIngredient; @@ -34,7 +35,7 @@ import net.minecraftforge.registries.ForgeRegistries; public class PotionMixingRecipeManager { public static Map> ALL = new HashMap<>(); - + public static List getAllBrewingRecipes() { List mixingRecipes = new ArrayList<>(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java index 39fce1002..969a5fc95 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java @@ -12,7 +12,7 @@ import net.minecraft.util.text.StringTextComponent; public interface IHaveGoggleInformation { DecimalFormat decimalFormat = new DecimalFormat("#.##"); - String spacing = " "; + public static String spacing = " "; ITextComponent componentSpacing = new StringTextComponent(spacing); /** diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java index fb46ac494..b2d7555a7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java @@ -33,6 +33,7 @@ import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemHandlerHelper; @@ -56,6 +57,14 @@ public class BasinBlock extends Block implements ITE, IWrenchab protected void fillStateContainer(Builder p_206840_1_) { super.fillStateContainer(p_206840_1_.add(FACING)); } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + TileEntity tileEntity = world.getTileEntity(pos.up()); + if (tileEntity instanceof BasinOperatingTileEntity) + return false; + return true; + } @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { 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 f6e076cd5..cd6f4ef2f 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 @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.processing.burner; +import java.util.Random; + import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; @@ -17,6 +19,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.FlintAndSteelItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; @@ -36,6 +39,8 @@ import net.minecraft.util.Hand; import net.minecraft.util.IItemProvider; import net.minecraft.util.IStringSerializable; import net.minecraft.util.NonNullList; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.MathHelper; @@ -43,6 +48,8 @@ import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.util.FakePlayer; @MethodsReturnNonnullByDefault @@ -61,10 +68,9 @@ public class BlazeBurnerBlock extends Block implements ITE p.sendBreakAnimation(hand)); + world.setBlockState(pos, AllBlocks.LIT_BLAZE_BURNER.getDefaultState()); + return ActionResultType.SUCCESS; + } + return ActionResultType.PASS; + } + if (!tryInsert(state, world, pos, dontConsume ? heldItem.copy() : heldItem, forceOverflow, false)) return ActionResultType.PASS; return ActionResultType.SUCCESS; @@ -121,8 +140,11 @@ public class BlazeBurnerBlock extends Block implements ITE p.sendBreakAnimation(hand)); + + world.setBlockState(pos, AllBlocks.BLAZE_BURNER.getDefaultState()); + return ActionResultType.SUCCESS; + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext context) { + return AllBlocks.BLAZE_BURNER.get() + .getShape(state, reader, pos, context); + } + + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllItems.EMPTY_BLAZE_BURNER.asStack(); + } + + @OnlyIn(Dist.CLIENT) + public void animateTick(BlockState p_180655_1_, World world, BlockPos pos, Random random) { + world.addOptionalParticle(ParticleTypes.LARGE_SMOKE, true, + (double) pos.getX() + 0.5D + random.nextDouble() / 3.0D * (double) (random.nextBoolean() ? 1 : -1), + (double) pos.getY() + random.nextDouble() + random.nextDouble(), + (double) pos.getZ() + 0.5D + random.nextDouble() / 3.0D * (double) (random.nextBoolean() ? 1 : -1), 0.0D, + 0.07D, 0.0D); + + if (random.nextInt(10) == 0) { + world.playSound((double) ((float) pos.getX() + 0.5F), (double) ((float) pos.getY() + 0.5F), + (double) ((float) pos.getZ() + 0.5F), SoundEvents.BLOCK_CAMPFIRE_CRACKLE, SoundCategory.BLOCKS, + 0.25F + random.nextFloat() * .25f, random.nextFloat() * 0.7F + 0.6F, false); + } + + if (random.nextInt(5) == 0) { + for (int i = 0; i < random.nextInt(1) + 1; ++i) { + world.addParticle(ParticleTypes.LAVA, (double) ((float) pos.getX() + 0.5F), + (double) ((float) pos.getY() + 0.5F), (double) ((float) pos.getZ() + 0.5F), + (double) (random.nextFloat() / 2.0F), 5.0E-5D, (double) (random.nextFloat() / 2.0F)); + } + } + } + + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader reader, BlockPos pos, + ISelectionContext context) { + return AllBlocks.BLAZE_BURNER.get() + .getCollisionShape(state, reader, pos, context); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java index d74c69900..38849fa78 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; @@ -14,18 +15,19 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.items.ItemHandlerHelper; public class BeltFunnelInteractionHandler { public static boolean checkForFunnels(BeltInventory beltInventory, TransportedItemStack currentItem, float nextOffset) { boolean beltMovementPositive = beltInventory.beltMovementPositive; - int firstUpcomingSegment = (int) (currentItem.beltPosition + (beltMovementPositive ? .5f : -.5f)); + int firstUpcomingSegment = (int) Math.floor(currentItem.beltPosition); int step = beltMovementPositive ? 1 : -1; firstUpcomingSegment = MathHelper.clamp(firstUpcomingSegment, 0, beltInventory.belt.beltLength - 1); - for (int segment = firstUpcomingSegment; beltMovementPositive ? segment + .5f <= nextOffset - : segment + .5f >= nextOffset; segment += step) { + for (int segment = firstUpcomingSegment; beltMovementPositive ? segment <= nextOffset + : segment + 1 >= nextOffset; segment += step) { BlockPos funnelPos = BeltHelper.getPositionForOffset(beltInventory.belt, segment) .up(); World world = beltInventory.belt.getWorld(); @@ -37,15 +39,25 @@ public class BeltFunnelInteractionHandler { boolean blocking = funnelFacing == movementFacing.getOpposite(); if (funnelFacing == movementFacing) continue; + if (funnelState.get(BeltFunnelBlock.SHAPE) == Shape.PUSHING) + continue; - currentItem.beltPosition = segment + .5f; + float funnelEntry = segment + .5f; + if (funnelState.get(BeltFunnelBlock.SHAPE) == Shape.EXTENDED) + funnelEntry += .499f * (beltMovementPositive ? -1 : 1); + + boolean hasCrossed = nextOffset > funnelEntry && beltMovementPositive + || nextOffset < funnelEntry && !beltMovementPositive; + if (!hasCrossed) + return false; + if (blocking) + currentItem.beltPosition = funnelEntry; - if (world.isRemote) - return blocking; - if (funnelState.get(BeltFunnelBlock.PUSHING)) - return blocking; - if (BlockHelper.hasBlockStateProperty(funnelState, BeltFunnelBlock.POWERED) && funnelState.get(BeltFunnelBlock.POWERED)) - return blocking; + if (world.isRemote || funnelState.method_28500(BeltFunnelBlock.POWERED).orElse(false)) + if (blocking) + return true; + else + continue; TileEntity te = world.getTileEntity(funnelPos); if (!(te instanceof FunnelTileEntity)) @@ -55,20 +67,41 @@ public class BeltFunnelInteractionHandler { InvManipulationBehaviour inserting = funnelTE.getBehaviour(InvManipulationBehaviour.TYPE); FilteringBehaviour filtering = funnelTE.getBehaviour(FilteringBehaviour.TYPE); - if (inserting == null) - return blocking; - if (filtering != null && !filtering.test(currentItem.stack)) - return blocking; + if (inserting == null || filtering != null && !filtering.test(currentItem.stack)) + if (blocking) + return true; + else + continue; - ItemStack before = currentItem.stack.copy(); - ItemStack remainder = inserting.insert(before); - if (before.equals(remainder, false)) - return blocking; + int amountToExtract = funnelTE.getAmountToExtract(); + ItemStack toInsert = currentItem.stack.copy(); + if (amountToExtract > toInsert.getCount()) + if (blocking) + return true; + else + continue; + + if (amountToExtract != -1) + toInsert.setCount(amountToExtract); + + ItemStack remainder = inserting.insert(toInsert); + if (toInsert.equals(remainder, false)) + if (blocking) + return true; + else + continue; + + int notFilled = currentItem.stack.getCount() - toInsert.getCount(); + if (!remainder.isEmpty()) { + remainder.grow(notFilled); + } else if (notFilled > 0) + remainder = ItemHandlerHelper.copyStackWithSize(currentItem.stack, notFilled); funnelTE.flap(true); currentItem.stack = remainder; beltInventory.belt.sendData(); - return true; + if (blocking) + return true; } return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index 7c7d7f181..ff67090fc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -292,8 +292,8 @@ public class BeltInventory { BlockPos lastPosition = BeltHelper.getPositionForOffset(belt, lastOffset); BlockPos nextPosition = BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); - if (AllBlocks.BRASS_BELT_FUNNEL.has(world.getBlockState(lastPosition.up()))) - return Ending.FUNNEL; +// if (AllBlocks.BRASS_BELT_FUNNEL.has(world.getBlockState(lastPosition.up()))) +// return Ending.FUNNEL; DirectBeltInputBehaviour inputBehaviour = TileEntityBehaviour.get(world, nextPosition, DirectBeltInputBehaviour.TYPE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelPlacementHelper.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelPlacementHelper.java new file mode 100644 index 000000000..5f4e7a3e6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelPlacementHelper.java @@ -0,0 +1,5 @@ +package com.simibubi.create.content.contraptions.relays.elementary; + +public class CogWheelPlacementHelper { + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java index 0f6f1620d..245e21fda 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java @@ -22,6 +22,7 @@ import net.minecraft.fluid.Fluids; import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; @@ -49,6 +50,11 @@ public class ShaftBlock extends RotatedPillarKineticBlock implements IWaterLogga public static boolean isShaft(BlockState state) { return AllBlocks.SHAFT.has(state); } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + return IWrenchableWithBracket.super.onWrenched(state, context); + } @Override public PushReaction getPushReaction(BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java index 3b34f244a..6c984fb4c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java @@ -18,7 +18,7 @@ public class WrenchItemRenderer extends CustomRenderedItemModelRenderer SHAPE = EnumProperty.create("shape", Shape.class); + private BlockEntry parent; + + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final EnumProperty SHAPE = EnumProperty.create("shape", Shape.class); public enum Shape implements IStringSerializable { - RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED); + RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), + EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED), + PUSHING(AllShapes.BELT_FUNNEL_PERPENDICULAR), + PULLING(AllShapes.BELT_FUNNEL_PERPENDICULAR); +// CONNECTED(AllShapes.BELT_FUNNEL_CONNECTED); VoxelShaper shaper; @@ -49,35 +68,31 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { } public BeltFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { - super(parent, p_i48377_1_); - setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED)); + super(p_i48377_1_); + this.parent = parent; + BlockState defaultState = getDefaultState().with(SHAPE, Shape.RETRACTED); + if (hasPoweredProperty()) + defaultState = defaultState.with(POWERED, false); + setDefaultState(defaultState); + } + + public abstract boolean hasPoweredProperty(); + + @Override + public boolean hasTileEntity(BlockState state) { + return true; } @Override - public BlockState getStateForPlacement(BlockItemUseContext ctx) { - BlockState state = super.getStateForPlacement(ctx); - return getStateForPosition(ctx.getWorld(), ctx.getPos(), state, ctx.getFace()); - } - - public BlockState getStateForPosition(World world, BlockPos pos, BlockState defaultState, Direction facing) { - BlockState state = defaultState.with(HORIZONTAL_FACING, facing); - BlockPos posBelow = pos.down(); - BlockState stateBelow = world.getBlockState(posBelow); - if (!AllBlocks.BELT.has(stateBelow)) - return state; - TileEntity teBelow = world.getTileEntity(posBelow); - if (teBelow == null || !(teBelow instanceof BeltTileEntity)) - return state; - BeltTileEntity beltTileEntity = (BeltTileEntity) teBelow; - if (beltTileEntity.getSpeed() == 0) - return state; - Direction movementFacing = beltTileEntity.getMovementFacing(); - return state.with(PUSHING, movementFacing == facing); + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.FUNNEL.create(); } @Override protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(SHAPE)); + if (hasPoweredProperty()) + p_206840_1_.add(POWERED); + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, SHAPE)); } @Override @@ -86,13 +101,72 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { return state.get(SHAPE).shaper.get(state.get(HORIZONTAL_FACING)); } + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + BlockState stateForPlacement = super.getStateForPlacement(ctx); + BlockPos pos = ctx.getPos(); + World world = ctx.getWorld(); + Direction facing = ctx.getFace(); + + if (hasPoweredProperty()) + stateForPlacement = stateForPlacement.with(POWERED, world.isBlockPowered(pos)); + + BlockState state = stateForPlacement.with(HORIZONTAL_FACING, facing); + return state.with(SHAPE, getShapeForPosition(world, pos, facing)); + } + + public static Shape getShapeForPosition(IBlockReader world, BlockPos pos, Direction facing) { + BlockPos posBelow = pos.down(); + BlockState stateBelow = world.getBlockState(posBelow); + if (!AllBlocks.BELT.has(stateBelow)) + return Shape.PUSHING; + Direction movementFacing = stateBelow.get(BeltBlock.HORIZONTAL_FACING); + return movementFacing.getAxis() != facing.getAxis() ? Shape.PUSHING : Shape.RETRACTED; + } + + @Override + public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { + if (state.hasTileEntity() && (state.getBlock() != newState.getBlock() && !FunnelBlock.isFunnel(newState) + || !newState.hasTileEntity())) { + TileEntityBehaviour.destroy(world, pos, FilteringBehaviour.TYPE); + world.removeTileEntity(pos); + } + } + + @Override + @OnlyIn(Dist.CLIENT) + public boolean addDestroyEffects(BlockState state, World world, BlockPos pos, ParticleManager manager) { + BlockHelper.addReducedDestroyEffects(state, world, pos, manager); + return true; + } + + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return parent.asStack(); + } + @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, BlockPos pos, BlockPos p_196271_6_) { - if (direction == state.get(HORIZONTAL_FACING)) - return updateShape(state, world, pos); - else - return super.updatePostPlacement(state, direction, neighbour, world, pos, p_196271_6_); + if (!isOnValidBelt(state, world, pos)) { + BlockState parentState = parent.getDefaultState(); + if (state.method_28500(POWERED).orElse(false)) + parentState = parentState.with(POWERED, true); + return parentState.with(FunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + } + Shape updatedShape = getShapeForPosition(world, pos, state.get(HORIZONTAL_FACING)); + Shape currentShape = state.get(SHAPE); + if (updatedShape == currentShape) + return state; + + // Don't revert wrenched states + if (updatedShape == Shape.PUSHING && currentShape == Shape.PULLING) + return state; + if (updatedShape == Shape.RETRACTED && currentShape == Shape.EXTENDED) + return state; + + return state.with(SHAPE, updatedShape); } public static boolean isOnValidBelt(BlockState state, IWorldReader world, BlockPos pos) { @@ -106,45 +180,44 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { return true; } - public static BlockState updateShape(BlockState state, IBlockReader world, BlockPos pos) { - state = state.with(SHAPE, Shape.RETRACTED); - Direction horizontalFacing = state.get(HORIZONTAL_FACING); - - BlockState below = world.getBlockState(pos.down()); - if (below.getBlock() instanceof BeltBlock && below.get(BeltBlock.HORIZONTAL_FACING) - .getAxis() != horizontalFacing.getAxis()) - return state; - - BlockState neighbour = world.getBlockState(pos.offset(horizontalFacing)); - if (canConnectTo(state, neighbour)) - return state.with(SHAPE, Shape.EXTENDED); - return state; - } - - private static boolean canConnectTo(BlockState state, BlockState neighbour) { - if (neighbour.getBlock() instanceof BeltTunnelBlock) - return true; - if (neighbour.getBlock() instanceof BeltFunnelBlock - && neighbour.get(HORIZONTAL_FACING) == state.get(HORIZONTAL_FACING) - .getOpposite()) - return true; - return false; + @Override + public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + boolean isMoving) { + if (!hasPoweredProperty()) + return; + if (worldIn.isRemote) + return; + boolean previouslyPowered = state.get(POWERED); + if (previouslyPowered != worldIn.isBlockPowered(pos)) + worldIn.setBlockState(pos, state.cycle(POWERED), 2); } @Override - public void onReplaced(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, - boolean p_196243_5_) { - if (p_196243_1_.hasTileEntity() - && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !FunnelBlock.isFunnel(p_196243_4_) - || !p_196243_4_.hasTileEntity())) { - TileEntityBehaviour.destroy(p_196243_2_, p_196243_3_, FilteringBehaviour.TYPE); - p_196243_2_.removeTileEntity(p_196243_3_); + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + World world = context.getWorld(); + if (world.isRemote) + return ActionResultType.SUCCESS; + + Shape shape = state.get(SHAPE); + Shape newShape = shape; + if (shape == Shape.PULLING) + newShape = Shape.PUSHING; + else if (shape == Shape.PUSHING) + newShape = Shape.PULLING; + else if (shape == Shape.EXTENDED) + newShape = Shape.RETRACTED; + else if (shape == Shape.RETRACTED) { + BlockState belt = world.getBlockState(context.getPos().down()); + if (belt.getBlock() instanceof BeltBlock && belt.get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL) + newShape = Shape.RETRACTED; + else + newShape = Shape.EXTENDED; } - } - @Override - protected boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos) { - return isOnValidBelt(state, world, pos); + if (newShape != shape) + world + .setBlockState(context.getPos(), state.with(SHAPE, newShape)); + return ActionResultType.SUCCESS; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java index 58caeee10..792fbe5c4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java @@ -33,20 +33,19 @@ public class BeltFunnelGenerator extends SpecialBlockStateGen { @Override public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, BlockState state) { - boolean pushing = state.get(BeltFunnelBlock.PUSHING); boolean powered = state.method_28500(BlockStateProperties.POWERED).orElse(false); String shapeName = state.get(BeltFunnelBlock.SHAPE) .getString(); - String pushingSuffix = (pushing ? "push" : "pull") ; String poweredSuffix = powered ? "_powered" : ""; - String name = ctx.getName() + "_" + pushingSuffix + poweredSuffix; - String textureName = type + "_funnel_" + pushingSuffix; + String name = ctx.getName() + "_" + poweredSuffix; return prov.models() .withExistingParent(name + "_" + shapeName, prov.modLoc("block/belt_funnel/block_" + shapeName)) .texture("particle", materialBlockTexture) - .texture("2", prov.modLoc("block/" + textureName)) + .texture("2", prov.modLoc("block/" + type + "_funnel_neutral")) + .texture("2_1", prov.modLoc("block/" + type + "_funnel_push")) + .texture("2_2", prov.modLoc("block/" + type + "_funnel_pull")) .texture("3", prov.modLoc("block/" + type + "_funnel_back")) .texture("5", prov.modLoc("block/" + type + "_funnel_tall" + poweredSuffix)) .texture("6", prov.modLoc("block/" + type + "_funnel" + poweredSuffix)) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index a31e37f7c..45c15ecaf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -165,7 +165,7 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< if (direction == Direction.DOWN) { BlockState equivalentFunnel = getEquivalentBeltFunnel(null, null, state); if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) - return BeltFunnelBlock.updateShape(equivalentFunnel, world, pos); + return equivalentFunnel.with(BeltFunnelBlock.SHAPE, BeltFunnelBlock.getShapeForPosition(world, pos, facing)); } } return state; @@ -178,7 +178,7 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< Block block = world.getBlockState(pos.offset(state.get(FACING) .getOpposite())) .getBlock(); - return !(block instanceof FunnelBlock) && !(block instanceof HorizontalInteractionFunnelBlock); + return !(block instanceof FunnelBlock) && !(block instanceof BeltFunnelBlock); } @Nullable @@ -206,7 +206,7 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< @Nullable public static boolean isFunnel(BlockState state) { - return state.getBlock() instanceof FunnelBlock || state.getBlock() instanceof HorizontalInteractionFunnelBlock; + return state.getBlock() instanceof FunnelBlock || state.getBlock() instanceof BeltFunnelBlock; } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java index 0562c70cd..821c232c3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java @@ -1,7 +1,6 @@ package com.simibubi.create.content.logistics.block.funnel; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.AngleHelper; @@ -24,11 +23,21 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { Direction funnelFacing = FunnelBlock.getFunnelFacing(state); float stateAngle = AngleHelper.horizontalAngle(funnelFacing); - if (AllBlocks.BRASS_BELT_FUNNEL.has(state)) - if (state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED) - return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 13, 7.5f), horizontalAngle, Axis.Y); - else + if (state.getBlock() instanceof BeltFunnelBlock) { + switch (state.get(BeltFunnelBlock.SHAPE)) { + +// case CONNECTED: +// return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 15.5f, 8), stateAngle, Axis.Y); + case EXTENDED: return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 15.5f, 13), stateAngle, Axis.Y); + case PULLING: + case PUSHING: + return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 12.1, 8.7f), horizontalAngle, Axis.Y); + default: + case RETRACTED: + return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 13, 7.5f), horizontalAngle, Axis.Y); + } + } if (!funnelFacing.getAxis() .isHorizontal()) { @@ -40,14 +49,10 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { .getAxis()); if (funnelFacing.getAxis() == Axis.Z) verticalDirection = verticalDirection.getOpposite(); - boolean reverse = state.getBlock() instanceof HorizontalInteractionFunnelBlock - && !state.get(HorizontalInteractionFunnelBlock.PUSHING); float yRot = -AngleHelper.horizontalAngle(verticalDirection) + 180; float xRot = -90; boolean alongX = funnelFacing.getAxis() == Axis.X; float zRotLast = alongX ^ funnelFacing.getAxisDirection() == AxisDirection.POSITIVE ? 180 : 0; - if (reverse) - zRotLast += 180; Vector3d vec = VecHelper.voxelSpace(8, 13, .5f); vec = vec.subtract(.5, .5, .5); @@ -63,33 +68,37 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { protected void rotate(BlockState state, MatrixStack ms) { Direction facing = FunnelBlock.getFunnelFacing(state); - if (!facing.getAxis() - .isVertical() - && !(AllBlocks.BRASS_BELT_FUNNEL.has(state) && state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED)) { - Direction verticalDirection = DirectionHelper.rotateAround(getSide(), facing.rotateY() - .getAxis()); - if (facing.getAxis() == Axis.Z) - verticalDirection = verticalDirection.getOpposite(); - - boolean reverse = state.getBlock() instanceof HorizontalInteractionFunnelBlock - && !state.get(HorizontalInteractionFunnelBlock.PUSHING); - - float yRot = -AngleHelper.horizontalAngle(verticalDirection) + 180; - float xRot = -90; - boolean alongX = facing.getAxis() == Axis.X; - float zRotLast = alongX ^ facing.getAxisDirection() == AxisDirection.POSITIVE ? 180 : 0; - if (reverse) - zRotLast += 180; - - MatrixStacker.of(ms) - .rotateZ(alongX ? xRot : 0) - .rotateX(alongX ? 0 : xRot) - .rotateY(yRot) - .rotateZ(zRotLast); + if (facing.getAxis() + .isVertical()) { + super.rotate(state, ms); return; } - super.rotate(state, ms); + boolean isBeltFunnel = state.getBlock() instanceof BeltFunnelBlock; + if (isBeltFunnel && state.get(BeltFunnelBlock.SHAPE) != Shape.EXTENDED) { + Shape shape = state.get(BeltFunnelBlock.SHAPE); + super.rotate(state, ms); + if (shape == Shape.PULLING || shape == Shape.PUSHING) + MatrixStacker.of(ms).rotateX(-22.5f); + return; + } + + Direction verticalDirection = DirectionHelper.rotateAround(getSide(), facing.rotateY() + .getAxis()); + if (facing.getAxis() == Axis.Z) + verticalDirection = verticalDirection.getOpposite(); + + float yRot = -AngleHelper.horizontalAngle(verticalDirection) + 180; + float xRot = -90; + boolean alongX = facing.getAxis() == Axis.X; + float zRotLast = alongX ^ facing.getAxisDirection() == AxisDirection.POSITIVE ? 180 : 0; + + + MatrixStacker.of(ms) + .rotateZ(alongX ? xRot : 0) + .rotateX(alongX ? 0 : xRot) + .rotateY(yRot) + .rotateZ(zRotLast); } @Override @@ -99,9 +108,8 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { if (facing == null) return false; - if (AllBlocks.BRASS_BELT_FUNNEL.has(state)) - return state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED ? direction == facing - : direction == Direction.UP; + if (state.getBlock() instanceof BeltFunnelBlock) + return state.get(BeltFunnelBlock.SHAPE) != Shape.EXTENDED ? direction == facing : direction == Direction.UP; return direction.getAxis() != facing.getAxis(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java index 8afae31c4..1c8a21912 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java @@ -1,9 +1,12 @@ package com.simibubi.create.content.logistics.block.funnel; +import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -37,8 +40,12 @@ public class FunnelItem extends BlockItem { return state; Direction direction = state.get(FunnelBlock.FACING); if (!direction.getAxis() - .isHorizontal()) + .isHorizontal()) { + TileEntity tileEntity = world.getTileEntity(pos.offset(direction.getOpposite())); + if (tileEntity instanceof ChuteTileEntity && ((ChuteTileEntity) tileEntity).getItemMotion() > 0) + state = state.with(FunnelBlock.FACING, direction.getOpposite()); return state; + } FunnelBlock block = (FunnelBlock) getBlock(); Block beltFunnelBlock = block.getEquivalentBeltFunnel(world, pos, state) @@ -46,7 +53,7 @@ public class FunnelItem extends BlockItem { BlockState equivalentBeltFunnel = beltFunnelBlock.getStateForPlacement(ctx) .with(BeltFunnelBlock.HORIZONTAL_FACING, direction); if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, world, pos)) - return BeltFunnelBlock.updateShape(equivalentBeltFunnel, world, pos); + return equivalentBeltFunnel; return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java index e8cf67778..9641d5363 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java @@ -42,6 +42,7 @@ public class FunnelRenderer extends SmartTileEntityRenderer { msr.centre() .rotateY(horizontalAngle) .unCentre(); + ms.translate(0, 0, -te.getFlapOffset()); for (int segment = 0; segment <= 3; segment++) { ms.push(); 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 b260345dd..614cabf71 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 @@ -5,10 +5,16 @@ import java.util.function.Function; import java.util.function.Predicate; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; +import com.simibubi.create.content.contraptions.goggles.IHaveHoveringInformation; +import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; +import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; @@ -22,11 +28,17 @@ import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; -public class FunnelTileEntity extends SmartTileEntity { +public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringInformation { private FilteringBehaviour filtering; private InvManipulationBehaviour invManipulation; @@ -57,8 +69,16 @@ public class FunnelTileEntity extends SmartTileEntity { if (FunnelBlock.getFunnelFacing(state) == Direction.UP && autoExtractor.hasInventory()) return Mode.HOPPER; if (state.getBlock() instanceof BeltFunnelBlock) { - boolean pushing = state.get(BeltFunnelBlock.PUSHING); - return pushing ? Mode.PUSHING_TO_BELT : Mode.TAKING_FROM_BELT; + Shape shape = state.get(BeltFunnelBlock.SHAPE); + if (shape == Shape.PULLING) + return Mode.TAKING_FROM_BELT; + if (shape == Shape.PUSHING) + return Mode.PUSHING_TO_BELT; + + BeltTileEntity belt = BeltHelper.getSegmentTE(world, pos.down()); + if (belt != null) + return belt.getMovementFacing() == state.get(BeltFunnelBlock.HORIZONTAL_FACING) ? Mode.PUSHING_TO_BELT + : Mode.TAKING_FROM_BELT; } return Mode.COLLECT; } @@ -140,9 +160,7 @@ public class FunnelTileEntity extends SmartTileEntity { if (!inputBehaviour.canInsertFromSide(facing)) return; - int amountToExtract = invManipulation.getAmountFromFilter(); - if (!filtering.isActive()) - amountToExtract = 1; + int amountToExtract = getAmountToExtract(); ItemStack stack = invManipulation.extract(amountToExtract, s -> inputBehaviour.handleInsertion(s, facing, true) .isEmpty()); if (stack.isEmpty()) @@ -153,6 +171,15 @@ public class FunnelTileEntity extends SmartTileEntity { startCooldown(); } + public int getAmountToExtract() { + if (!supportsAmountOnFilter()) + return -1; + int amountToExtract = invManipulation.getAmountFromFilter(); + if (!filtering.isActive()) + amountToExtract = 1; + return amountToExtract; + } + private int startCooldown() { return extractionCooldown = AllConfigs.SERVER.logistics.defaultExtractionTimer.get(); } @@ -194,12 +221,18 @@ public class FunnelTileEntity extends SmartTileEntity { private boolean supportsAmountOnFilter() { BlockState blockState = getBlockState(); - boolean pushingToBelt = blockState.getBlock() instanceof HorizontalInteractionFunnelBlock - && blockState.get(HorizontalInteractionFunnelBlock.PUSHING); + boolean beltFunnelsupportsAmount = false; + if (blockState.getBlock() instanceof BeltFunnelBlock) { + Shape shape = blockState.get(BeltFunnelBlock.SHAPE); + if (shape == Shape.PUSHING) + beltFunnelsupportsAmount = true; + else + beltFunnelsupportsAmount = BeltHelper.getSegmentTE(world, pos.down()) != null; + } boolean hopper = FunnelBlock.getFunnelFacing(blockState) == Direction.UP && !world.getBlockState(pos.up()) .getMaterial() .isReplaceable(); - return pushingToBelt || hopper; + return beltFunnelsupportsAmount || hopper; } private boolean supportsDirectBeltInput(Direction side) { @@ -236,8 +269,26 @@ public class FunnelTileEntity extends SmartTileEntity { } public boolean hasFlap() { - return getBlockState().getBlock() instanceof BeltFunnelBlock - && getBlockState().get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED; + BlockState blockState = getBlockState(); + if (!(blockState.getBlock() instanceof BeltFunnelBlock)) + return false; + return true; + } + + public float getFlapOffset() { + BlockState blockState = getBlockState(); + if (!(blockState.getBlock() instanceof BeltFunnelBlock)) + return 0; + switch (blockState.get(BeltFunnelBlock.SHAPE)) { + default: + case RETRACTED: + return 0; + case EXTENDED: + return 8 / 16f; + case PULLING: + case PUSHING: + return -2 / 16f; + } } @Override @@ -270,4 +321,46 @@ public class FunnelTileEntity extends SmartTileEntity { .onFunnelTransfer(world, pos, stack); } + @Override + // Hint players not to use funnels like 0.2 transposers + public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { + if (isPlayerSneaking) + return false; + BlockState state = getBlockState(); + if (!(state.getBlock() instanceof FunnelBlock)) + return false; + Direction funnelFacing = FunnelBlock.getFunnelFacing(state); + + if (world.getBlockState(pos.offset(funnelFacing.getOpposite())) + .getMaterial() + .isReplaceable()) + return false; + + BlockPos inputPos = pos.offset(funnelFacing); + TileEntity tileEntity = world.getTileEntity(inputPos); + if (tileEntity == null) + return false; + if (tileEntity instanceof BeltTileEntity) + return false; + if (tileEntity instanceof SawTileEntity) + return false; + if (tileEntity instanceof ChuteTileEntity) + return false; + + LazyOptional capability = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); + if (!capability.isPresent()) + return false; + + if (funnelFacing == Direction.DOWN) { + TooltipHelper.addHint(tooltip, "hint.upward_funnel"); + return true; + } + if (!funnelFacing.getAxis() + .isHorizontal()) + return false; + + TooltipHelper.addHint(tooltip, "hint.horizontal_funnel"); + return true; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java index e07ed12a0..9fbcfd4ea 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -92,14 +93,28 @@ public class ArmInteractionPointHandler { int removed = 0; for (Iterator iterator = currentSelection.iterator(); iterator.hasNext();) { ArmInteractionPoint point = iterator.next(); - if (point.pos.withinDistance(pos, ArmTileEntity.getRange())) + if (point.pos.withinDistance(pos, ArmTileEntity.getRange())) continue; iterator.remove(); removed++; } - if (removed > 0) - Minecraft.getInstance().player.sendStatusMessage(Lang.translate("mechanical_arm.points_outside_range", removed).formatted(TextFormatting.RED), true); + ClientPlayerEntity player = Minecraft.getInstance().player; + if (removed > 0) { + player.sendStatusMessage(Lang.createTranslationTextComponent("mechanical_arm.points_outside_range", removed) + .formatted(TextFormatting.RED), true); + } else { + int inputs = 0; + int outputs = 0; + for (ArmInteractionPoint armInteractionPoint : currentSelection) { + if (armInteractionPoint.mode == Mode.DEPOSIT) + outputs++; + else + inputs++; + } + player.sendStatusMessage(Lang.createTranslationTextComponent("mechanical_arm.summary", inputs, outputs) + .formatted(TextFormatting.WHITE), true); + } AllPackets.channel.sendToServer(new ArmPlacementPacket(currentSelection, pos)); currentSelection.clear(); 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 c2da65d9d..82c93783e 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 @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widgets.InterpolatedAngle; +import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; @@ -32,6 +33,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.util.text.ITextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.util.Constants.NBT; @@ -137,7 +139,7 @@ public class ArmTileEntity extends KineticTileEntity { sendData(); } } - + @Override @OnlyIn(Dist.CLIENT) public AxisAlignedBB getRenderBoundingBox() { @@ -202,7 +204,7 @@ 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; @@ -256,7 +258,7 @@ public class ArmTileEntity extends KineticTileEntity { ArmInteractionPoint armInteractionPoint = outputs.get(i); if (!armInteractionPoint.isStillValid(world)) continue; - + ItemStack remainder = armInteractionPoint.insert(world, held, true); if (remainder.equals(heldItem, false)) continue; @@ -345,7 +347,7 @@ public class ArmTileEntity extends KineticTileEntity { } return stack; } - + public void redstoneUpdate() { if (world.isRemote) return; @@ -441,6 +443,21 @@ public class ArmTileEntity extends KineticTileEntity { return AllConfigs.SERVER.logistics.mechanicalArmRange.get(); } + @Override + public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { + if (super.addToTooltip(tooltip, isPlayerSneaking)) + return true; + if (isPlayerSneaking) + return false; + if (!inputs.isEmpty()) + return false; + if (!outputs.isEmpty()) + return false; + + TooltipHelper.addHint(tooltip, "hint.mechanical_arm_no_targets"); + return true; + } + private class SelectionModeValueBox extends CenteredSideValueBoxTransform { public SelectionModeValueBox() { diff --git a/src/main/java/com/simibubi/create/events/CommonEvents.java b/src/main/java/com/simibubi/create/events/CommonEvents.java index e5610ff26..c7051bb92 100644 --- a/src/main/java/com/simibubi/create/events/CommonEvents.java +++ b/src/main/java/com/simibubi/create/events/CommonEvents.java @@ -4,7 +4,8 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler; import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingPhysics; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.fluids.potion.PotionMixingRecipeManager; +import com.simibubi.create.content.contraptions.fluids.recipe.FluidTransferRecipes; +import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; import com.simibubi.create.content.contraptions.wrench.WrenchItem; import com.simibubi.create.content.schematics.ServerSchematicLoader; import com.simibubi.create.foundation.command.AllCommands; @@ -90,6 +91,7 @@ public class CommonEvents { public static void registerReloadListeners(AddReloadListenerEvent event) { event.addListener(RecipeFinder.LISTENER); event.addListener(PotionMixingRecipeManager.LISTENER); + event.addListener(FluidTransferRecipes.LISTENER); } @SubscribeEvent diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java index 8a62ab387..b5e74e900 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java @@ -21,9 +21,8 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { .output(.25f, Items.BLAZE_POWDER, 3)), PRISMARINE_CRYSTALS = create(() -> Items.PRISMARINE_CRYSTALS, b -> b.duration(150) - .output(Items.PRISMARINE_SHARD, 2) - .output(.75f, Items.QUARTZ, 2) - .output(.25f, Items.PRISMARINE_SHARD, 2) + .output(1f, Items.QUARTZ, 1) + .output(.5f, Items.QUARTZ, 2) .output(.1f, Items.GLOWSTONE_DUST, 2)), OBSIDIAN = create(() -> Blocks.OBSIDIAN, b -> b.duration(500) diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index 08a0b40a9..eb7f51306 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -1,5 +1,8 @@ package com.simibubi.create.foundation.item; +import static net.minecraft.util.text.TextFormatting.GOLD; +import static net.minecraft.util.text.TextFormatting.GRAY; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -12,6 +15,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.AllSections; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; +import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.curiosities.tools.AllToolTiers; import com.simibubi.create.foundation.item.ItemDescription.Palette; import com.simibubi.create.foundation.utility.Lang; @@ -46,6 +50,15 @@ public class TooltipHelper { .formatted(colorFormat)).formatted(TextFormatting.DARK_GRAY); } + public static void addHint(List tooltip, String hintKey, Object... messageParams) { + ITextComponent spacing = IHaveGoggleInformation.componentSpacing; + tooltip.add(spacing.copy().append(Lang.translate(hintKey + ".title")).formatted(GOLD)); + ITextComponent hint = Lang.translate(hintKey); + List cutComponent = TooltipHelper.cutTextComponent(spacing.copy().append(hint), GRAY, TextFormatting.WHITE); + for (int i = 0; i < cutComponent.size(); i++) + tooltip.add((i == 0 ? StringTextComponent.EMPTY : spacing).copy().append(cutComponent.get(i))); + } + public static void referTo(IItemProvider item, Supplier itemWithTooltip) { tooltipReferrals.put(item.asItem(), () -> itemWithTooltip.get() .asItem() diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java index e18ce6d81..803476b13 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java @@ -19,6 +19,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.items.ItemHandlerHelper; public class FilteringBehaviour extends TileEntityBehaviour { @@ -105,7 +106,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { recipeFilter = true; return this; } - + public FilteringBehaviour forFluids() { fluidFilter = true; return this; @@ -142,9 +143,11 @@ public class FilteringBehaviour extends TileEntityBehaviour { } public void setFilter(ItemStack stack) { + boolean confirm = ItemHandlerHelper.canItemStacksStack(stack, filter); filter = stack.copy(); callback.accept(filter); - count = (filter.getItem() instanceof FilterItem) ? 0 : Math.min(stack.getCount(), stack.getMaxStackSize()); + count = !confirm ? 0 + : (filter.getItem() instanceof FilterItem) ? 0 : Math.min(stack.getCount(), stack.getMaxStackSize()); forceClientState = true; tileEntity.markDirty(); @@ -177,7 +180,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { public boolean test(ItemStack stack) { return !isActive() || filter.isEmpty() || FilterItem.test(tileEntity.getWorld(), stack, filter); } - + public boolean test(FluidStack stack) { return !isActive() || filter.isEmpty() || FilterItem.test(tileEntity.getWorld(), stack, filter); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java index c911e8680..0c4ed980e 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java @@ -5,6 +5,7 @@ import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; +import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.RaycastHelper; import net.minecraft.client.Minecraft; @@ -19,6 +20,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -26,6 +30,7 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.items.ItemHandlerHelper; @EventBusSubscriber public class FilteringHandler { @@ -56,27 +61,43 @@ public class FilteringHandler { return; if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) ((Sided) behaviour.slotPositioning).fromSide(ray.getFace()); + if (!behaviour.testHit(ray.getHitVec())) + return; - if (behaviour.testHit(ray.getHitVec())) { - if (event.getSide() != LogicalSide.CLIENT) { - ItemStack heldItem = player.getHeldItem(hand) - .copy(); - if (!player.isCreative()) { - if (behaviour.getFilter() - .getItem() instanceof FilterItem) - player.inventory.placeItemBackInInventory(world, behaviour.getFilter()); - if (heldItem.getItem() instanceof FilterItem) - player.getHeldItem(hand) - .shrink(1); - } - if (heldItem.getItem() instanceof FilterItem) - heldItem.setCount(1); - behaviour.setFilter(heldItem); + ItemStack toApply = player.getHeldItem(hand) + .copy(); + + if (event.getSide() != LogicalSide.CLIENT) { + if (!player.isCreative()) { + if (behaviour.getFilter() + .getItem() instanceof FilterItem) + player.inventory.placeItemBackInInventory(world, behaviour.getFilter()); + if (toApply.getItem() instanceof FilterItem) + player.getHeldItem(hand) + .shrink(1); } - event.setCanceled(true); - event.setCancellationResult(ActionResultType.SUCCESS); - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f, .1f); + if (toApply.getItem() instanceof FilterItem) + toApply.setCount(1); + behaviour.setFilter(toApply); + + } else { + ItemStack filter = behaviour.getFilter(); + String feedback = "apply_click_again"; + if (toApply.getItem() instanceof FilterItem || !behaviour.isCountVisible()) + feedback = "apply"; + else if (ItemHandlerHelper.canItemStacksStack(toApply, filter)) + feedback = "apply_count"; + String translationKey = world.getBlockState(pos) + .getBlock() + .getTranslationKey(); + ITextComponent formattedText = new TranslationTextComponent(translationKey); + player.sendStatusMessage(Lang.createTranslationTextComponent("logistics.filter." + feedback, formattedText) + .formatted(TextFormatting.WHITE), true); } + + event.setCanceled(true); + event.setCancellationResult(ActionResultType.SUCCESS); + world.playSound(null, pos, SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f, .1f); } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java new file mode 100644 index 000000000..297b86d9c --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java @@ -0,0 +1,179 @@ +package com.simibubi.create.foundation.utility; + +import com.google.common.collect.ImmutableList; +import com.simibubi.create.Create; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModContainer; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.HashMap; +import java.util.Map; + +import static com.simibubi.create.AllBlocks.*; +import static com.simibubi.create.AllItems.*; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.*; + +@Mod.EventBusSubscriber +@SuppressWarnings("unused") +public class RemapHelper { + private static final Map reMap = new HashMap<>(); + + static { + reMap.put("toggle_latch", POWERED_TOGGLE_LATCH.getId()); +// reMap.put("linked_extractor", ); + reMap.put("limestone_stairs", Create.asResource("polished_limestone_stairs")); +// reMap.put("window_in_a_block", ); + reMap.put("weathered_limestone_layers", Create.asResource("layered_weathered_limestone")); + reMap.put("stockswitch", STOCKPILE_SWITCH.getId()); + reMap.put("indented_gabbro_slab", Create.asResource("polished_gabbro_slab")); +// reMap.put("vertical_extractor", ); + reMap.put("andesite_layers", Create.asResource("layered_andesite")); + reMap.put("scoria_layers", Create.asResource("layered_scoria")); +// reMap.put("extractor", ); +// reMap.put("linked_transposer", ); + reMap.put("dark_scoria_tiles_stairs", Create.asResource("dark_scoria_bricks_stairs")); + reMap.put("redstone_latch", POWERED_LATCH.getId()); + reMap.put("oak_glass", OAK_WINDOW.getId()); + reMap.put("spruce_glass_pane", SPRUCE_WINDOW_PANE.getId()); + reMap.put("dolomite_stairs", Create.asResource("polished_dolomite_stairs")); + reMap.put("contact", REDSTONE_CONTACT.getId()); + reMap.put("paved_gabbro_bricks", Create.asResource("paved_gabbro")); + reMap.put("slightly_mossy_gabbro_bricks", Create.asResource("mossy_gabbro")); + reMap.put("limestone_wall", Create.asResource("polished_limestone_wall")); + reMap.put("acacia_glass_pane", ACACIA_WINDOW_PANE.getId()); + reMap.put("dark_oak_glass", DARK_OAK_WINDOW.getId()); +// reMap.put("vertical_linked_extractor", ); +// reMap.put("vertical_funnel", ); +// reMap.put("vertical_linked_transposer", ); + reMap.put("dark_oak_glass_pane", DARK_OAK_WINDOW_PANE.getId()); + reMap.put("belt_funnel", BRASS_BELT_FUNNEL.getId()); + reMap.put("dark_scoria_tiles", Create.asResource("dark_scoria_bricks")); + reMap.put("acacia_glass", ACACIA_WINDOW.getId()); + reMap.put("dark_scoria_tiles_slab", Create.asResource("dark_scoria_bricks_slab")); + reMap.put("weathered_limestone_stairs", Create.asResource("polished_weathered_limestone_stairs")); + reMap.put("dolomite_layers", Create.asResource("layered_dolomite")); + reMap.put("jungle_glass", JUNGLE_WINDOW.getId()); +// reMap.put("transposer", ); + reMap.put("iron_glass", ORNATE_IRON_WINDOW.getId()); + reMap.put("limestone_slab", Create.asResource("polished_limestone_slab")); + reMap.put("entity_detector", CONTENT_OBSERVER.getId()); + reMap.put("flexcrate", ADJUSTABLE_CRATE.getId()); + reMap.put("scoria_slab", Create.asResource("polished_scoria_slab")); + reMap.put("birch_glass", BIRCH_WINDOW.getId()); + reMap.put("saw", MECHANICAL_SAW.getId()); +// reMap.put("vertical_transposer", ); + reMap.put("flexpulsepeater", ADJUSTABLE_PULSE_REPEATER.getId()); + reMap.put("dolomite_wall", Create.asResource("polished_dolomite_wall")); + reMap.put("gabbro_layers", Create.asResource("layered_gabbro")); + reMap.put("scoria_wall", Create.asResource("polished_scoria_wall")); + reMap.put("stress_gauge", STRESSOMETER.getId()); + reMap.put("gabbro_slab", Create.asResource("polished_gabbro_slab")); + reMap.put("spruce_glass", SPRUCE_WINDOW.getId()); +// reMap.put("cocoa_log", ); + reMap.put("iron_glass_pane", ORNATE_IRON_WINDOW_PANE.getId()); + reMap.put("birch_glass_pane", BIRCH_WINDOW_PANE.getId()); + reMap.put("harvester", MECHANICAL_HARVESTER.getId()); + reMap.put("dolomite_slab", Create.asResource("polished_dolomite_slab")); + reMap.put("plough", MECHANICAL_PLOUGH.getId()); + reMap.put("mossy_gabbro_bricks", Create.asResource("overgrown_gabbro")); + reMap.put("paved_gabbro_bricks_slab", Create.asResource("paved_gabbro_slab")); + reMap.put("gabbro_wall", Create.asResource("polished_gabbro_wall")); + reMap.put("granite_layers", Create.asResource("layered_granite")); + reMap.put("indented_gabbro", Create.asResource("polished_gabbro")); + reMap.put("drill", MECHANICAL_DRILL.getId()); + reMap.put("flexpeater", ADJUSTABLE_REPEATER.getId()); + reMap.put("rotation_chassis", RADIAL_CHASSIS.getId()); + reMap.put("scoria_stairs", Create.asResource("polished_scoria_stairs")); + reMap.put("weathered_limestone_wall", Create.asResource("polished_weathered_limestone_wall")); + reMap.put("belt_tunnel", BRASS_TUNNEL.getId()); + reMap.put("redstone_bridge", REDSTONE_LINK.getId()); + reMap.put("speed_gauge", SPEEDOMETER.getId()); + reMap.put("diorite_layers", Create.asResource("layered_diorite")); + reMap.put("oak_glass_pane", OAK_WINDOW_PANE.getId()); + reMap.put("translation_chassis", LINEAR_CHASSIS.getId()); +// reMap.put("symmetry_tripleplane", Create.asResource("")); + reMap.put("weathered_limestone_slab", Create.asResource("polished_weathered_limestone_slab")); + reMap.put("gabbro_stairs", Create.asResource("polished_gabbro_stairs")); + reMap.put("limestone_layers", Create.asResource("layered_limestone")); +// reMap.put("symmetry_plane", Create.asResource("")); + reMap.put("translation_chassis_secondary", SECONDARY_LINEAR_CHASSIS.getId()); + reMap.put("jungle_glass_pane", JUNGLE_WINDOW_PANE.getId()); + reMap.put("piston_pole", PISTON_EXTENSION_POLE.getId()); + +// reMap.put("shadow_steel_sword", ); + reMap.put("lapis_plate", LAPIS_SHEET.getId()); + reMap.put("crushed_copper", CRUSHED_COPPER.getId()); + reMap.put("empty_blueprint", SCHEMATIC.getId()); +// reMap.put("shadow_steel_mattock", ); +// reMap.put("rose_quartz_sword", ); + reMap.put("gold_sheet", GOLDEN_SHEET.getId()); + reMap.put("flour", WHEAT_FLOUR.getId()); +// reMap.put("encased_shaft", ); + reMap.put("blueprint_and_quill", SCHEMATIC_AND_QUILL.getId()); + reMap.put("crushed_iron", CRUSHED_IRON.getId()); +// reMap.put("blazing_axe", ); + reMap.put("slot_cover", CRAFTER_SLOT_COVER.getId()); + reMap.put("blueprint", SCHEMATIC.getId()); + reMap.put("symmetry_wand", WAND_OF_SYMMETRY.getId()); + reMap.put("terrain_zapper", WORLDSHAPER.getId()); +// reMap.put("blazing_sword", ); + reMap.put("zinc_handle", HAND_CRANK.getId()); +// reMap.put("rose_quartz_axe", ); +// reMap.put("shadow_steel_pickaxe", ); + reMap.put("placement_handgun", BLOCKZAPPER.getId()); + reMap.put("crushed_zinc", CRUSHED_ZINC.getId()); +// reMap.put("rose_quartz_pickaxe", ); +// reMap.put("blazing_pickaxe", ); + reMap.put("property_filter", ATTRIBUTE_FILTER.getId()); +// reMap.put("blazing_shovel", ); + reMap.put("crushed_gold", CRUSHED_GOLD.getId()); + reMap.put("obsidian_dust", POWDERED_OBSIDIAN.getId()); +// reMap.put("rose_quartz_shovel", ); + } + + @SubscribeEvent + public static void onRemapBlocks(RegistryEvent.MissingMappings event) { + ModContainer mod = ModList.get().getModContainerById(Create.ID).orElse(null); + if (mod == null) + return; + event.setModContainer(mod); + ImmutableList> mappings = event.getMappings(); + + for (RegistryEvent.MissingMappings.Mapping mapping : mappings) { + if (reMap.containsKey(mapping.key.getPath())) { + try { + Create.logger.warn("Remapping block '{}' to '{}'", mapping.key, reMap.get(mapping.key.getPath())); + mapping.remap(ForgeRegistries.BLOCKS.getValue(reMap.get(mapping.key.getPath()))); + } catch (Throwable t) { + Create.logger.warn("Remapping block '{}' to '{}' failed: {}", mapping.key, reMap.get(mapping.key.getPath()), t); + } + } + } + } + + @SubscribeEvent + public static void onRemapItems(RegistryEvent.MissingMappings event) { + ModContainer mod = ModList.get().getModContainerById(Create.ID).orElse(null); + if (mod == null) + return; + event.setModContainer(mod); + ImmutableList> mappings = event.getMappings(); + + for (RegistryEvent.MissingMappings.Mapping mapping : mappings) { + if (reMap.containsKey(mapping.key.getPath())) { + try { + Create.logger.warn("Remapping item '{}' to '{}'", mapping.key, reMap.get(mapping.key.getPath())); + mapping.remap(ForgeRegistries.ITEMS.getValue(reMap.get(mapping.key.getPath()))); + } catch (Throwable t) { + Create.logger.warn("Remapping item '{}' to '{}' failed: {}", mapping.key, reMap.get(mapping.key.getPath()), t); + } + } + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/utility/SuperByteBuffer.java index b66d3b15f..cd07c3a30 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/SuperByteBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/utility/SuperByteBuffer.java @@ -280,5 +280,9 @@ public class SuperByteBuffer { return ((int) sky) << 20 | ((int) block) << 4; } + + public boolean isEmpty() { + return template.limit() == 0; + } } diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json index 18eb79e92..b891eb5ae 100644 --- a/src/main/resources/assets/create/lang/default/messages.json +++ b/src/main/resources/assets/create/lang/default/messages.json @@ -33,6 +33,8 @@ "create.recipe.blockzapper_upgrade": "Handheld Blockzapper", "create.recipe.sandpaper_polishing": "Sandpaper Polishing", "create.recipe.mystery_conversion": "Mysterious Conversion", + "create.recipe.spout_filling": "Filling by Spout", + "create.recipe.draining": "Item Draining", "create.recipe.processing.chance": "%1$s%% Chance", "create.recipe.heat_requirement.none": "No Heating Required", @@ -161,6 +163,10 @@ "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "Applied filter to %1$s.", + "create.logistics.filter.apply_click_again": "Applied filter to %1$s, click again to copy the amount.", + "create.logistics.filter.apply_count": "Applied extraction count to filter.", + "create.gui.goggles.generator_stats": "Generator Stats:", "create.gui.goggles.kinetic_stats": "Kinetic Stats:", "create.gui.goggles.at_current_speed": "At current Speed", @@ -205,7 +211,7 @@ "create.schematicAndQuill.noTarget": "Hold [Ctrl] to select Air blocks.", "create.schematicAndQuill.abort": "Removed selection.", "create.schematicAndQuill.title": "Schematic Name:", - "create.schematicAndQuill.convert": "Save and Deploy Immediately", + "create.schematicAndQuill.convetr": "Save and Deploy Immediately", "create.schematicAndQuill.fallbackName": "My Schematic", "create.schematicAndQuill.saved": "Saved as %1$s", @@ -415,6 +421,7 @@ "create.mechanical_arm.extract_from": "Take items from %1$s", "create.mechanical_arm.deposit_to": "Deposit items to %1$s", + "create.mechanical_arm.summary": "Mechanical Arm has %1$s input(s) and %2$s output(s).", "create.mechanical_arm.points_outside_range": "%1$s selected interaction point(s) removed due to range limitations.", "create.logistics.when_multiple_outputs_available": "When Multiple Outputs Available", @@ -431,6 +438,15 @@ "create.tunnel.selection_mode.randomize": "Randomize", "create.tunnel.selection_mode.synchronize": "Synchronize Inputs", + "create.hint.mechanical_arm_no_targets.title": "No Targets", + "create.hint.mechanical_arm_no_targets": "It appears this _Mechnanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", + "create.hint.horizontal_funnel.title": "Horizontal Funnels", + "create.hint.horizontal_funnel": "cannot transfer between inventories _directly_. Try running a _Mechanical_ _Belt_ or _Depot_ below your funnel to extract items from Inventories.", + "create.hint.upward_funnel.title": "Funnels facing upward", + "create.hint.upward_funnel": "can only transfer items inserted by _Arms_, fan-powered _Chutes_, or items _thrown_ at them. Try building some _Chutes_ if you are looking to move your items _vertically_.", + "create.hint.empty_bearing.title": "Update Bearing", + "create.hint.empty_bearing": "_Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", + "create.gui.config.overlay1": "Hi :)", "create.gui.config.overlay2": "This is a sample overlay", "create.gui.config.overlay3": "Click or drag with your mouse", diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json b/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json new file mode 100644 index 000000000..447d36f7a --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json @@ -0,0 +1,232 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "2": "create:block/brass_funnel_neutral", + "3": "create:block/brass_funnel_back", + "5": "create:block/brass_funnel_tall", + "6": "create:block/brass_funnel", + "7": "create:block/brass_funnel_plating", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "LeftWall", + "from": [14, -3, 5], + "to": [16, 0, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [8, 8, 9, 9.5], "texture": "#7"}, + "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, + "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"} + } + }, + { + "name": "LeftWall", + "from": [0, -3, 5], + "to": [2, 0, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, + "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, + "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "LeftWall", + "from": [0, 0, 5], + "to": [16, 16, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [8, 0, 16, 8], "texture": "#7"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, + "south": {"uv": [8, 0, 16, 8], "texture": "#7"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 0, 8, 3], "texture": "#7"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 5], + "to": [16, -3, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, + "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, + "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + } + }, + { + "name": "LeftBottom", + "from": [0, -5, 5], + "to": [1, -3, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, + "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, + "down": {"uv": [1, 0, 0, 6], "texture": "#particle"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 11], + "to": [16, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 11]}, + "faces": { + "east": {"uv": [5, 14.5, 7.5, 16], "texture": "#7"}, + "south": {"uv": [7.5, 13, 8, 14.5], "texture": "#7"}, + "west": {"uv": [5.5, 14.5, 8, 16], "texture": "#7"}, + "up": {"uv": [0, 0, 1, 5], "texture": "#particle"}, + "down": {"uv": [0, 0, 1, 5], "texture": "#particle"} + } + }, + { + "name": "LeftBottom", + "from": [0, -5, 11], + "to": [1, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 11]}, + "faces": { + "east": {"uv": [8, 14.5, 5.5, 16], "texture": "#7"}, + "south": {"uv": [8, 13, 7.5, 14.5], "texture": "#7"}, + "west": {"uv": [7.5, 14.5, 5, 16], "texture": "#7"}, + "up": {"uv": [1, 0, 0, 5], "texture": "#particle"}, + "down": {"uv": [1, 0, 0, 5], "texture": "#particle"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 0], + "to": [16, -2, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [8, 13, 7.5, 14.5], "texture": "#7"}, + "east": {"uv": [7.5, 14.5, 5, 16], "texture": "#7"}, + "west": {"uv": [8, 14.5, 5.5, 16], "texture": "#7"}, + "up": {"uv": [0, 5, 1, 0], "texture": "#particle"}, + "down": {"uv": [0, 5, 1, 0], "texture": "#particle"} + } + }, + { + "name": "LeftBottom", + "from": [0, -5, 0], + "to": [1, -2, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [7.5, 13, 8, 14.5], "texture": "#7"}, + "east": {"uv": [5.5, 14.5, 8, 16], "texture": "#7"}, + "west": {"uv": [5, 14.5, 7.5, 16], "texture": "#7"}, + "up": {"uv": [1, 5, 0, 0], "texture": "#particle"}, + "down": {"uv": [1, 5, 0, 0], "texture": "#particle"} + } + }, + { + "name": "BackExtension", + "from": [3, -2, 10], + "to": [13, 13, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, + "faces": { + "east": {"uv": [9, 6, 16, 8], "rotation": 90, "texture": "#3"}, + "west": {"uv": [9, 6, 16, 8], "rotation": 270, "texture": "#3"}, + "up": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"} + } + }, + { + "name": "BackExtension", + "from": [3, -2, 2], + "to": [13, 13, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 10]}, + "faces": { + "east": {"uv": [9, 8, 16, 6], "rotation": 90, "texture": "#3"}, + "west": {"uv": [9, 8, 16, 6], "rotation": 270, "texture": "#3"}, + "up": {"uv": [9.5, 4, 14.5, 2], "texture": "#3"} + } + }, + { + "name": "MidExtension", + "from": [2, -2, 8], + "to": [14, 14, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, + "south": {"uv": [8, 0, 16, 6], "rotation": 270, "texture": "#3"}, + "west": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, + "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "MidExtension", + "from": [2, -2, 4], + "to": [14, 14, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [8, 6, 16, 0], "rotation": 270, "texture": "#3"}, + "east": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, + "west": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, + "up": {"uv": [8, 0, 6, 6], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Back", + "from": [2.1, -2.1, -2.1], + "to": [13.9, 13.95, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 10]}, + "faces": { + "north": {"uv": [15, 1, 9, 9], "texture": "#7"}, + "east": {"uv": [0, 4, 16, 0], "rotation": 90, "texture": "#5"}, + "south": {"uv": [0, 16, 16, 4], "rotation": 90, "texture": "#5"}, + "west": {"uv": [0, 4, 16, 0], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 4, 12, 0], "texture": "#6"}, + "down": {"uv": [0, 4, 12, 0], "rotation": 180, "texture": "#6"} + } + }, + { + "name": "Back", + "from": [2.1, -2.1, 14], + "to": [13.9, 13.95, 18.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, + "faces": { + "north": {"uv": [0, 4, 16, 16], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, + "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, + "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, + "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} + } + }, + { + "name": "RearBackPlate", + "from": [1, -5, 0], + "to": [15, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, + "faces": { + "north": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, + "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#particle"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#particle"} + } + } + ], + "groups": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [9, 10, 11, 12] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [13, 14, 15] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index dca272755..073985dd2 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -2,7 +2,7 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/brass_funnel_push", + "2": "create:block/brass_funnel_neutral", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall", "6": "create:block/brass_funnel", @@ -68,7 +68,7 @@ "to": [14, 16, 6], "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 0]}, "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, + "north": {"uv": [9, 13, 15, 16], "texture": "#7"}, "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, "up": {"uv": [1, 0, 7, 3], "texture": "#7"}, "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} @@ -140,18 +140,19 @@ { "name": "RearBackPlate", "from": [1, -5, 5], - "to": [15, -2, 16], + "to": [15, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 5, 15, 16], "texture": "#particle"} + "up": {"uv": [1, 5, 15, 16], "texture": "#particle"}, + "down": {"uv": [1, 0, 15, 11], "texture": "#particle"} } }, { "name": "BackPlateLeft", "from": [15, -5, 6], - "to": [16, -2, 16], + "to": [16, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "east": {"uv": [0, 14.5, 5, 16], "texture": "#7"}, @@ -163,7 +164,7 @@ { "name": "BackPlateLeft", "from": [0, -5, 6], - "to": [1, -2, 16], + "to": [1, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json new file mode 100644 index 000000000..adfbea4bf --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json @@ -0,0 +1,160 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/brass_funnel_back", + "5": "create:block/brass_funnel_tall", + "6": "create:block/brass_funnel", + "7": "create:block/brass_funnel_plating", + "2_2": "create:block/brass_funnel_pull", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "LeftWall", + "from": [14, -2, 6], + "to": [16.05, 1, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, + "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, + "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, + "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, + "down": {"uv": [14, 0, 16, 6], "texture": "#2_2"} + } + }, + { + "name": "LeftWall", + "from": [-0.05, -2, 6], + "to": [2, 1, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, + "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, + "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, + "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, + "down": {"uv": [0, 0, 2, 6], "texture": "#2_2"} + } + }, + { + "name": "LeftWall", + "from": [14, 1, 6], + "to": [16.05, 17, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, + "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, + "up": {"uv": [14, 0, 16, 6], "texture": "#2_2"} + } + }, + { + "name": "LeftWall", + "from": [-0.05, 1, 6], + "to": [2, 17, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, + "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, + "up": {"uv": [16, 0, 14, 6], "texture": "#2_2"} + } + }, + { + "name": "Top", + "from": [2, 11, 6], + "to": [14, 17, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, + "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, + "up": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, + "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2_2"} + } + }, + { + "name": "Back", + "from": [2.1, -2.1, 14], + "to": [13.9, 13.95, 18.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, + "faces": { + "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, + "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, + "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, + "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} + } + }, + { + "name": "Back", + "from": [2.1, 2.9, 11.9], + "to": [13.9, 13.95, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, + "faces": { + "east": {"uv": [5, 1, 16, 3], "rotation": 270, "texture": "#5"}, + "west": {"uv": [5, 3, 16, 1], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 3, 12, 1], "texture": "#6"} + } + }, + { + "name": "RearBackPlate", + "from": [0, -5, 13], + "to": [16, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, + "faces": { + "north": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, + "east": {"uv": [6.5, 14.5, 8, 16], "texture": "#7"}, + "south": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, + "west": {"uv": [0, 14.5, 1.5, 16], "texture": "#7"}, + "up": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, + "down": {"uv": [0, 13, 8, 14.5], "texture": "#7"} + } + }, + { + "name": "RearBackPlate", + "from": [2, 9.9, 9], + "to": [14, 11.9, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, + "faces": { + "down": {"uv": [2, 6, 14, 13], "texture": "#2_2"} + } + }, + { + "from": [1, 8, 11], + "to": [15, 15, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, + "faces": { + "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, + "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, + "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, + "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "block_retracted", + "origin": [8, 8, 8], + "children": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [5, 6, 7, 8] + } + ] + }, 9] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json new file mode 100644 index 000000000..a1c751f64 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json @@ -0,0 +1,160 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/brass_funnel_back", + "5": "create:block/brass_funnel_tall", + "6": "create:block/brass_funnel", + "7": "create:block/brass_funnel_plating", + "2_1": "create:block/brass_funnel_push", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "LeftWall", + "from": [14, -2, 6], + "to": [16.05, 1, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, + "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_1"}, + "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, + "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_1"}, + "down": {"uv": [14, 0, 16, 6], "texture": "#2_1"} + } + }, + { + "name": "LeftWall", + "from": [-0.05, -2, 6], + "to": [2, 1, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, + "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_1"}, + "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, + "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_1"}, + "down": {"uv": [0, 0, 2, 6], "texture": "#2_1"} + } + }, + { + "name": "LeftWall", + "from": [14, 1, 6], + "to": [16.05, 17, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_1"}, + "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_1"}, + "up": {"uv": [14, 0, 16, 6], "texture": "#2_1"} + } + }, + { + "name": "LeftWall", + "from": [-0.05, 1, 6], + "to": [2, 17, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_1"}, + "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_1"}, + "up": {"uv": [16, 0, 14, 6], "texture": "#2_1"} + } + }, + { + "name": "Top", + "from": [2, 11, 6], + "to": [14, 17, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "faces": { + "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, + "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, + "up": {"uv": [2, 0, 14, 6], "texture": "#2_1"}, + "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2_1"} + } + }, + { + "name": "Back", + "from": [2.1, -2.1, 14], + "to": [13.9, 13.95, 18.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, + "faces": { + "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, + "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, + "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, + "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} + } + }, + { + "name": "Back", + "from": [2.1, 2.9, 11.9], + "to": [13.9, 13.95, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, + "faces": { + "east": {"uv": [5, 1, 16, 3], "rotation": 270, "texture": "#5"}, + "west": {"uv": [5, 3, 16, 1], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 3, 12, 1], "texture": "#6"} + } + }, + { + "name": "RearBackPlate", + "from": [0, -5, 13], + "to": [16, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, + "faces": { + "north": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, + "east": {"uv": [6.5, 14.5, 8, 16], "texture": "#7"}, + "south": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, + "west": {"uv": [0, 14.5, 1.5, 16], "texture": "#7"}, + "up": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, + "down": {"uv": [0, 13, 8, 14.5], "texture": "#7"} + } + }, + { + "name": "RearBackPlate", + "from": [2, 9.9, 9], + "to": [14, 11.9, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, + "faces": { + "down": {"uv": [2, 6, 14, 13], "texture": "#2_1"} + } + }, + { + "from": [1, 8, 11], + "to": [15, 15, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, + "faces": { + "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, + "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, + "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, + "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "block_retracted", + "origin": [8, 8, 8], + "children": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [5, 6, 7, 8] + } + ] + }, 9] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 3eafc8c41..6336e2bd4 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -1,8 +1,9 @@ { "credit": "Made with Blockbench", "parent": "block/block", + "texture_size": [32, 32], "textures": { - "2": "create:block/brass_funnel_push", + "2": "create:block/brass_funnel_neutral", "3": "create:block/brass_funnel_back", "5": "create:block/brass_funnel_tall", "6": "create:block/brass_funnel", @@ -124,7 +125,7 @@ { "name": "RearBackPlate", "from": [1, -5, 10], - "to": [15, -2, 16], + "to": [15, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, @@ -135,26 +136,26 @@ { "name": "BackPlateLeft", "from": [15, -5, 14], - "to": [16, -2, 16], + "to": [16, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "east": {"uv": [0, 14.5, 1, 16], "texture": "#7"}, "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, "west": {"uv": [7, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 14.5, 5.5, 15], "rotation": 270, "texture": "#7"}, + "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} } }, { "name": "BackPlateLeft", "from": [0, -5, 14], - "to": [1, -2, 16], + "to": [1, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "east": {"uv": [8, 14.5, 7, 16], "texture": "#7"}, "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, "west": {"uv": [1, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#7"}, + "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} } }, diff --git a/src/main/resources/assets/create/models/block/blaze_burner/block_with_fire.json b/src/main/resources/assets/create/models/block/blaze_burner/block_with_fire.json new file mode 100644 index 000000000..317fa360b --- /dev/null +++ b/src/main/resources/assets/create/models/block/blaze_burner/block_with_fire.json @@ -0,0 +1,202 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/blaze_burner_inner", + "2": "create:block/blaze_burner_side", + "3": "create:block/dark_metal_block", + "particle": "create:block/dark_metal_block", + "fire": "block/campfire_fire" + }, + "elements": [ + { + "name": "Brazier Sides 1", + "from": [2, 5, 2], + "to": [14, 14, 14], + "faces": { + "north": {"uv": [0, 6, 12, 15], "texture": "#2"}, + "east": {"uv": [0, 6, 12, 15], "texture": "#2"}, + "south": {"uv": [0, 6, 12, 15], "texture": "#2"}, + "west": {"uv": [0, 6, 12, 15], "texture": "#2"} + } + }, + { + "name": "Brazier Sides 2", + "from": [2, 5, 14], + "to": [14, 14, 15], + "faces": { + "north": {"uv": [12, 6, 0, 15], "texture": "#2"} + } + }, + { + "name": "Brazier Sides 3", + "from": [1, 5, 2], + "to": [2, 14, 14], + "faces": { + "east": {"uv": [12, 6, 0, 15], "texture": "#2"} + } + }, + { + "name": "Brazier Sides 4", + "from": [2, 5, 1], + "to": [14, 14, 2], + "faces": { + "south": {"uv": [12, 6, 0, 15], "texture": "#2"} + } + }, + { + "name": "Brazier Sides 5", + "from": [14, 5, 2], + "to": [15, 14, 14], + "faces": { + "west": {"uv": [12, 6, 0, 15], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 1", + "from": [2, 14, 13], + "to": [14, 17, 14], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, + "faces": { + "south": {"uv": [0, 3, 12, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 2", + "from": [2, 14, 2], + "to": [3, 17, 14], + "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, + "faces": { + "west": {"uv": [0, 3, 12, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 3", + "from": [2, 14, 2], + "to": [14, 17, 3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, + "faces": { + "north": {"uv": [0, 3, 12, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 4", + "from": [13, 14, 2], + "to": [14, 17, 14], + "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, + "faces": { + "east": {"uv": [0, 3, 12, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 1b", + "from": [2, 14, 14], + "to": [14, 17, 15], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, + "faces": { + "north": {"uv": [12, 3, 0, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 1b", + "from": [1, 14, 2], + "to": [2, 17, 14], + "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, + "faces": { + "east": {"uv": [12, 3, 0, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 1b", + "from": [2, 14, 1], + "to": [14, 17, 2], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, + "faces": { + "south": {"uv": [12, 3, 0, 6], "texture": "#2"} + } + }, + { + "name": "Brazier Spikes 1b", + "from": [14, 14, 2], + "to": [15, 17, 14], + "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, + "faces": { + "west": {"uv": [12, 3, 0, 6], "texture": "#2"} + } + }, + { + "name": "Base", + "from": [0, 0, 0], + "to": [16, 4, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 8, 0.5]}, + "faces": { + "north": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, + "east": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, + "south": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, + "west": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#3", "cullface": "down"} + } + }, + { + "name": "Brazier bottom", + "from": [2, 4, 2], + "to": [14, 5, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 8, 2.5]}, + "faces": { + "north": {"uv": [0, 15, 12, 16], "texture": "#2"}, + "east": {"uv": [0, 15, 12, 16], "texture": "#2"}, + "south": {"uv": [0, 15, 12, 16], "texture": "#2"}, + "west": {"uv": [0, 15, 12, 16], "texture": "#2"}, + "up": {"uv": [2, 2, 14, 14], "texture": "#1"} + } + }, + { + "from": [0.8, 1, 8], + "to": [15.2, 17, 8], + "shade": false, + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#fire"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#fire"} + } + }, + { + "from": [8, 1, 0.8], + "to": [8, 17, 15.2], + "shade": false, + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, + "faces": { + "east": {"uv": [0, 0, 16, 16], "texture": "#fire"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#fire"} + } + } + ], + "display": { + "head": { + "translation": [0, 10.5, 0] + } + }, + "groups": [ + { + "name": "Brazier", + "origin": [0.5, 0.5, 0.5], + "children": [ + { + "name": "Brazier Sides", + "origin": [0.5, 0.5, 0.5], + "children": [0, 1, 2, 3, 4] + }, + { + "name": "Brazier Spikes", + "origin": [0.5, 0.5, 0.5], + "children": [5, 6, 7, 8, 9, 10, 11, 12] + }, 13, 14] + }, + { + "name": "campfire", + "origin": [8, 8, 8], + "children": [15, 16] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wrench/gear.json b/src/main/resources/assets/create/models/item/wrench/gear.json index 3142c72d7..05ffe5665 100644 --- a/src/main/resources/assets/create/models/item/wrench/gear.json +++ b/src/main/resources/assets/create/models/item/wrench/gear.json @@ -2,63 +2,64 @@ "credit": "Made with Blockbench", "parent": "create:item/wrench/item", "textures": { - "0": "block/stripped_spruce_log" + "5": "create:item/wrench", + "particle": "create:item/wrench" }, "elements": [ { "name": "Cog", - "from": [8, 7, 6], - "to": [9, 8, 10], - "rotation": {"angle": -45, "axis": "y", "origin": [8.5, 7, 8]}, - "faces": { - "north": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "west": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "up": {"uv": [5, 6, 6, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5, 6, 6, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Cog", - "from": [8, 7, 6], - "to": [9, 8, 10], - "rotation": {"angle": 45, "axis": "y", "origin": [8.5, 7, 8]}, - "faces": { - "north": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "west": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "up": {"uv": [5, 6, 6, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5, 6, 6, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Cog", - "from": [8, 7, 6], - "to": [9, 8, 10], + "from": [8.5, 7, 6], + "to": [9.5, 8, 10], "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 7, 8]}, "faces": { - "north": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "west": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "up": {"uv": [5, 6, 6, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5, 6, 6, 10], "rotation": 180, "texture": "#0"} + "north": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "east": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "south": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "west": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "up": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"}, + "down": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"} } }, { "name": "Cog", - "from": [6.5, 7, 7.5], - "to": [10.5, 8, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 7, 8]}, + "from": [8.5, 7, 6], + "to": [9.5, 8, 10], + "rotation": {"angle": 45, "axis": "y", "origin": [9, 7, 8]}, "faces": { - "north": {"uv": [3, 6, 7, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [3, 6, 4, 7], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 6, 7, 7], "rotation": 180, "texture": "#0"}, - "west": {"uv": [7, 4, 8, 5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5, 6, 9, 7], "rotation": 180, "texture": "#0"} + "north": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "east": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "south": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "west": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "up": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"}, + "down": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "Cog", + "from": [7, 7, 7.5], + "to": [11, 8, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 7, 8]}, + "faces": { + "north": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "east": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "south": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "west": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "up": {"uv": [2, 14, 10, 16], "texture": "#5"}, + "down": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"} + } + }, + { + "name": "Cog", + "from": [7, 7, 7.5], + "to": [11, 8, 8.5], + "rotation": {"angle": 45, "axis": "y", "origin": [9, 7, 8]}, + "faces": { + "north": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "east": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "south": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, + "west": {"uv": [10, 14, 12, 16], "texture": "#5"}, + "up": {"uv": [2, 14, 10, 16], "texture": "#5"}, + "down": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"} } } ] diff --git a/src/main/resources/assets/create/models/item/wrench/item.json b/src/main/resources/assets/create/models/item/wrench/item.json index 65880cabe..656143148 100644 --- a/src/main/resources/assets/create/models/item/wrench/item.json +++ b/src/main/resources/assets/create/models/item/wrench/item.json @@ -1,18 +1,113 @@ { "credit": "Made with Blockbench", "parent": "block/block", - "ambientocclusion": false, "textures": { - "0": "block/stripped_spruce_log", - "1": "block/spruce_log", - "2": "create:block/brass_casing", - "3": "block/andesite", - "particle": "block/stripped_spruce_log" + "5": "create:item/wrench", + "particle": "create:item/wrench" }, + "elements": [ + { + "name": "handle", + "from": [7.6, 0, 7.5], + "to": [8.6, 7, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 8]}, + "faces": { + "north": {"uv": [2, 0, 4, 14], "texture": "#5"}, + "east": {"uv": [2, 0, 4, 14], "texture": "#5"}, + "south": {"uv": [2, 0, 4, 14], "texture": "#5"}, + "west": {"uv": [2, 0, 4, 14], "texture": "#5"}, + "down": {"uv": [2, 12, 4, 14], "texture": "#5"} + } + }, + { + "name": "handle", + "from": [6.5, 8.5, 7.5], + "to": [8.5, 14.5, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [7.5, 20, 8]}, + "faces": { + "north": {"uv": [12, 0, 16, 12], "texture": "#5"}, + "east": {"uv": [14, 0, 16, 12], "texture": "#5"}, + "south": {"uv": [16, 0, 12, 12], "texture": "#5"}, + "west": {"uv": [16, 0, 14, 12], "texture": "#5"}, + "up": {"uv": [5, 7, 7, 8], "rotation": 90, "texture": "#5"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#5"} + } + }, + { + "name": "axle", + "from": [8.35355, 5, 7.14645], + "to": [9.35355, 12, 8.14645], + "rotation": {"angle": -45, "axis": "y", "origin": [8.5, 11, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 14], "texture": "#5"}, + "east": {"uv": [0, 2, 2, 16], "texture": "#5"}, + "south": {"uv": [0, 0, 2, 14], "texture": "#5"}, + "west": {"uv": [0, 2, 2, 16], "texture": "#5"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#5"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#5"} + } + }, + { + "name": "top thing", + "from": [7, 14, 7], + "to": [11, 15, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 7]}, + "faces": { + "north": {"uv": [4, 8, 12, 10], "texture": "#5"}, + "east": {"uv": [4, 0, 8, 2], "texture": "#5"}, + "south": {"uv": [12, 8, 4, 10], "texture": "#5"}, + "west": {"uv": [4, 6, 8, 8], "rotation": 180, "texture": "#5"}, + "up": {"uv": [4, 0, 8, 8], "rotation": 90, "texture": "#5"}, + "down": {"uv": [8, 0, 12, 8], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "bottom thing", + "from": [8, 12, 7], + "to": [11, 13, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 7]}, + "faces": { + "north": {"uv": [10, 8, 4, 10], "rotation": 180, "texture": "#5"}, + "east": {"uv": [4, 0, 8, 2], "rotation": 180, "texture": "#5"}, + "south": {"uv": [4, 8, 10, 10], "rotation": 180, "texture": "#5"}, + "west": {"uv": [4, 6, 8, 8], "texture": "#5"}, + "up": {"uv": [8, 0, 12, 6], "rotation": 90, "texture": "#5"}, + "down": {"uv": [4, 0, 8, 6], "rotation": 90, "texture": "#5"} + } + }, + { + "name": "gear case top", + "from": [6.4, 8, 7], + "to": [10.4, 9, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 11, 8]}, + "faces": { + "north": {"uv": [4, 10, 12, 12], "texture": "#5"}, + "east": {"uv": [4, 10, 6, 14], "rotation": 90, "texture": "#5"}, + "south": {"uv": [12, 10, 4, 12], "texture": "#5"}, + "west": {"uv": [4, 10, 6, 14], "rotation": 90, "texture": "#5"}, + "up": {"uv": [4, 10, 12, 14], "rotation": 180, "texture": "#5"}, + "down": {"uv": [6, 0, 9, 2], "texture": "#5"} + } + }, + { + "name": "gear case", + "from": [7.5, 6, 7], + "to": [9.5, 7, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8.5, 11, 8]}, + "faces": { + "north": {"uv": [12, 12, 16, 14], "texture": "#5"}, + "east": {"uv": [12, 12, 16, 14], "texture": "#5"}, + "south": {"uv": [12, 12, 16, 14], "texture": "#5"}, + "west": {"uv": [12, 12, 16, 14], "texture": "#5"}, + "up": {"uv": [12, 12, 16, 16], "texture": "#5"}, + "down": {"uv": [12, 12, 16, 16], "texture": "#5"} + } + } + ], "display": { "thirdperson_righthand": { - "rotation": [0, -180, 0], - "translation": [0, 3.75, 0] + "rotation": [0, 90, 0], + "translation": [0, 3.25, 0] }, "thirdperson_lefthand": { "translation": [0, 3.75, 0] @@ -40,90 +135,11 @@ "translation": [0.5, 0.5, 0] } }, - "elements": [ + "groups": [ { - "name": "handle", - "from": [7.5, 0, 7.5], - "to": [8.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 8]}, - "faces": { - "north": {"uv": [1, 0, 2, 14], "texture": "#1"}, - "east": {"uv": [1, 0, 2, 14], "texture": "#1"}, - "south": {"uv": [1, 0, 2, 14], "texture": "#1"}, - "west": {"uv": [1, 0, 2, 14], "texture": "#1"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#1"} - } - }, - { - "name": "axle", - "from": [8.35355, 5, 7.14645], - "to": [9.35355, 12, 8.14645], - "rotation": {"angle": -45, "axis": "y", "origin": [8.5, 11, 8]}, - "faces": { - "north": {"uv": [5, 2, 6, 9], "texture": "#3"}, - "east": {"uv": [5, 2, 6, 9], "texture": "#3"}, - "south": {"uv": [0, 0, 1, 7], "texture": "#3"}, - "west": {"uv": [4, 3, 5, 10], "texture": "#3"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#3"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#3"} - } - }, - { - "name": "top thing", - "from": [7, 14, 7], - "to": [11, 15, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 7]}, - "faces": { - "north": {"uv": [6, 1, 10, 2], "texture": "#2"}, - "east": {"uv": [6, 1, 8, 2], "texture": "#2"}, - "south": {"uv": [6, 1, 10, 2], "texture": "#2"}, - "west": {"uv": [6, 1, 8, 2], "texture": "#2"}, - "up": {"uv": [5, 0, 9, 2], "texture": "#2"}, - "down": {"uv": [6, 0, 10, 2], "texture": "#2"} - } - }, - { - "name": "bottom thing", - "from": [8, 12, 7], - "to": [11, 13, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 7]}, - "faces": { - "north": {"uv": [6, 1, 9, 2], "texture": "#2"}, - "east": {"uv": [6, 1, 8, 2], "texture": "#2"}, - "south": {"uv": [5, 1, 8, 2], "texture": "#2"}, - "west": {"uv": [7, 1, 9, 2], "texture": "#2"}, - "up": {"uv": [6, 0, 9, 2], "texture": "#2"}, - "down": {"uv": [7, 0, 10, 2], "texture": "#2"} - } - }, - { - "name": "gear case top", - "from": [7, 8, 7], - "to": [10, 9, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 11, 8]}, - "faces": { - "north": {"uv": [10, 0, 13, 1], "texture": "#2"}, - "east": {"uv": [7, 0, 9, 1], "texture": "#2"}, - "south": {"uv": [7, 0, 10, 1], "texture": "#2"}, - "west": {"uv": [9, 0, 11, 1], "texture": "#2"}, - "up": {"uv": [7, 0, 10, 2], "texture": "#2"}, - "down": {"uv": [6, 0, 9, 2], "texture": "#2"} - } - }, - { - "name": "gear case", - "from": [7.5, 6.5, 7], - "to": [9.5, 7.5, 9], - "rotation": {"angle": 45, "axis": "y", "origin": [8.5, 11, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#1"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#1"} - } + "name": "item", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5, 6] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png b/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png new file mode 100644 index 000000000..dde514836 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png index 71aacc4f3..6f4ed26a8 100644 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png and b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png b/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png new file mode 100644 index 000000000..11adc7eb0 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_plating.png b/src/main/resources/assets/create/textures/block/brass_funnel_plating.png index e8a3ca30e..76fe0d542 100644 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_plating.png and b/src/main/resources/assets/create/textures/block/brass_funnel_plating.png differ diff --git a/src/main/resources/assets/create/textures/item/wrench.png b/src/main/resources/assets/create/textures/item/wrench.png new file mode 100644 index 000000000..ea2724cb5 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/wrench.png differ