merge recent progress to 1.16
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "create:block/blaze_burner/block_with_fire"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -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",
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:empty_blaze_burner"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"replace": false,
|
||||
"values": [
|
||||
"create:blaze_burner",
|
||||
"create:lit_blaze_burner",
|
||||
"minecraft:magma_block",
|
||||
"minecraft:campfire",
|
||||
"minecraft:lava",
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"replace": false,
|
||||
"values": [
|
||||
"create:blaze_burner",
|
||||
"create:lit_blaze_burner",
|
||||
"create:sail_frame",
|
||||
"#minecraft:fences",
|
||||
"minecraft:iron_bars"
|
||||
|
|
|
@ -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<LitBlazeBurnerBlock> 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<DepotBlock> 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();
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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<CreateRecipeCategory<?>> 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<T> catalyst(Supplier<IItemProvider> supplier) {
|
||||
return catalystStack(() -> new ItemStack(supplier.get().asItem()));
|
||||
return catalystStack(() -> new ItemStack(supplier.get()
|
||||
.asItem()));
|
||||
}
|
||||
|
||||
|
||||
CategoryBuilder<T> catalystStack(Supplier<ItemStack> supplier) {
|
||||
category.recipeCatalysts.add(supplier);
|
||||
return this;
|
||||
|
|
|
@ -140,19 +140,6 @@ public class BasinCategory extends CreateRecipeCategory<BasinRecipe> {
|
|||
}
|
||||
}
|
||||
|
||||
public List<FluidStack> withImprovedVisibility(List<FluidStack> 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<Pair<Ingredient, MutableInt>> actualIngredients = ItemHelper.condenseIngredients(recipe.getIngredients());
|
||||
|
|
|
@ -107,6 +107,19 @@ public abstract class CreateRecipeCategory<T extends IRecipe<?>> implements IRec
|
|||
.formatted(TextFormatting.GOLD));
|
||||
});
|
||||
}
|
||||
|
||||
public List<FluidStack> withImprovedVisibility(List<FluidStack> 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<FluidIngredient> inputs,
|
||||
List<FluidStack> outputs) {
|
||||
|
|
|
@ -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<EmptyingRecipe> {
|
||||
|
||||
AnimatedItemDrain drain;
|
||||
|
||||
public ItemDrainCategory() {
|
||||
super(doubleItemIcon(AllBlocks.ITEM_DRAIN.get(), Items.WATER_BUCKET), emptyBackground(177, 50));
|
||||
drain = new AnimatedItemDrain();
|
||||
}
|
||||
|
||||
public static List<EmptyingRecipe> getRecipes(IIngredientManager ingredientManager) {
|
||||
List<EmptyingRecipe> 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<IFluidHandlerItem> 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<? extends EmptyingRecipe> 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<ItemStack> 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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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<FillingRecipe> {
|
||||
|
||||
AnimatedSpout spout;
|
||||
|
||||
public SpoutCategory() {
|
||||
super(doubleItemIcon(AllBlocks.SPOUT.get(), Items.WATER_BUCKET), emptyBackground(177, 70));
|
||||
spout = new AnimatedSpout();
|
||||
}
|
||||
|
||||
public static List<FillingRecipe> getRecipes(IIngredientManager ingredientManager) {
|
||||
List<FillingRecipe> 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<IFluidHandlerItem> 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<? extends FillingRecipe> 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<ItemStack> 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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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<FluidStack> fluids;
|
||||
|
||||
public AnimatedSpout withFluids(List<FluidStack> 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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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> CONTRAPTION = new Compartment<>();
|
||||
public static final Compartment<Pair<Contraption, Integer>> 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<RenderType> blockLayers = RenderType.getBlockLayers();
|
||||
|
||||
buffer.getBuffer(RenderType.getSolid());
|
||||
for (int i = 0; i < blockLayers.size(); i++) {
|
||||
RenderType layer = blockLayers.get(i);
|
||||
Pair<Contraption, Integer> 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());
|
||||
|
|
|
@ -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<ITextComponent> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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<ItemStack> POTION_ITEMS = new ArrayList<>();
|
||||
public static List<Item> FILLED_BUCKETS = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
public static final ReloadListener<Object> LISTENER = new ReloadListener<Object>() {
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -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<Item, List<MixingRecipe>> ALL = new HashMap<>();
|
||||
|
||||
|
||||
public static List<MixingRecipe> getAllBrewingRecipes() {
|
||||
List<MixingRecipe> mixingRecipes = new ArrayList<>();
|
||||
|
|
@ -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);
|
||||
|
||||
/**
|
||||
|
|
|
@ -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<BasinTileEntity>, IWrenchab
|
|||
protected void fillStateContainer(Builder<Block, BlockState> 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) {
|
||||
|
|
|
@ -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<BlazeBurnerTileEntity
|
|||
super.fillStateContainer(builder);
|
||||
builder.add(HEAT_LEVEL);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_,
|
||||
boolean p_220082_5_) {
|
||||
public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) {
|
||||
if (world.isRemote)
|
||||
return;
|
||||
TileEntity tileEntity = world.getTileEntity(pos.up());
|
||||
|
@ -104,6 +110,19 @@ public class BlazeBurnerBlock extends Block implements ITE<BlazeBurnerTileEntity
|
|||
boolean dontConsume = player.isCreative();
|
||||
boolean forceOverflow = !(player instanceof FakePlayer);
|
||||
|
||||
if (!state.hasTileEntity()) {
|
||||
if (heldItem.getItem() instanceof FlintAndSteelItem) {
|
||||
world.playSound(player, pos, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F,
|
||||
world.rand.nextFloat() * 0.4F + 0.8F);
|
||||
if (world.isRemote)
|
||||
return ActionResultType.SUCCESS;
|
||||
heldItem.damageItem(1, player, p -> 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<BlazeBurnerTileEntity
|
|||
|
||||
if (!burnerTE.tryUpdateFuel(stack, forceOverflow, simulate))
|
||||
return false;
|
||||
if (!simulate && !world.isRemote)
|
||||
if (!simulate && !world.isRemote) {
|
||||
world.playSound(null, pos, SoundEvents.ENTITY_BLAZE_SHOOT, SoundCategory.BLOCKS,
|
||||
.125f + world.rand.nextFloat() * .125f, .75f - world.rand.nextFloat() * .25f);
|
||||
stack.shrink(1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -181,6 +203,18 @@ public class BlazeBurnerBlock extends Block implements ITE<BlazeBurnerTileEntity
|
|||
return builder;
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void animateTick(BlockState state, World world, BlockPos pos, Random random) {
|
||||
if (random.nextInt(10) != 0)
|
||||
return;
|
||||
if (!state.get(HEAT_LEVEL)
|
||||
.isAtLeast(HeatLevel.SMOULDERING))
|
||||
return;
|
||||
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.5F + random.nextFloat(), random.nextFloat() * 0.7F + 0.6F, false);
|
||||
}
|
||||
|
||||
public enum HeatLevel implements IStringSerializable {
|
||||
NONE, SMOULDERING, FADING, KINDLED, SEETHING,;
|
||||
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
package com.simibubi.create.content.contraptions.processing.burner;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Hand;
|
||||
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.RayTraceResult;
|
||||
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;
|
||||
|
||||
public class LitBlazeBurnerBlock extends Block {
|
||||
|
||||
// 1.16: add a soul fire variant
|
||||
|
||||
// public enum FlameType implements IStringSerializable {
|
||||
// REGULAR, SOULFIRE;
|
||||
//
|
||||
// @Override
|
||||
// public String getName() {
|
||||
// return Lang.asId(name());
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
public LitBlazeBurnerBlock(Properties p_i48440_1_) {
|
||||
super(p_i48440_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
|
||||
BlockRayTraceResult blockRayTraceResult) {
|
||||
ItemStack heldItem = player.getHeldItem(hand);
|
||||
|
||||
// Check for 'Shovels'
|
||||
if (!heldItem.canHarvestBlock(Blocks.SNOW.getDefaultState()))
|
||||
return ActionResultType.PASS;
|
||||
|
||||
world.playSound(player, pos, SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, SoundCategory.BLOCKS, .5f, 2);
|
||||
|
||||
if (world.isRemote)
|
||||
return ActionResultType.SUCCESS;
|
||||
if (!player.isCreative())
|
||||
heldItem.damageItem(1, player, p -> 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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package com.simibubi.create.content.contraptions.relays.elementary;
|
||||
|
||||
public class CogWheelPlacementHelper {
|
||||
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -18,7 +18,7 @@ public class WrenchItemRenderer extends CustomRenderedItemModelRenderer<WrenchMo
|
|||
|
||||
float worldTime = AnimationTickHolder.getRenderTick();
|
||||
float angle = worldTime * -.5f % 360;
|
||||
float xOffset = -1/32f;
|
||||
float xOffset = -1/16f;
|
||||
ms.translate(-xOffset, 0, 0);
|
||||
ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle));
|
||||
ms.translate(xOffset, 0, 0);
|
||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Optional;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
|
||||
|
@ -19,6 +20,7 @@ import com.simibubi.create.foundation.item.ItemHelper;
|
|||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.CampfireBlock;
|
||||
|
@ -65,12 +67,12 @@ public class InWorldProcessing {
|
|||
FluidState fluidState = reader.getFluidState(pos);
|
||||
if (fluidState.getFluid() == Fluids.WATER || fluidState.getFluid() == Fluids.FLOWING_WATER)
|
||||
return Type.SPLASHING;
|
||||
if (blockState.getBlock() == Blocks.FIRE
|
||||
|| (blockState.getBlock() == Blocks.CAMPFIRE && blockState.get(CampfireBlock.LIT))
|
||||
Block block = blockState.getBlock();
|
||||
if (block == Blocks.FIRE || AllBlocks.LIT_BLAZE_BURNER.has(blockState)
|
||||
|| (block == Blocks.CAMPFIRE && blockState.get(CampfireBlock.LIT))
|
||||
|| getHeatLevelOf(blockState) == BlazeBurnerBlock.HeatLevel.SMOULDERING)
|
||||
return Type.SMOKING;
|
||||
if (blockState.getBlock() == Blocks.LAVA
|
||||
|| getHeatLevelOf(blockState).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING))
|
||||
if (block == Blocks.LAVA || getHeatLevelOf(blockState).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING))
|
||||
return Type.BLASTING;
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.simibubi.create.AllBlocks;
|
|||
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
|
||||
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock;
|
||||
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape;
|
||||
import com.simibubi.create.foundation.gui.AllIcons;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform;
|
||||
|
@ -412,7 +413,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity {
|
|||
return false;
|
||||
if (funnelState.get(BeltFunnelBlock.HORIZONTAL_FACING) != side.getOpposite())
|
||||
return false;
|
||||
return !funnelState.get(BeltFunnelBlock.PUSHING);
|
||||
return funnelState.get(BeltFunnelBlock.SHAPE) == Shape.EXTENDED;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.util.Map;
|
|||
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour;
|
||||
|
@ -150,7 +151,8 @@ public class ChuteBlock extends Block implements IWrenchable, ITE<ChuteTileEntit
|
|||
@Override
|
||||
public void neighborChanged(BlockState p_220069_1_, World world, BlockPos pos, Block p_220069_4_,
|
||||
BlockPos neighbourPos, boolean p_220069_6_) {
|
||||
if (pos.down().equals(neighbourPos))
|
||||
if (pos.down()
|
||||
.equals(neighbourPos))
|
||||
withTileEntityDo(world, pos, ChuteTileEntity::blockBelowChanged);
|
||||
}
|
||||
|
||||
|
@ -211,7 +213,10 @@ public class ChuteBlock extends Block implements IWrenchable, ITE<ChuteTileEntit
|
|||
if (connections.get(Direction.EAST) && connections.get(Direction.WEST))
|
||||
return state.with(SHAPE, Shape.INTERSECTION);
|
||||
if (amtConnections == 1 && connections.get(facing)
|
||||
&& !(above.getBlock() instanceof ChuteBlock && above.get(FACING) == Direction.DOWN))
|
||||
&& !(above.getBlock() instanceof ChuteBlock && above.get(FACING) == Direction.DOWN)
|
||||
&& !(above.getBlock() instanceof FunnelBlock && FunnelBlock.getFunnelFacing(above)
|
||||
.getAxis()
|
||||
.isVertical()))
|
||||
return state.with(SHAPE, Shape.NORMAL);
|
||||
return state.with(SHAPE, Shape.INTERSECTION);
|
||||
}
|
||||
|
|
|
@ -2,39 +2,58 @@ package com.simibubi.create.content.logistics.block.funnel;
|
|||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
|
||||
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltSlope;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.content.logistics.block.depot.DepotBlock;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.VoxelShaper;
|
||||
import com.tterrag.registrate.util.entry.BlockEntry;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.HorizontalBlock;
|
||||
import net.minecraft.client.particle.ParticleManager;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.state.BooleanProperty;
|
||||
import net.minecraft.state.EnumProperty;
|
||||
import net.minecraft.state.Property;
|
||||
import net.minecraft.state.StateContainer.Builder;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock {
|
||||
public abstract class BeltFunnelBlock extends HorizontalBlock implements IWrenchable {
|
||||
|
||||
public static final Property<Shape> SHAPE = EnumProperty.create("shape", Shape.class);
|
||||
private BlockEntry<? extends FunnelBlock> parent;
|
||||
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
public static final EnumProperty<Shape> 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<? extends FunnelBlock> 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<Block, BlockState> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -33,20 +33,19 @@ public class BeltFunnelGenerator extends SpecialBlockStateGen {
|
|||
@Override
|
||||
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> 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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ public class FunnelRenderer extends SmartTileEntityRenderer<FunnelTileEntity> {
|
|||
msr.centre()
|
||||
.rotateY(horizontalAngle)
|
||||
.unCentre();
|
||||
ms.translate(0, 0, -te.getFlapOffset());
|
||||
|
||||
for (int segment = 0; segment <= 3; segment++) {
|
||||
ms.push();
|
||||
|
|
|
@ -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<ITextComponent> 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<IItemHandler> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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<ArmInteractionPoint> 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();
|
||||
|
|
|
@ -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<ITextComponent> 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() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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<ITextComponent> 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<ITextComponent> 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<? extends IItemProvider> itemWithTooltip) {
|
||||
tooltipReferrals.put(item.asItem(), () -> itemWithTooltip.get()
|
||||
.asItem()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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<String, ResourceLocation> 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<Block> event) {
|
||||
ModContainer mod = ModList.get().getModContainerById(Create.ID).orElse(null);
|
||||
if (mod == null)
|
||||
return;
|
||||
event.setModContainer(mod);
|
||||
ImmutableList<RegistryEvent.MissingMappings.Mapping<Block>> mappings = event.getMappings();
|
||||
|
||||
for (RegistryEvent.MissingMappings.Mapping<Block> 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<Item> event) {
|
||||
ModContainer mod = ModList.get().getModContainerById(Create.ID).orElse(null);
|
||||
if (mod == null)
|
||||
return;
|
||||
event.setModContainer(mod);
|
||||
ImmutableList<RegistryEvent.MissingMappings.Mapping<Item>> mappings = event.getMappings();
|
||||
|
||||
for (RegistryEvent.MissingMappings.Mapping<Item> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -280,5 +280,9 @@ public class SuperByteBuffer {
|
|||
|
||||
return ((int) sky) << 20 | ((int) block) << 4;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return template.limit() == 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"},
|
||||
|
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 368 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 282 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 535 B |
BIN
src/main/resources/assets/create/textures/item/wrench.png
Normal file
After Width: | Height: | Size: 2.3 KiB |