Merge branch 'mc1.15/dev' into patch-1
This commit is contained in:
commit
ed84343f38
143 changed files with 13593 additions and 3455 deletions
|
@ -157,6 +157,8 @@ afff479c0e5284771afa9e7ce513595fe65860ee assets/create/blockstates/gabbro_cobble
|
|||
a1f31a194129cfb65e335b3b96490f9275f9c564 assets/create/blockstates/gabbro_cobblestone_stairs.json
|
||||
a64d8d0924c0b5b192f355343dd9b3a440875f6a assets/create/blockstates/gabbro_cobblestone_wall.json
|
||||
a6b44e8a1c4ce0c7442b2384b41ad36dd133f19b assets/create/blockstates/gabbro_pillar.json
|
||||
2d7ffcb339b0a38b98935a382ac2a164866255b1 assets/create/blockstates/gantry_pinion.json
|
||||
9fa39a44bba30c5ae8fa245b122a837c705462b4 assets/create/blockstates/gantry_shaft.json
|
||||
eca1f0e56efdadb241f42dc6ebb036f1d52213a9 assets/create/blockstates/gearbox.json
|
||||
f34814b17cde3231a1dfb271f3dabf8d6de4fbf6 assets/create/blockstates/gearshift.json
|
||||
93f8bdc22d9a5e04268964e35e4285c8cbf2b89d assets/create/blockstates/glass_fluid_pipe.json
|
||||
|
@ -398,17 +400,19 @@ 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
|
||||
df67c2c11fa22487d3a0fdc9b008056e593d14e3 assets/create/lang/en_ud.json
|
||||
3ad443f44eb33fe8c3ac092d1532dcbd27e49c84 assets/create/lang/en_us.json
|
||||
612a63d73f7f4b8e79dce3f53ddbe3345f0e74d8 assets/create/lang/unfinished/de_de.json
|
||||
2e37dc718a8dea2af85daba7266c877ce80ff35b assets/create/lang/unfinished/fr_fr.json
|
||||
f843761728c403276b7a47282f4fdd039b5b6854 assets/create/lang/unfinished/it_it.json
|
||||
8b90c66fd5974c993e83bfa5733ca03187211d28 assets/create/lang/unfinished/ja_jp.json
|
||||
59db0a3cff42707ecb828b975ef1fcba2a21a521 assets/create/lang/unfinished/ko_kr.json
|
||||
b1900a6cce7216a4baa844affa169cfb32ff645c assets/create/lang/unfinished/nl_nl.json
|
||||
d3f09a37b1f4ec5d53effc2b87efbccf2df2b7c7 assets/create/lang/unfinished/pt_br.json
|
||||
16c92dab525ba20e85b65ee084f7b760432dcb73 assets/create/lang/unfinished/ru_ru.json
|
||||
c8b5c2a3a65468950aa713a56bf1c930eef81305 assets/create/lang/unfinished/zh_cn.json
|
||||
e3f618c5b622d21880de858678d1802cbf65e615 assets/create/lang/en_ud.json
|
||||
acc852d80378b426d7ee6cb59c169e06b6d63b25 assets/create/lang/en_us.json
|
||||
30ce93c56557cea2f384a47b549fb893700523a5 assets/create/lang/unfinished/de_de.json
|
||||
77b8310f3cbed36fa0d2ee29e65ac6aee0c2adc2 assets/create/lang/unfinished/es_mx.json
|
||||
c81d5b374365ca8fcce1ff7a199b28e3c969c878 assets/create/lang/unfinished/fr_fr.json
|
||||
5ba7a1a73fb3d08b3777325266c8ed0360302eba assets/create/lang/unfinished/it_it.json
|
||||
b1935e7f8d79d1112e1685adb42daedb976ac6d7 assets/create/lang/unfinished/ja_jp.json
|
||||
23aaf879d07a24775aeba3b98c355c992b24f28b assets/create/lang/unfinished/ko_kr.json
|
||||
7372533759001f094dbcad787f01f3de7422d8c0 assets/create/lang/unfinished/nl_nl.json
|
||||
0d1e5d79ef196a06b273962d5ac8f2013f91209c assets/create/lang/unfinished/pt_br.json
|
||||
75f21aa345d73302898d8e44feb82211ff487ddf assets/create/lang/unfinished/ru_ru.json
|
||||
45ca54406acac857752c67a45729da953d11f94a assets/create/lang/unfinished/zh_cn.json
|
||||
4093ea8612465858aa57581b36f8f60aa23ac203 assets/create/lang/unfinished/zh_tw.json
|
||||
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
|
||||
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
|
||||
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json
|
||||
|
@ -751,6 +755,18 @@ f278ec09c13f98ccbce1a8488d4d51c72f398ed4 assets/create/models/block/gabbro_cobbl
|
|||
5e50c62a9db350f3a2c0e4b1c37a8dc0d149f287 assets/create/models/block/gabbro_cobblestone_wall_post.json
|
||||
820235f51e7c3b4c05a327c3aa66618ea1e89c9c assets/create/models/block/gabbro_cobblestone_wall_side.json
|
||||
ede9c9209f9cee3d8e1ffc5008b1b8b026aee998 assets/create/models/block/gabbro_pillar.json
|
||||
f7f55d8107d9128f7be42b2a07fd99aeeba44954 assets/create/models/block/gantry_shaft_end_flipped.json
|
||||
33196bb0c2f7ca356fc62854349a3ab5fdf2d119 assets/create/models/block/gantry_shaft_end_powered.json
|
||||
410c0ae1995a079766cab96a3545bb61159feba3 assets/create/models/block/gantry_shaft_end_powered_flipped.json
|
||||
d66f23d811a09c7e3dad5900f9851282be2f64b7 assets/create/models/block/gantry_shaft_middle_flipped.json
|
||||
9551abd37c295fe2541f2aee01dd72bfb71b8ae1 assets/create/models/block/gantry_shaft_middle_powered.json
|
||||
deff4f1163284c22a60d403000c0cd7553d6caff assets/create/models/block/gantry_shaft_middle_powered_flipped.json
|
||||
16eb7950f81e7242d277f5b0b2710ade820f5645 assets/create/models/block/gantry_shaft_single_flipped.json
|
||||
78b51bdfa1d26f909e2d3a3ddb70a5631f4fa75f assets/create/models/block/gantry_shaft_single_powered.json
|
||||
c81b86c2186cbe9867ea041776c8e70059d70f7e assets/create/models/block/gantry_shaft_single_powered_flipped.json
|
||||
347430ecc316d502cea2e0f90d43ff106e9cb15c assets/create/models/block/gantry_shaft_start_flipped.json
|
||||
0e1a5a8f38cd6cd3e2f7d2c0d147d924414b0560 assets/create/models/block/gantry_shaft_start_powered.json
|
||||
4b2f2e9eb3d426b56bb2e0f530b249469200afd0 assets/create/models/block/gantry_shaft_start_powered_flipped.json
|
||||
392dd57e5b96214335867799347e21ac0d05457a assets/create/models/block/granite_bricks.json
|
||||
0ee90049ce09f1f1c96063bc7239cd1fadbdb947 assets/create/models/block/granite_bricks_slab.json
|
||||
37737d6767ba08b6bd96de1ff3b920522dc3cd51 assets/create/models/block/granite_bricks_slab_top.json
|
||||
|
@ -1316,6 +1332,8 @@ b10971277417369f421324b28f0a4b47ce4c8625 assets/create/models/item/gabbro_bricks
|
|||
b3d7398dbc16c450928bd76b772c273382687447 assets/create/models/item/gabbro_cobblestone_stairs.json
|
||||
5680f24b43838cb6632bfcedba282a244bd24db0 assets/create/models/item/gabbro_cobblestone_wall.json
|
||||
20950b692eecfccd77d96678bb3d909d51f6d787 assets/create/models/item/gabbro_pillar.json
|
||||
b10f1b188f2bf380628377bd42af2b8f8ffe5611 assets/create/models/item/gantry_pinion.json
|
||||
b4bfd5041b62f3a0a955fa4872d178b590614f22 assets/create/models/item/gantry_shaft.json
|
||||
6ab0d17f3d02678ed992e188ff09f6b2c00b5b03 assets/create/models/item/gearbox.json
|
||||
2fe29893d74c176ea35aed73a169c13dd4ddb2a8 assets/create/models/item/gearshift.json
|
||||
52108a61865dab38133b9f916496ca680ae364ea assets/create/models/item/golden_sheet.json
|
||||
|
@ -1727,6 +1745,8 @@ b42213bffce4e51618e1bba481959208d247c120 data/create/advancements/recipes/create
|
|||
11d89eca0ccb0f1a8cd27acc9fc0c10d7bf83285 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json
|
||||
a2b33e972c7130cbf105f34d88dd7a9a53d5465c data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json
|
||||
a91b11ae44d9b1f479c6dee1f1a4580104059287 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json
|
||||
e17c45fc17e1a8e1e618b6eae02fa0aba3247495 data/create/advancements/recipes/create.base/crafting/kinetics/gantry_pinion.json
|
||||
d1d2fc2f5c4e89393808c65e015917eabb50dffe data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json
|
||||
dae9e65a089955c0367dc1453e104c3153ebad79 data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json
|
||||
8f9819912605cb2499cb3e79ecb0e709b0e38c19 data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json
|
||||
94b8a1f976b9f853cb6e24b0cef72d2e16c3282f data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json
|
||||
|
@ -2435,6 +2455,8 @@ e51893e1601c470da466b35b17251238e15d0361 data/create/loot_tables/blocks/gabbro_b
|
|||
54879fe6ca3b7271fbb94ec26bef1c3031942d4d data/create/loot_tables/blocks/gabbro_cobblestone_stairs.json
|
||||
ae19749df10663efc51b8b27af310164f250ed38 data/create/loot_tables/blocks/gabbro_cobblestone_wall.json
|
||||
e8d09c919e3b8125d7da0f38383c01bcfc61c7a8 data/create/loot_tables/blocks/gabbro_pillar.json
|
||||
04e42ba63002ed8ba67780123413f6ff3fb85b02 data/create/loot_tables/blocks/gantry_pinion.json
|
||||
f2883656e417a78e5e4093002eb1e36ffa1157e9 data/create/loot_tables/blocks/gantry_shaft.json
|
||||
b0109b4a4f0f738cbbe6b5911e8c3c0310b76f99 data/create/loot_tables/blocks/gearbox.json
|
||||
5f39461c5c9d3ad8d84195b06b9468fe2b0fb269 data/create/loot_tables/blocks/gearshift.json
|
||||
c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data/create/loot_tables/blocks/glass_fluid_pipe.json
|
||||
|
@ -2782,6 +2804,8 @@ f4ae37f736d06ccda5fbba7831a7a174ec916a05 data/create/recipes/crafting/kinetics/f
|
|||
86ad4d2820e8e2b01de8d977af7796119dfb7430 data/create/recipes/crafting/kinetics/fluid_tank.json
|
||||
3dad2a849796df268cd3a06ed37376f2cc529957 data/create/recipes/crafting/kinetics/fluid_valve.json
|
||||
84153bd478c0e63a04c77579d6595043f604b7ab data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json
|
||||
5299a12e9272089e64073c8e151b70a5bc57b53c data/create/recipes/crafting/kinetics/gantry_pinion.json
|
||||
21095a156547d4a7d215964be793f1e960b81c09 data/create/recipes/crafting/kinetics/gantry_shaft.json
|
||||
5eb05cdf88bccdaddfe7ebfbd8b70d1196d422a6 data/create/recipes/crafting/kinetics/gearbox.json
|
||||
b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json
|
||||
4d4124b4f1df38d892cb19da19c6464522d3e37d data/create/recipes/crafting/kinetics/gearshift.json
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"variants": {
|
||||
"axis_along_first=false,facing=down": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"axis_along_first=true,facing=down": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"x": 270
|
||||
},
|
||||
"axis_along_first=false,facing=up": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"axis_along_first=true,facing=up": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"x": 90
|
||||
},
|
||||
"axis_along_first=false,facing=north": {
|
||||
"model": "create:block/gantry_pinion/vertical",
|
||||
"y": 180
|
||||
},
|
||||
"axis_along_first=true,facing=north": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"y": 180
|
||||
},
|
||||
"axis_along_first=false,facing=south": {
|
||||
"model": "create:block/gantry_pinion/vertical"
|
||||
},
|
||||
"axis_along_first=true,facing=south": {
|
||||
"model": "create:block/gantry_pinion/horizontal"
|
||||
},
|
||||
"axis_along_first=false,facing=west": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"y": 90
|
||||
},
|
||||
"axis_along_first=true,facing=west": {
|
||||
"model": "create:block/gantry_pinion/vertical",
|
||||
"y": 90
|
||||
},
|
||||
"axis_along_first=false,facing=east": {
|
||||
"model": "create:block/gantry_pinion/horizontal",
|
||||
"y": 270
|
||||
},
|
||||
"axis_along_first=true,facing=east": {
|
||||
"model": "create:block/gantry_pinion/vertical",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,212 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=down,part=start,powered=false": {
|
||||
"model": "create:block/gantry_shaft_start_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=start,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_start"
|
||||
},
|
||||
"facing=north,part=start,powered=false": {
|
||||
"model": "create:block/gantry_shaft_start_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=start,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_start",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=start,powered=false": {
|
||||
"model": "create:block/gantry_shaft_start_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=start,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_start",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=middle,powered=false": {
|
||||
"model": "create:block/gantry_shaft_middle_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=middle,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_middle"
|
||||
},
|
||||
"facing=north,part=middle,powered=false": {
|
||||
"model": "create:block/gantry_shaft_middle_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=middle,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_middle",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=middle,powered=false": {
|
||||
"model": "create:block/gantry_shaft_middle_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=middle,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_middle",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=end,powered=false": {
|
||||
"model": "create:block/gantry_shaft_end_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=end,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_end"
|
||||
},
|
||||
"facing=north,part=end,powered=false": {
|
||||
"model": "create:block/gantry_shaft_end_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=end,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_end",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=end,powered=false": {
|
||||
"model": "create:block/gantry_shaft_end_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=end,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_end",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=single,powered=false": {
|
||||
"model": "create:block/gantry_shaft_single_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=single,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_single"
|
||||
},
|
||||
"facing=north,part=single,powered=false": {
|
||||
"model": "create:block/gantry_shaft_single_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=single,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_single",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=single,powered=false": {
|
||||
"model": "create:block/gantry_shaft_single_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=single,powered=false": {
|
||||
"model": "create:block/gantry_shaft/block_single",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=start,powered=true": {
|
||||
"model": "create:block/gantry_shaft_start_powered_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=start,powered=true": {
|
||||
"model": "create:block/gantry_shaft_start_powered"
|
||||
},
|
||||
"facing=north,part=start,powered=true": {
|
||||
"model": "create:block/gantry_shaft_start_powered_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=start,powered=true": {
|
||||
"model": "create:block/gantry_shaft_start_powered",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=start,powered=true": {
|
||||
"model": "create:block/gantry_shaft_start_powered_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=start,powered=true": {
|
||||
"model": "create:block/gantry_shaft_start_powered",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=middle,powered=true": {
|
||||
"model": "create:block/gantry_shaft_middle_powered_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=middle,powered=true": {
|
||||
"model": "create:block/gantry_shaft_middle_powered"
|
||||
},
|
||||
"facing=north,part=middle,powered=true": {
|
||||
"model": "create:block/gantry_shaft_middle_powered_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=middle,powered=true": {
|
||||
"model": "create:block/gantry_shaft_middle_powered",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=middle,powered=true": {
|
||||
"model": "create:block/gantry_shaft_middle_powered_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=middle,powered=true": {
|
||||
"model": "create:block/gantry_shaft_middle_powered",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=end,powered=true": {
|
||||
"model": "create:block/gantry_shaft_end_powered_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=end,powered=true": {
|
||||
"model": "create:block/gantry_shaft_end_powered"
|
||||
},
|
||||
"facing=north,part=end,powered=true": {
|
||||
"model": "create:block/gantry_shaft_end_powered_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=end,powered=true": {
|
||||
"model": "create:block/gantry_shaft_end_powered",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=end,powered=true": {
|
||||
"model": "create:block/gantry_shaft_end_powered_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=end,powered=true": {
|
||||
"model": "create:block/gantry_shaft_end_powered",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=down,part=single,powered=true": {
|
||||
"model": "create:block/gantry_shaft_single_powered_flipped",
|
||||
"x": 180
|
||||
},
|
||||
"facing=up,part=single,powered=true": {
|
||||
"model": "create:block/gantry_shaft_single_powered"
|
||||
},
|
||||
"facing=north,part=single,powered=true": {
|
||||
"model": "create:block/gantry_shaft_single_powered_flipped",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,part=single,powered=true": {
|
||||
"model": "create:block/gantry_shaft_single_powered",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,part=single,powered=true": {
|
||||
"model": "create:block/gantry_shaft_single_powered_flipped",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,part=single,powered=true": {
|
||||
"model": "create:block/gantry_shaft_single_powered",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
|
@ -158,6 +158,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 o\u0279qq\u0250\u2141",
|
||||
"block.create.gabbro_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 o\u0279qq\u0250\u2141",
|
||||
"block.create.gabbro_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 o\u0279qq\u0250\u2141",
|
||||
"block.create.gantry_pinion": "uo\u0131u\u0131\u0500 \u028E\u0279\u0287u\u0250\u2141",
|
||||
"block.create.gantry_shaft": "\u0287\u025F\u0250\u0265S \u028E\u0279\u0287u\u0250\u2141",
|
||||
"block.create.gearbox": "xoq\u0279\u0250\u01DD\u2141",
|
||||
"block.create.gearshift": "\u0287\u025F\u0131\u0265s\u0279\u0250\u01DD\u2141",
|
||||
"block.create.glass_fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132 ss\u0250\u05DF\u2141",
|
||||
|
@ -400,6 +402,7 @@
|
|||
"block.create.zinc_block": "\u029E\u0254o\u05DF\u15FA \u0254u\u0131Z",
|
||||
"block.create.zinc_ore": "\u01DD\u0279O \u0254u\u0131Z",
|
||||
"entity.create.contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186",
|
||||
"entity.create.gantry_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0287u\u0250\u2141",
|
||||
"entity.create.seat": "\u0287\u0250\u01DDS",
|
||||
"entity.create.stationary_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0250uo\u0131\u0287\u0250\u0287S",
|
||||
"entity.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS",
|
||||
|
|
|
@ -161,6 +161,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "Gabbro Cobblestone Stairs",
|
||||
"block.create.gabbro_cobblestone_wall": "Gabbro Cobblestone Wall",
|
||||
"block.create.gabbro_pillar": "Gabbro Pillar",
|
||||
"block.create.gantry_pinion": "Gantry Pinion",
|
||||
"block.create.gantry_shaft": "Gantry Shaft",
|
||||
"block.create.gearbox": "Gearbox",
|
||||
"block.create.gearshift": "Gearshift",
|
||||
"block.create.glass_fluid_pipe": "Glass Fluid Pipe",
|
||||
|
@ -404,6 +406,7 @@
|
|||
"block.create.zinc_ore": "Zinc Ore",
|
||||
|
||||
"entity.create.contraption": "Contraption",
|
||||
"entity.create.gantry_contraption": "Gantry Contraption",
|
||||
"entity.create.seat": "Seat",
|
||||
"entity.create.stationary_contraption": "Stationary Contraption",
|
||||
"entity.create.super_glue": "Super Glue",
|
||||
|
|
|
@ -1,122 +1,122 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1211",
|
||||
"_": "Missing Localizations: 1095",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
"block.create.acacia_window": "UNLOCALIZED: Acacia Window",
|
||||
"block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane",
|
||||
"block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift",
|
||||
"block.create.adjustable_crate": "adjustable_crate",
|
||||
"block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater",
|
||||
"block.create.adjustable_repeater": "Verzögernder Verstärker",
|
||||
"block.create.analog_lever": "UNLOCALIZED: Analog Lever",
|
||||
"block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel",
|
||||
"block.create.acacia_window": "Akazienfenster",
|
||||
"block.create.acacia_window_pane": "Akazienfensterscheibe",
|
||||
"block.create.adjustable_chain_gearshift": "Verstellbares Kettengetriebe",
|
||||
"block.create.adjustable_crate": "Verstellbare Kiste",
|
||||
"block.create.adjustable_pulse_repeater": "Verstellbarer Pulsverstärker",
|
||||
"block.create.adjustable_repeater": "Verstellbarer Verstärker",
|
||||
"block.create.analog_lever": "Analoger Schalter",
|
||||
"block.create.andesite_belt_funnel": "Riementrichter aus Andesit",
|
||||
"block.create.andesite_bricks": "Andesitziegel",
|
||||
"block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab",
|
||||
"block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs",
|
||||
"block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall",
|
||||
"block.create.andesite_casing": "UNLOCALIZED: Andesite Casing",
|
||||
"block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone",
|
||||
"block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab",
|
||||
"block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs",
|
||||
"block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall",
|
||||
"block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft",
|
||||
"block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel",
|
||||
"block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar",
|
||||
"block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel",
|
||||
"block.create.basin": "UNLOCALIZED: Basin",
|
||||
"block.create.andesite_bricks_slab": "Andesitziegelstufe",
|
||||
"block.create.andesite_bricks_stairs": "Andesitziegeltreppe",
|
||||
"block.create.andesite_bricks_wall": "Andesitziegelmauer",
|
||||
"block.create.andesite_casing": "Andesitrahmen",
|
||||
"block.create.andesite_cobblestone": "Andesitbruchstein",
|
||||
"block.create.andesite_cobblestone_slab": "Andesitbruchsteinstufe",
|
||||
"block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe",
|
||||
"block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer",
|
||||
"block.create.andesite_encased_shaft": "Andesitummantelte Welle",
|
||||
"block.create.andesite_funnel": "Andesit Trichter",
|
||||
"block.create.andesite_pillar": "Andesitsäule",
|
||||
"block.create.andesite_tunnel": "Andesittunnel",
|
||||
"block.create.basin": "Behälter",
|
||||
"block.create.belt": "Mechanischer Riemen",
|
||||
"block.create.birch_window": "UNLOCALIZED: Birch Window",
|
||||
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
|
||||
"block.create.black_sail": "UNLOCALIZED: Black Sail",
|
||||
"block.create.black_seat": "UNLOCALIZED: Black Seat",
|
||||
"block.create.black_valve_handle": "UNLOCALIZED: Black Valve Handle",
|
||||
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
|
||||
"block.create.blue_sail": "UNLOCALIZED: Blue Sail",
|
||||
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
|
||||
"block.create.blue_valve_handle": "UNLOCALIZED: Blue Valve Handle",
|
||||
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
|
||||
"block.create.brass_block": "UNLOCALIZED: Brass Block",
|
||||
"block.create.brass_casing": "UNLOCALIZED: Brass Casing",
|
||||
"block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft",
|
||||
"block.create.brass_funnel": "UNLOCALIZED: Brass Funnel",
|
||||
"block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel",
|
||||
"block.create.brown_sail": "UNLOCALIZED: Brown Sail",
|
||||
"block.create.brown_seat": "UNLOCALIZED: Brown Seat",
|
||||
"block.create.brown_valve_handle": "UNLOCALIZED: Brown Valve Handle",
|
||||
"block.create.cart_assembler": "UNLOCALIZED: Cart Assembler",
|
||||
"block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria",
|
||||
"block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite",
|
||||
"block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro",
|
||||
"block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone",
|
||||
"block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria",
|
||||
"block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone",
|
||||
"block.create.chocolate": "UNLOCALIZED: Chocolate",
|
||||
"block.create.chute": "UNLOCALIZED: Chute",
|
||||
"block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing",
|
||||
"block.create.black_sail": "Schwarzes Segel",
|
||||
"block.create.black_seat": "Schwarzer Sitz",
|
||||
"block.create.black_valve_handle": "Schwarzer Ventilgriff",
|
||||
"block.create.blaze_burner": "Lohenbrenner",
|
||||
"block.create.blue_sail": "Blaues Segel",
|
||||
"block.create.blue_seat": "Blauer Sitz",
|
||||
"block.create.blue_valve_handle": "Blauer Ventilgriff",
|
||||
"block.create.brass_belt_funnel": "Riementrichter aus Messing",
|
||||
"block.create.brass_block": "Messing Block",
|
||||
"block.create.brass_casing": "Messingrahmen",
|
||||
"block.create.brass_encased_shaft": "Messingummantelte Welle",
|
||||
"block.create.brass_funnel": "Messingtrichter",
|
||||
"block.create.brass_tunnel": "Messingtunnel",
|
||||
"block.create.brown_sail": "Braunes Segel",
|
||||
"block.create.brown_seat": "Brauner Sitz",
|
||||
"block.create.brown_valve_handle": "Brauner Ventilgriff",
|
||||
"block.create.cart_assembler": "Lohrenmonteur",
|
||||
"block.create.chiseled_dark_scoria": "Gemeißelte dunkle Schlacke",
|
||||
"block.create.chiseled_dolomite": "Gemeißeltes Dolomit",
|
||||
"block.create.chiseled_gabbro": "Gemeißeltes Gabbro",
|
||||
"block.create.chiseled_limestone": "Gemeißelter Kalkstein",
|
||||
"block.create.chiseled_scoria": "Gemeißelte Schlacke",
|
||||
"block.create.chiseled_weathered_limestone": "Gemeißelter verwitterter Kalkstein",
|
||||
"block.create.chocolate": "Schokolade",
|
||||
"block.create.chute": "Rinne",
|
||||
"block.create.clockwork_bearing": "Uhrwerk-Lager",
|
||||
"block.create.clutch": "Kupplung",
|
||||
"block.create.cogwheel": "Zahnrad",
|
||||
"block.create.content_observer": "UNLOCALIZED: Content Observer",
|
||||
"block.create.controller_rail": "UNLOCALIZED: Controller Rail",
|
||||
"block.create.copper_block": "UNLOCALIZED: Copper Block",
|
||||
"block.create.copper_casing": "UNLOCALIZED: Copper Casing",
|
||||
"block.create.copper_ore": "UNLOCALIZED: Copper Ore",
|
||||
"block.create.copper_shingles": "UNLOCALIZED: Copper Shingles",
|
||||
"block.create.copper_tiles": "UNLOCALIZED: Copper Tiles",
|
||||
"block.create.copper_valve_handle": "UNLOCALIZED: Copper Valve Handle",
|
||||
"block.create.creative_crate": "Bauplankanonenmacher",
|
||||
"block.create.creative_fluid_tank": "UNLOCALIZED: Creative Fluid Tank",
|
||||
"block.create.creative_motor": "UNLOCALIZED: Creative Motor",
|
||||
"block.create.content_observer": "Inhalts Beobachter",
|
||||
"block.create.controller_rail": "Steureungsschiene",
|
||||
"block.create.copper_block": "Kupfer Block",
|
||||
"block.create.copper_casing": "Kupferrahmen",
|
||||
"block.create.copper_ore": "Kupfererz",
|
||||
"block.create.copper_shingles": "Kupferschindeln",
|
||||
"block.create.copper_tiles": "Kupferfliesen",
|
||||
"block.create.copper_valve_handle": "Kupfer Ventilgriff",
|
||||
"block.create.creative_crate": "Kreative anpassbare Kiste",
|
||||
"block.create.creative_fluid_tank": "Kreativer Flüssigkeitstank",
|
||||
"block.create.creative_motor": "Kreativer Motor",
|
||||
"block.create.crushing_wheel": "Mahlwerkrad",
|
||||
"block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller",
|
||||
"block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock",
|
||||
"block.create.cyan_sail": "UNLOCALIZED: Cyan Sail",
|
||||
"block.create.cyan_seat": "UNLOCALIZED: Cyan Seat",
|
||||
"block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle",
|
||||
"block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window",
|
||||
"block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane",
|
||||
"block.create.dark_scoria": "UNLOCALIZED: Dark Scoria",
|
||||
"block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks",
|
||||
"block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab",
|
||||
"block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs",
|
||||
"block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall",
|
||||
"block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone",
|
||||
"block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab",
|
||||
"block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs",
|
||||
"block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall",
|
||||
"block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar",
|
||||
"block.create.deployer": "UNLOCALIZED: Deployer",
|
||||
"block.create.depot": "UNLOCALIZED: Depot",
|
||||
"block.create.crushing_wheel_controller": "Mahlwerkrad Steurung",
|
||||
"block.create.cuckoo_clock": "Kuckucksuhr",
|
||||
"block.create.cyan_sail": "Türkises Segel",
|
||||
"block.create.cyan_seat": "Türkiser Sitz",
|
||||
"block.create.cyan_valve_handle": "Türkiser Ventilgriff",
|
||||
"block.create.dark_oak_window": "Schwarzeichenholzfenster",
|
||||
"block.create.dark_oak_window_pane": "Schwarzeichenholzfensterscheibe",
|
||||
"block.create.dark_scoria": "Dunkle Schlacke",
|
||||
"block.create.dark_scoria_bricks": "Dunkle Schlackenziegel",
|
||||
"block.create.dark_scoria_bricks_slab": "Dunkle Schlackenziegelstufe",
|
||||
"block.create.dark_scoria_bricks_stairs": "Dunkle Schlackenziegeltreppe",
|
||||
"block.create.dark_scoria_bricks_wall": "Dunkle Schlackenziegelmauer",
|
||||
"block.create.dark_scoria_cobblestone": "Dunkler Schlackebruchstein",
|
||||
"block.create.dark_scoria_cobblestone_slab": "Dunkle Schlackebruchsteinstufe",
|
||||
"block.create.dark_scoria_cobblestone_stairs": "Dunkle Schlackebruchsteintreppe",
|
||||
"block.create.dark_scoria_cobblestone_wall": "Dunkle Schlackebruchsteinmauer",
|
||||
"block.create.dark_scoria_pillar": "Dunkle Schlackesäule",
|
||||
"block.create.deployer": "Einsatzgerät",
|
||||
"block.create.depot": "Depot",
|
||||
"block.create.diorite_bricks": "Dioritziegel",
|
||||
"block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab",
|
||||
"block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs",
|
||||
"block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall",
|
||||
"block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone",
|
||||
"block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab",
|
||||
"block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs",
|
||||
"block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall",
|
||||
"block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar",
|
||||
"block.create.diorite_bricks_slab": "Dioritziegelstufe",
|
||||
"block.create.diorite_bricks_stairs": "Dioritziegeltreppe",
|
||||
"block.create.diorite_bricks_wall": "Dioritziegelmauer",
|
||||
"block.create.diorite_cobblestone": "Dioritbruchstein",
|
||||
"block.create.diorite_cobblestone_slab": "Dioritbruchsteinstufe",
|
||||
"block.create.diorite_cobblestone_stairs": "Dioritbruchsteintreppe",
|
||||
"block.create.diorite_cobblestone_wall": "Dioritbruchsteinmauer",
|
||||
"block.create.diorite_pillar": "Dioritsäule",
|
||||
"block.create.dolomite": "Dolomit",
|
||||
"block.create.dolomite_bricks": "Dolomitziegel",
|
||||
"block.create.dolomite_bricks_slab": "Dolomitziegelstufe",
|
||||
"block.create.dolomite_bricks_stairs": "Dolomitziegeltreppe",
|
||||
"block.create.dolomite_bricks_wall": "Dolomitziegelmauer",
|
||||
"block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone",
|
||||
"block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab",
|
||||
"block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs",
|
||||
"block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall",
|
||||
"block.create.dolomite_cobblestone": "Dolomitbruchstein",
|
||||
"block.create.dolomite_cobblestone_slab": "Dolomitbruchsteinstufe",
|
||||
"block.create.dolomite_cobblestone_stairs": "Dolomitbruchsteintreppe",
|
||||
"block.create.dolomite_cobblestone_wall": "Dolomitbruchsteinmauer",
|
||||
"block.create.dolomite_pillar": "Dolomitsäule",
|
||||
"block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive",
|
||||
"block.create.encased_fan": "Eingeschlossener Propeller",
|
||||
"block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe",
|
||||
"block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks",
|
||||
"block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab",
|
||||
"block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs",
|
||||
"block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall",
|
||||
"block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks",
|
||||
"block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab",
|
||||
"block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs",
|
||||
"block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall",
|
||||
"block.create.encased_chain_drive": "Ummantelter Kettenriemen",
|
||||
"block.create.encased_fan": "Ummantelter Lüfter",
|
||||
"block.create.encased_fluid_pipe": "Ummanteltes Rohr",
|
||||
"block.create.fancy_andesite_bricks": "Schicke Andesitziegel",
|
||||
"block.create.fancy_andesite_bricks_slab": "Schicke Andesitziegelstufe",
|
||||
"block.create.fancy_andesite_bricks_stairs": "Schicke Andesitziegeltreppe",
|
||||
"block.create.fancy_andesite_bricks_wall": "Schicke Andesitziegelmauer",
|
||||
"block.create.fancy_dark_scoria_bricks": "Schicke dunkle Schlackenziegel",
|
||||
"block.create.fancy_dark_scoria_bricks_slab": "Schicke dunkle Schlackenziegelstufe",
|
||||
"block.create.fancy_dark_scoria_bricks_stairs": "Schicke dunkle Schlackenziegeltreppe",
|
||||
"block.create.fancy_dark_scoria_bricks_wall": "Schicke dunkle Schlackenziegelmauer",
|
||||
"block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks",
|
||||
"block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab",
|
||||
"block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs",
|
||||
|
@ -145,16 +145,16 @@
|
|||
"block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab",
|
||||
"block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs",
|
||||
"block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall",
|
||||
"block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe",
|
||||
"block.create.fluid_tank": "UNLOCALIZED: Fluid Tank",
|
||||
"block.create.fluid_valve": "UNLOCALIZED: Fluid Valve",
|
||||
"block.create.flywheel": "UNLOCALIZED: Flywheel",
|
||||
"block.create.framed_glass": "UNLOCALIZED: Framed Glass",
|
||||
"block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane",
|
||||
"block.create.fluid_pipe": "Wasserrohr",
|
||||
"block.create.fluid_tank": "Wassertank",
|
||||
"block.create.fluid_valve": "Flüssigkeitsventil",
|
||||
"block.create.flywheel": "Schwungrad",
|
||||
"block.create.framed_glass": "Gerahmtes Glas",
|
||||
"block.create.framed_glass_pane": "Gerahmte Glasscheibe",
|
||||
"block.create.furnace_engine": "UNLOCALIZED: Furnace Engine",
|
||||
"block.create.gabbro": "Gabbro",
|
||||
"block.create.gabbro_bricks": "Gabbroziegel",
|
||||
"block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab",
|
||||
"block.create.gabbro_bricks_slab": "Gabbroziegelstufe",
|
||||
"block.create.gabbro_bricks_stairs": "Gabbroziegeltreppe",
|
||||
"block.create.gabbro_bricks_wall": "Gabbroziegelmauer",
|
||||
"block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone",
|
||||
|
@ -162,9 +162,11 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs",
|
||||
"block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall",
|
||||
"block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar",
|
||||
"block.create.gantry_pinion": "UNLOCALIZED: Gantry Pinion",
|
||||
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
|
||||
"block.create.gearbox": "Getriebe",
|
||||
"block.create.gearshift": "Gangschaltung",
|
||||
"block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe",
|
||||
"block.create.glass_fluid_pipe": "Glaswasserrohr",
|
||||
"block.create.granite_bricks": "Granitziegel",
|
||||
"block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab",
|
||||
"block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs",
|
||||
|
@ -405,6 +407,7 @@
|
|||
"block.create.zinc_ore": "UNLOCALIZED: Zinc Ore",
|
||||
|
||||
"entity.create.contraption": "UNLOCALIZED: Contraption",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.seat": "UNLOCALIZED: Seat",
|
||||
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
|
||||
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
|
||||
|
@ -480,25 +483,25 @@
|
|||
"item.create.wand_of_symmetry": "Symmetriestab",
|
||||
"item.create.wheat_flour": "UNLOCALIZED: Wheat Flour",
|
||||
"item.create.whisk": "UNLOCALIZED: Whisk",
|
||||
"item.create.wrench": "UNLOCALIZED: Wrench",
|
||||
"item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot",
|
||||
"item.create.zinc_nugget": "UNLOCALIZED: Zinc Nugget",
|
||||
"item.create.wrench": "Schraubenschlüssel",
|
||||
"item.create.zinc_ingot": "Zinkbarren",
|
||||
"item.create.zinc_nugget": "Zinkklumpen",
|
||||
|
||||
|
||||
"_": "->------------------------] Advancements [------------------------<-",
|
||||
|
||||
"advancement.create.root": "UNLOCALIZED: Welcome to Create",
|
||||
"advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!",
|
||||
"advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty",
|
||||
"advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.",
|
||||
"advancement.create.its_alive": "UNLOCALIZED: It's Alive!",
|
||||
"advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.",
|
||||
"advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gears",
|
||||
"advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your contraption.",
|
||||
"advancement.create.overstressed": "UNLOCALIZED: Overstressed",
|
||||
"advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.",
|
||||
"advancement.create.belt": "UNLOCALIZED: Kelp Drive",
|
||||
"advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.",
|
||||
"advancement.create.root": "Willkommen zu Create",
|
||||
"advancement.create.root.desc": "Es ist Zeit mit dem Bauen von tollen Apparaten zu starten!",
|
||||
"advancement.create.andesite_alloy": "Alliterationen in Massen",
|
||||
"advancement.create.andesite_alloy.desc": "Create's Materialien haben verrückte Namen, Eisenlegierung ist im Deutschen leider keine.",
|
||||
"advancement.create.its_alive": "Es ist am leben!",
|
||||
"advancement.create.its_alive.desc": "Gucke deinem erstem beweglichen Teil beim drehen zu.",
|
||||
"advancement.create.shifting_gears": "Wechsel deine Gänge",
|
||||
"advancement.create.shifting_gears.desc": "Verbinde ein großes Zahnrad mit einem kleinem, um die Geschwindigkeit deiner Apparate zu verändern.",
|
||||
"advancement.create.overstressed": "Überfordert",
|
||||
"advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.",
|
||||
"advancement.create.belt": "Befördere es alles",
|
||||
"advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen",
|
||||
"advancement.create.tunnel": "UNLOCALIZED: Take cover!",
|
||||
"advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.",
|
||||
"advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer",
|
||||
|
|
1792
src/generated/resources/assets/create/lang/unfinished/es_mx.json
Normal file
1792
src/generated/resources/assets/create/lang/unfinished/es_mx.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 862",
|
||||
"_": "Missing Localizations: 865",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -162,6 +162,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs",
|
||||
"block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall",
|
||||
"block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar",
|
||||
"block.create.gantry_pinion": "UNLOCALIZED: Gantry Pinion",
|
||||
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
|
||||
"block.create.gearbox": "Boîte à roue dentée",
|
||||
"block.create.gearshift": "Décaleur de rotation",
|
||||
"block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe",
|
||||
|
@ -405,6 +407,7 @@
|
|||
"block.create.zinc_ore": "Minerai de zinc",
|
||||
|
||||
"entity.create.contraption": "UNLOCALIZED: Contraption",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.seat": "UNLOCALIZED: Seat",
|
||||
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
|
||||
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 846",
|
||||
"_": "Missing Localizations: 849",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 52",
|
||||
"_": "Missing Localizations: 55",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -162,6 +162,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "반려암 조약돌 계단",
|
||||
"block.create.gabbro_cobblestone_wall": "반려암 조약돌 담장",
|
||||
"block.create.gabbro_pillar": "반려암 기둥",
|
||||
"block.create.gantry_pinion": "UNLOCALIZED: Gantry Pinion",
|
||||
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
|
||||
"block.create.gearbox": "기어박스",
|
||||
"block.create.gearshift": "기어쉬프트",
|
||||
"block.create.glass_fluid_pipe": "액체 파이프",
|
||||
|
@ -405,6 +407,7 @@
|
|||
"block.create.zinc_ore": "아연 광석",
|
||||
|
||||
"entity.create.contraption": "장치",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.seat": "좌석",
|
||||
"entity.create.stationary_contraption": "고정된 장치",
|
||||
"entity.create.super_glue": "강력 접착제",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1152",
|
||||
"_": "Missing Localizations: 1155",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -162,6 +162,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs",
|
||||
"block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall",
|
||||
"block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar",
|
||||
"block.create.gantry_pinion": "UNLOCALIZED: Gantry Pinion",
|
||||
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
|
||||
"block.create.gearbox": "Versnellingsbak",
|
||||
"block.create.gearshift": "Versnellingspook",
|
||||
"block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe",
|
||||
|
@ -405,6 +407,7 @@
|
|||
"block.create.zinc_ore": "UNLOCALIZED: Zinc Ore",
|
||||
|
||||
"entity.create.contraption": "UNLOCALIZED: Contraption",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.seat": "UNLOCALIZED: Seat",
|
||||
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
|
||||
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1218",
|
||||
"_": "Missing Localizations: 1221",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -162,6 +162,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs",
|
||||
"block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall",
|
||||
"block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar",
|
||||
"block.create.gantry_pinion": "UNLOCALIZED: Gantry Pinion",
|
||||
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
|
||||
"block.create.gearbox": "Caixa de Transmissão",
|
||||
"block.create.gearshift": "Câmbio",
|
||||
"block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe",
|
||||
|
@ -405,6 +407,7 @@
|
|||
"block.create.zinc_ore": "UNLOCALIZED: Zinc Ore",
|
||||
|
||||
"entity.create.contraption": "UNLOCALIZED: Contraption",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.seat": "UNLOCALIZED: Seat",
|
||||
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
|
||||
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2",
|
||||
"_": "Missing Localizations: 5",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -162,6 +162,8 @@
|
|||
"block.create.gabbro_cobblestone_stairs": "Ступени из габбро-булыжника",
|
||||
"block.create.gabbro_cobblestone_wall": "Стена из габбро-булыжника",
|
||||
"block.create.gabbro_pillar": "Габбро колонна",
|
||||
"block.create.gantry_pinion": "UNLOCALIZED: Gantry Pinion",
|
||||
"block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft",
|
||||
"block.create.gearbox": "Коробка передач",
|
||||
"block.create.gearshift": "Реверсивный механизм",
|
||||
"block.create.glass_fluid_pipe": "Стеклянная жидкостная труба",
|
||||
|
@ -405,6 +407,7 @@
|
|||
"block.create.zinc_ore": "Цинковая руда",
|
||||
|
||||
"entity.create.contraption": "Штуковина",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.seat": "сиденье",
|
||||
"entity.create.stationary_contraption": "Стационарная штуковина",
|
||||
"entity.create.super_glue": "Супер-клей",
|
||||
|
@ -1415,7 +1418,7 @@
|
|||
"block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в кожухе_. Полученный _сигнал редстоуна_ будет контролировать, какой размер шестерни взаимодействует с присоединенными цепными приводами.",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.condition1": "Кнонтроль редстоуном",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Без_ сигнала редстоуна присоединённые приводы будут иметь _такую же_ скорость. При получении _сигнала редстоуна_ максимального уровня, соединённые приводы будут вращаться с ровно в два раза меньшей скоростью. Всё, что между этими значениями, будет выдавать скорость от 1 до 2 кратной скорости цепного механизма.",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Без_ сигнала редстоуна присоединённые приводы будут иметь _такую же_ скорость. При получении _сигнала редстоуна_ максимального уровня, соединённые приводы будут вращаться с удвоенной скоростью. Всё, что между минимальным и максимальным значениями, будет выдавать скорость от 1 до 2 кратной скорости цепного механизма.",
|
||||
|
||||
"item.create.belt_connector.tooltip": "BELT CONNECTOR",
|
||||
"item.create.belt_connector.tooltip.summary": "Соединяет _2_ _Вала_ с помощью _механического_ _ремня_._ Соединённые валы будут иметь одинаковые _скорость_ и _направление_ _вращения._ Лента может служить как _конвейер_ для _транспортировки._",
|
||||
|
|
File diff suppressed because it is too large
Load diff
1792
src/generated/resources/assets/create/lang/unfinished/zh_tw.json
Normal file
1792
src/generated/resources/assets/create/lang/unfinished/zh_tw.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_end",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_end",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_end",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_middle",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_middle",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_middle",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_single",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_single",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_single",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_start",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_start",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_start",
|
||||
"textures": {
|
||||
"2": "create:block/gantry_shaft_powered_flipped"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/gantry_pinion/item"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/gantry_shaft/block_single"
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/kinetics/gantry_pinion"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_item": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:andesite_casing"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/kinetics/gantry_pinion"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_item",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/kinetics/gantry_shaft"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_item": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:andesite_alloy"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/kinetics/gantry_shaft"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_item",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:gantry_pinion"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:gantry_shaft"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
" B ",
|
||||
"ICI",
|
||||
" S "
|
||||
],
|
||||
"key": {
|
||||
"B": {
|
||||
"tag": "minecraft:planks"
|
||||
},
|
||||
"S": {
|
||||
"item": "create:cogwheel"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:andesite_casing"
|
||||
},
|
||||
"I": {
|
||||
"item": "create:shaft"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:gantry_pinion"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"A",
|
||||
"R",
|
||||
"A"
|
||||
],
|
||||
"key": {
|
||||
"A": {
|
||||
"item": "create:andesite_alloy"
|
||||
},
|
||||
"R": {
|
||||
"tag": "forge:dusts/redstone"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:gantry_shaft",
|
||||
"count": 8
|
||||
}
|
||||
}
|
|
@ -71,6 +71,8 @@ public class AllBlockPartials {
|
|||
CUCKOO_RIGHT_DOOR = get("cuckoo_clock/right_door"), CUCKOO_PIG = get("cuckoo_clock/pig"),
|
||||
CUCKOO_CREEPER = get("cuckoo_clock/creeper"),
|
||||
|
||||
GANTRY_COGS = get("gantry_pinion/wheels"),
|
||||
|
||||
ROPE_COIL = get("rope_pulley/rope_coil"),
|
||||
ROPE_HALF = get("rope_pulley/rope_half"),
|
||||
ROPE_HALF_MAGNET = get("rope_pulley/rope_half_magnet"),
|
||||
|
@ -107,6 +109,8 @@ public class AllBlockPartials {
|
|||
|
||||
SPOUT_TOP = get("spout/top"), SPOUT_MIDDLE = get("spout/middle"), SPOUT_BOTTOM = get("spout/bottom"),
|
||||
|
||||
SPEED_CONTROLLER_BRACKET = get("rotation_speed_controller/bracket"),
|
||||
|
||||
COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"),
|
||||
COUPLING_RING = getEntity("minecart_coupling/ring"),
|
||||
COUPLING_CONNECTOR = getEntity("minecart_coupling/connector")
|
||||
|
|
|
@ -54,6 +54,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.bea
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock.ChassisCTBehaviour;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryPinionBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock.MinecartAnchorBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlockItem;
|
||||
|
@ -90,6 +91,7 @@ import com.simibubi.create.content.contraptions.processing.BasinMovementBehaviou
|
|||
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.GantryShaftBlock;
|
||||
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;
|
||||
|
@ -171,8 +173,10 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.state.properties.PistonType;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.util.Direction.AxisDirection;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel;
|
||||
import net.minecraftforge.client.model.generators.ModelFile;
|
||||
import net.minecraftforge.common.Tags;
|
||||
import net.minecraftforge.common.ToolType;
|
||||
|
||||
|
@ -686,6 +690,38 @@ public class AllBlocks {
|
|||
.getName() + "/head"))))
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<GantryPinionBlock> GANTRY_PINION =
|
||||
REGISTRATE.block("gantry_pinion", GantryPinionBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(Block.Properties::nonOpaque)
|
||||
.blockstate(BlockStateGen.directionalAxisBlockProvider())
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<GantryShaftBlock> GANTRY_SHAFT =
|
||||
REGISTRATE.block("gantry_shaft", GantryShaftBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.blockstate((c, p) -> p.directionalBlock(c.get(), s -> {
|
||||
boolean isPowered = s.get(GantryShaftBlock.POWERED);
|
||||
boolean isFlipped = s.get(GantryShaftBlock.FACING)
|
||||
.getAxisDirection() == AxisDirection.NEGATIVE;
|
||||
String partName = s.get(GantryShaftBlock.PART)
|
||||
.getName();
|
||||
String flipped = isFlipped ? "_flipped" : "";
|
||||
String powered = isPowered ? "_powered" : "";
|
||||
ModelFile existing = AssetLookup.partialBaseModel(c, p, partName);
|
||||
if (!isPowered && !isFlipped)
|
||||
return existing;
|
||||
return p.models()
|
||||
.withExistingParent("block/" + c.getName() + "_" + partName + powered + flipped,
|
||||
existing.getLocation())
|
||||
.texture("2", p.modLoc("block/" + c.getName() + powered + flipped));
|
||||
}))
|
||||
.item()
|
||||
.transform(customItemModel("_", "block_single"))
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<WindmillBearingBlock> WINDMILL_BEARING =
|
||||
REGISTRATE.block("windmill_bearing", WindmillBearingBlock::new)
|
||||
.transform(BuilderTransformers.bearing("windmill", "gearbox", true))
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntityRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntityRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionEntityRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueRenderer;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
@ -23,16 +25,27 @@ import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
|||
public class AllEntityTypes {
|
||||
|
||||
public static final RegistryEntry<EntityType<OrientedContraptionEntity>> ORIENTED_CONTRAPTION =
|
||||
register("contraption", OrientedContraptionEntity::new, EntityClassification.MISC, 5, 3, true,
|
||||
AbstractContraptionEntity::build);
|
||||
contraption("contraption", OrientedContraptionEntity::new, 5, 3, true);
|
||||
public static final RegistryEntry<EntityType<ControlledContraptionEntity>> CONTROLLED_CONTRAPTION =
|
||||
register("stationary_contraption", ControlledContraptionEntity::new, EntityClassification.MISC, 20, 40, false,
|
||||
AbstractContraptionEntity::build);
|
||||
contraption("stationary_contraption", ControlledContraptionEntity::new, 20, 40, false);
|
||||
public static final RegistryEntry<EntityType<GantryContraptionEntity>> GANTRY_CONTRAPTION =
|
||||
contraption("gantry_contraption", GantryContraptionEntity::new, 10, 40, false);
|
||||
|
||||
public static final RegistryEntry<EntityType<SuperGlueEntity>> SUPER_GLUE = register("super_glue",
|
||||
SuperGlueEntity::new, EntityClassification.MISC, 10, Integer.MAX_VALUE, false, SuperGlueEntity::build);
|
||||
public static final RegistryEntry<EntityType<SeatEntity>> SEAT =
|
||||
register("seat", SeatEntity::new, EntityClassification.MISC, 0, Integer.MAX_VALUE, false, SeatEntity::build);
|
||||
|
||||
//
|
||||
|
||||
public static void register() {}
|
||||
|
||||
private static <T extends Entity> RegistryEntry<EntityType<T>> contraption(String name, IFactory<T> factory,
|
||||
int range, int updateFrequency, boolean sendVelocity) {
|
||||
return register(name, factory, EntityClassification.MISC, range, updateFrequency, sendVelocity,
|
||||
AbstractContraptionEntity::build);
|
||||
}
|
||||
|
||||
private static <T extends Entity> RegistryEntry<EntityType<T>> register(String name, IFactory<T> factory,
|
||||
EntityClassification group, int range, int updateFrequency, boolean sendVelocity,
|
||||
NonNullConsumer<EntityType.Builder<T>> propertyBuilder) {
|
||||
|
@ -46,14 +59,14 @@ public class AllEntityTypes {
|
|||
.register();
|
||||
}
|
||||
|
||||
public static void register() {}
|
||||
|
||||
@OnlyIn(value = Dist.CLIENT)
|
||||
public static void registerRenderers() {
|
||||
RenderingRegistry.registerEntityRenderingHandler(CONTROLLED_CONTRAPTION.get(),
|
||||
ControlledContraptionEntityRenderer::new);
|
||||
RenderingRegistry.registerEntityRenderingHandler(ORIENTED_CONTRAPTION.get(),
|
||||
OrientedContraptionEntityRenderer::new);
|
||||
RenderingRegistry.registerEntityRenderingHandler(GANTRY_CONTRAPTION.get(),
|
||||
GantryContraptionEntityRenderer::new);
|
||||
RenderingRegistry.registerEntityRenderingHandler(SUPER_GLUE.get(), SuperGlueRenderer::new);
|
||||
RenderingRegistry.registerEntityRenderingHandler(SEAT.get(), SeatEntity.Render::new);
|
||||
}
|
||||
|
|
|
@ -41,10 +41,6 @@ public class AllShapes {
|
|||
SAIL_FRAME_COLLISION = shape(0, 5, 0, 16, 9, 16).erase(2, 0, 2, 14, 16, 14)
|
||||
.forDirectional(),
|
||||
SAIL_FRAME = shape(0, 5, 0, 16, 9, 16).forDirectional(), SAIL = shape(0, 5, 0, 16, 10, 16).forDirectional(),
|
||||
SPEED_CONTROLLER = shape(0, 0, 0, 16, 2, 16).add(1, 1, 1, 15, 15, 15)
|
||||
.erase(0, 8, 5, 16, 16, 11)
|
||||
.add(2, 9, 2, 14, 14, 14)
|
||||
.forHorizontalAxis(),
|
||||
HARVESTER_BASE = shape(0, 2, 0, 16, 14, 3).forDirectional(SOUTH),
|
||||
NOZZLE = shape(2, 0, 2, 14, 14, 14).add(1, 13, 1, 15, 15, 15)
|
||||
.erase(3, 13, 3, 13, 15, 13)
|
||||
|
@ -144,6 +140,8 @@ public class AllShapes {
|
|||
BASIN_COLLISION_SHAPE = shape(0, 2, 0, 16, 13, 16).erase(2, 5, 2, 14, 16, 14)
|
||||
.add(2, 0, 2, 14, 2, 14)
|
||||
.build(),
|
||||
SPEED_CONTROLLER = shape(0, 0, 0, 16, 4, 16).add(1, 1, 1, 15, 13, 15)
|
||||
.add(0, 8, 0, 16, 14, 16).build(),
|
||||
HEATER_BLOCK_SHAPE = shape(2, 0, 2, 14, 14, 14).add(0, 0, 0, 16, 4, 16)
|
||||
.build(),
|
||||
HEATER_BLOCK_SPECIAL_COLLISION_SHAPE = shape(0, 0, 0, 16, 4, 16).build(),
|
||||
|
|
|
@ -40,6 +40,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.bea
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.ChassisTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryPinionRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryPinionTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonTileEntity;
|
||||
|
@ -68,6 +70,7 @@ import com.simibubi.create.content.contraptions.processing.BasinRenderer;
|
|||
import com.simibubi.create.content.contraptions.processing.BasinTileEntity;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerRenderer;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerRenderer;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftTileEntity;
|
||||
|
@ -203,6 +206,18 @@ public class AllTileEntities {
|
|||
.validBlocks(AllBlocks.CUCKOO_CLOCK, AllBlocks.MYSTERIOUS_CUCKOO_CLOCK)
|
||||
.renderer(() -> CuckooClockRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final TileEntityEntry<GantryShaftTileEntity> GANTRY_SHAFT = Create.registrate()
|
||||
.tileEntity("gantry_shaft", GantryShaftTileEntity::new)
|
||||
.validBlocks(AllBlocks.GANTRY_SHAFT)
|
||||
.renderer(() -> KineticTileEntityRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final TileEntityEntry<GantryPinionTileEntity> GANTRY_PINION = Create.registrate()
|
||||
.tileEntity("gantry_pinion", GantryPinionTileEntity::new)
|
||||
.validBlocks(AllBlocks.GANTRY_PINION)
|
||||
.renderer(() -> GantryPinionRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final TileEntityEntry<PumpTileEntity> MECHANICAL_PUMP = Create.registrate()
|
||||
.tileEntity("mechanical_pump", PumpTileEntity::new)
|
||||
|
@ -279,7 +294,7 @@ public class AllTileEntities {
|
|||
.validBlocks(AllBlocks.CHUTE)
|
||||
.renderer(() -> ChuteRenderer::new)
|
||||
.register();
|
||||
|
||||
|
||||
public static final TileEntityEntry<SmartChuteTileEntity> SMART_CHUTE = Create.registrate()
|
||||
.tileEntity("smart_chute", SmartChuteTileEntity::new)
|
||||
.validBlocks(AllBlocks.SMART_CHUTE)
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler;
|
|||
import com.simibubi.create.content.palettes.AllPaletteBlocks;
|
||||
import com.simibubi.create.content.palettes.PalettesItemGroup;
|
||||
import com.simibubi.create.content.schematics.ServerSchematicLoader;
|
||||
import com.simibubi.create.content.schematics.filtering.SchematicInstances;
|
||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.command.ChunkUtil;
|
||||
|
@ -99,6 +100,7 @@ public class Create {
|
|||
|
||||
public static void init(final FMLCommonSetupEvent event) {
|
||||
CapabilityMinecartController.register();
|
||||
SchematicInstances.register();
|
||||
schematicReceiver = new ServerSchematicLoader();
|
||||
redstoneLinkNetworkHandler = new RedstoneLinkNetworkHandler();
|
||||
torquePropagator = new TorquePropagator();
|
||||
|
|
|
@ -11,7 +11,6 @@ import com.simibubi.create.content.contraptions.base.IRotate;
|
|||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.encased.DirectionalShaftHalvesTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock;
|
||||
|
@ -70,11 +69,9 @@ public class RotationPropagator {
|
|||
boolean connectedByGears = definitionFrom.hasIntegratedCogwheel(world, from.getPos(), stateFrom)
|
||||
&& definitionTo.hasIntegratedCogwheel(world, to.getPos(), stateTo);
|
||||
|
||||
// Belt <-> Belt
|
||||
if (from instanceof BeltTileEntity && to instanceof BeltTileEntity && !connectedByAxis) {
|
||||
return ((BeltTileEntity) from).getController()
|
||||
.equals(((BeltTileEntity) to).getController()) ? 1 : 0;
|
||||
}
|
||||
float custom = from.propagateRotationTo(to, stateFrom, stateTo, diff, connectedByAxis, connectedByGears);
|
||||
if (custom != 0)
|
||||
return custom;
|
||||
|
||||
// Axis <-> Axis
|
||||
if (connectedByAxis) {
|
||||
|
@ -230,6 +227,9 @@ public class RotationPropagator {
|
|||
float newSpeed = getConveyedSpeed(currentTE, neighbourTE);
|
||||
float oppositeSpeed = getConveyedSpeed(neighbourTE, currentTE);
|
||||
|
||||
if (newSpeed == 0 && oppositeSpeed == 0)
|
||||
continue;
|
||||
|
||||
boolean incompatible =
|
||||
Math.signum(newSpeed) != Math.signum(speedOfNeighbour) && (newSpeed != 0 && speedOfNeighbour != 0);
|
||||
|
||||
|
@ -395,7 +395,7 @@ public class RotationPropagator {
|
|||
if (!(neighbourKTE.getBlockState()
|
||||
.getBlock() instanceof IRotate))
|
||||
return null;
|
||||
if (!isConnected(currentTE, neighbourKTE))
|
||||
if (!isConnected(currentTE, neighbourKTE) && !isConnected(neighbourKTE, currentTE))
|
||||
return null;
|
||||
return neighbourKTE;
|
||||
}
|
||||
|
@ -403,14 +403,9 @@ public class RotationPropagator {
|
|||
public static boolean isConnected(KineticTileEntity from, KineticTileEntity to) {
|
||||
final BlockState stateFrom = from.getBlockState();
|
||||
final BlockState stateTo = to.getBlockState();
|
||||
|
||||
if (isLargeCogToSpeedController(stateFrom, stateTo, to.getPos()
|
||||
.subtract(from.getPos())))
|
||||
return true;
|
||||
if (isLargeCogToSpeedController(stateTo, stateFrom, from.getPos()
|
||||
.subtract(to.getPos())))
|
||||
return true;
|
||||
return getRotationSpeedModifier(from, to) != 0;
|
||||
return isLargeCogToSpeedController(stateFrom, stateTo, to.getPos()
|
||||
.subtract(from.getPos())) || getRotationSpeedModifier(from, to) != 0
|
||||
|| from.isCustomConnection(to, stateFrom, stateTo);
|
||||
}
|
||||
|
||||
private static List<KineticTileEntity> getConnectedNeighbours(KineticTileEntity te) {
|
||||
|
@ -436,30 +431,11 @@ public class RotationPropagator {
|
|||
neighbours.add(te.getPos()
|
||||
.offset(facing));
|
||||
|
||||
// Some Blocks can interface diagonally
|
||||
BlockState blockState = te.getBlockState();
|
||||
boolean isLargeWheel = isLargeCog(blockState);
|
||||
|
||||
if (!(blockState.getBlock() instanceof IRotate))
|
||||
return neighbours;
|
||||
IRotate block = (IRotate) blockState.getBlock();
|
||||
|
||||
if (block.hasIntegratedCogwheel(te.getWorld(), te.getPos(), blockState) || isLargeWheel
|
||||
|| AllBlocks.BELT.has(blockState)) {
|
||||
Axis axis = block.getRotationAxis(blockState);
|
||||
|
||||
BlockPos.getAllInBox(new BlockPos(-1, -1, -1), new BlockPos(1, 1, 1))
|
||||
.forEach(offset -> {
|
||||
if (!isLargeWheel && axis.getCoordinate(offset.getX(), offset.getY(), offset.getZ()) != 0)
|
||||
return;
|
||||
if (offset.distanceSq(0, 0, 0, false) != BlockPos.ZERO.distanceSq(1, 1, 0, false))
|
||||
return;
|
||||
neighbours.add(te.getPos()
|
||||
.add(offset));
|
||||
});
|
||||
}
|
||||
|
||||
return neighbours;
|
||||
return te.addPropagationLocations(block, blockState, neighbours);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,7 +31,8 @@ public abstract class KineticBlock extends Block implements IRotate {
|
|||
|
||||
@Override
|
||||
public boolean canHarvestBlock(BlockState state, IBlockReader world, BlockPos pos, PlayerEntity player) {
|
||||
for (ToolType toolType : player.getHeldItemMainhand().getToolTypes()) {
|
||||
for (ToolType toolType : player.getHeldItemMainhand()
|
||||
.getToolTypes()) {
|
||||
if (isToolEffective(state, toolType))
|
||||
return true;
|
||||
}
|
||||
|
@ -46,6 +47,24 @@ public abstract class KineticBlock extends Block implements IRotate {
|
|||
@Override
|
||||
public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
// onBlockAdded is useless for init, as sometimes the TE gets re-instantiated
|
||||
|
||||
// however, if a block change occurs that does not change kinetic connections,
|
||||
// we can prevent a major re-propagation here
|
||||
|
||||
TileEntity tileEntity = worldIn.getTileEntity(pos);
|
||||
if (tileEntity instanceof KineticTileEntity) {
|
||||
KineticTileEntity kineticTileEntity = (KineticTileEntity) tileEntity;
|
||||
kineticTileEntity.preventSpeedUpdate = false;
|
||||
|
||||
if (oldState.getBlock() != state.getBlock())
|
||||
return;
|
||||
if (state.hasTileEntity() != oldState.hasTileEntity())
|
||||
return;
|
||||
if (!areStatesKineticallyEquivalent(oldState, state))
|
||||
return;
|
||||
|
||||
kineticTileEntity.preventSpeedUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -63,6 +82,10 @@ public abstract class KineticBlock extends Block implements IRotate {
|
|||
return true;
|
||||
}
|
||||
|
||||
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
|
||||
return getRotationAxis(newState) == getRotationAxis(oldState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract TileEntity createTileEntity(BlockState state, IBlockReader world);
|
||||
|
||||
|
@ -76,9 +99,14 @@ public abstract class KineticBlock extends Block implements IRotate {
|
|||
TileEntity tileEntity = worldIn.getTileEntity(pos);
|
||||
if (!(tileEntity instanceof KineticTileEntity))
|
||||
return;
|
||||
KineticTileEntity kte = (KineticTileEntity) tileEntity;
|
||||
|
||||
if (kte.preventSpeedUpdate) {
|
||||
kte.preventSpeedUpdate = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove previous information when block is added
|
||||
KineticTileEntity kte = (KineticTileEntity) tileEntity;
|
||||
kte.warnOfMovement();
|
||||
kte.clearKineticInformation();
|
||||
kte.updateSpeed = true;
|
||||
|
|
|
@ -30,6 +30,7 @@ import net.minecraft.tileentity.ITickableTileEntity;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.Direction.AxisDirection;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
@ -42,6 +43,7 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
public @Nullable BlockPos source;
|
||||
public boolean networkDirty;
|
||||
public boolean updateSpeed;
|
||||
public boolean preventSpeedUpdate;
|
||||
|
||||
protected KineticEffectHandler effects;
|
||||
protected float speed;
|
||||
|
@ -361,11 +363,15 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
}
|
||||
|
||||
KineticTileEntity tileEntity = (KineticTileEntity) tileEntityIn;
|
||||
if (tileEntity.hasNetwork())
|
||||
tileEntity.getOrCreateNetwork()
|
||||
.remove(tileEntity);
|
||||
tileEntity.detachKinetics();
|
||||
tileEntity.removeSource();
|
||||
if (state.getBlock() instanceof KineticBlock
|
||||
&& !((KineticBlock) state.getBlock()).areStatesKineticallyEquivalent(currentState, state)) {
|
||||
if (tileEntity.hasNetwork())
|
||||
tileEntity.getOrCreateNetwork()
|
||||
.remove(tileEntity);
|
||||
tileEntity.detachKinetics();
|
||||
tileEntity.removeSource();
|
||||
}
|
||||
|
||||
world.setBlockState(pos, state, 3);
|
||||
}
|
||||
|
||||
|
@ -404,7 +410,7 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public boolean addToGoggleTooltip(List<String> tooltip, boolean isPlayerSneaking) {
|
||||
boolean added = false;
|
||||
float stressAtBase = calculateStressApplied();
|
||||
|
@ -417,8 +423,8 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
|
||||
String stressString =
|
||||
spacing + "%s%s" + Lang.translate("generic.unit.stress") + " " + TextFormatting.DARK_GRAY + "%s";
|
||||
tooltip.add(" " + String.format(stressString, TextFormatting.AQUA, IHaveGoggleInformation.format(stressTotal),
|
||||
Lang.translate("gui.goggles.at_current_speed")));
|
||||
tooltip.add(" " + String.format(stressString, TextFormatting.AQUA,
|
||||
IHaveGoggleInformation.format(stressTotal), Lang.translate("gui.goggles.at_current_speed")));
|
||||
|
||||
added = true;
|
||||
}
|
||||
|
@ -454,4 +460,72 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
return overStressed;
|
||||
}
|
||||
|
||||
// Custom Propagation
|
||||
|
||||
/**
|
||||
* Specify ratio of transferred rotation from this kinetic component to a
|
||||
* specific other.
|
||||
*
|
||||
* @param target other Kinetic TE to transfer to
|
||||
* @param stateFrom this TE's blockstate
|
||||
* @param stateTo other TE's blockstate
|
||||
* @param diff difference in position (to.pos - from.pos)
|
||||
* @param connectedViaAxes whether these kinetic blocks are connected via mutual
|
||||
* IRotate.hasShaftTowards()
|
||||
* @param connectedViaCogs whether these kinetic blocks are connected via mutual
|
||||
* IRotate.hasIntegratedCogwheel()
|
||||
* @return factor of rotation speed from this TE to other. 0 if no rotation is
|
||||
* transferred, or the standard rules apply (integrated shafts/cogs)
|
||||
*/
|
||||
public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff,
|
||||
boolean connectedViaAxes, boolean connectedViaCogs) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify additional locations the rotation propagator should look for
|
||||
* potentially connected components. Neighbour list contains offset positions in
|
||||
* all 6 directions by default.
|
||||
*
|
||||
* @param block
|
||||
* @param state
|
||||
* @param neighbours
|
||||
* @return
|
||||
*/
|
||||
public List<BlockPos> addPropagationLocations(IRotate block, BlockState state, List<BlockPos> neighbours) {
|
||||
if (!canPropagateDiagonally(block, state))
|
||||
return neighbours;
|
||||
|
||||
Axis axis = block.getRotationAxis(state);
|
||||
BlockPos.getAllInBox(new BlockPos(-1, -1, -1), new BlockPos(1, 1, 1))
|
||||
.forEach(offset -> {
|
||||
if (axis.getCoordinate(offset.getX(), offset.getY(), offset.getZ()) != 0)
|
||||
return;
|
||||
if (offset.distanceSq(0, 0, 0, false) != BlockPos.ZERO.distanceSq(1, 1, 0, false))
|
||||
return;
|
||||
neighbours.add(pos.add(offset));
|
||||
});
|
||||
return neighbours;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify whether this component can propagate speed to the other in any
|
||||
* circumstance. Shaft and cogwheel connections are already handled by internal
|
||||
* logic. Does not have to be specified on both ends, it is assumed that this
|
||||
* relation is symmetrical.
|
||||
*
|
||||
* @param other
|
||||
* @param state
|
||||
* @param otherState
|
||||
* @return true if this and the other component should check their propagation
|
||||
* factor and are not already connected via integrated cogs or shafts
|
||||
*/
|
||||
public boolean isCustomConnection(KineticTileEntity other, BlockState state, BlockState otherState) {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean canPropagateDiagonally(IRotate block, BlockState state) {
|
||||
return block.hasIntegratedCogwheel(world, pos, state);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,8 +27,8 @@ public class CreativeMotorTileEntity extends GeneratingKineticTileEntity {
|
|||
super.addBehaviours(behaviours);
|
||||
Integer max = AllConfigs.SERVER.kinetics.maxMotorSpeed.get();
|
||||
|
||||
CenteredSideValueBoxTransform slot =
|
||||
new CenteredSideValueBoxTransform((motor, side) -> motor.get(CreativeMotorBlock.FACING) == side.getOpposite());
|
||||
CenteredSideValueBoxTransform slot = new CenteredSideValueBoxTransform(
|
||||
(motor, side) -> motor.get(CreativeMotorBlock.FACING) == side.getOpposite());
|
||||
|
||||
generatedSpeed = new ScrollValueBehaviour(Lang.translate("generic.speed"), this, slot);
|
||||
generatedSpeed.between(-max, max);
|
||||
|
@ -55,20 +55,21 @@ public class CreativeMotorTileEntity extends GeneratingKineticTileEntity {
|
|||
}
|
||||
|
||||
public static int step(StepContext context) {
|
||||
if (context.shift)
|
||||
return 1;
|
||||
|
||||
int current = context.currentValue;
|
||||
int magnitude = Math.abs(current) - (context.forward == current > 0 ? 0 : 1);
|
||||
int step = 1;
|
||||
|
||||
if (magnitude >= 4)
|
||||
step *= 4;
|
||||
if (magnitude >= 32)
|
||||
step *= 4;
|
||||
if (magnitude >= 128)
|
||||
step *= 4;
|
||||
return step;
|
||||
if (!context.shift) {
|
||||
int magnitude = Math.abs(current) - (context.forward == current > 0 ? 0 : 1);
|
||||
|
||||
if (magnitude >= 4)
|
||||
step *= 4;
|
||||
if (magnitude >= 32)
|
||||
step *= 4;
|
||||
if (magnitude >= 128)
|
||||
step *= 4;
|
||||
}
|
||||
|
||||
return (int) (current + (context.forward ? step : -step) == 0 ? step + 1 : step);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -73,6 +73,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
|
|||
return;
|
||||
contraption.onEntityCreated(this);
|
||||
}
|
||||
|
||||
public boolean supportsTerrainCollision() {
|
||||
return contraption instanceof TranslatingContraption;
|
||||
}
|
||||
|
||||
protected void contraptionInitialize() {
|
||||
contraption.onEntityInitialize(world, this);
|
||||
|
@ -594,7 +598,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
|
|||
}
|
||||
|
||||
public static class ContraptionRotationState {
|
||||
static final ContraptionRotationState NONE = new ContraptionRotationState();
|
||||
public static final ContraptionRotationState NONE = new ContraptionRotationState();
|
||||
|
||||
float xRotation = 0;
|
||||
float yRotation = 0;
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyContraption;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
public enum AllContraptionTypes {
|
||||
|
||||
PISTON(PistonContraption::new),
|
||||
BEARING(BearingContraption::new),
|
||||
PULLEY(PulleyContraption::new),
|
||||
CLOCKWORK(ClockworkContraption::new),
|
||||
MOUNTED(MountedContraption::new),
|
||||
STABILIZED(StabilizedContraption::new),
|
||||
|
||||
;
|
||||
|
||||
Supplier<? extends Contraption> factory;
|
||||
String id;
|
||||
|
||||
private AllContraptionTypes(Supplier<? extends Contraption> factory) {
|
||||
this.factory = factory;
|
||||
id = Lang.asId(name());
|
||||
}
|
||||
|
||||
public static Contraption fromType(String type) {
|
||||
for (AllContraptionTypes allContraptionTypes : values())
|
||||
if (type.equals(allContraptionTypes.id))
|
||||
return allContraptionTypes.factory.get();
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -30,6 +30,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.bea
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.ChassisTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryPinionBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueHandler;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock;
|
||||
|
@ -40,6 +41,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pul
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock.RopeBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
||||
import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock;
|
||||
import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock;
|
||||
|
@ -136,7 +138,7 @@ public abstract class Contraption {
|
|||
|
||||
protected abstract boolean canAxisBeStabilized(Axis axis);
|
||||
|
||||
protected abstract AllContraptionTypes getType();
|
||||
protected abstract ContraptionType getType();
|
||||
|
||||
protected boolean customBlockPlacement(IWorld world, BlockPos pos, BlockState state) {
|
||||
return false;
|
||||
|
@ -153,7 +155,7 @@ public abstract class Contraption {
|
|||
|
||||
public static Contraption fromNBT(World world, CompoundNBT nbt, boolean spawnData) {
|
||||
String type = nbt.getString("Type");
|
||||
Contraption contraption = AllContraptionTypes.fromType(type);
|
||||
Contraption contraption = ContraptionType.fromType(type);
|
||||
contraption.readNBT(world, nbt, spawnData);
|
||||
return contraption;
|
||||
}
|
||||
|
@ -264,6 +266,26 @@ public abstract class Contraption {
|
|||
if (AllBlocks.BELT.has(state))
|
||||
moveBelt(pos, frontier, visited, state);
|
||||
|
||||
if (AllBlocks.GANTRY_PINION.has(state)) {
|
||||
BlockPos offset = pos.offset(state.get(GantryPinionBlock.FACING));
|
||||
if (!visited.contains(offset))
|
||||
frontier.add(offset);
|
||||
}
|
||||
|
||||
if (AllBlocks.GANTRY_SHAFT.has(state))
|
||||
for (Direction d : Iterate.directions) {
|
||||
BlockPos offset = pos.offset(d);
|
||||
if (!visited.contains(offset)) {
|
||||
BlockState offsetState = world.getBlockState(offset);
|
||||
Direction facing = state.get(GantryShaftBlock.FACING);
|
||||
if (d.getAxis() == facing.getAxis() && AllBlocks.GANTRY_SHAFT.has(offsetState)
|
||||
&& offsetState.get(GantryShaftBlock.FACING) == facing)
|
||||
frontier.add(offset);
|
||||
else if (AllBlocks.GANTRY_PINION.has(offsetState) && offsetState.get(GantryPinionBlock.FACING) == d)
|
||||
frontier.add(offset);
|
||||
}
|
||||
}
|
||||
|
||||
// Bearings potentially create stabilized sub-contraptions
|
||||
if (AllBlocks.MECHANICAL_BEARING.has(state))
|
||||
moveBearing(pos, frontier, visited, state);
|
||||
|
@ -726,7 +748,8 @@ public abstract class Contraption {
|
|||
if (brittles != BlockMovementTraits.isBrittle(block.state))
|
||||
continue;
|
||||
|
||||
BlockPos add = block.pos.add(anchor).add(offset);
|
||||
BlockPos add = block.pos.add(anchor)
|
||||
.add(offset);
|
||||
if (customBlockRemoval(world, add, block.state))
|
||||
continue;
|
||||
BlockState oldState = world.getBlockState(add);
|
||||
|
@ -735,7 +758,8 @@ public abstract class Contraption {
|
|||
iterator.remove();
|
||||
world.getWorld()
|
||||
.removeTileEntity(add);
|
||||
int flags = BlockFlags.IS_MOVING | BlockFlags.NO_NEIGHBOR_DROPS | BlockFlags.UPDATE_NEIGHBORS;
|
||||
int flags = BlockFlags.IS_MOVING | BlockFlags.NO_NEIGHBOR_DROPS | BlockFlags.UPDATE_NEIGHBORS
|
||||
| BlockFlags.BLOCK_UPDATE;
|
||||
if (blockIn instanceof IWaterLoggable && oldState.has(BlockStateProperties.WATERLOGGED)
|
||||
&& oldState.get(BlockStateProperties.WATERLOGGED)
|
||||
.booleanValue()) {
|
||||
|
@ -746,8 +770,12 @@ public abstract class Contraption {
|
|||
}
|
||||
}
|
||||
for (BlockInfo block : blocks.values()) {
|
||||
BlockPos add = block.pos.add(anchor).add(offset);
|
||||
world.markAndNotifyBlock(add, null, block.state, Blocks.AIR.getDefaultState(), BlockFlags.IS_MOVING | BlockFlags.DEFAULT);
|
||||
BlockPos add = block.pos.add(anchor)
|
||||
.add(offset);
|
||||
if (!shouldUpdateAfterMovement(block))
|
||||
continue;
|
||||
world.markAndNotifyBlock(add, null, block.state, Blocks.AIR.getDefaultState(),
|
||||
BlockFlags.IS_MOVING | BlockFlags.DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -828,7 +856,10 @@ public abstract class Contraption {
|
|||
}
|
||||
for (BlockInfo block : blocks.values()) {
|
||||
BlockPos targetPos = transform.apply(block.pos);
|
||||
world.markAndNotifyBlock(targetPos, null, block.state, block.state, BlockFlags.IS_MOVING | BlockFlags.DEFAULT);
|
||||
if (!shouldUpdateAfterMovement(block))
|
||||
continue;
|
||||
world.markAndNotifyBlock(targetPos, null, block.state, block.state,
|
||||
BlockFlags.IS_MOVING | BlockFlags.DEFAULT);
|
||||
}
|
||||
|
||||
for (int i = 0; i < inventory.getSlots(); i++)
|
||||
|
@ -888,6 +919,10 @@ public abstract class Contraption {
|
|||
callBack.accept(AllMovementBehaviours.of(pair.getLeft().state), pair.getRight());
|
||||
}
|
||||
|
||||
protected boolean shouldUpdateAfterMovement(BlockInfo info) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void expandBoundsAroundAxis(Axis axis) {
|
||||
AxisAlignedBB bb = bounds;
|
||||
double maxXDiff = Math.max(bb.maxX - 1, -bb.minX);
|
||||
|
|
|
@ -348,7 +348,7 @@ public class ContraptionCollider {
|
|||
return potentialHits;
|
||||
}
|
||||
|
||||
public static boolean collideBlocks(ControlledContraptionEntity contraptionEntity) {
|
||||
public static boolean collideBlocks(AbstractContraptionEntity contraptionEntity) {
|
||||
if (!contraptionEntity.supportsTerrainCollision())
|
||||
return false;
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyContraption;
|
||||
|
||||
public class ContraptionType {
|
||||
|
||||
public static Map<String, ContraptionType> entries = new HashMap<>();
|
||||
public static ContraptionType
|
||||
PISTON = register("piston", PistonContraption::new),
|
||||
BEARING = register("bearing", BearingContraption::new),
|
||||
PULLEY = register("pulley", PulleyContraption::new),
|
||||
CLOCKWORK = register("clockwork", ClockworkContraption::new),
|
||||
MOUNTED = register("mounted", MountedContraption::new),
|
||||
STABILIZED = register("stabilized", StabilizedContraption::new),
|
||||
GANTRY = register("gantry", GantryContraption::new);
|
||||
|
||||
Supplier<? extends Contraption> factory;
|
||||
String id;
|
||||
|
||||
public static ContraptionType register(String id, Supplier<? extends Contraption> factory) {
|
||||
ContraptionType value = new ContraptionType(id, factory);
|
||||
entries.put(id, value);
|
||||
return value;
|
||||
}
|
||||
|
||||
private ContraptionType(String id, Supplier<? extends Contraption> factory) {
|
||||
this.factory = factory;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public static Contraption fromType(String type) {
|
||||
for (Entry<String, ContraptionType> allContraptionTypes : entries.entrySet())
|
||||
if (type.equals(allContraptionTypes.getKey()))
|
||||
return allContraptionTypes.getValue().factory.get();
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -46,10 +46,6 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
|||
return entity;
|
||||
}
|
||||
|
||||
public boolean supportsTerrainCollision() {
|
||||
return contraption instanceof TranslatingContraption;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3d getContactPointMotion(Vec3d globalContactPoint) {
|
||||
if (contraption instanceof TranslatingContraption)
|
||||
|
@ -151,8 +147,6 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
|||
}
|
||||
|
||||
Vec3d motion = getMotion();
|
||||
if (motion.length() < 1 / 4098f)
|
||||
setMotion(Vec3d.ZERO);
|
||||
move(motion.x, motion.y, motion.z);
|
||||
if (ContraptionCollider.collideBlocks(this))
|
||||
getController().collided();
|
||||
|
|
|
@ -22,7 +22,7 @@ public class OrientedContraptionEntityRenderer extends AbstractContraptionEntity
|
|||
if (!super.shouldRender(entity, p_225626_2_, p_225626_3_, p_225626_5_, p_225626_7_))
|
||||
return false;
|
||||
if (entity.getContraption()
|
||||
.getType() == AllContraptionTypes.MOUNTED && entity.getRidingEntity() == null)
|
||||
.getType() == ContraptionType.MOUNTED && entity.getRidingEntity() == null)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ public abstract class TranslatingContraption extends Contraption {
|
|||
|
||||
public Set<BlockPos> getColliders(World world, Direction movementDirection) {
|
||||
if (getBlocks() == null)
|
||||
return Collections.EMPTY_SET;
|
||||
return Collections.emptySet();
|
||||
if (cachedColliders == null || cachedColliderDirection != movementDirection) {
|
||||
cachedColliders = new HashSet<>();
|
||||
cachedColliderDirection = movementDirection;
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be
|
|||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.simibubi.create.AllTags.AllBlockTags;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AllContraptionTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
|
@ -43,8 +43,8 @@ public class BearingContraption extends Contraption {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected AllContraptionTypes getType() {
|
||||
return AllContraptionTypes.BEARING;
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.BEARING;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,7 +6,7 @@ import java.util.Set;
|
|||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AllContraptionTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
|
||||
|
@ -24,8 +24,8 @@ public class ClockworkContraption extends Contraption {
|
|||
private Set<BlockPos> ignoreBlocks = new HashSet<>();
|
||||
|
||||
@Override
|
||||
protected AllContraptionTypes getType() {
|
||||
return AllContraptionTypes.CLOCKWORK;
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.CLOCKWORK;
|
||||
}
|
||||
|
||||
private void ignoreBlocks(Set<BlockPos> blocks, BlockPos anchor) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.bearing;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AllContraptionTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
|
@ -37,8 +37,8 @@ public class StabilizedContraption extends Contraption {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected AllContraptionTypes getType() {
|
||||
return AllContraptionTypes.STABILIZED;
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.STABILIZED;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.feature.template.Template.BlockInfo;
|
||||
|
||||
public class GantryContraption extends TranslatingContraption {
|
||||
|
||||
protected Direction facing;
|
||||
|
||||
public GantryContraption() {}
|
||||
|
||||
public GantryContraption(Direction facing) {
|
||||
this.facing = facing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean assemble(World world, BlockPos pos) {
|
||||
if (!searchMovedStructure(world, pos, null))
|
||||
return false;
|
||||
startMoving(world);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT writeNBT(boolean spawnPacket) {
|
||||
CompoundNBT tag = super.writeNBT(spawnPacket);
|
||||
tag.putInt("Facing", facing.getIndex());
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readNBT(World world, CompoundNBT tag, boolean spawnData) {
|
||||
facing = Direction.byIndex(tag.getInt("Facing"));
|
||||
super.readNBT(world, tag, spawnData);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isAnchoringBlockAt(BlockPos pos) {
|
||||
return super.isAnchoringBlockAt(pos.offset(facing));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.GANTRY;
|
||||
}
|
||||
|
||||
public Direction getFacing() {
|
||||
return facing;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldUpdateAfterMovement(BlockInfo info) {
|
||||
return super.shouldUpdateAfterMovement(info) && !AllBlocks.GANTRY_PINION.has(info.state);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,203 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllEntityTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
import com.simibubi.create.foundation.utility.ServerSpeedProvider;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
public class GantryContraptionEntity extends AbstractContraptionEntity {
|
||||
|
||||
Direction movementAxis;
|
||||
double clientOffsetDiff;
|
||||
double axisMotion;
|
||||
|
||||
public GantryContraptionEntity(EntityType<?> entityTypeIn, World worldIn) {
|
||||
super(entityTypeIn, worldIn);
|
||||
}
|
||||
|
||||
public static GantryContraptionEntity create(World world, Contraption contraption, Direction movementAxis) {
|
||||
GantryContraptionEntity entity = new GantryContraptionEntity(AllEntityTypes.GANTRY_CONTRAPTION.get(), world);
|
||||
entity.setContraption(contraption);
|
||||
entity.movementAxis = movementAxis;
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tickContraption() {
|
||||
if (!(contraption instanceof GantryContraption))
|
||||
return;
|
||||
|
||||
double prevAxisMotion = axisMotion;
|
||||
if (world.isRemote) {
|
||||
clientOffsetDiff *= .75f;
|
||||
updateClientMotion();
|
||||
}
|
||||
|
||||
checkPinionShaft();
|
||||
tickActors();
|
||||
Vec3d movementVec = getMotion();
|
||||
|
||||
if (ContraptionCollider.collideBlocks(this)) {
|
||||
if (!world.isRemote)
|
||||
disassemble();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isStalled() && ticksExisted > 2)
|
||||
move(movementVec.x, movementVec.y, movementVec.z);
|
||||
|
||||
if (!world.isRemote && (prevAxisMotion != axisMotion || ticksExisted % 3 == 0))
|
||||
sendPacket();
|
||||
}
|
||||
|
||||
protected void checkPinionShaft() {
|
||||
Vec3d movementVec;
|
||||
Direction facing = ((GantryContraption) contraption).getFacing();
|
||||
Vec3d currentPosition = getAnchorVec().add(.5, .5, .5);
|
||||
BlockPos gantryShaftPos = new BlockPos(currentPosition).offset(facing.getOpposite());
|
||||
|
||||
TileEntity te = world.getTileEntity(gantryShaftPos);
|
||||
if (!(te instanceof GantryShaftTileEntity) || !AllBlocks.GANTRY_SHAFT.has(te.getBlockState())) {
|
||||
if (!world.isRemote) {
|
||||
setContraptionMotion(Vec3d.ZERO);
|
||||
disassemble();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
BlockState blockState = te.getBlockState();
|
||||
Direction direction = blockState.get(GantryShaftBlock.FACING);
|
||||
GantryShaftTileEntity gantryShaftTileEntity = (GantryShaftTileEntity) te;
|
||||
|
||||
float pinionMovementSpeed = gantryShaftTileEntity.getPinionMovementSpeed();
|
||||
movementVec = new Vec3d(direction.getDirectionVec()).scale(pinionMovementSpeed);
|
||||
|
||||
if (blockState.get(GantryShaftBlock.POWERED) || pinionMovementSpeed == 0) {
|
||||
setContraptionMotion(Vec3d.ZERO);
|
||||
if (!world.isRemote)
|
||||
disassemble();
|
||||
return;
|
||||
}
|
||||
|
||||
Vec3d nextPosition = currentPosition.add(movementVec);
|
||||
double currentCoord = direction.getAxis()
|
||||
.getCoordinate(currentPosition.x, currentPosition.y, currentPosition.z);
|
||||
double nextCoord = direction.getAxis()
|
||||
.getCoordinate(nextPosition.x, nextPosition.y, nextPosition.z);
|
||||
|
||||
if ((MathHelper.floor(currentCoord) + .5f < nextCoord != (pinionMovementSpeed * direction.getAxisDirection()
|
||||
.getOffset() < 0)))
|
||||
if (!gantryShaftTileEntity.canAssembleOn()) {
|
||||
setContraptionMotion(Vec3d.ZERO);
|
||||
if (!world.isRemote)
|
||||
disassemble();
|
||||
return;
|
||||
}
|
||||
|
||||
if (world.isRemote)
|
||||
return;
|
||||
|
||||
axisMotion = pinionMovementSpeed;
|
||||
setContraptionMotion(movementVec);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeAdditional(CompoundNBT compound, boolean spawnPacket) {
|
||||
NBTHelper.writeEnum(compound, "GantryAxis", movementAxis);
|
||||
super.writeAdditional(compound, spawnPacket);
|
||||
}
|
||||
|
||||
protected void readAdditional(CompoundNBT compound, boolean spawnData) {
|
||||
movementAxis = NBTHelper.readEnum(compound, "GantryAxis", Direction.class);
|
||||
super.readAdditional(compound, spawnData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3d applyRotation(Vec3d localPos, float partialTicks) {
|
||||
return localPos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3d reverseRotation(Vec3d localPos, float partialTicks) {
|
||||
return localPos;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StructureTransform makeStructureTransform() {
|
||||
return new StructureTransform(new BlockPos(getAnchorVec().add(.5, .5, .5)), 0, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getStalledAngle() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPositionAndUpdate(double p_70634_1_, double p_70634_3_, double p_70634_5_) {}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void setPositionAndRotationDirect(double x, double y, double z, float yw, float pt, int inc, boolean t) {}
|
||||
|
||||
@Override
|
||||
protected void handleStallInformation(float x, float y, float z, float angle) {
|
||||
setPos(x, y, z);
|
||||
clientOffsetDiff = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContraptionRotationState getRotationState() {
|
||||
return ContraptionRotationState.NONE;
|
||||
}
|
||||
|
||||
public void updateClientMotion() {
|
||||
float modifier = movementAxis.getAxisDirection()
|
||||
.getOffset();
|
||||
setContraptionMotion(new Vec3d(movementAxis.getDirectionVec())
|
||||
.scale((axisMotion + clientOffsetDiff * modifier / 2f) * ServerSpeedProvider.get()));
|
||||
}
|
||||
|
||||
public double getAxisCoord() {
|
||||
Vec3d anchorVec = getAnchorVec();
|
||||
return movementAxis.getAxis()
|
||||
.getCoordinate(anchorVec.x, anchorVec.y, anchorVec.z);
|
||||
}
|
||||
|
||||
public void sendPacket() {
|
||||
AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this),
|
||||
new GantryContraptionUpdatePacket(getEntityId(), getAxisCoord(), axisMotion));
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static void handlePacket(GantryContraptionUpdatePacket packet) {
|
||||
Entity entity = Minecraft.getInstance().world.getEntityByID(packet.entityID);
|
||||
if (!(entity instanceof GantryContraptionEntity))
|
||||
return;
|
||||
GantryContraptionEntity ce = (GantryContraptionEntity) entity;
|
||||
ce.axisMotion = packet.motion;
|
||||
ce.clientOffsetDiff = packet.coord - ce.getAxisCoord();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntityRenderer;
|
||||
|
||||
import net.minecraft.client.renderer.entity.EntityRendererManager;
|
||||
|
||||
public class GantryContraptionEntityRenderer extends AbstractContraptionEntityRenderer<GantryContraptionEntity> {
|
||||
|
||||
public GantryContraptionEntityRenderer(EntityRendererManager p_i46179_1_) {
|
||||
super(p_i46179_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void transform(GantryContraptionEntity contraptionEntity, float partialTicks,
|
||||
MatrixStack[] matrixStacks) {}
|
||||
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
import net.minecraftforge.fml.network.NetworkEvent.Context;
|
||||
|
||||
public class GantryContraptionUpdatePacket extends SimplePacketBase {
|
||||
|
||||
int entityID;
|
||||
double coord;
|
||||
double motion;
|
||||
|
||||
public GantryContraptionUpdatePacket(int entityID, double coord, double motion) {
|
||||
this.entityID = entityID;
|
||||
this.coord = coord;
|
||||
this.motion = motion;
|
||||
}
|
||||
|
||||
public GantryContraptionUpdatePacket(PacketBuffer buffer) {
|
||||
entityID = buffer.readInt();
|
||||
coord = buffer.readFloat();
|
||||
motion = buffer.readFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {
|
||||
buffer.writeInt(entityID);
|
||||
buffer.writeFloat((float) coord);
|
||||
buffer.writeFloat((float) motion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get()
|
||||
.enqueueWork(
|
||||
() -> DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> GantryContraptionEntity.handlePacket(this)));
|
||||
context.get()
|
||||
.setPacketHandled(true);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,121 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class GantryPinionBlock extends DirectionalAxisKineticBlock implements ITE<GantryPinionTileEntity> {
|
||||
|
||||
public GantryPinionBlock(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) {
|
||||
Direction direction = state.get(FACING);
|
||||
BlockState shaft = world.getBlockState(pos.offset(direction.getOpposite()));
|
||||
return AllBlocks.GANTRY_SHAFT.has(shaft) && shaft.get(GantryShaftBlock.FACING)
|
||||
.getAxis() != direction.getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
super.onBlockAdded(state, worldIn, pos, oldState, isMoving);
|
||||
withTileEntityDo(worldIn, pos, GantryPinionTileEntity::checkValidGantryShaft);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return AllTileEntities.GANTRY_PINION.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Direction getFacingForPlacement(BlockItemUseContext context) {
|
||||
return context.getFace();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
BlockState stateForPlacement = super.getStateForPlacement(context);
|
||||
Direction opposite = stateForPlacement.get(FACING)
|
||||
.getOpposite();
|
||||
return cycleAxisIfNecessary(stateForPlacement, opposite, context.getWorld()
|
||||
.getBlockState(context.getPos()
|
||||
.offset(opposite)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_,
|
||||
boolean p_220069_6_) {
|
||||
if (!isValidPosition(state, world, pos))
|
||||
world.destroyBlock(pos, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState otherState, IWorld world,
|
||||
BlockPos pos, BlockPos p_196271_6_) {
|
||||
if (state.get(FACING) != direction.getOpposite())
|
||||
return state;
|
||||
return cycleAxisIfNecessary(state, direction, otherState);
|
||||
}
|
||||
|
||||
protected BlockState cycleAxisIfNecessary(BlockState state, Direction direction, BlockState otherState) {
|
||||
if (!AllBlocks.GANTRY_SHAFT.has(otherState))
|
||||
return state;
|
||||
if (otherState.get(GantryShaftBlock.FACING)
|
||||
.getAxis() == direction.getAxis())
|
||||
return state;
|
||||
if (isValidGantryShaftAxis(state, otherState))
|
||||
return state;
|
||||
return state.cycle(AXIS_ALONG_FIRST_COORDINATE);
|
||||
}
|
||||
|
||||
public static boolean isValidGantryShaftAxis(BlockState pinionState, BlockState gantryState) {
|
||||
return getValidGantryShaftAxis(pinionState) == gantryState.get(GantryShaftBlock.FACING)
|
||||
.getAxis();
|
||||
}
|
||||
|
||||
public static Axis getValidGantryShaftAxis(BlockState state) {
|
||||
if (!(state.getBlock() instanceof GantryPinionBlock))
|
||||
return Axis.Y;
|
||||
IRotate block = (IRotate) state.getBlock();
|
||||
Axis rotationAxis = block.getRotationAxis(state);
|
||||
Axis facingAxis = state.get(FACING)
|
||||
.getAxis();
|
||||
for (Axis axis : Iterate.axes)
|
||||
if (axis != rotationAxis && axis != facingAxis)
|
||||
return axis;
|
||||
return Axis.Y;
|
||||
}
|
||||
|
||||
public static Axis getValidGantryPinionAxis(BlockState state, Axis shaftAxis) {
|
||||
Axis facingAxis = state.get(FACING)
|
||||
.getAxis();
|
||||
for (Axis axis : Iterate.axes)
|
||||
if (axis != shaftAxis && axis != facingAxis)
|
||||
return axis;
|
||||
return Axis.Y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<GantryPinionTileEntity> getTileEntityClass() {
|
||||
return GantryPinionTileEntity.class;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.MatrixStacker;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.Vector3f;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.Direction.AxisDirection;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class GantryPinionRenderer extends KineticTileEntityRenderer {
|
||||
|
||||
public GantryPinionRenderer(TileEntityRendererDispatcher dispatcher) {
|
||||
super(dispatcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
|
||||
int light, int overlay) {
|
||||
super.renderSafe(te, partialTicks, ms, buffer, light, overlay);
|
||||
BlockState state = te.getBlockState();
|
||||
Direction facing = state.get(GantryPinionBlock.FACING);
|
||||
Boolean alongFirst = state.get(GantryPinionBlock.AXIS_ALONG_FIRST_COORDINATE);
|
||||
Axis rotationAxis = getRotationAxisOf(te);
|
||||
BlockPos visualPos = facing.getAxisDirection() == AxisDirection.POSITIVE ? te.getPos()
|
||||
: te.getPos()
|
||||
.offset(facing.getOpposite());
|
||||
float angleForTe = getAngleForTe(te, visualPos, rotationAxis);
|
||||
|
||||
Axis gantryAxis = Axis.X;
|
||||
for (Axis axis : Iterate.axes)
|
||||
if (axis != rotationAxis && axis != facing.getAxis())
|
||||
gantryAxis = axis;
|
||||
|
||||
if (gantryAxis == Axis.Z)
|
||||
if (facing == Direction.DOWN)
|
||||
angleForTe *= -1;
|
||||
if (gantryAxis == Axis.Y)
|
||||
if (facing == Direction.NORTH || facing == Direction.EAST)
|
||||
angleForTe *= -1;
|
||||
|
||||
ms.push();
|
||||
|
||||
MatrixStacker msr = MatrixStacker.of(ms);
|
||||
|
||||
msr.centre()
|
||||
.rotateY(AngleHelper.horizontalAngle(facing))
|
||||
.rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90)
|
||||
.rotateY(alongFirst ^ facing.getAxis() == Axis.Z ? 90 : 0);
|
||||
|
||||
ms.translate(0, -9 / 16f, 0);
|
||||
ms.multiply(Vector3f.POSITIVE_X.getRadialQuaternion(-angleForTe / 2f));
|
||||
ms.translate(0, 9 / 16f, 0);
|
||||
|
||||
msr.unCentre();
|
||||
AllBlockPartials.GANTRY_COGS.renderOn(state)
|
||||
.light(light)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
|
||||
ms.pop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockState getRenderedBlockState(KineticTileEntity te) {
|
||||
return shaft(getRotationAxisOf(te));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
|
||||
|
||||
import static net.minecraft.state.properties.BlockStateProperties.FACING;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class GantryPinionTileEntity extends KineticTileEntity {
|
||||
|
||||
boolean assembleNextTick;
|
||||
|
||||
public GantryPinionTileEntity(TileEntityType<?> typeIn) {
|
||||
super(typeIn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSpeedChanged(float previousSpeed) {
|
||||
super.onSpeedChanged(previousSpeed);
|
||||
}
|
||||
|
||||
public void checkValidGantryShaft() {
|
||||
if (shouldAssemble())
|
||||
queueAssembly();
|
||||
}
|
||||
|
||||
public void queueAssembly() {
|
||||
assembleNextTick = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
|
||||
if (world.isRemote)
|
||||
return;
|
||||
|
||||
if (assembleNextTick) {
|
||||
tryAssemble();
|
||||
assembleNextTick = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void tryAssemble() {
|
||||
BlockState blockState = getBlockState();
|
||||
if (!(blockState.getBlock() instanceof GantryPinionBlock))
|
||||
return;
|
||||
|
||||
Direction direction = blockState.get(FACING);
|
||||
GantryContraption contraption = new GantryContraption(direction);
|
||||
|
||||
TileEntity shaftTe = world.getTileEntity(pos.offset(direction.getOpposite()));
|
||||
if (!(shaftTe instanceof GantryShaftTileEntity))
|
||||
return;
|
||||
BlockState shaftState = shaftTe.getBlockState();
|
||||
if (!AllBlocks.GANTRY_SHAFT.has(shaftState))
|
||||
return;
|
||||
|
||||
float pinionMovementSpeed = ((GantryShaftTileEntity) shaftTe).getPinionMovementSpeed();
|
||||
Direction shaftOrientation = shaftState.get(GantryShaftBlock.FACING);
|
||||
Direction movementDirection = shaftOrientation;
|
||||
if (pinionMovementSpeed < 0)
|
||||
movementDirection = movementDirection.getOpposite();
|
||||
|
||||
if (!contraption.assemble(world, pos))
|
||||
return;
|
||||
if (ContraptionCollider.isCollidingWithWorld(world, contraption, pos.offset(movementDirection),
|
||||
movementDirection))
|
||||
return;
|
||||
|
||||
contraption.removeBlocksFromWorld(world, BlockPos.ZERO);
|
||||
GantryContraptionEntity movedContraption =
|
||||
GantryContraptionEntity.create(world, contraption, shaftOrientation);
|
||||
BlockPos anchor = pos;
|
||||
movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ());
|
||||
world.addEntity(movedContraption);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff,
|
||||
boolean connectedViaAxes, boolean connectedViaCogs) {
|
||||
float defaultModifier =
|
||||
super.propagateRotationTo(target, stateFrom, stateTo, diff, connectedViaAxes, connectedViaCogs);
|
||||
|
||||
if (connectedViaAxes)
|
||||
return defaultModifier;
|
||||
if (!AllBlocks.GANTRY_SHAFT.has(stateTo))
|
||||
return defaultModifier;
|
||||
if (!stateTo.get(GantryShaftBlock.POWERED))
|
||||
return defaultModifier;
|
||||
|
||||
Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ());
|
||||
if (stateFrom.get(GantryPinionBlock.FACING) != direction.getOpposite())
|
||||
return defaultModifier;
|
||||
return getGantryPinionModifier(stateTo.get(GantryShaftBlock.FACING), stateFrom.get(GantryPinionBlock.FACING));
|
||||
}
|
||||
|
||||
public static float getGantryPinionModifier(Direction shaft, Direction pinionDirection) {
|
||||
Axis shaftAxis = shaft.getAxis();
|
||||
float directionModifier = shaft.getAxisDirection()
|
||||
.getOffset();
|
||||
if (shaftAxis == Axis.Y)
|
||||
if (pinionDirection == Direction.NORTH || pinionDirection == Direction.EAST)
|
||||
return -directionModifier;
|
||||
if (shaftAxis == Axis.X)
|
||||
if (pinionDirection == Direction.DOWN || pinionDirection == Direction.SOUTH)
|
||||
return -directionModifier;
|
||||
if (shaftAxis == Axis.Z)
|
||||
if (pinionDirection == Direction.UP || pinionDirection == Direction.WEST)
|
||||
return -directionModifier;
|
||||
return directionModifier;
|
||||
}
|
||||
|
||||
private boolean shouldAssemble() {
|
||||
BlockState blockState = getBlockState();
|
||||
if (!(blockState.getBlock() instanceof GantryPinionBlock))
|
||||
return false;
|
||||
Direction facing = blockState.get(GantryPinionBlock.FACING)
|
||||
.getOpposite();
|
||||
BlockState shaftState = world.getBlockState(pos.offset(facing));
|
||||
if (!(shaftState.getBlock() instanceof GantryShaftBlock))
|
||||
return false;
|
||||
if (shaftState.get(GantryShaftBlock.POWERED))
|
||||
return false;
|
||||
TileEntity te = world.getTileEntity(pos.offset(facing));
|
||||
return te instanceof GantryShaftTileEntity && ((GantryShaftTileEntity) te).canAssembleOn();
|
||||
}
|
||||
|
||||
}
|
|
@ -7,7 +7,7 @@ import java.util.List;
|
|||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AllContraptionTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity.CartMovementMode;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
@ -47,8 +47,8 @@ public class MountedContraption extends Contraption {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected AllContraptionTypes getType() {
|
||||
return AllContraptionTypes.MOUNTED;
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.MOUNTED;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -154,7 +154,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity impleme
|
|||
compound.putBoolean("Waiting", waitingForSpeedChange);
|
||||
compound.putFloat("Offset", offset);
|
||||
super.write(compound, clientPacket);
|
||||
|
||||
|
||||
if (clientPacket && forceMove) {
|
||||
compound.putBoolean("ForceMovement", forceMove);
|
||||
forceMove = false;
|
||||
|
@ -247,7 +247,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity impleme
|
|||
}
|
||||
|
||||
public float getMovementSpeed() {
|
||||
float movementSpeed = getSpeed() / 512f + clientOffsetDiff / 2f;
|
||||
float movementSpeed = MathHelper.clamp(getSpeed() / 512f, -.49f, .49f) + clientOffsetDiff / 2f;
|
||||
if (world.isRemote)
|
||||
movementSpeed *= ServerSpeedProvider.get();
|
||||
return movementSpeed;
|
||||
|
@ -283,7 +283,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity impleme
|
|||
public boolean isAttachedTo(AbstractContraptionEntity contraption) {
|
||||
return movedContraption == contraption;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BlockPos getBlockPosition() {
|
||||
return pos;
|
||||
|
|
|
@ -112,7 +112,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity {
|
|||
|
||||
@Override
|
||||
public float getMovementSpeed() {
|
||||
float movementSpeed = getSpeed() / 512f;
|
||||
float movementSpeed = MathHelper.clamp(getSpeed() / 512f, -.49f, .49f);
|
||||
if (world.isRemote)
|
||||
movementSpeed *= ServerSpeedProvider.get();
|
||||
Direction pistonDirection = getBlockState().get(BlockStateProperties.FACING);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.piston;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AllContraptionTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementTraits;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.*;
|
||||
|
@ -38,8 +38,8 @@ public class PistonContraption extends TranslatingContraption {
|
|||
private boolean retract;
|
||||
|
||||
@Override
|
||||
protected AllContraptionTypes getType() {
|
||||
return AllContraptionTypes.PISTON;
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.PISTON;
|
||||
}
|
||||
|
||||
public PistonContraption() {}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement.pulley;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AllContraptionTypes;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
|
@ -12,8 +12,8 @@ public class PulleyContraption extends TranslatingContraption {
|
|||
int initialOffset;
|
||||
|
||||
@Override
|
||||
protected AllContraptionTypes getType() {
|
||||
return AllContraptionTypes.PULLEY;
|
||||
protected ContraptionType getType() {
|
||||
return ContraptionType.PULLEY;
|
||||
}
|
||||
|
||||
public PulleyContraption() {}
|
||||
|
|
|
@ -0,0 +1,236 @@
|
|||
package com.simibubi.create.content.contraptions.relays.advanced;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockRenderType;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.state.BooleanProperty;
|
||||
import net.minecraft.state.EnumProperty;
|
||||
import net.minecraft.state.IProperty;
|
||||
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.Direction.Axis;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
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;
|
||||
|
||||
public class GantryShaftBlock extends DirectionalKineticBlock {
|
||||
|
||||
public static final IProperty<Part> PART = EnumProperty.create("part", Part.class);
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
|
||||
public enum Part implements IStringSerializable {
|
||||
START, MIDDLE, END, SINGLE;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return Lang.asId(name());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(Builder<Block, BlockState> builder) {
|
||||
super.fillStateContainer(builder.add(PART, POWERED));
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_,
|
||||
ISelectionContext p_220053_4_) {
|
||||
return AllShapes.EIGHT_VOXEL_POLE.get(state.get(FACING)
|
||||
.getAxis());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderType getRenderType(BlockState state) {
|
||||
return BlockRenderType.ENTITYBLOCK_ANIMATED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world,
|
||||
BlockPos pos, BlockPos neighbourPos) {
|
||||
Direction facing = state.get(FACING);
|
||||
Axis axis = facing.getAxis();
|
||||
if (direction.getAxis() != axis)
|
||||
return state;
|
||||
boolean connect = AllBlocks.GANTRY_SHAFT.has(neighbour) && neighbour.get(FACING) == facing;
|
||||
|
||||
Part part = state.get(PART);
|
||||
if (direction.getAxisDirection() == facing.getAxisDirection()) {
|
||||
if (connect) {
|
||||
if (part == Part.END)
|
||||
part = Part.MIDDLE;
|
||||
if (part == Part.SINGLE)
|
||||
part = Part.START;
|
||||
} else {
|
||||
if (part == Part.MIDDLE)
|
||||
part = Part.END;
|
||||
if (part == Part.START)
|
||||
part = Part.SINGLE;
|
||||
}
|
||||
} else {
|
||||
if (connect) {
|
||||
if (part == Part.START)
|
||||
part = Part.MIDDLE;
|
||||
if (part == Part.SINGLE)
|
||||
part = Part.END;
|
||||
} else {
|
||||
if (part == Part.MIDDLE)
|
||||
part = Part.START;
|
||||
if (part == Part.END)
|
||||
part = Part.SINGLE;
|
||||
}
|
||||
}
|
||||
|
||||
return state.with(PART, part);
|
||||
}
|
||||
|
||||
public GantryShaftBlock(Properties properties) {
|
||||
super(properties);
|
||||
setDefaultState(getDefaultState().with(POWERED, false)
|
||||
.with(PART, Part.SINGLE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
BlockState state = super.getStateForPlacement(context);
|
||||
Direction face = context.getFace();
|
||||
BlockState blockState = context.getWorld()
|
||||
.getBlockState(context.getPos()
|
||||
.offset(face.getOpposite()));
|
||||
if (AllBlocks.GANTRY_SHAFT.has(blockState) && blockState.get(FACING)
|
||||
.getAxis() == face.getAxis()) {
|
||||
Direction facing = blockState.get(FACING);
|
||||
state = state.with(FACING, context.getPlayer() == null || !context.getPlayer()
|
||||
.isSneaking() ? facing : facing.getOpposite());
|
||||
}
|
||||
return state.with(POWERED, shouldBePowered(state, context.getWorld(), context.getPos()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onWrenched(BlockState state, ItemUseContext context) {
|
||||
ActionResultType onWrenched = super.onWrenched(state, context);
|
||||
if (onWrenched.isAccepted()) {
|
||||
BlockPos pos = context.getPos();
|
||||
World world = context.getWorld();
|
||||
neighborChanged(world.getBlockState(pos), world, pos, state.getBlock(), pos, false);
|
||||
}
|
||||
return onWrenched;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_,
|
||||
boolean p_220069_6_) {
|
||||
if (worldIn.isRemote)
|
||||
return;
|
||||
boolean previouslyPowered = state.get(POWERED);
|
||||
boolean shouldPower = worldIn.isBlockPowered(pos); // shouldBePowered(state, worldIn, pos);
|
||||
|
||||
if (!previouslyPowered && !shouldPower && shouldBePowered(state, worldIn, pos)) {
|
||||
worldIn.setBlockState(pos, state.with(POWERED, true), 3);
|
||||
return;
|
||||
}
|
||||
|
||||
if (previouslyPowered == shouldPower)
|
||||
return;
|
||||
|
||||
// Collect affected gantry shafts
|
||||
List<BlockPos> toUpdate = new ArrayList<>();
|
||||
Direction facing = state.get(FACING);
|
||||
Axis axis = facing.getAxis();
|
||||
for (Direction d : Iterate.directionsInAxis(axis)) {
|
||||
BlockPos currentPos = pos.offset(d);
|
||||
while (true) {
|
||||
if (!worldIn.isBlockPresent(currentPos))
|
||||
break;
|
||||
BlockState currentState = worldIn.getBlockState(currentPos);
|
||||
if (!(currentState.getBlock() instanceof GantryShaftBlock))
|
||||
break;
|
||||
if (currentState.get(FACING) != facing)
|
||||
break;
|
||||
if (!shouldPower && currentState.get(POWERED) && worldIn.isBlockPowered(currentPos))
|
||||
return;
|
||||
if (currentState.get(POWERED) == shouldPower)
|
||||
break;
|
||||
toUpdate.add(currentPos);
|
||||
currentPos = currentPos.offset(d);
|
||||
}
|
||||
}
|
||||
|
||||
toUpdate.add(pos);
|
||||
for (BlockPos blockPos : toUpdate) {
|
||||
BlockState blockState = worldIn.getBlockState(blockPos);
|
||||
|
||||
if (!shouldPower) {
|
||||
TileEntity te = worldIn.getTileEntity(blockPos);
|
||||
if (te instanceof KineticTileEntity)
|
||||
((KineticTileEntity) te).detachKinetics();
|
||||
}
|
||||
|
||||
if (blockState.getBlock() instanceof GantryShaftBlock)
|
||||
worldIn.setBlockState(blockPos, blockState.with(POWERED, shouldPower), 2);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean shouldBePowered(BlockState state, World worldIn, BlockPos pos) {
|
||||
boolean shouldPower = worldIn.isBlockPowered(pos);
|
||||
|
||||
Direction facing = state.get(FACING);
|
||||
for (Direction d : Iterate.directionsInAxis(facing.getAxis())) {
|
||||
BlockPos neighbourPos = pos.offset(d);
|
||||
if (!worldIn.isBlockPresent(neighbourPos))
|
||||
continue;
|
||||
BlockState neighbourState = worldIn.getBlockState(neighbourPos);
|
||||
if (!(neighbourState.getBlock() instanceof GantryShaftBlock))
|
||||
continue;
|
||||
if (neighbourState.get(FACING) != facing)
|
||||
continue;
|
||||
shouldPower |= neighbourState.get(POWERED);
|
||||
}
|
||||
|
||||
return shouldPower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
return face.getAxis() == state.get(FACING)
|
||||
.getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Axis getRotationAxis(BlockState state) {
|
||||
return state.get(FACING)
|
||||
.getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return AllTileEntities.GANTRY_SHAFT.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
|
||||
return super.areStatesKineticallyEquivalent(oldState, newState)
|
||||
&& oldState.get(POWERED) == newState.get(POWERED);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
package com.simibubi.create.content.contraptions.relays.advanced;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryPinionBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryPinionTileEntity;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
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.math.MathHelper;
|
||||
|
||||
public class GantryShaftTileEntity extends KineticTileEntity {
|
||||
|
||||
public GantryShaftTileEntity(TileEntityType<?> typeIn) {
|
||||
super(typeIn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSpeedChanged(float previousSpeed) {
|
||||
super.onSpeedChanged(previousSpeed);
|
||||
|
||||
if (!canAssembleOn())
|
||||
return;
|
||||
for (Direction d : Iterate.directions) {
|
||||
if (d.getAxis() == getBlockState().get(GantryShaftBlock.FACING)
|
||||
.getAxis())
|
||||
continue;
|
||||
BlockPos offset = pos.offset(d);
|
||||
BlockState pinionState = world.getBlockState(offset);
|
||||
if (!AllBlocks.GANTRY_PINION.has(pinionState))
|
||||
continue;
|
||||
if (pinionState.get(GantryPinionBlock.FACING) != d)
|
||||
continue;
|
||||
TileEntity tileEntity = world.getTileEntity(offset);
|
||||
if (tileEntity instanceof GantryPinionTileEntity)
|
||||
((GantryPinionTileEntity) tileEntity).queueAssembly();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff,
|
||||
boolean connectedViaAxes, boolean connectedViaCogs) {
|
||||
float defaultModifier =
|
||||
super.propagateRotationTo(target, stateFrom, stateTo, diff, connectedViaAxes, connectedViaCogs);
|
||||
|
||||
if (connectedViaAxes)
|
||||
return defaultModifier;
|
||||
if (!stateFrom.get(GantryShaftBlock.POWERED))
|
||||
return defaultModifier;
|
||||
if (!AllBlocks.GANTRY_PINION.has(stateTo))
|
||||
return defaultModifier;
|
||||
|
||||
Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ());
|
||||
if (stateTo.get(GantryPinionBlock.FACING) != direction)
|
||||
return defaultModifier;
|
||||
return GantryPinionTileEntity.getGantryPinionModifier(stateFrom.get(GantryShaftBlock.FACING),
|
||||
stateTo.get(GantryPinionBlock.FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomConnection(KineticTileEntity other, BlockState state, BlockState otherState) {
|
||||
if (!AllBlocks.GANTRY_PINION.has(otherState))
|
||||
return false;
|
||||
final BlockPos diff = other.getPos()
|
||||
.subtract(pos);
|
||||
Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ());
|
||||
return otherState.get(GantryPinionBlock.FACING) == direction;
|
||||
}
|
||||
|
||||
public boolean canAssembleOn() {
|
||||
BlockState blockState = getBlockState();
|
||||
if (!AllBlocks.GANTRY_SHAFT.has(blockState))
|
||||
return false;
|
||||
if (blockState.get(GantryShaftBlock.POWERED))
|
||||
return false;
|
||||
float speed = getPinionMovementSpeed();
|
||||
|
||||
switch (blockState.get(GantryShaftBlock.PART)) {
|
||||
case END:
|
||||
return speed < 0;
|
||||
case MIDDLE:
|
||||
return speed != 0;
|
||||
case START:
|
||||
return speed > 0;
|
||||
case SINGLE:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public float getPinionMovementSpeed() {
|
||||
BlockState blockState = getBlockState();
|
||||
if (!AllBlocks.GANTRY_SHAFT.has(blockState))
|
||||
return 0;
|
||||
return MathHelper.clamp(-getSpeed() / 512f, -.49f, .49f);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,16 +1,21 @@
|
|||
package com.simibubi.create.content.contraptions.relays.advanced;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.CogwheelBlockItem;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
||||
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
||||
import com.simibubi.create.foundation.utility.placement.PlacementOffset;
|
||||
|
||||
import mcp.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
|
@ -27,9 +32,7 @@ import net.minecraft.util.math.shapes.VoxelShape;
|
|||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class SpeedControllerBlock extends HorizontalAxisKineticBlock {
|
||||
public class SpeedControllerBlock extends HorizontalAxisKineticBlock implements ITE<SpeedControllerTileEntity> {
|
||||
|
||||
private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper());
|
||||
|
||||
|
@ -41,17 +44,28 @@ public class SpeedControllerBlock extends HorizontalAxisKineticBlock {
|
|||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return AllTileEntities.ROTATION_SPEED_CONTROLLER.create();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
BlockState above = context.getWorld().getBlockState(context.getPos().up());
|
||||
if (CogWheelBlock.isLargeCog(above) && above.get(CogWheelBlock.AXIS).isHorizontal())
|
||||
BlockState above = context.getWorld()
|
||||
.getBlockState(context.getPos()
|
||||
.up());
|
||||
if (CogWheelBlock.isLargeCog(above) && above.get(CogWheelBlock.AXIS)
|
||||
.isHorizontal())
|
||||
return getDefaultState().with(HORIZONTAL_AXIS, above.get(CogWheelBlock.AXIS) == Axis.X ? Axis.Z : Axis.X);
|
||||
return super.getStateForPlacement(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult ray) {
|
||||
public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, BlockPos neighbourPos,
|
||||
boolean p_220069_6_) {
|
||||
if (neighbourPos.equals(pos.up()))
|
||||
withTileEntityDo(world, pos, SpeedControllerTileEntity::updateBracket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand,
|
||||
BlockRayTraceResult ray) {
|
||||
|
||||
IPlacementHelper helper = PlacementHelpers.get(placementHelperId);
|
||||
ItemStack heldItem = player.getHeldItem(hand);
|
||||
|
@ -72,7 +86,7 @@ public class SpeedControllerBlock extends HorizontalAxisKineticBlock {
|
|||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
|
||||
return AllShapes.SPEED_CONTROLLER.get(state.get(HORIZONTAL_AXIS));
|
||||
return AllShapes.SPEED_CONTROLLER;
|
||||
}
|
||||
|
||||
@MethodsReturnNonnullByDefault
|
||||
|
@ -90,12 +104,15 @@ public class SpeedControllerBlock extends HorizontalAxisKineticBlock {
|
|||
@Override
|
||||
public PlacementOffset getOffset(World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) {
|
||||
BlockPos newPos = pos.up();
|
||||
if (!world.getBlockState(newPos).getMaterial().isReplaceable())
|
||||
if (!world.getBlockState(newPos)
|
||||
.getMaterial()
|
||||
.isReplaceable())
|
||||
return PlacementOffset.fail();
|
||||
|
||||
Axis newAxis = state.get(HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X;
|
||||
|
||||
if (CogwheelBlockItem.DiagonalCogHelper.hasLargeCogwheelNeighbor(world, newPos, newAxis) || CogwheelBlockItem.DiagonalCogHelper.hasSmallCogwheelNeighbor(world, newPos, newAxis))
|
||||
if (CogwheelBlockItem.DiagonalCogHelper.hasLargeCogwheelNeighbor(world, newPos, newAxis)
|
||||
|| CogwheelBlockItem.DiagonalCogHelper.hasSmallCogwheelNeighbor(world, newPos, newAxis))
|
||||
return PlacementOffset.fail();
|
||||
|
||||
return PlacementOffset.success(newPos, s -> s.with(CogWheelBlock.AXIS, newAxis));
|
||||
|
@ -103,7 +120,14 @@ public class SpeedControllerBlock extends HorizontalAxisKineticBlock {
|
|||
|
||||
@Override
|
||||
public void renderAt(BlockPos pos, BlockState state, BlockRayTraceResult ray, PlacementOffset offset) {
|
||||
IPlacementHelper.renderArrow(VecHelper.getCenterOf(pos), VecHelper.getCenterOf(offset.getPos()), Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, state.get(HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X));
|
||||
IPlacementHelper.renderArrow(VecHelper.getCenterOf(pos), VecHelper.getCenterOf(offset.getPos()),
|
||||
Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE,
|
||||
state.get(HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<SpeedControllerTileEntity> getTileEntityClass() {
|
||||
return SpeedControllerTileEntity.class;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,22 @@
|
|||
package com.simibubi.create.content.contraptions.relays.advanced;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.SuperByteBuffer;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SpeedControllerRenderer extends SmartTileEntityRenderer<SpeedControllerTileEntity> {
|
||||
|
||||
|
@ -18,16 +26,30 @@ public class SpeedControllerRenderer extends SmartTileEntityRenderer<SpeedContro
|
|||
|
||||
@Override
|
||||
protected void renderSafe(SpeedControllerTileEntity tileEntityIn, float partialTicks, MatrixStack ms,
|
||||
IRenderTypeBuffer buffer, int light, int overlay) {
|
||||
IRenderTypeBuffer buffer, int light, int overlay) {
|
||||
super.renderSafe(tileEntityIn, partialTicks, ms, buffer, light, overlay);
|
||||
|
||||
KineticTileEntityRenderer.renderRotatingBuffer(tileEntityIn, getRotatedModel(tileEntityIn), ms,
|
||||
buffer.getBuffer(RenderType.getSolid()), light);
|
||||
IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid());
|
||||
KineticTileEntityRenderer.renderRotatingBuffer(tileEntityIn, getRotatedModel(tileEntityIn), ms, builder, light);
|
||||
|
||||
if (!tileEntityIn.hasBracket)
|
||||
return;
|
||||
|
||||
BlockPos pos = tileEntityIn.getPos();
|
||||
World world = tileEntityIn.getWorld();
|
||||
BlockState blockState = tileEntityIn.getBlockState();
|
||||
|
||||
SuperByteBuffer bracket = AllBlockPartials.SPEED_CONTROLLER_BRACKET.renderOn(blockState);
|
||||
bracket.translate(0, 1, 0);
|
||||
bracket.rotateCentered(Direction.UP,
|
||||
(float) (blockState.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X ? Math.PI : 0));
|
||||
bracket.light(WorldRenderer.getLightmapCoordinates(world, pos.up()));
|
||||
bracket.renderInto(ms, builder);
|
||||
}
|
||||
|
||||
private SuperByteBuffer getRotatedModel(SpeedControllerTileEntity te) {
|
||||
return CreateClient.bufferCache.renderBlockIn(KineticTileEntityRenderer.KINETIC_TILE,
|
||||
KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)));
|
||||
KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,9 +2,11 @@ package com.simibubi.create.content.contraptions.relays.advanced;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.RotationPropagator;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.motor.CreativeMotorTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform;
|
||||
|
@ -22,8 +24,17 @@ public class SpeedControllerTileEntity extends KineticTileEntity {
|
|||
public static final int DEFAULT_SPEED = 16;
|
||||
protected ScrollValueBehaviour targetSpeed;
|
||||
|
||||
boolean hasBracket;
|
||||
|
||||
public SpeedControllerTileEntity(TileEntityType<? extends SpeedControllerTileEntity> type) {
|
||||
super(type);
|
||||
hasBracket = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lazyTick() {
|
||||
super.lazyTick();
|
||||
updateBracket();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -56,7 +67,7 @@ public class SpeedControllerTileEntity extends KineticTileEntity {
|
|||
}
|
||||
|
||||
public static float getConveyedSpeed(KineticTileEntity cogWheel, KineticTileEntity speedControllerIn,
|
||||
boolean targetingController) {
|
||||
boolean targetingController) {
|
||||
if (!(speedControllerIn instanceof SpeedControllerTileEntity))
|
||||
return 0;
|
||||
|
||||
|
@ -74,7 +85,7 @@ public class SpeedControllerTileEntity extends KineticTileEntity {
|
|||
}
|
||||
|
||||
public static float getDesiredOutputSpeed(KineticTileEntity cogWheel, KineticTileEntity speedControllerIn,
|
||||
boolean targetingController) {
|
||||
boolean targetingController) {
|
||||
SpeedControllerTileEntity speedController = (SpeedControllerTileEntity) speedControllerIn;
|
||||
float targetSpeed = speedController.targetSpeed.getValue();
|
||||
float speed = speedControllerIn.getTheoreticalSpeed();
|
||||
|
@ -103,16 +114,25 @@ public class SpeedControllerTileEntity extends KineticTileEntity {
|
|||
return targetSpeed;
|
||||
}
|
||||
|
||||
public void updateBracket() {
|
||||
if (world == null || !world.isRemote)
|
||||
return;
|
||||
BlockState stateAbove = world.getBlockState(pos.up());
|
||||
hasBracket = AllBlocks.LARGE_COGWHEEL.has(stateAbove) && stateAbove.get(CogWheelBlock.AXIS)
|
||||
.isHorizontal();
|
||||
}
|
||||
|
||||
private class ControllerValueBoxTransform extends ValueBoxTransform.Sided {
|
||||
|
||||
@Override
|
||||
protected Vec3d getSouthLocation() {
|
||||
return VecHelper.voxelSpace(8, 11.5f, 14);
|
||||
return VecHelper.voxelSpace(8, 11f, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isSideActive(BlockState state, Direction direction) {
|
||||
if (direction.getAxis().isVertical())
|
||||
if (direction.getAxis()
|
||||
.isVertical())
|
||||
return false;
|
||||
return state.get(SpeedControllerBlock.HORIZONTAL_AXIS) != direction.getAxis();
|
||||
}
|
||||
|
|
|
@ -68,6 +68,11 @@ public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implemen
|
|||
withTileEntityDo(worldIn, pos, SequencedGearshiftTileEntity::onRedstoneUpdate);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
if (state.get(VERTICAL))
|
||||
|
|
|
@ -87,6 +87,12 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
|
|||
p_149666_2_.add(AllItems.BELT_CONNECTOR.asStack());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
|
||||
return super.areStatesKineticallyEquivalent(oldState.with(CASING, false), newState.with(CASING, false))
|
||||
&& oldState.get(PART) == newState.get(PART);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
if (face.getAxis() != getRotationAxis(state))
|
||||
|
|
|
@ -13,6 +13,7 @@ import java.util.Optional;
|
|||
import java.util.function.Function;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler;
|
||||
|
@ -203,7 +204,7 @@ public class BeltTileEntity extends KineticTileEntity {
|
|||
|
||||
color = compound.contains("Dye") ? Optional.of(NBTHelper.readEnum(compound, "Dye", DyeColor.class))
|
||||
: Optional.empty();
|
||||
|
||||
|
||||
if (!wasMoved) {
|
||||
if (!isController())
|
||||
controller = NBTUtil.readBlockPos(compound.getCompound("Controller"));
|
||||
|
@ -242,7 +243,7 @@ public class BeltTileEntity extends KineticTileEntity {
|
|||
return;
|
||||
} else if (color.isPresent() && color.get() == colorIn)
|
||||
return;
|
||||
|
||||
|
||||
for (BlockPos blockPos : BeltBlock.getBeltChain(world, getController())) {
|
||||
BeltTileEntity belt = BeltHelper.getSegmentTE(world, blockPos);
|
||||
if (belt == null)
|
||||
|
@ -480,4 +481,18 @@ public class BeltTileEntity extends KineticTileEntity {
|
|||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canPropagateDiagonally(IRotate block, BlockState state) {
|
||||
return state.has(BeltBlock.SLOPE)
|
||||
&& (state.get(BeltBlock.SLOPE) == BeltSlope.UPWARD || state.get(BeltBlock.SLOPE) == BeltSlope.DOWNWARD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff,
|
||||
boolean connectedViaAxes, boolean connectedViaCogs) {
|
||||
if (target instanceof BeltTileEntity && !connectedViaAxes)
|
||||
return getController().equals(((BeltTileEntity) target).getController()) ? 1 : 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,12 +2,16 @@ package com.simibubi.create.content.contraptions.relays.elementary;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class SimpleKineticTileEntity extends KineticTileEntity {
|
||||
|
||||
|
@ -28,4 +32,17 @@ public class SimpleKineticTileEntity extends KineticTileEntity {
|
|||
return new AxisAlignedBB(pos).grow(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BlockPos> addPropagationLocations(IRotate block, BlockState state, List<BlockPos> neighbours) {
|
||||
if (!AllBlocks.LARGE_COGWHEEL.has(state))
|
||||
return super.addPropagationLocations(block, state, neighbours);
|
||||
|
||||
BlockPos.getAllInBox(new BlockPos(-1, -1, -1), new BlockPos(1, 1, 1))
|
||||
.forEach(offset -> {
|
||||
if (offset.distanceSq(0, 0, 0, false) == BlockPos.ZERO.distanceSq(1, 1, 0, false))
|
||||
neighbours.add(pos.add(offset));
|
||||
});
|
||||
return neighbours;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ public class AdjustablePulleyBlock extends EncasedBeltBlock implements ITE<Adjus
|
|||
|
||||
@Override
|
||||
public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
super.onBlockAdded(state, worldIn, pos, oldState, isMoving);
|
||||
if (oldState.getBlock() == state.getBlock())
|
||||
return;
|
||||
withTileEntityDo(worldIn, pos, AdjustablePulleyTileEntity::neighborChanged);
|
||||
|
@ -48,12 +49,19 @@ public class AdjustablePulleyBlock extends EncasedBeltBlock implements ITE<Adjus
|
|||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
return super.getStateForPlacement(context).with(POWERED, context.getWorld().isBlockPowered(context.getPos()));
|
||||
return super.getStateForPlacement(context).with(POWERED, context.getWorld()
|
||||
.isBlockPowered(context.getPos()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
|
||||
return super.areStatesKineticallyEquivalent(oldState, newState)
|
||||
&& oldState.get(POWERED) == newState.get(POWERED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
|
||||
boolean isMoving) {
|
||||
boolean isMoving) {
|
||||
if (worldIn.isRemote)
|
||||
return;
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import com.simibubi.create.foundation.utility.Lang;
|
|||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.material.PushReaction;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
|
@ -17,6 +16,7 @@ import net.minecraft.state.BooleanProperty;
|
|||
import net.minecraft.state.EnumProperty;
|
||||
import net.minecraft.state.IProperty;
|
||||
import net.minecraft.state.StateContainer.Builder;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
|
@ -125,12 +125,23 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock {
|
|||
.with(CONNECTED_ALONG_FIRST_COORDINATE, connectionAlongFirst);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) {
|
||||
if (originalState.get(PART) == Part.NONE)
|
||||
return super.getRotatedBlockState(originalState, targetedFace);
|
||||
return super.getRotatedBlockState(originalState,
|
||||
Direction.getFacingFromAxis(AxisDirection.POSITIVE, getConnectionAxis(originalState)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) {
|
||||
Blocks.AIR.getDefaultState()
|
||||
.updateNeighbors(context.getWorld(), context.getPos(), 1);
|
||||
// Blocks.AIR.getDefaultState()
|
||||
// .updateNeighbors(context.getWorld(), context.getPos(), 1);
|
||||
Axis axis = newState.get(AXIS);
|
||||
newState = getDefaultState().with(AXIS, axis);
|
||||
if (newState.has(BlockStateProperties.POWERED))
|
||||
newState = newState.with(BlockStateProperties.POWERED, context.getWorld()
|
||||
.isBlockPowered(context.getPos()));
|
||||
for (Direction facing : Iterate.directions) {
|
||||
if (facing.getAxis() == axis)
|
||||
continue;
|
||||
|
@ -139,7 +150,7 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock {
|
|||
newState = updatePostPlacement(newState, facing, context.getWorld()
|
||||
.getBlockState(offset), context.getWorld(), pos, offset);
|
||||
}
|
||||
newState.updateNeighbors(context.getWorld(), context.getPos(), 1 | 2);
|
||||
// newState.updateNeighbors(context.getWorld(), context.getPos(), 1 | 2);
|
||||
return newState;
|
||||
}
|
||||
|
||||
|
@ -155,15 +166,8 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock {
|
|||
|
||||
public static boolean areBlocksConnected(BlockState state, BlockState other, Direction facing) {
|
||||
Part part = state.get(PART);
|
||||
Axis axis = state.get(AXIS);
|
||||
boolean connectionAlongFirst = state.get(CONNECTED_ALONG_FIRST_COORDINATE);
|
||||
Axis connectionAxis =
|
||||
connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) : (axis == Axis.Z ? Axis.Y : Axis.Z);
|
||||
|
||||
Axis otherAxis = other.get(AXIS);
|
||||
boolean otherConnection = other.get(CONNECTED_ALONG_FIRST_COORDINATE);
|
||||
Axis otherConnectionAxis =
|
||||
otherConnection ? (otherAxis == Axis.X ? Axis.Y : Axis.X) : (otherAxis == Axis.Z ? Axis.Y : Axis.Z);
|
||||
Axis connectionAxis = getConnectionAxis(state);
|
||||
Axis otherConnectionAxis = getConnectionAxis(other);
|
||||
|
||||
if (otherConnectionAxis != connectionAxis)
|
||||
return false;
|
||||
|
@ -177,6 +181,14 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock {
|
|||
return false;
|
||||
}
|
||||
|
||||
protected static Axis getConnectionAxis(BlockState state) {
|
||||
Axis axis = state.get(AXIS);
|
||||
boolean connectionAlongFirst = state.get(CONNECTED_ALONG_FIRST_COORDINATE);
|
||||
Axis connectionAxis =
|
||||
connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) : (axis == Axis.Z ? Axis.Y : Axis.Z);
|
||||
return connectionAxis;
|
||||
}
|
||||
|
||||
public static float getRotationSpeedModifier(KineticTileEntity from, KineticTileEntity to) {
|
||||
float fromMod = 1;
|
||||
float toMod = 1;
|
||||
|
|
|
@ -44,7 +44,8 @@ public interface IWrenchable {
|
|||
}
|
||||
|
||||
default BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) {
|
||||
return newState;
|
||||
// return newState;
|
||||
return Block.getValidBlockForPosition(newState, context.getWorld(), context.getPos());
|
||||
}
|
||||
|
||||
default ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) {
|
||||
|
|
|
@ -177,7 +177,7 @@ public class SchematicWorld extends WrappedWorld {
|
|||
@Override
|
||||
public boolean setBlockState(BlockPos pos, BlockState arg1, int arg2) {
|
||||
pos = pos.subtract(anchor);
|
||||
bounds.expandTo(new MutableBoundingBox(pos, pos.add(1, 1, 1)));
|
||||
bounds.expandTo(new MutableBoundingBox(pos, pos));
|
||||
blocks.put(pos, arg1);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.simibubi.create.AllItems;
|
|||
import com.simibubi.create.AllKeys;
|
||||
import com.simibubi.create.content.schematics.SchematicWorld;
|
||||
import com.simibubi.create.content.schematics.client.tools.Tools;
|
||||
import com.simibubi.create.content.schematics.filtering.SchematicInstances;
|
||||
import com.simibubi.create.content.schematics.item.SchematicItem;
|
||||
import com.simibubi.create.content.schematics.packet.SchematicPlacePacket;
|
||||
import com.simibubi.create.content.schematics.packet.SchematicSyncPacket;
|
||||
|
@ -318,6 +319,7 @@ public class SchematicHandler {
|
|||
CompoundNBT nbt = activeSchematicItem.getTag();
|
||||
nbt.putBoolean("Deployed", false);
|
||||
activeSchematicItem.setTag(nbt);
|
||||
SchematicInstances.clearHash(activeSchematicItem);
|
||||
renderers.forEach(r -> r.setActive(false));
|
||||
active = false;
|
||||
markDirty();
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
package com.simibubi.create.content.schematics.filtering;
|
||||
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.simibubi.create.content.schematics.SchematicWorld;
|
||||
import com.simibubi.create.content.schematics.item.SchematicItem;
|
||||
import com.simibubi.create.foundation.utility.Debug;
|
||||
import com.simibubi.create.foundation.utility.WorldAttached;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.NBTUtil;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.feature.template.PlacementSettings;
|
||||
import net.minecraft.world.gen.feature.template.Template;
|
||||
|
||||
public class SchematicInstances {
|
||||
|
||||
public static WorldAttached<Cache<Integer, SchematicWorld>> loadedSchematics;
|
||||
|
||||
static {
|
||||
loadedSchematics = new WorldAttached<>(() -> CacheBuilder.newBuilder()
|
||||
.expireAfterAccess(5, TimeUnit.MINUTES)
|
||||
.build());
|
||||
}
|
||||
|
||||
public static void register() {}
|
||||
|
||||
@Nullable
|
||||
public static SchematicWorld get(World world, ItemStack schematic) {
|
||||
Cache<Integer, SchematicWorld> map = loadedSchematics.get(world);
|
||||
int hash = getHash(schematic);
|
||||
try {
|
||||
return map.get(hash, () -> loadWorld(world, schematic));
|
||||
} catch (ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static SchematicWorld loadWorld(World wrapped, ItemStack schematic) {
|
||||
if (schematic == null || !schematic.hasTag())
|
||||
return null;
|
||||
if (!schematic.getTag()
|
||||
.getBoolean("Deployed"))
|
||||
return null;
|
||||
|
||||
Template activeTemplate = SchematicItem.loadSchematic(schematic);
|
||||
|
||||
if (activeTemplate.getSize()
|
||||
.equals(BlockPos.ZERO))
|
||||
return null;
|
||||
|
||||
BlockPos anchor = NBTUtil.readBlockPos(schematic.getTag()
|
||||
.getCompound("Anchor"));
|
||||
SchematicWorld world = new SchematicWorld(anchor, wrapped);
|
||||
PlacementSettings settings = SchematicItem.getSettings(schematic);
|
||||
activeTemplate.addBlocksToWorld(world, anchor, settings);
|
||||
|
||||
Debug.debugChat("Loading Schematic Instance of " + schematic.getTag()
|
||||
.getString("File") + ". Total active instances: " + (loadedSchematics.get(wrapped).size() + 1));
|
||||
|
||||
|
||||
return world;
|
||||
}
|
||||
|
||||
public static void clearHash(ItemStack schematic) {
|
||||
if (schematic == null || !schematic.hasTag())
|
||||
return;
|
||||
schematic.getTag()
|
||||
.remove("SchematicHash");
|
||||
}
|
||||
|
||||
public static int getHash(ItemStack schematic) {
|
||||
if (schematic == null || !schematic.hasTag())
|
||||
return -1;
|
||||
CompoundNBT tag = schematic.getTag();
|
||||
if (!tag.contains("SchematicHash"))
|
||||
tag.putInt("SchematicHash", tag.toString()
|
||||
.hashCode());
|
||||
return tag.getInt("SchematicHash");
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,7 @@ import org.apache.commons.io.IOUtils;
|
|||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.schematics.client.SchematicEditScreen;
|
||||
import com.simibubi.create.content.schematics.filtering.SchematicInstances;
|
||||
import com.simibubi.create.foundation.gui.ScreenOpener;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
|
@ -87,6 +88,7 @@ public class SchematicItem extends Item {
|
|||
Template t = loadSchematic(blueprint);
|
||||
tag.put("Bounds", NBTUtil.writeBlockPos(t.getSize()));
|
||||
blueprint.setTag(tag);
|
||||
SchematicInstances.clearHash(blueprint);
|
||||
}
|
||||
|
||||
public static PlacementSettings getSettings(ItemStack blueprint) {
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.simibubi.create.content.schematics.packet;
|
|||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.schematics.filtering.SchematicInstances;
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
|
@ -70,6 +71,7 @@ public class SchematicSyncPacket extends SimplePacketBase {
|
|||
tag.put("Anchor", NBTUtil.writeBlockPos(anchor));
|
||||
tag.putString("Rotation", rotation.name());
|
||||
tag.putString("Mirror", mirror.name());
|
||||
SchematicInstances.clearHash(stack);
|
||||
});
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ public class AllCommands {
|
|||
.then(ToggleDebugCommand.register())
|
||||
.then(OverlayConfigCommand.register())
|
||||
.then(FixLightingCommand.register())
|
||||
.then(ReplaceInCommandBlocksCommand.register())
|
||||
|
||||
//dev-util
|
||||
//Comment out for release
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
package com.simibubi.create.foundation.command;
|
||||
|
||||
import org.apache.commons.lang3.mutable.MutableInt;
|
||||
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.builder.ArgumentBuilder;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.CommandBlockBlock;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.command.Commands;
|
||||
import net.minecraft.command.arguments.BlockPosArgument;
|
||||
import net.minecraft.tileentity.CommandBlockLogic;
|
||||
import net.minecraft.tileentity.CommandBlockTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraft.world.server.ServerWorld;
|
||||
|
||||
public class ReplaceInCommandBlocksCommand {
|
||||
|
||||
public static ArgumentBuilder<CommandSource, ?> register() {
|
||||
return Commands.literal("replaceInCommandBlocks")
|
||||
.requires(cs -> cs.hasPermissionLevel(0))
|
||||
.then(Commands.argument("begin", BlockPosArgument.blockPos())
|
||||
.then(Commands.argument("end", BlockPosArgument.blockPos())
|
||||
.then(Commands.argument("toReplace", StringArgumentType.string())
|
||||
.then(Commands.argument("replaceWith", StringArgumentType.string())
|
||||
.executes(ctx -> {
|
||||
doReplace(ctx.getSource(), BlockPosArgument.getLoadedBlockPos(ctx, "begin"),
|
||||
BlockPosArgument.getLoadedBlockPos(ctx, "end"),
|
||||
StringArgumentType.getString(ctx, "toReplace"),
|
||||
StringArgumentType.getString(ctx, "replaceWith"));
|
||||
return 1;
|
||||
})))));
|
||||
|
||||
}
|
||||
|
||||
private static void doReplace(CommandSource source, BlockPos from, BlockPos to, String toReplace,
|
||||
String replaceWith) {
|
||||
ServerWorld world = source.getWorld();
|
||||
MutableInt blocks = new MutableInt(0);
|
||||
BlockPos.getAllInBox(from, to)
|
||||
.forEach(pos -> {
|
||||
BlockState blockState = world.getBlockState(pos);
|
||||
if (!(blockState.getBlock() instanceof CommandBlockBlock))
|
||||
return;
|
||||
TileEntity tileEntity = world.getTileEntity(pos);
|
||||
if (!(tileEntity instanceof CommandBlockTileEntity))
|
||||
return;
|
||||
CommandBlockTileEntity cb = (CommandBlockTileEntity) tileEntity;
|
||||
CommandBlockLogic commandBlockLogic = cb.getCommandBlockLogic();
|
||||
String command = commandBlockLogic.getCommand();
|
||||
if (command.indexOf(toReplace) != -1)
|
||||
blocks.increment();
|
||||
commandBlockLogic.setCommand(command.replaceAll(toReplace, replaceWith));
|
||||
cb.markDirty();
|
||||
world.notifyBlockUpdate(pos, blockState, blockState, 2);
|
||||
});
|
||||
int intValue = blocks.intValue();
|
||||
if (intValue == 0) {
|
||||
source.sendFeedback(new StringTextComponent("Couldn't find \"" + toReplace + "\" anywhere."), true);
|
||||
return;
|
||||
}
|
||||
source.sendFeedback(
|
||||
new StringTextComponent("Replaced occurrences in " + intValue + " blocks."),
|
||||
true);
|
||||
}
|
||||
|
||||
}
|
|
@ -317,6 +317,23 @@ public class StandardRecipeGen extends CreateRecipeProvider {
|
|||
.patternLine("P")
|
||||
.patternLine("A")
|
||||
.patternLine("P")),
|
||||
|
||||
GANTRY_PINION = create(AllBlocks.GANTRY_PINION).unlockedBy(I::andesiteCasing)
|
||||
.viaShaped(b -> b.key('B', ItemTags.PLANKS)
|
||||
.key('S', I.cog())
|
||||
.key('C', I.andesiteCasing())
|
||||
.key('I', I.shaft())
|
||||
.patternLine(" B ")
|
||||
.patternLine("ICI")
|
||||
.patternLine(" S ")),
|
||||
|
||||
GANTRY_SHAFT = create(AllBlocks.GANTRY_SHAFT).returns(8)
|
||||
.unlockedBy(I::andesite)
|
||||
.viaShaped(b -> b.key('A', I.andesite())
|
||||
.key('R', I.redstone())
|
||||
.patternLine("A")
|
||||
.patternLine("R")
|
||||
.patternLine("A")),
|
||||
|
||||
ANALOG_LEVER = create(AllBlocks.ANALOG_LEVER).unlockedBy(I::andesite)
|
||||
.viaShaped(b -> b.key('S', I.andesiteCasing())
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.util.function.Supplier;
|
|||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionDisassemblyPacket;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionStallPacket;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionUpdatePacket;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.GlueEffectPacket;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionFluidPacket;
|
||||
|
@ -79,6 +80,7 @@ public enum AllPackets {
|
|||
MINECART_CONTROLLER(MinecartControllerUpdatePacket.class, MinecartControllerUpdatePacket::new),
|
||||
FLUID_SPLASH(FluidSplashPacket.class, FluidSplashPacket::new),
|
||||
CONTRAPTION_FLUID(ContraptionFluidPacket.class, ContraptionFluidPacket::new),
|
||||
GANTRY_UPDATE(GantryContraptionUpdatePacket.class, GantryContraptionUpdatePacket::new),
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -1,10 +1,37 @@
|
|||
Hi there!
|
||||
Looking to contribute with a localization? Wonderful.
|
||||
Looking to contribute with a localization? Here's how:
|
||||
|
||||
You will find the full english lang file here:
|
||||
https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/generated/resources/assets/create/lang/en_us.json
|
||||
|
||||
If you want to complete an outdated lang file, check out
|
||||
1. Check if your language is already present in an outdated state:
|
||||
|
||||
https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/generated/resources/assets/create/lang/unfinished
|
||||
Missing entries have been added to these templates, marked with "UNLOCALIZED".
|
||||
These files are only there to help you, finished langs still belong in the folder this readme is in. Best of luck!
|
||||
Shows generated lang files that are composed of any old translation file in the official lang folder as well as placeholder entries of new content added since.
|
||||
NOTICE: this is not the true lang folder, changes to the files in that directory will be lost as they are auto-generated templates.
|
||||
|
||||
If your locale is present here, copy the file, and translate all entries that read "UNLOCALIZED".
|
||||
If you do not want to translate all of it, simply delete all entries that are still UNLOCALIZED, this will make it equivalent to an "outdated" lang file.
|
||||
Once you are finished, continue with step 3.
|
||||
|
||||
|
||||
|
||||
2. Creating a new localization file
|
||||
|
||||
If you couldn't find a started translation in the previous step:
|
||||
Grab a copy of the full standard localization file here:
|
||||
https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/generated/resources/assets/create/lang/en_us.json
|
||||
Rename your copied file to the locale it is targeting, and start making your translations by replacing the english text.
|
||||
Once you are finished, continue with step 3.
|
||||
|
||||
|
||||
|
||||
3. Publishing your changes
|
||||
|
||||
Any lang file you created or changed belongs into this folder:
|
||||
https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/main/resources/assets/create/lang
|
||||
This is the lang folder you found this readme in.
|
||||
You can either open a pull request inserting your file for us, or get in contact on the feedback & help channel linked on Create's project page (CurseForge).
|
||||
NOTICE: when making PRs, always target the main branch unless your changes are exclusive to a different version of minecraft than the one the main branch is on.
|
||||
|
||||
|
||||
|
||||
Thank you kindly for your contribution!
|
||||
|
|
|
@ -1,214 +1,271 @@
|
|||
{
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
"block.create.acacia_window": "Akazienfenster",
|
||||
"block.create.acacia_window_pane": "Akazienfensterscheibe",
|
||||
"block.create.adjustable_chain_gearshift": "Verstellbares Kettengetriebe",
|
||||
"block.create.adjustable_crate": "Verstellbare Kiste",
|
||||
"block.create.adjustable_pulse_repeater": "Verstellbarer Pulsverstärker",
|
||||
"block.create.adjustable_repeater": "Verstellbarer Verstärker",
|
||||
"block.create.analog_lever": "Analoger Schalter",
|
||||
"block.create.andesite_belt_funnel": "Riementrichter aus Andesit",
|
||||
"block.create.andesite_bricks": "Andesitziegel",
|
||||
"block.create.andesite_bricks_slab": "Andesitziegelstufe",
|
||||
"block.create.andesite_bricks_stairs": "Andesitziegeltreppe",
|
||||
"block.create.andesite_bricks_wall": "Andesitziegelmauer",
|
||||
"block.create.andesite_casing": "Andesitrahmen",
|
||||
"block.create.andesite_cobblestone": "Andesitbruchstein",
|
||||
"block.create.andesite_cobblestone_slab": "Andesitbruchsteinstufe",
|
||||
"block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe",
|
||||
"block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer",
|
||||
"block.create.andesite_encased_shaft": "Andesitummantelte Welle",
|
||||
"block.create.andesite_funnel": "Andesit Trichter",
|
||||
"block.create.andesite_pillar": "Andesitsäule",
|
||||
"block.create.andesite_tunnel": "Andesittunnel",
|
||||
"block.create.basin": "Behälter",
|
||||
"block.create.belt": "Mechanischer Riemen",
|
||||
"block.create.black_sail": "Schwarzes Segel",
|
||||
"block.create.black_seat": "Schwarzer Sitz",
|
||||
"block.create.black_valve_handle": "Schwarzer Ventilgriff",
|
||||
"block.create.blaze_burner": "Lohenbrenner",
|
||||
"block.create.blue_sail": "Blaues Segel",
|
||||
"block.create.blue_seat": "Blauer Sitz",
|
||||
"block.create.blue_valve_handle": "Blauer Ventilgriff",
|
||||
"block.create.brass_belt_funnel": "Riementrichter aus Messing",
|
||||
"block.create.brass_block": "Messing Block",
|
||||
"block.create.brass_casing": "Messingrahmen",
|
||||
"block.create.brass_encased_shaft": "Messingummantelte Welle",
|
||||
"block.create.brass_funnel": "Messingtrichter",
|
||||
"block.create.brass_tunnel": "Messingtunnel",
|
||||
"block.create.brown_sail": "Braunes Segel",
|
||||
"block.create.brown_seat": "Brauner Sitz",
|
||||
"block.create.brown_valve_handle": "Brauner Ventilgriff",
|
||||
"block.create.cart_assembler": "Lohrenmonteur",
|
||||
"block.create.chiseled_dark_scoria": "Gemeißelte dunkle Schlacke",
|
||||
"block.create.chiseled_dolomite": "Gemeißeltes Dolomit",
|
||||
"block.create.chiseled_gabbro": "Gemeißeltes Gabbro",
|
||||
"block.create.chiseled_limestone": "Gemeißelter Kalkstein",
|
||||
"block.create.chiseled_scoria": "Gemeißelte Schlacke",
|
||||
"block.create.chiseled_weathered_limestone": "Gemeißelter verwitterter Kalkstein",
|
||||
"block.create.chocolate": "Schokolade",
|
||||
"block.create.chute": "Rinne",
|
||||
"block.create.clockwork_bearing": "Uhrwerk-Lager",
|
||||
"block.create.clutch": "Kupplung",
|
||||
"block.create.cogwheel": "Zahnrad",
|
||||
"block.create.content_observer": "Inhalts Beobachter",
|
||||
"block.create.controller_rail": "Steureungsschiene",
|
||||
"block.create.copper_block": "Kupfer Block",
|
||||
"block.create.copper_casing": "Kupferrahmen",
|
||||
"block.create.copper_ore": "Kupfererz",
|
||||
"block.create.copper_shingles": "Kupferschindeln",
|
||||
"block.create.copper_tiles": "Kupferfliesen",
|
||||
"block.create.copper_valve_handle": "Kupfer Ventilgriff",
|
||||
"block.create.creative_crate": "Kreative anpassbare Kiste",
|
||||
"block.create.creative_fluid_tank": "Kreativer Flüssigkeitstank",
|
||||
"block.create.creative_motor": "Kreativer Motor",
|
||||
"block.create.crushing_wheel": "Mahlwerkrad",
|
||||
"block.create.crushing_wheel_controller": "Mahlwerkrad Steurung",
|
||||
"block.create.cuckoo_clock": "Kuckucksuhr",
|
||||
"block.create.cyan_sail": "Türkises Segel",
|
||||
"block.create.cyan_seat": "Türkiser Sitz",
|
||||
"block.create.cyan_valve_handle": "Türkiser Ventilgriff",
|
||||
"block.create.dark_oak_window": "Schwarzeichenholzfenster",
|
||||
"block.create.dark_oak_window_pane": "Schwarzeichenholzfensterscheibe",
|
||||
"block.create.dark_scoria": "Dunkle Schlacke",
|
||||
"block.create.dark_scoria_bricks": "Dunkle Schlackenziegel",
|
||||
"block.create.dark_scoria_bricks_slab": "Dunkle Schlackenziegelstufe",
|
||||
"block.create.dark_scoria_bricks_stairs": "Dunkle Schlackenziegeltreppe",
|
||||
"block.create.dark_scoria_bricks_wall": "Dunkle Schlackenziegelmauer",
|
||||
"block.create.dark_scoria_cobblestone": "Dunkler Schlackebruchstein",
|
||||
"block.create.dark_scoria_cobblestone_slab": "Dunkle Schlackebruchsteinstufe",
|
||||
"block.create.dark_scoria_cobblestone_stairs": "Dunkle Schlackebruchsteintreppe",
|
||||
"block.create.dark_scoria_cobblestone_wall": "Dunkle Schlackebruchsteinmauer",
|
||||
"block.create.dark_scoria_pillar": "Dunkle Schlackesäule",
|
||||
"block.create.deployer": "Einsatzgerät",
|
||||
"block.create.depot": "Depot",
|
||||
"block.create.diorite_bricks": "Dioritziegel",
|
||||
"block.create.diorite_bricks_slab": "Dioritziegelstufe",
|
||||
"block.create.diorite_bricks_stairs": "Dioritziegeltreppe",
|
||||
"block.create.diorite_bricks_wall": "Dioritziegelmauer",
|
||||
"block.create.diorite_cobblestone": "Dioritbruchstein",
|
||||
"block.create.diorite_cobblestone_slab": "Dioritbruchsteinstufe",
|
||||
"block.create.diorite_cobblestone_stairs": "Dioritbruchsteintreppe",
|
||||
"block.create.diorite_cobblestone_wall": "Dioritbruchsteinmauer",
|
||||
"block.create.diorite_pillar": "Dioritsäule",
|
||||
"block.create.dolomite": "Dolomit",
|
||||
"block.create.dolomite_bricks": "Dolomitziegel",
|
||||
"block.create.dolomite_bricks_slab": "Dolomitziegelstufe",
|
||||
"block.create.dolomite_bricks_stairs": "Dolomitziegeltreppe",
|
||||
"block.create.dolomite_bricks_wall": "Dolomitziegelmauer",
|
||||
"block.create.dolomite_cobblestone": "Dolomitbruchstein",
|
||||
"block.create.dolomite_cobblestone_slab": "Dolomitbruchsteinstufe",
|
||||
"block.create.dolomite_cobblestone_stairs": "Dolomitbruchsteintreppe",
|
||||
"block.create.dolomite_cobblestone_wall": "Dolomitbruchsteinmauer",
|
||||
"block.create.dolomite_pillar": "Dolomitsäule",
|
||||
"block.create.encased_chain_drive": "Ummantelter Kettenriemen",
|
||||
"block.create.encased_fan": "Ummantelter Lüfter",
|
||||
"block.create.encased_fluid_pipe": "Ummanteltes Rohr",
|
||||
"block.create.fancy_andesite_bricks": "Schicke Andesitziegel",
|
||||
"block.create.fancy_andesite_bricks_slab": "Schicke Andesitziegelstufe",
|
||||
"block.create.fancy_andesite_bricks_stairs": "Schicke Andesitziegeltreppe",
|
||||
"block.create.fancy_andesite_bricks_wall": "Schicke Andesitziegelmauer",
|
||||
"block.create.fancy_dark_scoria_bricks": "Schicke dunkle Schlackenziegel",
|
||||
"block.create.fancy_dark_scoria_bricks_slab": "Schicke dunkle Schlackenziegelstufe",
|
||||
"block.create.fancy_dark_scoria_bricks_stairs": "Schicke dunkle Schlackenziegeltreppe",
|
||||
"block.create.fancy_dark_scoria_bricks_wall": "Schicke dunkle Schlackenziegelmauer",
|
||||
"block.create.fluid_pipe": "Wasserrohr",
|
||||
"block.create.fluid_tank": "Wassertank",
|
||||
"block.create.fluid_valve": "Flüssigkeitsventil",
|
||||
"block.create.flywheel": "Schwungrad",
|
||||
"block.create.framed_glass": "Gerahmtes Glas",
|
||||
"block.create.framed_glass_pane": "Gerahmte Glasscheibe",
|
||||
"block.create.gabbro": "Gabbro",
|
||||
"block.create.gabbro_bricks": "Gabbroziegel",
|
||||
"block.create.gabbro_bricks_stairs": "Gabbroziegeltreppe",
|
||||
"block.create.gabbro_bricks_wall": "Gabbroziegelmauer",
|
||||
"block.create.gabbro_bricks_slab": "Gabbroziegelstufe",
|
||||
"block.create.gearbox": "Getriebe",
|
||||
"block.create.gearshift": "Gangschaltung",
|
||||
"block.create.glass_fluid_pipe": "Glaswasserrohr",
|
||||
"block.create.granite_bricks": "Granitziegel",
|
||||
"block.create.large_cogwheel": "Großes Zahnrad",
|
||||
"block.create.limesand": "Kalksand",
|
||||
"block.create.limestone": "Kalkstein",
|
||||
"block.create.limestone_bricks": "Kalksteinziegel",
|
||||
"block.create.limestone_bricks_slab": "Kalksteinziegelstufe",
|
||||
"block.create.limestone_bricks_stairs": "Kalksteinziegeltreppe",
|
||||
"block.create.limestone_bricks_wall": "Kalksteinziegelmauer",
|
||||
"block.create.limestone_pillar": "Kalksteinsäule",
|
||||
"block.create.linear_chassis": "Schubgerüst",
|
||||
"block.create.mechanical_bearing": "Mechanisches Lager",
|
||||
"block.create.mechanical_drill": "Mechanischer Bohrer",
|
||||
"block.create.mechanical_harvester": "Mechanische Erntemaschine",
|
||||
"block.create.mechanical_piston": "Mechanischer Kolben",
|
||||
"block.create.mechanical_piston_head": "Mechanisches Kolbenende",
|
||||
"block.create.mechanical_press": "Mechanische Presse",
|
||||
"block.create.piston_extension_pole": "Kolben-Pleuelverlängerung",
|
||||
"block.create.polished_dolomite": "Polierter Dolomit",
|
||||
"block.create.polished_gabbro": "Polierter Gabbro",
|
||||
"block.create.polished_limestone": "Polierter Kalkstein",
|
||||
"block.create.polished_limestone_slab": "Polierte Kalksteinstufe",
|
||||
"block.create.polished_weathered_limestone": "Polierter Verwitterter Kalkstein",
|
||||
"block.create.polished_weathered_limestone_slab": "Polierte Verwitterte Kalksteinstufe",
|
||||
"block.create.pulse_repeater": "Pulsierender Verstärker",
|
||||
"block.create.radial_chassis": "Drehgerüst",
|
||||
"block.create.redstone_contact": "Redstone-Kontakt",
|
||||
"block.create.redstone_link": "Redstone-Verbindung",
|
||||
"block.create.schematic_table": "Bauplantisch",
|
||||
"block.create.schematicannon": "Bauplankanone",
|
||||
"block.create.shaft": "Welle",
|
||||
"block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben",
|
||||
"block.create.stockpile_switch": "Vorratssensor",
|
||||
"block.create.tiled_glass": "Glasfliesen",
|
||||
"block.create.tiled_glass_pane": "Glasfliesenscheibe",
|
||||
"block.create.turntable": "Drehtisch",
|
||||
"block.create.water_wheel": "Wasserrad",
|
||||
"block.create.weathered_limestone": "Verwitterter Kalkstein",
|
||||
"block.create.weathered_limestone_bricks": "Verwitterte Kalksteinziegel",
|
||||
"block.create.weathered_limestone_bricks_slab": "Verwitterte Kalksteinziegelstufe",
|
||||
"block.create.weathered_limestone_bricks_stairs": "Verwitterte Kalksteinziegeltreppe",
|
||||
"block.create.weathered_limestone_bricks_wall": "Verwitterte Kalksteinziegelmauer",
|
||||
"block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule",
|
||||
|
||||
"item.create.belt_connector": "Mechanischer Riemen",
|
||||
"item.create.dough": "Teig",
|
||||
"item.create.empty_schematic": "Leerer Bauplan",
|
||||
"item.create.filter": "Filter",
|
||||
"item.create.handheld_blockzapper": "Blockpistole",
|
||||
"item.create.iron_sheet": "Eisenblech",
|
||||
"item.create.propeller": "Propeller",
|
||||
"item.create.rose_quartz": "Rosenquarz",
|
||||
"item.create.schematic": "Bauplan",
|
||||
"item.create.schematic_and_quill": "Bauplan und Feder",
|
||||
"item.create.tree_fertilizer": "Baumdünger",
|
||||
"item.create.wand_of_symmetry": "Symmetriestab",
|
||||
|
||||
"_comment": "-------------------------] GAME ELEMENTS [------------------------------------------------",
|
||||
"item.create.wrench": "Schraubenschlüssel",
|
||||
"item.create.zinc_ingot": "Zinkbarren",
|
||||
"item.create.zinc_nugget": "Zinkklumpen",
|
||||
|
||||
"item.create.wand_of_symmetry":"Symmetriestab",
|
||||
"item.create.handheld_blockzapper":"Blockpistole",
|
||||
"item.create.tree_fertilizer":"Baumdünger",
|
||||
"item.create.empty_schematic":"Leerer Bauplan",
|
||||
"item.create.andesite_alloy_cube":"Andesitstahl",
|
||||
"item.create.blaze_brass_cube":"Lohenbronze",
|
||||
"item.create.chorus_chrome_cube":"Chorus-Chrom",
|
||||
"item.create.shadow_steel_cube":"Schattenstahl",
|
||||
"item.create.schematic_and_quill":"Bauplan und Feder",
|
||||
"item.create.schematic":"Bauplan",
|
||||
"item.create.belt_connector":"Mechanischer Riemen",
|
||||
"item.create.filter":"Filter",
|
||||
"item.create.rose_quartz":"Rosenquarz",
|
||||
"item.create.refined_rose_quartz":"Verfeinerter Rosenquarz",
|
||||
"item.create.iron_sheet":"Eisenblech",
|
||||
"item.create.gold_sheet":"Goldblech",
|
||||
"item.create.propeller":"Propeller",
|
||||
"item.create.flour":"Weizenmehl",
|
||||
"item.create.dough":"Teig",
|
||||
|
||||
"item.create.blazing_pickaxe":"Lohende Spitzhacke",
|
||||
"item.create.blazing_shovel":"Lohende Schaufel",
|
||||
"item.create.blazing_axe":"Lohende Axt",
|
||||
"item.create.blazing_sword":"Lohendes Langschwert",
|
||||
"_": "->------------------------] Advancements [------------------------<-",
|
||||
|
||||
"item.create.shadow_steel_pickaxe":"Schattenstahlspitzhacke",
|
||||
"item.create.shadow_steel_mattock":"Schattenstahlbreithacke",
|
||||
"item.create.shadow_steel_sword":"Schattenstahlschwert",
|
||||
"advancement.create.root": "Willkommen zu Create",
|
||||
"advancement.create.root.desc": "Es ist Zeit mit dem Bauen von tollen Apparaten zu starten!",
|
||||
"advancement.create.andesite_alloy": "Alliterationen in Massen",
|
||||
"advancement.create.andesite_alloy.desc": "Create's Materialien haben verrückte Namen, Eisenlegierung ist im Deutschen leider keine.",
|
||||
"advancement.create.its_alive": "Es ist am leben!",
|
||||
"advancement.create.its_alive.desc": "Gucke deinem erstem beweglichen Teil beim drehen zu.",
|
||||
"advancement.create.shifting_gears": "Wechsel deine Gänge",
|
||||
"advancement.create.shifting_gears.desc": "Verbinde ein großes Zahnrad mit einem kleinem, um die Geschwindigkeit deiner Apparate zu verändern.",
|
||||
"advancement.create.overstressed": "Überfordert",
|
||||
"advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.",
|
||||
"advancement.create.belt": "Befördere es alles",
|
||||
"advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen",
|
||||
|
||||
"item.create.rose_quartz_pickaxe":"Goldquarzspitzhacke",
|
||||
"item.create.rose_quartz_shovel":"Goldquarzschaufel",
|
||||
"item.create.rose_quartz_axe":"Goldquarzaxt",
|
||||
"item.create.rose_quartz_sword":"Goldquarzklinge",
|
||||
"_": "->------------------------] UI & Messages [------------------------<-",
|
||||
|
||||
"block.create.cogwheel":"Zahnrad",
|
||||
"block.create.large_cogwheel":"Großes Zahnrad",
|
||||
"block.create.turntable":"Drehtisch",
|
||||
"block.create.gearbox":"Getriebe",
|
||||
"block.create.gearshift":"Gangschaltung",
|
||||
"block.create.clutch":"Kupplung",
|
||||
"block.create.shaft":"Welle",
|
||||
"block.create.encased_belt":"Eingeschlossener Riemen",
|
||||
"block.create.encased_shaft":"Eingeschlossene Welle",
|
||||
"block.create.encased_fan":"Eingeschlossener Propeller",
|
||||
"block.create.motor":"Motor",
|
||||
"block.create.belt":"Mechanischer Riemen",
|
||||
"block.create.crushing_wheel":"Mahlwerkrad",
|
||||
"block.create.mechanical_drill":"Mechanischer Bohrer",
|
||||
"block.create.mechanical_harvester":"Mechanische Erntemaschine",
|
||||
"block.create.water_wheel":"Wasserrad",
|
||||
"block.create.belt_support":"Riemenlager",
|
||||
"block.create.mechanical_press":"Mechanische Presse",
|
||||
|
||||
"block.create.sticky_mechanical_piston":"Klebriger Mechanischer Kolben",
|
||||
"block.create.mechanical_piston":"Mechanischer Kolben",
|
||||
"block.create.mechanical_piston_head":"Mechanisches Kolbenende",
|
||||
"block.create.piston_extension_pole":"Kolben-Pleuelverlängerung",
|
||||
"block.create.mechanical_bearing":"Mechanisches Lager",
|
||||
"block.create.linear_chassis":"Schubgerüst",
|
||||
"block.create.radial_chassis":"Drehgerüst",
|
||||
"death.attack.create.crush": "%1$s stolperte in ein Mahlwerk",
|
||||
"death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet",
|
||||
"death.attack.create.fan_lava": "%1$s wurde von Lava verweht",
|
||||
"death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert",
|
||||
|
||||
"block.create.redstone_contact":"Redstone-Kontakt",
|
||||
"block.create.redstone_link":"Redstone-Verbindung",
|
||||
"block.create.stockpile_switch":"Vorratssensor",
|
||||
"block.create.adjustable_crate":"adjustable_crate",
|
||||
"block.create.extractor":"Auswerfer",
|
||||
"block.create.funnel":"Fließbandtrichter",
|
||||
"block.create.linked_extractor":"Verknüpfter Auswerfer",
|
||||
"block.create.pulse_repeater":"Pulsierender Verstärker",
|
||||
"block.create.adjustable_repeater":"Verzögernder Verstärker",
|
||||
"block.create.belt_observer":"Fließband-Beobachter",
|
||||
|
||||
"block.create.tiled_glass":"Glasfliesen",
|
||||
"block.create.tiled_glass_pane":"Glasfliesenscheibe",
|
||||
"create.recipe.crushing": "Mahlen",
|
||||
"create.recipe.pressing": "Mechanische Presse",
|
||||
"create.recipe.blockzapper_upgrade": "Blockpistole",
|
||||
"create.recipe.processing.chance": "Chance: %1$s%%",
|
||||
|
||||
"block.create.window_in_a_block":"Block mit Glasscheibe",
|
||||
"block.create.andesite_bricks":"Andesitziegel",
|
||||
"block.create.diorite_bricks":"Dioritziegel",
|
||||
"block.create.granite_bricks":"Granitziegel",
|
||||
"create.generic.range": "Reichweite",
|
||||
"create.generic.radius": "Radius",
|
||||
"create.generic.speed": "Geschwindigkeit",
|
||||
"create.generic.delay": "Verzögerung",
|
||||
"create.generic.unit.ticks": "Ticks",
|
||||
"create.generic.unit.seconds": "Sekunden",
|
||||
"create.generic.unit.minutes": "Minuten",
|
||||
|
||||
"block.create.gabbro":"Gabbro",
|
||||
"block.create.gabbro_stairs":"Gabbrotreppe",
|
||||
"block.create.gabbro_slab":"Gabbrostufe",
|
||||
"block.create.gabbro_wall":"Gabbromauer",
|
||||
"block.create.polished_gabbro":"Polierter Gabbro",
|
||||
"block.create.gabbro_bricks":"Gabbroziegel",
|
||||
"block.create.gabbro_bricks_stairs":"Gabbroziegeltreppe",
|
||||
"block.create.gabbro_bricks_wall":"Gabbroziegelmauer",
|
||||
"block.create.paved_gabbro_bricks":"Gabbropflasterstein",
|
||||
"block.create.paved_gabbro_bricks_slab":"Gabbropflastersteinstufe",
|
||||
"block.create.indented_gabbro":"Gemusterte Gabbrofliese",
|
||||
"block.create.indented_gabbro_slab":"Gemusterte Gabbrostufe",
|
||||
"block.create.slightly_mossy_gabbro_bricks":"Bemooste Gabbroziegel",
|
||||
"block.create.mossy_gabbro_bricks":"Überwachsene Gabbroziegel",
|
||||
"create.action.scroll": "Wechseln",
|
||||
"create.action.confirm": "Bestätigen",
|
||||
"create.action.abort": "Abbrechen",
|
||||
"create.action.saveToFile": "Speichern",
|
||||
"create.action.discard": "Löschen",
|
||||
|
||||
"block.create.weathered_limestone":"Verwitterter Kalkstein",
|
||||
"block.create.weathered_limestone_stairs":"Verwitterte Kalksteintreppe",
|
||||
"block.create.weathered_limestone_wall":"Verwitterte Kalksteinmauer",
|
||||
"block.create.weathered_limestone_slab":"Verwitterte Kalksteinstufe",
|
||||
"block.create.polished_weathered_limestone":"Polierter Verwitterter Kalkstein",
|
||||
"block.create.polished_weathered_limestone_slab":"Polierte Verwitterte Kalksteinstufe",
|
||||
"block.create.weathered_limestone_bricks":"Verwitterte Kalksteinziegel",
|
||||
"block.create.weathered_limestone_bricks_stairs":"Verwitterte Kalksteinziegeltreppe",
|
||||
"block.create.weathered_limestone_bricks_wall":"Verwitterte Kalksteinziegelmauer",
|
||||
"block.create.weathered_limestone_bricks_slab":"Verwitterte Kalksteinziegelstufe",
|
||||
"block.create.weathered_limestone_pillar":"Verwitterte Kalksteinsäule",
|
||||
"create.keyinfo.toolmenu": "Werkzeugmenü",
|
||||
|
||||
"block.create.dolomite_pillar":"Dolomitsäule",
|
||||
"block.create.dolomite":"Dolomit",
|
||||
"block.create.dolomite_stairs":"Dolomittreppe",
|
||||
"block.create.dolomite_wall":"Dolomitmauer",
|
||||
"block.create.dolomite_slab":"Dolomitstufe",
|
||||
"block.create.dolomite_bricks":"Dolomitziegel",
|
||||
"block.create.dolomite_bricks_wall":"Dolomitziegelmauer",
|
||||
"block.create.dolomite_bricks_stairs":"Dolomitziegeltreppe",
|
||||
"block.create.dolomite_bricks_slab":"Dolomitziegelstufe",
|
||||
"block.create.polished_dolomite":"Polierter Dolomit",
|
||||
"create.gui.scrollInput.defaultTitle": "Wähle eine Option:",
|
||||
"create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern",
|
||||
"create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen",
|
||||
"create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen",
|
||||
"create.gui.toolmenu.focusKey": "Halte [%1$s] zum Fokussieren",
|
||||
"create.gui.toolmenu.cycle": "[Mausrad] zum Wechseln",
|
||||
"create.gui.symmetryWand.mirrorType": "Spiegeln",
|
||||
"create.gui.symmetryWand.orientation": "Orientierung",
|
||||
|
||||
"block.create.limesand":"Kalksand",
|
||||
"block.create.limestone":"Kalkstein",
|
||||
"block.create.limestone_stairs":"Kalksteintreppe",
|
||||
"block.create.limestone_slab":"Kalksteinstufe",
|
||||
"block.create.limestone_wall":"Kalksteinmauer",
|
||||
"block.create.limestone_bricks":"Kalksteinziegel",
|
||||
"block.create.limestone_bricks_stairs":"Kalksteinziegeltreppe",
|
||||
"block.create.limestone_bricks_slab":"Kalksteinziegelstufe",
|
||||
"block.create.limestone_bricks_wall":"Kalksteinziegelmauer",
|
||||
"block.create.polished_limestone":"Polierter Kalkstein",
|
||||
"block.create.polished_limestone_slab":"Polierte Kalksteinstufe",
|
||||
"block.create.limestone_pillar":"Kalksteinsäule",
|
||||
"create.symmetry.mirror.plane": "Einfach Spiegeln",
|
||||
"create.symmetry.mirror.doublePlane": "Rechteckig",
|
||||
"create.symmetry.mirror.triplePlane": "Achteckig",
|
||||
|
||||
"block.create.schematicannon":"Bauplankanone",
|
||||
"block.create.schematic_table":"Bauplantisch",
|
||||
"block.create.creative_crate":"Bauplankanonenmacher",
|
||||
"create.orientation.orthogonal": "Orthogonal",
|
||||
"create.orientation.diagonal": "Diagonal",
|
||||
"create.orientation.horizontal": "Horizontal",
|
||||
"create.orientation.alongZ": "Entlang Z",
|
||||
"create.orientation.alongX": "Entlang X",
|
||||
|
||||
"block.create.cocoa_log":"Kakao-Tropenbaumstamm",
|
||||
|
||||
"block.create.shop_shelf":"Regal",
|
||||
|
||||
"_comment": "-------------------------] UI & MESSAGES [------------------------------------------------",
|
||||
|
||||
"death.attack.create.crush":"%1$s stolperte in ein Mahlwerk",
|
||||
"death.attack.create.fan_fire":"%1$s hat heiße Luft eingeatmet",
|
||||
"death.attack.create.fan_lava":"%1$s wurde von Lava verweht",
|
||||
"death.attack.create.mechanical_drill":"%1$s wurde von einem Bohrer durchlöchert",
|
||||
|
||||
"create.recipe.crushing":"Mahlen",
|
||||
"create.recipe.splashing":"Waschen",
|
||||
"create.recipe.splashing.fan":"Propeller hinter fließendem Wasser",
|
||||
"create.recipe.smoking_via_fan":"Räuchern",
|
||||
"create.recipe.smoking_via_fan.fan":"Propeller hinter Feuer",
|
||||
"create.recipe.blasting_via_fan":"Schmelzen",
|
||||
"create.recipe.blasting_via_fan.fan":"Propeller hinter Lava",
|
||||
"create.recipe.pressing":"Mechanische Presse",
|
||||
"create.recipe.blockzapper_upgrade":"Blockpistole",
|
||||
"create.recipe.processing.chance":"Chance: %1$s%%",
|
||||
|
||||
"create.generic.range":"Reichweite",
|
||||
"create.generic.radius":"Radius",
|
||||
"create.generic.speed":"Geschwindigkeit",
|
||||
"create.generic.delay":"Verzögerung",
|
||||
"create.generic.unit.ticks":"Ticks",
|
||||
"create.generic.unit.seconds":"Sekunden",
|
||||
"create.generic.unit.minutes":"Minuten",
|
||||
|
||||
"create.action.scroll":"Wechseln",
|
||||
"create.action.confirm":"Bestätigen",
|
||||
"create.action.abort":"Abbrechen",
|
||||
"create.action.saveToFile":"Speichern",
|
||||
"create.action.discard":"Löschen",
|
||||
|
||||
"create.keyinfo.toolmenu":"Werkzeugmenü",
|
||||
|
||||
"create.gui.scrollInput.defaultTitle":"Wähle eine Option:",
|
||||
"create.gui.scrollInput.scrollToModify":"Mausrad zum Ändern",
|
||||
"create.gui.scrollInput.scrollToSelect":"Mausrad zum Auswählen",
|
||||
"create.gui.scrollInput.shiftScrollsFaster":"Shift zum schnelleren Auswählen",
|
||||
|
||||
"create.gui.toolmenu.focusKey":"Halte [%1$s] zum Fokussieren",
|
||||
"create.gui.toolmenu.cycle":"[Mausrad] zum Wechseln",
|
||||
|
||||
"create.gui.symmetryWand.mirrorType":"Spiegeln",
|
||||
"create.gui.symmetryWand.orientation":"Orientierung",
|
||||
|
||||
"create.symmetry.mirror.plane":"Einfach Spiegeln",
|
||||
"create.symmetry.mirror.doublePlane":"Rechteckig",
|
||||
"create.symmetry.mirror.triplePlane":"Achteckig",
|
||||
|
||||
"create.orientation.orthogonal":"Orthogonal",
|
||||
"create.orientation.diagonal":"Diagonal",
|
||||
"create.orientation.horizontal":"Horizontal",
|
||||
"create.orientation.alongZ":"Entlang Z",
|
||||
"create.orientation.alongX":"Entlang X",
|
||||
|
||||
"create.gui.blockzapper.title":"Blockpistole",
|
||||
"create.gui.blockzapper.replaceMode":"Austauschmodus",
|
||||
"create.gui.blockzapper.searchDiagonal":"Diagonalen folgen",
|
||||
"create.gui.blockzapper.searchFuzzy":"Materialgrenzen ignorieren",
|
||||
"create.gui.blockzapper.range":"Reichweite",
|
||||
"create.gui.blockzapper.title": "Blockpistole",
|
||||
"create.gui.blockzapper.replaceMode": "Austauschmodus",
|
||||
"create.gui.blockzapper.searchDiagonal": "Diagonalen folgen",
|
||||
"create.gui.blockzapper.searchFuzzy": "Materialgrenzen ignorieren",
|
||||
"create.gui.blockzapper.range": "Reichweite",
|
||||
"create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker",
|
||||
"create.gui.blockzapper.patternSection":"Muster",
|
||||
"create.gui.blockzapper.pattern.solid":"Fest",
|
||||
"create.gui.blockzapper.pattern.checkered":"Schachbrett",
|
||||
"create.gui.blockzapper.pattern.inversecheckered":"Inverses Schachbrett",
|
||||
"create.gui.blockzapper.pattern.chance25":"25%-Chance",
|
||||
"create.gui.blockzapper.pattern.chance50":"50%-Chance",
|
||||
"create.gui.blockzapper.pattern.chance75":"75%-Chance",
|
||||
"create.gui.blockzapper.patternSection": "Muster",
|
||||
"create.gui.blockzapper.pattern.solid": "Fest",
|
||||
"create.gui.blockzapper.pattern.checkered": "Schachbrett",
|
||||
"create.gui.blockzapper.pattern.inversecheckered": "Inverses Schachbrett",
|
||||
"create.gui.blockzapper.pattern.chance25": "25%-Chance",
|
||||
"create.gui.blockzapper.pattern.chance50": "50%-Chance",
|
||||
"create.gui.blockzapper.pattern.chance75": "75%-Chance",
|
||||
|
||||
|
||||
"create.blockzapper.usingBlock": "Auswahl: %1$s",
|
||||
"create.blockzapper.componentUpgrades": "Bauteil-Upgrades:",
|
||||
|
@ -218,35 +275,27 @@
|
|||
"create.blockzapper.component.retriever": "Empfänger",
|
||||
"create.blockzapper.component.scope": "Fernrohr",
|
||||
"create.blockzapper.componentTier.none": "Nichts",
|
||||
"create.blockzapper.componentTier.blazebrass": "Lohenbronze",
|
||||
"create.blockzapper.componentTier.choruschrome": "Chorus-Chrom",
|
||||
"create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen",
|
||||
"create.blockzapper.empty": "Keine Blöcke übrig!",
|
||||
|
||||
|
||||
|
||||
"create.logistics.filter": "Filter",
|
||||
"create.logistics.firstFrequency": "Freq. #1",
|
||||
"create.logistics.secondFrequency": "Freq. #2",
|
||||
|
||||
|
||||
"create.gui.adjustable_crate.title": "adjustable_crate",
|
||||
"create.gui.adjustable_crate.storageSpace": "Lagerraum",
|
||||
|
||||
"create.gui.stockpile_switch.title": "Vorratssensor",
|
||||
"create.gui.stockpile_switch.lowerLimit": "Untergrenze",
|
||||
"create.gui.stockpile_switch.upperLimit": "Obergrenze",
|
||||
"create.gui.stockpile_switch.startAt": "Signal bei",
|
||||
"create.gui.stockpile_switch.startAbove": "Signal über",
|
||||
"create.gui.stockpile_switch.stopAt": "Signalstopp bei",
|
||||
"create.gui.stockpile_switch.stopBelow": "Signalstopp über",
|
||||
|
||||
|
||||
"create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s",
|
||||
"create.schematicAndQuill.firstPos": "Erste Position festgelegt.",
|
||||
"create.schematicAndQuill.secondPos": "Zweite Position festgelegt.",
|
||||
"create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.",
|
||||
"create.schematicAndQuill.abort": "Auswahl zurückgesetzt.",
|
||||
"create.schematicAndQuill.prompt": "Gib dem Bauplan einen Namen:",
|
||||
"create.schematicAndQuill.fallbackName": "Mein Bauplan",
|
||||
"create.schematicAndQuill.saved": "Gespeichert als %1$s",
|
||||
|
||||
|
||||
"create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.",
|
||||
"create.schematic.position": "Position",
|
||||
"create.schematic.rotation": "Rotation",
|
||||
|
@ -258,14 +307,12 @@
|
|||
"create.schematic.mirror.none": "Nein",
|
||||
"create.schematic.mirror.frontBack": "Vor-Zurück",
|
||||
"create.schematic.mirror.leftRight": "Links-Rechts",
|
||||
|
||||
"create.schematic.tool.deploy": "Positionieren",
|
||||
"create.schematic.tool.move": "XZ Bewegen",
|
||||
"create.schematic.tool.movey": "Y Bewegen",
|
||||
"create.schematic.tool.rotate": "Rotieren",
|
||||
"create.schematic.tool.print": "Drucken",
|
||||
"create.schematic.tool.flip": "Umdrehen",
|
||||
|
||||
"create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.",
|
||||
"create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.",
|
||||
"create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.",
|
||||
|
@ -290,19 +337,17 @@
|
|||
"create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.",
|
||||
"create.schematic.tool.flip.description.2": "",
|
||||
"create.schematic.tool.flip.description.3": "",
|
||||
|
||||
|
||||
"create.schematics.synchronizing": "Synchronisation...",
|
||||
"create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.",
|
||||
"create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:",
|
||||
|
||||
|
||||
"create.gui.schematicTable.title": "Bauplantisch",
|
||||
"create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne",
|
||||
"create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne",
|
||||
"create.gui.schematicTable.uploading": "Hochladen...",
|
||||
"create.gui.schematicTable.finished": "Hochgeladen!",
|
||||
|
||||
"create.gui.schematicannon.title": "Bauplankanone",
|
||||
"create.gui.schematicannon.settingsTitle": "Platzier-Optionen",
|
||||
"create.gui.schematicannon.listPrinter": "Materiallistendruck",
|
||||
"create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%",
|
||||
"create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig",
|
||||
|
@ -315,14 +360,13 @@
|
|||
"create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen",
|
||||
"create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren",
|
||||
"create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren",
|
||||
|
||||
"create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.",
|
||||
"create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.",
|
||||
"create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.",
|
||||
"create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.",
|
||||
"create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.",
|
||||
"create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.",
|
||||
|
||||
|
||||
"create.schematicannon.status.idle": "Aus",
|
||||
"create.schematicannon.status.ready": "Bereit",
|
||||
"create.schematicannon.status.running": "An",
|
||||
|
@ -340,14 +384,15 @@
|
|||
"create.schematicannon.status.schematicInvalid": "Bauplan ungültig",
|
||||
"create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert",
|
||||
"create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen",
|
||||
|
||||
|
||||
"create.tooltip.holdKey": "Halte [%1$s]",
|
||||
"create.tooltip.holdKeyOrKey": "Halte [%1$s] oder [%2$s]",
|
||||
"create.tooltip.keyShift": "Shift",
|
||||
"create.tooltip.keyCtrl": "Strg",
|
||||
|
||||
"_comment": "-------------------------] ITEM DESCRIPTIONS [------------------------------------------------",
|
||||
|
||||
|
||||
|
||||
"_": "->------------------------] Item Descriptions [------------------------<-",
|
||||
|
||||
"item.create.example_item.tooltip": "BEISPIELGEGENSTAND (nur ein Marker, um zu zeigen, dass dieser Tooltip existiert)",
|
||||
"item.create.example_item.tooltip.summary": "Eine Kurzbeschreibung eines Gegenstands. _Unterstriche_ heben einen Begriff hervor.",
|
||||
"item.create.example_item.tooltip.condition1": "Wenn dies",
|
||||
|
@ -382,11 +427,6 @@
|
|||
"item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen",
|
||||
|
||||
"block.create.cocoa_log.tooltip": "KAKAO-TROPENBAUMSTAMM",
|
||||
"block.create.cocoa_log.tooltip.summary": "Ein modifizierter Tropenbaumstamm, der den Anbau von _Kakaobohnen_ vereinfacht",
|
||||
"block.create.cocoa_log.tooltip.condition1": "Wenn reif",
|
||||
"block.create.cocoa_log.tooltip.behaviour1": "Lässt _Kakao_ auf allen Seiten wachsen",
|
||||
|
||||
"item.create.empty_schematic.tooltip": "LEERER BAUPLAN",
|
||||
"item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet",
|
||||
|
||||
|
@ -410,9 +450,6 @@
|
|||
"item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen",
|
||||
"item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.",
|
||||
|
||||
"block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER",
|
||||
"block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.",
|
||||
|
||||
"block.create.schematicannon.tooltip": "BAUPLANKANONE",
|
||||
"block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.",
|
||||
"block.create.schematicannon.tooltip.control1": "Wenn R-Geklickt",
|
||||
|
@ -448,11 +485,6 @@
|
|||
"block.create.clutch.tooltip.condition1": "Wenn aktiv",
|
||||
"block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.",
|
||||
|
||||
"block.create.encased_belt.tooltip": "EINGESCHLOSSENER RIEMEN",
|
||||
"block.create.encased_belt.tooltip.summary": "_Überträgt_ _Rotation_ durch seinen Block und zu einem angeschlossenen _Eingeschlossenen_ _Riemen._",
|
||||
"block.create.encased_belt.tooltip.condition1": "Wenn an einem anderen Eingeschlossenen Riemen angeschlossen",
|
||||
"block.create.encased_belt.tooltip.behaviour1": "Wird der angeschlossene Block die exakt gleiche Rotationsgeschwindigkeit und Richtung haben. Angeschlossene Riemen müssen nicht in die gleiche Richtung schauen.",
|
||||
|
||||
"item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN",
|
||||
"item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.",
|
||||
"item.create.belt_connector.tooltip.control1": "R-Klick auf Welle",
|
||||
|
@ -460,14 +492,6 @@
|
|||
"item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen",
|
||||
"item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._",
|
||||
|
||||
"block.create.belt_support.tooltip": "RIEMENLAGER",
|
||||
"block.create.belt_support.tooltip.summary": "Ein _rein_ _dekorativer_ Block, der sich dazu eignet, _Mechanische_ _Riemen_ am Boden zu befestigen.",
|
||||
"block.create.belt_support.tooltip.condition1": "Wenn unter einem Riemen platziert",
|
||||
"block.create.belt_support.tooltip.behaviour1": "Stützt die Oberseite des Riemens und versteckt die Unterseite.",
|
||||
|
||||
"block.create.motor.tooltip": "MOTOR",
|
||||
"block.create.motor.tooltip.summary": "Eine konfigurierbare Quelle von _Rotationsenergie_",
|
||||
|
||||
"block.create.water_wheel.tooltip": "WASSERRAD",
|
||||
"block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._",
|
||||
|
||||
|
@ -500,11 +524,6 @@
|
|||
"block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben",
|
||||
"block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.",
|
||||
|
||||
"block.create.sticky_mechanical_piston.tooltip": "KLEBRIGER MECHANISCHER KOLBEN",
|
||||
"block.create.sticky_mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Klebrigen_ _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Klolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.",
|
||||
"block.create.sticky_mechanical_piston.tooltip.condition1": "Wenn angetrieben",
|
||||
"block.create.sticky_mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.",
|
||||
|
||||
"block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG",
|
||||
"block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.",
|
||||
"block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht",
|
||||
|
@ -514,8 +533,6 @@
|
|||
"block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.",
|
||||
"block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben",
|
||||
"block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.",
|
||||
"block.create.mechanical_bearing.tooltip.condition2": "Wenn durch Redstone aktiviert",
|
||||
"block.create.mechanical_bearing.tooltip.behaviour2": "Fängt an, _Rotationsenergie_ durch das Drehen der angebrachten Struktur zu erzeugen. Die Struktur muss _geeignete_ _Segelblöcke_ beinhalten. (Momentan jede Art von Wolle).",
|
||||
|
||||
"block.create.linear_chassis.tooltip": "SCHUBGERÜST",
|
||||
"block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.",
|
||||
|
@ -547,10 +564,6 @@
|
|||
"block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.",
|
||||
"block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit",
|
||||
"block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.",
|
||||
"block.create.stockpile_switch.tooltip.condition2": "Wenn über dem oberen Limit",
|
||||
"block.create.stockpile_switch.tooltip.behaviour2": "Wird das Redstone-Signal eingeschaltet bis das untere Limit wieder erreicht wird.",
|
||||
"block.create.stockpile_switch.tooltip.control1": "Wenn R-geklickt",
|
||||
"block.create.stockpile_switch.tooltip.action1": "Wird das _Konfigurationsmenü_ geöffnet",
|
||||
|
||||
"block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG",
|
||||
"block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.",
|
||||
|
@ -573,37 +586,15 @@
|
|||
"block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt",
|
||||
"block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_",
|
||||
|
||||
"block.create.extractor.tooltip": "AUSWERFER",
|
||||
"block.create.extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird keine Gegenstände auswerfen, bis der Platz dafür frei ist. Kann einen Stack von Gegenständen als _Filter_ zugewiesen bekommen.",
|
||||
"block.create.extractor.tooltip.condition1": "Wenn durch Redstone aktiviert",
|
||||
"block.create.extractor.tooltip.behaviour1": "_Pausiert_ den Auswerfer",
|
||||
"block.create.extractor.tooltip.control1": "R-Klick auf Filterplatz",
|
||||
"block.create.extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter. ",
|
||||
|
||||
"block.create.linked_extractor.tooltip": "VERKÜPFTER AUSWERFER",
|
||||
"block.create.linked_extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird Gegenstände nicht auswerfen, bis der Platz frei ist. Kann einen Stack von Gegenständen zugewiesen bekommen. Kann aus Distanz mit einer _Redstone-Verbindung_ kontrolliert werden.",
|
||||
"block.create.linked_extractor.tooltip.condition1": "Wenn die Restone-Verbindung aktiv ist",
|
||||
"block.create.linked_extractor.tooltip.behaviour1": "Wird der Auswerfer _pausiert._",
|
||||
"block.create.linked_extractor.tooltip.control1": "R-Klick auf den Filterplatz",
|
||||
"block.create.linked_extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter.",
|
||||
"block.create.linked_extractor.tooltip.control2": "R-Klick auf den Frequenzplatz",
|
||||
"block.create.linked_extractor.tooltip.action2": "Weist den momentan _gehaltenen_ _Gegenstand_ als Teil der gelisteten Frequenz zu. Wann auch immer eine übertragende _Redstone-Verbindung_ derselben Frequenz aktiv ist, pausiert dieser Auswerfer.",
|
||||
|
||||
"block.create.funnel.tooltip": "FLIEẞBANDTRICHTER",
|
||||
"block.create.funnel.tooltip.summary": "Sammelt eingehende Gegenstände auf einem _Mechanischen_ _Riemen_ und fügt diese in einen verbundenen _Behälter_ ein, wenn möglich. Muss direkt _auf_ dem Riemen sein, mit der Öffnung entgegen der Bewegungsrichtung des Riemens zeigend. Der Behälter muss auf der gleichen Höhe wie der Trichter sein.",
|
||||
|
||||
"block.create.belt_observer.tooltip": "FLIEẞBAND-BEOBACHTER",
|
||||
"block.create.belt_observer.tooltip.summary": "Erkennt Gegenstände, die vor ihm auf einem _Mechanischen_ _Riemen_ vorbeilaufen. Funktioniert wunderbar mit einem _Kolben_ über ihm, der gewisse Gegenstände runterschubst. ",
|
||||
"block.create.belt_observer.tooltip.condition1": "Wenn ein Gegenstand mit dem Filter übereinstimmt",
|
||||
"block.create.belt_observer.tooltip.behaviour1": "Sendet einen kurzen _Redstone-Puls_ an alle Seiten. Bei einem leeren Filter passiert dies mit allen Gegenständen.",
|
||||
"block.create.belt_observer.tooltip.control1": "R-Klick auf den Filterplatz",
|
||||
"block.create.belt_observer.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Beobachter wird nur auf diesen Gegenstandstyp reagieren.",
|
||||
"block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER",
|
||||
"block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.",
|
||||
|
||||
"block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER",
|
||||
"block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.",
|
||||
|
||||
|
||||
"block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER",
|
||||
"block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.",
|
||||
|
||||
"itemGroup.create": "Create"
|
||||
"_": "Thank you for translating Create!"
|
||||
|
||||
}
|
||||
|
|
804
src/main/resources/assets/create/lang/es_mx.json
Normal file
804
src/main/resources/assets/create/lang/es_mx.json
Normal file
|
@ -0,0 +1,804 @@
|
|||
{
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
"block.create.acacia_window": "Ventana de Acacia",
|
||||
"block.create.acacia_window_pane": "Panel de Ventana de Acacia",
|
||||
"block.create.adjustable_chain_gearshift": "Cambio Ajustable de Velocidad de Cadena",
|
||||
"block.create.adjustable_crate": "Caja Ajustable",
|
||||
"block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustable",
|
||||
"block.create.adjustable_repeater": "Repetidor Ajustable",
|
||||
"block.create.analog_lever": "Palanca Analogica",
|
||||
"block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel",
|
||||
"block.create.andesite_bricks": "Ladrillos de Andesita",
|
||||
"block.create.andesite_bricks_slab": "Losa de Ladrillos de Andesita",
|
||||
"block.create.andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita",
|
||||
"block.create.andesite_bricks_wall": "Pared de Ladrillos de Andesita",
|
||||
"block.create.andesite_casing": "Carcasa de Andesita",
|
||||
"block.create.andesite_cobblestone": "Piedra Labrada de Andesita",
|
||||
"block.create.andesite_cobblestone_slab": "Losa de Piedra Labrada de Andesita",
|
||||
"block.create.andesite_cobblestone_stairs": "Escaleras de Piedra Labrada de Andesita",
|
||||
"block.create.andesite_cobblestone_wall": "Pared de Piedra Labrada de Andesita",
|
||||
"block.create.andesite_encased_shaft": "Eje empotrado de Andesita",
|
||||
"block.create.andesite_funnel": "Embudo de Andesita",
|
||||
"block.create.andesite_pillar": "Pilar de Andesita",
|
||||
"block.create.andesite_tunnel": "Túnel de Andesita",
|
||||
"block.create.basin": "Cuenco",
|
||||
"block.create.belt": "Correa",
|
||||
"block.create.birch_window": "Ventana de Abedul",
|
||||
"block.create.birch_window_pane": "Panel de Ventana de Abedul",
|
||||
"block.create.black_sail": "Vela Negra",
|
||||
"block.create.black_seat": "Asiento Negro",
|
||||
"block.create.black_valve_handle": "Manija de Válvula Negra",
|
||||
"block.create.blaze_burner": "Quemador de Blaze",
|
||||
"block.create.blue_sail": "Vela Azul",
|
||||
"block.create.blue_seat": "Asiento Azul",
|
||||
"block.create.blue_valve_handle": "Manija de Válvula Azul",
|
||||
"block.create.brass_belt_funnel": "UNLOCALIZED:Brass Belt Funnel",
|
||||
"block.create.brass_block": "Bloque de Latón",
|
||||
"block.create.brass_casing": "Carcasa de Latón",
|
||||
"block.create.brass_encased_shaft": "Eje empotrado de Latón",
|
||||
"block.create.brass_funnel": "Embudo de Latón",
|
||||
"block.create.brass_tunnel": "Túnel de Latón",
|
||||
"block.create.brown_sail": "Vela Café",
|
||||
"block.create.brown_seat": "Asiento Café ",
|
||||
"block.create.brown_valve_handle": "Manija de Válvula Café",
|
||||
"block.create.cart_assembler": "Ensamblador de Vagonetas",
|
||||
"block.create.chiseled_dark_scoria": "Escoria Oscura Grabada",
|
||||
"block.create.chiseled_dolomite": "Dolomita Grabada",
|
||||
"block.create.chiseled_gabbro": "Gabro Grabado",
|
||||
"block.create.chiseled_limestone": "Caliza Grabada",
|
||||
"block.create.chiseled_scoria": "Escoria Grabada",
|
||||
"block.create.chiseled_weathered_limestone": "Caliza Meteorizada Grabada",
|
||||
"block.create.chocolate": "Chocolate",
|
||||
"block.create.chute": "Vertedor",
|
||||
"block.create.clockwork_bearing": "Rodamiento de Reloj",
|
||||
"block.create.clutch": "Embrague",
|
||||
"block.create.cogwheel": "Rueda Dentada",
|
||||
"block.create.content_observer": "Observador de Contenido",
|
||||
"block.create.controller_rail": "Vía de Control",
|
||||
"block.create.copper_block": "Bloque de Cobre",
|
||||
"block.create.copper_casing": "Carcasa de Cobre",
|
||||
"block.create.copper_ore": "Mineral de Cobre",
|
||||
"block.create.copper_shingles": "Techado de Cobre",
|
||||
"block.create.copper_tiles": "Baldosas de Cobre",
|
||||
"block.create.copper_valve_handle": "Manija de Válvula de Cobre",
|
||||
"block.create.creative_crate": "Caja del Creativo",
|
||||
"block.create.creative_fluid_tank": "Tanque de Fluido del Creativo",
|
||||
"block.create.creative_motor": "Motor del Creativo",
|
||||
"block.create.crimson_window": "Ventana Carmesí",
|
||||
"block.create.crimson_window_pane": "Panel de Ventana Carmesí",
|
||||
"block.create.crushing_wheel": "Rueda Trituradora",
|
||||
"block.create.crushing_wheel_controller": "UNLOCALIZED:Crushing Wheel Controller",
|
||||
"block.create.cuckoo_clock": "Reloj Cuco",
|
||||
"block.create.cyan_sail": "Vela Cian",
|
||||
"block.create.cyan_seat": "Asiento Cian",
|
||||
"block.create.cyan_valve_handle": "Manija de Válvula Cian",
|
||||
"block.create.dark_oak_window": "Ventana de Roble Oscuro",
|
||||
"block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro",
|
||||
"block.create.dark_scoria": "Escoria Oscura",
|
||||
"block.create.dark_scoria_bricks": "Ladrillos de Escoria Oscura",
|
||||
"block.create.dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura",
|
||||
"block.create.dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura",
|
||||
"block.create.dark_scoria_bricks_wall": "Pared de Ladrillos de Escoria Oscura",
|
||||
"block.create.dark_scoria_cobblestone": "Piedra Labrada de Escoria Oscura",
|
||||
"block.create.dark_scoria_cobblestone_slab": "Losa de Piedra Labrada de Escoria Oscura",
|
||||
"block.create.dark_scoria_cobblestone_stairs": "Escaleras de Piedra Labrada de Escoria Oscura",
|
||||
"block.create.dark_scoria_cobblestone_wall": "Pared de Piedra Labrada de Escoria Oscura",
|
||||
"block.create.dark_scoria_pillar": "Pilar de Escoria Oscura",
|
||||
"block.create.deployer": "Desplegador",
|
||||
"block.create.depot": "Depósito",
|
||||
"block.create.diorite_bricks": "Ladrillos de Diorita",
|
||||
"block.create.diorite_bricks_slab": "Losa de Ladrillos de Diorita",
|
||||
"block.create.diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita",
|
||||
"block.create.diorite_bricks_wall": "Pared de Ladrillos de Diorita",
|
||||
"block.create.diorite_cobblestone": "Piedra Labrada de Diorita",
|
||||
"block.create.diorite_cobblestone_slab": "Losa de Piedra Labrada de Diorita",
|
||||
"block.create.diorite_cobblestone_stairs": "Escaleras de Piedra Labrada de Diorita",
|
||||
"block.create.diorite_cobblestone_wall": "Pared de Piedra Labrada de Diorita",
|
||||
"block.create.diorite_pillar": "Pared de Diorita",
|
||||
"block.create.dolomite": "Dolomita",
|
||||
"block.create.dolomite_bricks": "Ladrillos de Dolomita",
|
||||
"block.create.dolomite_bricks_slab": "Losa de Ladrillos de Dolomita",
|
||||
"block.create.dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita",
|
||||
"block.create.dolomite_bricks_wall": "Pared de Ladrillos de Dolomita",
|
||||
"block.create.dolomite_cobblestone": "Piedra Labrada de Dolomita",
|
||||
"block.create.dolomite_cobblestone_slab": "Losa de Piedra Labrada de Dolomita",
|
||||
"block.create.dolomite_cobblestone_stairs": "Escaleras de Piedra Labrada de Dolomita",
|
||||
"block.create.dolomite_cobblestone_wall": "Pared de Piedra Labrada de Dolomita",
|
||||
"block.create.dolomite_pillar": "Pilar de Dolomita",
|
||||
"block.create.encased_chain_drive": "Transmisión de Cadena Empotrada",
|
||||
"block.create.encased_fan": "Ventilador Acoplado",
|
||||
"block.create.encased_fluid_pipe": "Tubería de Fluidos Recubierta",
|
||||
"block.create.fancy_andesite_bricks": "Ladrillos de Andesita Elegantes",
|
||||
"block.create.fancy_andesite_bricks_slab": "Losa de Ladrillos de Andesita Elegantes",
|
||||
"block.create.fancy_andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita Elegantes",
|
||||
"block.create.fancy_andesite_bricks_wall": "Pared de Ladrillos de Andesita Elegantes",
|
||||
"block.create.fancy_dark_scoria_bricks": "Ladrillos de Escoria Oscura Elegantes",
|
||||
"block.create.fancy_dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura Elegantes",
|
||||
"block.create.fancy_dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura Elegantes",
|
||||
"block.create.fancy_dark_scoria_bricks_wall": "Pared de Ladrillos de Escoria Oscura Elegantes",
|
||||
"block.create.fancy_diorite_bricks": "Ladrillos de Diorita Elegantes",
|
||||
"block.create.fancy_diorite_bricks_slab": "Losa de Ladrillos de Diorita Elegantes",
|
||||
"block.create.fancy_diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita Elegantes",
|
||||
"block.create.fancy_diorite_bricks_wall": "Pared de Ladrillos de Diorita Elegantes",
|
||||
"block.create.fancy_dolomite_bricks": "Ladrillos de Dolomita Elegantes",
|
||||
"block.create.fancy_dolomite_bricks_slab": "Losa de Ladrillos de Dolomita Elegantes",
|
||||
"block.create.fancy_dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita Elegantes",
|
||||
"block.create.fancy_dolomite_bricks_wall": "Pared de Ladrillos de Dolomita Elegantes",
|
||||
"block.create.fancy_gabbro_bricks": "Ladrillos de Gabro Elegantes",
|
||||
"block.create.fancy_gabbro_bricks_slab": "Losa Ladrillos de Gabro Elegantes",
|
||||
"block.create.fancy_gabbro_bricks_stairs": "Escaleras Ladrillos de Gabro Elegantes",
|
||||
"block.create.fancy_gabbro_bricks_wall": "Pared de Ladrillos de Gabro Elegantes",
|
||||
"block.create.fancy_granite_bricks": "Ladrillos de Granito Elegantes",
|
||||
"block.create.fancy_granite_bricks_slab": "Losa de Ladrillos de Granito Elegantes",
|
||||
"block.create.fancy_granite_bricks_stairs": "Escaleras de Ladrillos de Granito Elegantes",
|
||||
"block.create.fancy_granite_bricks_wall": "Pared de Ladrillos de Granito Elegantes",
|
||||
"block.create.fancy_limestone_bricks": "Ladrillos de Caliza Elegantes",
|
||||
"block.create.fancy_limestone_bricks_slab": "Losa de Ladrillos de Caliza Elegantes",
|
||||
"block.create.fancy_limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza Elegantes",
|
||||
"block.create.fancy_limestone_bricks_wall": "Pared de Ladrillos de Caliza Elegantes",
|
||||
"block.create.fancy_scoria_bricks": "Ladrillos de Escoria Elegantes",
|
||||
"block.create.fancy_scoria_bricks_slab": "Losa de Ladrillos de Escoria Elegantes",
|
||||
"block.create.fancy_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Elegantes",
|
||||
"block.create.fancy_scoria_bricks_wall": "Pared de Ladrillos de Escoria Elegantes",
|
||||
"block.create.fancy_weathered_limestone_bricks": "Ladrillos de Caliza Meteorizada Elegantes",
|
||||
"block.create.fancy_weathered_limestone_bricks_slab": "Losa de Ladrillos de Caliza Meteorizada Elegantes",
|
||||
"block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza Meteorizada Elegantes",
|
||||
"block.create.fancy_weathered_limestone_bricks_wall": "Pared de Ladrillos de Caliza Meteorizada Elegantes",
|
||||
"block.create.fluid_pipe": "Tubería de Fluidos",
|
||||
"block.create.fluid_tank": "Tanque de Fluidos",
|
||||
"block.create.fluid_valve": "Válvula de Fluidos",
|
||||
"block.create.flywheel": "Rueda de Inercia",
|
||||
"block.create.framed_glass": "Vidrio Enmarcado",
|
||||
"block.create.framed_glass_pane": "Panel de Vidrio Enmarcado",
|
||||
"block.create.furnace_engine": "Motor de Horno",
|
||||
"block.create.gabbro": "Gabro",
|
||||
"block.create.gabbro_bricks": "Ladrillos de Gabro",
|
||||
"block.create.gabbro_bricks_slab": "Losa de Ladrillos de Gabro",
|
||||
"block.create.gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro",
|
||||
"block.create.gabbro_bricks_wall": "Pared de Ladrillos de Gabro",
|
||||
"block.create.gabbro_cobblestone": "Piedra Labrada de Gabro",
|
||||
"block.create.gabbro_cobblestone_slab": "Losa de Piedra Labrada de Gabro",
|
||||
"block.create.gabbro_cobblestone_stairs": "Escaleras de Piedra Labrada de Gabro",
|
||||
"block.create.gabbro_cobblestone_wall": "Pared de Piedra Labrada de Gabro",
|
||||
"block.create.gabbro_pillar": "Pilar de Gabro",
|
||||
"block.create.gearbox": "Transmisión",
|
||||
"block.create.gearshift": "Cambio de Marcha",
|
||||
"block.create.glass_fluid_pipe": "Tubería de Fluidos de Vidrio",
|
||||
"block.create.granite_bricks": "Ladrillos de Granito",
|
||||
"block.create.granite_bricks_slab": "Losa de Ladrillos de Granito",
|
||||
"block.create.granite_bricks_stairs": "Escaleras de Ladrillos de Granito",
|
||||
"block.create.granite_bricks_wall": "Pared de Ladrillos de Granito",
|
||||
"block.create.granite_cobblestone": "Piedra Labrada de Granito",
|
||||
"block.create.granite_cobblestone_slab": "Losa de Piedra Labrada de Granito",
|
||||
"block.create.granite_cobblestone_stairs": "Escaleras de Piedra Labrada de Granito",
|
||||
"block.create.granite_cobblestone_wall": "Pared de Piedra Labrada de Granito",
|
||||
"block.create.granite_pillar": "Pilar de Granito",
|
||||
"block.create.gray_sail": "Vela Gris",
|
||||
"block.create.gray_seat": "Asiento Gris",
|
||||
"block.create.gray_valve_handle": "Manija de Válvula Gris",
|
||||
"block.create.green_sail": "Vela Verde",
|
||||
"block.create.green_seat": "Asiento Verde",
|
||||
"block.create.green_valve_handle": "Manija de Válvula Verde",
|
||||
"block.create.hand_crank": "Manivela",
|
||||
"block.create.honey": "Miel",
|
||||
"block.create.horizontal_framed_glass": "Vidrio Enmarcado Horizontal",
|
||||
"block.create.horizontal_framed_glass_pane": "Panel de Vidrio Enmarcado Horizontal",
|
||||
"block.create.hose_pulley": "Polea con Manguera",
|
||||
"block.create.item_drain": "Extractor de Fluidos",
|
||||
"block.create.jungle_window": "Ventana de Jungla",
|
||||
"block.create.jungle_window_pane": "Panel de Ventana de Jungla",
|
||||
"block.create.large_cogwheel": "Rueda Dentada Grande",
|
||||
"block.create.layered_andesite": "Andesita en Capas",
|
||||
"block.create.layered_dark_scoria": "Escoria Oscura en Capas",
|
||||
"block.create.layered_diorite": "Diorita en Capas",
|
||||
"block.create.layered_dolomite": "Dolomita en Capas",
|
||||
"block.create.layered_gabbro": "Gabro en Capas",
|
||||
"block.create.layered_granite": "Granito en Capas",
|
||||
"block.create.layered_limestone": "Caliza en Capas",
|
||||
"block.create.layered_scoria": "Escoria en Capas",
|
||||
"block.create.layered_weathered_limestone": "Caliza Meteorizada en Capas",
|
||||
"block.create.light_blue_sail": "Vela Azul Claro",
|
||||
"block.create.light_blue_seat": "Asiento Azul Claro",
|
||||
"block.create.light_blue_valve_handle": "Manija de Válvula Azul Claro",
|
||||
"block.create.light_gray_sail": "Vela Gris Claro",
|
||||
"block.create.light_gray_seat": "Asiento Gris Claro",
|
||||
"block.create.light_gray_valve_handle": "Manija de Válvula Gris Claro",
|
||||
"block.create.lime_sail": "Vela Verde Lima",
|
||||
"block.create.lime_seat": "Asiento Verde Lima",
|
||||
"block.create.lime_valve_handle": "Manija de Válvula Verde Lima",
|
||||
"block.create.limesand": "Arena de Caliza",
|
||||
"block.create.limestone": "Caliza",
|
||||
"block.create.limestone_bricks": "Ladrillos de Caliza",
|
||||
"block.create.limestone_bricks_slab": "Losa de Ladrillos de Caliza",
|
||||
"block.create.limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza",
|
||||
"block.create.limestone_bricks_wall": "Pared de Ladrillos de Caliza",
|
||||
"block.create.limestone_cobblestone": "Piedra Labrada de Caliza",
|
||||
"block.create.limestone_cobblestone_slab": "Losa de Piedra Labrada de Caliza",
|
||||
"block.create.limestone_cobblestone_stairs": "Escaleras de Piedra Labrada de Caliza",
|
||||
"block.create.limestone_cobblestone_wall": "Pared de Piedra Labrada de Caliza",
|
||||
"block.create.limestone_pillar": "Pilar de Caliza",
|
||||
"block.create.linear_chassis": "Chasis Lineal",
|
||||
"block.create.lit_blaze_burner": "Quemador de Blaze Iluminado",
|
||||
"block.create.magenta_sail": "Vela Magenta",
|
||||
"block.create.magenta_seat": "Asiento Magenta",
|
||||
"block.create.magenta_valve_handle": "Manija de Válvula Magenta",
|
||||
"block.create.mechanical_arm": "Brazo Mecánico",
|
||||
"block.create.mechanical_bearing": "Rodamiento Mecánico",
|
||||
"block.create.mechanical_crafter": "Crafter Mecánico",
|
||||
"block.create.mechanical_drill": "Taladro Mecánico",
|
||||
"block.create.mechanical_harvester": "Cosechador Mecánico",
|
||||
"block.create.mechanical_mixer": "Mezcladora Mecánica",
|
||||
"block.create.mechanical_piston": "Pistón Mecánico",
|
||||
"block.create.mechanical_piston_head": "Cabeza de Pistón Mecánico",
|
||||
"block.create.mechanical_plough": "Arado Mecánico",
|
||||
"block.create.mechanical_press": "Prensa Mecánica",
|
||||
"block.create.mechanical_pump": "Bomba Mecánica",
|
||||
"block.create.mechanical_saw": "Sierra Mecánica",
|
||||
"block.create.metal_bracket": "Soporte de Metal",
|
||||
"block.create.millstone": "Molino",
|
||||
"block.create.minecart_anchor": "Ancla de Vagonetas",
|
||||
"block.create.mossy_andesite": "Andesita Musgosa",
|
||||
"block.create.mossy_dark_scoria": "Escoria Oscura Musgosa",
|
||||
"block.create.mossy_diorite": "Diorita Musgosa",
|
||||
"block.create.mossy_dolomite": "Dolomita Musgosa",
|
||||
"block.create.mossy_gabbro": "Gabro Musgoso",
|
||||
"block.create.mossy_granite": "Granito Musgoso",
|
||||
"block.create.mossy_limestone": "Caliza Musgosa",
|
||||
"block.create.mossy_scoria": "Escoria Musgosa",
|
||||
"block.create.mossy_weathered_limestone": "Caliza Meteorizada Musgosa",
|
||||
"block.create.mysterious_cuckoo_clock": "Reloj Cuco",
|
||||
"block.create.natural_scoria": "Escoria Natural",
|
||||
"block.create.nixie_tube": "Tubo Nixie",
|
||||
"block.create.nozzle": "Boquilla",
|
||||
"block.create.oak_window": "Ventana de Roble",
|
||||
"block.create.oak_window_pane": "Panel de Ventana de Roble",
|
||||
"block.create.orange_sail": "Vela Naranja",
|
||||
"block.create.orange_seat": "Asiento Naranja",
|
||||
"block.create.orange_valve_handle": "Manija de Válvula Naranja",
|
||||
"block.create.ornate_iron_window": "Ventana Ornamentada",
|
||||
"block.create.ornate_iron_window_pane": "Panel de Ventana Ornamentada",
|
||||
"block.create.overgrown_andesite": "Andesita Descuidada",
|
||||
"block.create.overgrown_dark_scoria": "Escoria Oscura Descuidada",
|
||||
"block.create.overgrown_diorite": "Diorita Descuidada",
|
||||
"block.create.overgrown_dolomite": "Dolomita Descuidada",
|
||||
"block.create.overgrown_gabbro": "Gabro Descuidado",
|
||||
"block.create.overgrown_granite": "Granito Descuidado",
|
||||
"block.create.overgrown_limestone": "Caliza Descuidada",
|
||||
"block.create.overgrown_scoria": "Escoria Descuidada",
|
||||
"block.create.overgrown_weathered_limestone": "Caliza Meteorizada Descuidada",
|
||||
"block.create.paved_andesite": "Andesita Pavimentada",
|
||||
"block.create.paved_andesite_slab": "Losa de Andesita Pavimentada",
|
||||
"block.create.paved_andesite_stairs": "Escaleras de Andesita Pavimentada",
|
||||
"block.create.paved_andesite_wall": "Pared de Andesita Pavimentada",
|
||||
"block.create.paved_dark_scoria": "Escoria Oscura Pavimentada",
|
||||
"block.create.paved_dark_scoria_slab": "Losa de Escoria Oscura Pavimentada",
|
||||
"block.create.paved_dark_scoria_stairs": "Escaleras de Escoria Oscura Pavimentada",
|
||||
"block.create.paved_dark_scoria_wall": "Pared de Escoria Oscura Pavimentada",
|
||||
"block.create.paved_diorite": "Diorita Pavimentada",
|
||||
"block.create.paved_diorite_slab": "Losa de Diorita Pavimentada",
|
||||
"block.create.paved_diorite_stairs": "Escaleras de Diorita Pavimentada",
|
||||
"block.create.paved_diorite_wall": "Pared de Diorita Pavimentada",
|
||||
"block.create.paved_dolomite": "Dolomita Pavimentada",
|
||||
"block.create.paved_dolomite_slab": "Losa de Dolomita Pavimentada",
|
||||
"block.create.paved_dolomite_stairs": "Escaleras de Dolomita Pavimentada",
|
||||
"block.create.paved_dolomite_wall": "Pared de Dolomita Pavimentada",
|
||||
"block.create.paved_gabbro": "Gabro Pavimentado",
|
||||
"block.create.paved_gabbro_slab": "Losa de Gabro Pavimentado",
|
||||
"block.create.paved_gabbro_stairs": "Escaleras de Gabro Pavimentado",
|
||||
"block.create.paved_gabbro_wall": "Pared de Gabro Pavimentado",
|
||||
"block.create.paved_granite": "Granito Pavimentado",
|
||||
"block.create.paved_granite_slab": "Losa de Granito Pavimentado",
|
||||
"block.create.paved_granite_stairs": "Escaleras de Granito Pavimentado",
|
||||
"block.create.paved_granite_wall": "Pared de Granito Pavimentado",
|
||||
"block.create.paved_limestone": "Caliza Pavimentada",
|
||||
"block.create.paved_limestone_slab": "Losa de Caliza Pavimentada",
|
||||
"block.create.paved_limestone_stairs": "Escaleras de Caliza Pavimentada",
|
||||
"block.create.paved_limestone_wall": "Pared de Caliza Pavimentada",
|
||||
"block.create.paved_scoria": "Escoria Pavimentada",
|
||||
"block.create.paved_scoria_slab": "Losa de Escoria Pavimentada",
|
||||
"block.create.paved_scoria_stairs": "Escaleras de Escoria Pavimentada",
|
||||
"block.create.paved_scoria_wall": "Pared de Escoria Pavimentada",
|
||||
"block.create.paved_weathered_limestone": "Caliza Meteorizada Pavimentada",
|
||||
"block.create.paved_weathered_limestone_slab": "Losa de Caliza Meteorizada Pavimentada",
|
||||
"block.create.paved_weathered_limestone_stairs": "Escaleras de Caliza Meteorizada Pavimentada",
|
||||
"block.create.paved_weathered_limestone_wall": "Pared de Caliza Meteorizada Pavimentada",
|
||||
"block.create.pink_sail": "Vela Rosa",
|
||||
"block.create.pink_seat": "Asiento Rosa",
|
||||
"block.create.pink_valve_handle": "Manija de Válvula Rosa",
|
||||
"block.create.piston_extension_pole": "Poste de Extensión de Pistón",
|
||||
"block.create.polished_dark_scoria": "Escoria Oscura Pulida",
|
||||
"block.create.polished_dark_scoria_slab": "Losa de Escoria Oscura Pulida",
|
||||
"block.create.polished_dark_scoria_stairs": "Escaleras de Escoria Oscura Pulida",
|
||||
"block.create.polished_dark_scoria_wall": "Pared de Escoria Oscura Pulida",
|
||||
"block.create.polished_dolomite": "Dolomita Pulida",
|
||||
"block.create.polished_dolomite_slab": "Losa de Dolomita Pulida",
|
||||
"block.create.polished_dolomite_stairs": "Escaleras de Dolomita Pulida",
|
||||
"block.create.polished_dolomite_wall": "Pared de Dolomita Pulida",
|
||||
"block.create.polished_gabbro": "Gabro Pulido",
|
||||
"block.create.polished_gabbro_slab": "Losa de Gabro Pulido",
|
||||
"block.create.polished_gabbro_stairs": "Escaleras de Gabro Pulido",
|
||||
"block.create.polished_gabbro_wall": "Pared de Gabro Pulido",
|
||||
"block.create.polished_limestone": "Caliza Pulida",
|
||||
"block.create.polished_limestone_slab": "Losa de Caliza Pulida",
|
||||
"block.create.polished_limestone_stairs": "Escaleras de Caliza Pulida",
|
||||
"block.create.polished_limestone_wall": "Pared de Caliza Pulida",
|
||||
"block.create.polished_scoria": "Escoria Pulida",
|
||||
"block.create.polished_scoria_slab": "Losa de Escoria Pulida",
|
||||
"block.create.polished_scoria_stairs": "Escaleras de Escoria Pulida",
|
||||
"block.create.polished_scoria_wall": "Pared de Escoria Pulida",
|
||||
"block.create.polished_weathered_limestone": "Caliza Meteorizada Pulida",
|
||||
"block.create.polished_weathered_limestone_slab": "Losa de Escoria Pulida",
|
||||
"block.create.polished_weathered_limestone_stairs": "Escaleras de Escoria Pulida",
|
||||
"block.create.polished_weathered_limestone_wall": "Pared de Escoria Pulida",
|
||||
"block.create.portable_fluid_interface": "Interfaz de Fluidos Portable",
|
||||
"block.create.portable_storage_interface": "Interfaz de Almacenamiento Portable",
|
||||
"block.create.powered_latch": "Cerradura Electrica",
|
||||
"block.create.powered_toggle_latch": "Cerradura Electrica de Palanca",
|
||||
"block.create.pulley_magnet": "Polea con Imán",
|
||||
"block.create.pulse_repeater": "Repetidor de Pulso",
|
||||
"block.create.purple_sail": "Vela Morada",
|
||||
"block.create.purple_seat": "Asiento Morado",
|
||||
"block.create.purple_valve_handle": "Manija de Válvula Morada",
|
||||
"block.create.radial_chassis": "Chasis Radial",
|
||||
"block.create.red_sail": "Vela Roja",
|
||||
"block.create.red_seat": "Asiento Rojo",
|
||||
"block.create.red_valve_handle": "Manija de Válvula Roja",
|
||||
"block.create.redstone_contact": "Contacto de Redstone",
|
||||
"block.create.redstone_link": "Enlace de Redstone",
|
||||
"block.create.refined_radiance_casing": "Carcasa Radiante",
|
||||
"block.create.reinforced_rail": "Vía Reforzada",
|
||||
"block.create.rope": "Cuerda",
|
||||
"block.create.rope_pulley": "Polea con Cuerda",
|
||||
"block.create.rotation_speed_controller": "Controlador de Velocidad de Rotación",
|
||||
"block.create.sail_frame": "Marco de Vela",
|
||||
"block.create.schematic_table": "Mesa de Esquemas",
|
||||
"block.create.schematicannon": "Esquemacañon",
|
||||
"block.create.scoria": "Escoria",
|
||||
"block.create.scoria_bricks": "Ladrillos de Escoria",
|
||||
"block.create.scoria_bricks_slab": "Losa de Ladrillos de Escoria",
|
||||
"block.create.scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria",
|
||||
"block.create.scoria_bricks_wall": "Pared de Ladrillos de Escoria",
|
||||
"block.create.scoria_cobblestone": "Piedra Labrada de Escoria",
|
||||
"block.create.scoria_cobblestone_slab": "Losa de Piedra Labrada de Escoria",
|
||||
"block.create.scoria_cobblestone_stairs": "Escaleras de Piedra Labrada de Escoria",
|
||||
"block.create.scoria_cobblestone_wall": "Pared de Piedra Labrada de Escoria",
|
||||
"block.create.scoria_pillar": "Pilar de Escoria",
|
||||
"block.create.secondary_linear_chassis": "Chasis Lineal Secundario",
|
||||
"block.create.sequenced_gearshift": "Cambio de Marcha Secuenciado",
|
||||
"block.create.shadow_steel_casing": "Carcasa Sombría",
|
||||
"block.create.shaft": "Eje",
|
||||
"block.create.smart_fluid_pipe": "Tubería de Fluidos Inteligente",
|
||||
"block.create.speedometer": "Velocímetro",
|
||||
"block.create.spout": "Canaleta",
|
||||
"block.create.spruce_window": "Ventana de Abeto",
|
||||
"block.create.spruce_window_pane": "Panel de Ventana de Abeto",
|
||||
"block.create.sticky_mechanical_piston": "Pistón Mecánico Pegajoso",
|
||||
"block.create.stockpile_switch": "Interruptor de Pila",
|
||||
"block.create.stressometer": "Estresómetro",
|
||||
"block.create.tiled_glass": "Vidrio de Azulejos",
|
||||
"block.create.tiled_glass_pane": "Panel de Vidrio de Azulejos",
|
||||
"block.create.turntable": "Mesa Giratoria",
|
||||
"block.create.vertical_framed_glass": "Vidrio Enmarcado Vertical",
|
||||
"block.create.vertical_framed_glass_pane": "Panel de Vidrio Enmarcado Vertical",
|
||||
"block.create.warped_window": "Ventana Distorsionada",
|
||||
"block.create.warped_window_pane": "Panel de ventana Distorsionada",
|
||||
"block.create.water_wheel": "Rueda Hidráulica",
|
||||
"block.create.weathered_limestone": "Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_bricks": "Ladrillos de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_bricks_slab": "Losa de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_bricks_stairs": "Escaleras de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_bricks_wall": "Pared de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_cobblestone": "Piedra Labrada de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_cobblestone_slab": "Losa de Piedra Labrada de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_cobblestone_stairs": "Escaleras de Piedra Labrada de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_cobblestone_wall": "Pared de Piedra Labrada de Caliza Meteorizada",
|
||||
"block.create.weathered_limestone_pillar": "Pilar de Caliza Meteorizada",
|
||||
"block.create.white_sail": "Vela Blanca",
|
||||
"block.create.white_seat": "Asiento Blanco",
|
||||
"block.create.white_valve_handle": "Manija de Válvula Blanca",
|
||||
"block.create.windmill_bearing": "Rodamiento de Molino de Viento",
|
||||
"block.create.wooden_bracket": "Soporte de Madera",
|
||||
"block.create.yellow_sail": "Vela Amarilla",
|
||||
"block.create.yellow_seat": "Asiento Amarillo",
|
||||
"block.create.yellow_valve_handle": "Manija de Válvula Amarilla",
|
||||
"block.create.zinc_block": "Bloque de Zinc",
|
||||
"block.create.zinc_ore": "Mineral de Zinc",
|
||||
|
||||
"entity.create.contraption": "Artefacto",
|
||||
"entity.create.seat": "Asiento",
|
||||
"entity.create.stationary_contraption": "Artefacto Estacionario",
|
||||
"entity.create.super_glue": "Super Pegamento",
|
||||
|
||||
"fluid.create.chocolate": "Chocolate",
|
||||
"fluid.create.honey": "Miel",
|
||||
"fluid.create.milk": "Leche",
|
||||
"fluid.create.potion": "Poción",
|
||||
"fluid.create.tea": "Té del Constructor",
|
||||
|
||||
"item.create.andesite_alloy": "Aleación de Andesita",
|
||||
"item.create.attribute_filter": "Filtro por Atributos",
|
||||
"item.create.bar_of_chocolate": "Barra de Chocolate",
|
||||
"item.create.belt_connector": "Conector de Correa",
|
||||
"item.create.blaze_cake": "Pastel de Blaze",
|
||||
"item.create.blaze_cake_base": "Base de Pastel de Blaze",
|
||||
"item.create.brass_hand": "Mano de Latón",
|
||||
"item.create.brass_ingot": "Lingote de Latón",
|
||||
"item.create.brass_nugget": "Pepita de Latón",
|
||||
"item.create.brass_sheet": "Lámina de Latón",
|
||||
"item.create.builders_tea": "Té del Constructor",
|
||||
"item.create.chest_minecart_contraption": "Artefacto de Vagón con Cofre",
|
||||
"item.create.chocolate_bucket": "Cubeta de Chocolate",
|
||||
"item.create.chromatic_compound": "Compuesto Cromático",
|
||||
"item.create.cinder_flour": "Ceniza Molida",
|
||||
"item.create.copper_ingot": "Lingote de Cobre",
|
||||
"item.create.copper_nugget": "Pepita de Cobre",
|
||||
"item.create.copper_sheet": "Lámina de Cobre",
|
||||
"item.create.crafter_slot_cover": "Cubierta de Ranura del Crafter",
|
||||
"item.create.crushed_aluminum_ore": "Mineral de Aluminio Molido",
|
||||
"item.create.crushed_brass": "Latón Molido",
|
||||
"item.create.crushed_copper_ore": "Mineral de Cobre Molido",
|
||||
"item.create.crushed_gold_ore": "Mineral de Oro Molido",
|
||||
"item.create.crushed_iron_ore": "Mineral de Hierro Molido",
|
||||
"item.create.crushed_lead_ore": "Mineral de Plomo Molido",
|
||||
"item.create.crushed_nickel_ore": "Mineral de Nickel Molido",
|
||||
"item.create.crushed_osmium_ore": "Mineral de Osmio Molido",
|
||||
"item.create.crushed_platinum_ore": "Mineral de Platino Molido",
|
||||
"item.create.crushed_quicksilver_ore": "Mineral de Mercurio Molido",
|
||||
"item.create.crushed_silver_ore": "Mineral de Plata Molido",
|
||||
"item.create.crushed_tin_ore": "Mineral de Estaño Molido",
|
||||
"item.create.crushed_uranium_ore": "Mineral de Uranio Molido",
|
||||
"item.create.crushed_zinc_ore": "Mineral de Zinc Molido",
|
||||
"item.create.deforester": "Deforestador",
|
||||
"item.create.dough": "Masa",
|
||||
"item.create.electron_tube": "Válvula Electrónica",
|
||||
"item.create.empty_blaze_burner": "Quemador de Blaze Vacío",
|
||||
"item.create.empty_schematic": "Esquema Vacío",
|
||||
"item.create.extendo_grip": "Brazo Extensor",
|
||||
"item.create.extendo_grip": "Brazo Extensor",
|
||||
"item.create.filter": "Filtro",
|
||||
"item.create.furnace_minecart_contraption": "Artefacto de Vagón con Horno",
|
||||
"item.create.goggles": "Gafas de Protección para Ingenieros",
|
||||
"item.create.golden_sheet": "Lámina de Oro",
|
||||
"item.create.handheld_blockzapper": "Pistola de Manipulación de Bloques",
|
||||
"item.create.handheld_worldshaper": "Pistola de Manipulación de Mundo",
|
||||
"item.create.honey_bucket": "Cubeta de Miel",
|
||||
"item.create.integrated_circuit": "Circuito Integrado",
|
||||
"item.create.iron_sheet": "Lámina de Hierro",
|
||||
"item.create.lapis_sheet": "Lámina de Lapislázuli",
|
||||
"item.create.minecart_contraption": "Artefacto de Vagón",
|
||||
"item.create.minecart_coupling": "Acoplamiento de Vagonetas",
|
||||
"item.create.polished_rose_quartz": "Cuarzo Rosa Pulido",
|
||||
"item.create.powdered_obsidian": "Polvo de Obsidiana",
|
||||
"item.create.propeller": "Hélice",
|
||||
"item.create.red_sand_paper": "Papel de Arena Roja",
|
||||
"item.create.refined_radiance": "Radiancia Refinada",
|
||||
"item.create.rose_quartz": "Cuarzo Rosa",
|
||||
"item.create.sand_paper": "Papel de Arena",
|
||||
"item.create.schematic": "Esquema",
|
||||
"item.create.schematic_and_quill": "Esquema y Pluma",
|
||||
"item.create.shadow_steel": "Acero Sombrío",
|
||||
"item.create.super_glue": "Super Pegamento",
|
||||
"item.create.tree_fertilizer": "Fertilizador de Árboles",
|
||||
"item.create.vertical_gearbox": "Transmisión Vertical",
|
||||
"item.create.wand_of_symmetry": "Vara de la Simetria",
|
||||
"item.create.wheat_flour": "Harina de Trigo",
|
||||
"item.create.whisk": "Batidor",
|
||||
"item.create.wrench": "Llave Inglesa",
|
||||
"item.create.zinc_ingot": "Lingote de Zinc",
|
||||
"item.create.zinc_nugget": "Pepita de Zinc",
|
||||
|
||||
|
||||
"_": "->------------------------] Item Descriptions [------------------------<-",
|
||||
|
||||
"item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)",
|
||||
"item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.",
|
||||
"item.create.example_item.tooltip.condition1": "When this",
|
||||
"item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)",
|
||||
"item.create.example_item.tooltip.condition2": "And When this",
|
||||
"item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like",
|
||||
"item.create.example_item.tooltip.control1": "When Ctrl pressed",
|
||||
"item.create.example_item.tooltip.action1": "These controls are displayed.",
|
||||
|
||||
"block.create.andesite_encased_shaft.tooltip": "EJE EMPOTRADO DE ANDESITA",
|
||||
"block.create.andesite_encased_shaft.tooltip.summary": "Objeto _exclusivo_ _del_ _Creativo_ .Cubre los ejes _en_ _el_ _mundo_ usando Carcasa de _Andesita_ . Los bloques de carcasa no se consumirán.",
|
||||
|
||||
"block.create.brass_encased_shaft.tooltip": "EJE EMPOTRADO DE LATÓN",
|
||||
"block.create.brass_encased_shaft.tooltip.summary": "Objeto _exclusivo_ _del_ _Creativo_ .Cubre los ejes _en_ _el_ _mundo_ usando Carcasa de _Latón_ . Los bloques de carcasa no se consumirán.",
|
||||
|
||||
"block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA",
|
||||
"block.create.wooden_bracket.tooltip.summary": "_Decora_ tus _ejes,_ _ruedas_ _dentadas_ y _tuberías_ con un pequeño y acogedor refuerzo de madera",
|
||||
|
||||
"block.create.metal_bracket.tooltip": "SOPORTE DE METAL",
|
||||
"block.create.metal_bracket.tooltip.summary": "_Decora_ tus _ejes,_ _ruedas_ _dentadas_ y _tuberías_ con un robusto refuerzo industrial de metal",
|
||||
|
||||
"block.create.andesite_casing.tooltip": "CARCASA DE ANDESITA",
|
||||
"block.create.andesite_casing.tooltip.summary": "Una simple carcasa para máquinas con una variedad de usos. Segura para la decoración. Se puede usar para cubrir _ejes_ y _correas_ _mecánicas_ .",
|
||||
|
||||
"block.create.andesite_funnel.tooltip": "EMBUDO DE ANDESITA",
|
||||
"block.create.andesite_funnel.tooltip.summary": "Un componente de transferencia de objetos generales, que hace la transición entre los medios de transporte. Puede ser controlado con una _señal_ _de_ _redstone_ .",
|
||||
"block.create.andesite_funnel.tooltip.condition1": "Comportamiento General",
|
||||
"block.create.andesite_funnel.tooltip.behaviour1": "La _cara_ _abierta_ recogerá los _objetos_ en el bloque que tiene delante y los _introducirá_ en cualquier contenedor en el lado opuesto del embudo.",
|
||||
"block.create.andesite_funnel.tooltip.condition2": "Cuando se monta en correas, depósitos y similares",
|
||||
"block.create.andesite_funnel.tooltip.behaviour2": "_Recoge_ o _Coloca_ artículos en el componente montado, desde o hacia el _inventario_ _detrás_ de sí mismo. Siempre que el embudo tenga una direccionalidad específica, esta puede ser invertida usando una llave inglesa.",
|
||||
"block.create.andesite_funnel.tooltip.condition3": "Cuando esta vertical entre dos inventarios",
|
||||
"block.create.andesite_funnel.tooltip.behaviour3": "_Transferirá_ los objetos _hacia abajo_ , como si fuera una tolva sin buffer.",
|
||||
|
||||
"block.create.andesite_tunnel.tooltip": "TÚNEL DE ANDESITA",
|
||||
"block.create.andesite_tunnel.tooltip.summary": "Una cubierta protectora para sus _Correas_ y una gran manera de cubrir los agujeros dejados en su pared por ellas.",
|
||||
"block.create.andesite_tunnel.tooltip.control1": "Click derecho a un lado con la llave inglesa",
|
||||
"block.create.andesite_tunnel.tooltip.action1": "Ajusta las percianas de la ventana si el túnel tiene una en esa cara.",
|
||||
|
||||
"block.create.brass_funnel.tooltip": "EMBUDO DE LATÓN",
|
||||
"block.create.brass_funnel.tooltip.summary": "Un componente de transferencia de objetos generales, que hace la transición entre los medios de transporte. Puede ser controlado con una _señal_ _de_ _redstone_ . Viene con un practico _filtro_ .",
|
||||
"block.create.brass_funnel.tooltip.condition1": "Comportamiento General",
|
||||
"block.create.brass_funnel.tooltip.behaviour1": "La _cara_ _abierta_ recogerá los _objetos_ en el bloque que tiene delante y los _introducirá_ en cualquier contenedor en el lado opuesto del embudo.",
|
||||
"block.create.brass_funnel.tooltip.condition2": "Cuando se monta en correas, depósitos y similares",
|
||||
"block.create.brass_funnel.tooltip.behaviour2": "_Recoge_ o _Coloca_ artículos en el componente montado, desde o hacia el _inventario_ _detrás_ de sí mismo. Siempre que el embudo tenga una direccionalidad específica, esta puede ser invertida usando una llave inglesa.",
|
||||
"block.create.brass_funnel.tooltip.condition3": "Cuando esta vertical entre dos inventarios",
|
||||
"block.create.brass_funnel.tooltip.behaviour3": "_Transferirá_ los objetos _hacia abajo_ , como si fuera una tolva sin buffer.",
|
||||
|
||||
"block.create.brass_tunnel.tooltip": "TÚNEL DE LATÓN",
|
||||
"block.create.brass_tunnel.tooltip.summary": "El _Túnel_ _de_ _Latón_ vienen con un número de opciones de _filtrado_ y _separación_ de objetos para sus _correas_ .",
|
||||
"block.create.brass_tunnel.tooltip.condition1": "Cuando se colocan uno al lado del otro",
|
||||
"block.create.brass_tunnel.tooltip.behaviour1": "Los _Túneles_ _de_ _Latón_ se conectan entre sí permitiendo que el contenido de una _correa_ sea redirigido a otra.",
|
||||
"block.create.brass_tunnel.tooltip.condition2": "Filtraje",
|
||||
"block.create.brass_tunnel.tooltip.behaviour2": "Los _Túneles_ _de_ _ Latón_ vienen con filtros tanto para la entrada como para la salida. Si un _objeto_ no está permitido desde el filtro de salida de un _Túnel_ será transferido a la salida de otro _Túnel_ conectado.",
|
||||
"block.create.brass_tunnel.tooltip.condition3": "Dividiendo",
|
||||
"block.create.brass_tunnel.tooltip.behaviour3": "Los _Túneles_ _de_ _Latón_ de pueden ser configurados para cambiar el método en el que se ordenan los _objetos_ en las _correas_ conectadas.",
|
||||
"block.create.brass_tunnel.tooltip.control1": "Click derecho a un lado con la llave inglesa",
|
||||
"block.create.brass_tunnel.tooltip.action1": "Ajusta las percianas de la ventana si el túnel tiene una en esa cara.",
|
||||
"block.create.brass_tunnel.tooltip.control2": "Girar la rueda del ratón con la llave inglesa en la parte superior",
|
||||
"block.create.brass_tunnel.tooltip.action2": "Cambia el método de división de los _túneles_ conectados.",
|
||||
|
||||
"block.create.copper_casing.tooltip": "CARCASA DE COBRE",
|
||||
"block.create.copper_casing.tooltip.summary": "Una simple carcasa para máquinas con una variedad de usos. Segura para la decoración.",
|
||||
"block.create.copper_casing.tooltip.condition1": "Cuando se usa en una Tubería de Fluidos",
|
||||
"block.create.copper_casing.tooltip.behaviour1": "Recubre la _Tubería_ _de_ _Fluidos_ con la _Carcasa_ _de_ _Cobre._ Las tuberías recubiertas _bloquearán_ _sus_ _conexiones_ en su lugar, ya no reaccionarán a los cambios de las tuberías vecinas.",
|
||||
|
||||
"block.create.encased_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS RECUBIERTA",
|
||||
"block.create.encased_fluid_pipe.tooltip.summary": "Una _Tubería_ _de_ _Fluidos_ recubierta con una _Carcasa_ _de_ _Cobre_",
|
||||
|
||||
"block.create.copper_valve_handle.tooltip": "MANIJA DE VÁLVULA DE COBRE",
|
||||
"block.create.copper_valve_handle.tooltip.summary": "Una precisa _fuente_ de _Fuerza_ _Rotacional_ que requiere la interacción de los jugadores. ¡Ten cuidado de no desgastarte!",
|
||||
"block.create.copper_valve_handle.tooltip.condition1": "Cuando se usa",
|
||||
"block.create.copper_valve_handle.tooltip.behaviour1": "Proporciona _fuerza_ _rotacional_ a un artefacto adjunto. _agáchate_ _para_ _revertir_ la rotación.",
|
||||
|
||||
"block.create.seat.tooltip": "ASIENTO",
|
||||
"block.create.seat.tooltip.summary": "¡Siéntese y disfrute del paseo! Anclará a un jugador en una _artefacto_ en movimiento. ¡También es Grandioso para las construcciones estáticas! Viene en una variedad de colores.",
|
||||
"block.create.seat.tooltip.condition1": "Click Derecho en el asiento",
|
||||
"block.create.seat.tooltip.behaviour1": "Sienta al jugador en el _asiento_ . Presiona el shift izquierdo para salir del _asiento._",
|
||||
|
||||
"block.create.chute.tooltip": "VERTEDOR",
|
||||
"block.create.chute.tooltip.summary": "_Recoge_ y transporta objetos en vertical o en diagonal. Puede llevar y colocar los objetos en _contenedores._ También puede interactuar con los vertedores desde el lado usando _tolvas_ o _embudos_ _montados._",
|
||||
"block.create.chute.tooltip.condition1": "Cuando es usado con un ventilador",
|
||||
"block.create.chute.tooltip.behaviour1": "Los vertedores usados con _ventiladores_ pueden transportar _objetos_ hacia arriba y succionar _objetos_ de _depósitos_ y _correas._",
|
||||
|
||||
"block.create.depot.tooltip": "DEPÓSITO",
|
||||
"block.create.depot.tooltip.summary": "Un lugar práctico para colocar sus _Objetos._ Proporciona un punto de interacción para varias máquinas",
|
||||
"block.create.depot.tooltip.condition1": "Click Derecho en un Depósito",
|
||||
"block.create.depot.tooltip.behaviour1": "Coloca o toma un _objeto_ del _depósito._ Los _bloques_ y _artefactos_ que interactúan con una _correa_ también funcionan en un _depósito._",
|
||||
|
||||
"item.create.blaze_cake.tooltip": "PASTEL DE BLAZE",
|
||||
"item.create.blaze_cake.tooltip.summary": "Un delicioso regalo para tus grandiosos _quemadores_ _de_ _blaze._ ¡Los enciende a todos!",
|
||||
|
||||
"item.create.empty_blaze_burner.tooltip": "QUEMADOR DE BLAZE VACIO",
|
||||
"item.create.empty_blaze_burner.tooltip.summary": "Un pequeño hogar de hierro para tus ardientes amigos. Estoy seguro de que podrías darles un buen uso.",
|
||||
"item.create.empty_blaze_burner.tooltip.condition1": "Cuando es usado en un generador de blaze",
|
||||
"item.create.empty_blaze_burner.tooltip.behaviour1": "_Captura_ un blaze en el objeto",
|
||||
|
||||
"block.create.fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS",
|
||||
"block.create.fluid_pipe.tooltip.summary": "Se usa para mover _fluidos._ Necesita una _bomba_ _mecánica_ para mover el fluido.",
|
||||
"block.create.fluid_pipe.tooltip.condition1": "Transferencia de fluidos",
|
||||
"block.create.fluid_pipe.tooltip.behaviour1": "Puede conectarse a _contenedores_ _de_ _fluidos_ como _tanques_ o _cuencas._ Los extremos expuestos de las _tuberías_ también pueden drenar o colocar bloques de fluido. ¡Ten cuidado con las fugas!",
|
||||
"block.create.fluid_pipe.tooltip.control1": "Click Derecho con una Llave Inglesa",
|
||||
"block.create.fluid_pipe.tooltip.action1": "Coloca una ventana en la tubería si está disponible",
|
||||
|
||||
"block.create.hose_pulley.tooltip": "POLEA CON MANGUERA",
|
||||
"block.create.hose_pulley.tooltip.summary": "Se utiliza para _colocar_ o _drenar_ grandes _cuerpos_ _de_ _fluido_ en el mundo.",
|
||||
"block.create.hose_pulley.tooltip.condition1": "Cuando es impulsado por la cinética",
|
||||
"block.create.hose_pulley.tooltip.behaviour1": "_Sube_ o _baja_ la manguera, La ubicación de la manguera determina hasta qué _altura_ actuará la _extracción_ o el _llenado_ .",
|
||||
"block.create.hose_pulley.tooltip.condition2": "Cuando los fluidos son extraídos de la polea",
|
||||
"block.create.hose_pulley.tooltip.behaviour2": "Empieza a _extraer_ bloques de _líquido_ del cuerpo en el que se bajó la punta de la manguera. Los cuerpos de fluido _muy_ _grandes_ serán _considerados_ _infinitos_ .",
|
||||
"block.create.hose_pulley.tooltip.condition3": "Cuando los fluidos son empujados a la polea",
|
||||
"block.create.hose_pulley.tooltip.behaviour3": "Comienza a _llenar_ con _fluido_ en el mundo _hasta_ _arriba_ a la _altura_ de la _punta_ _de_ _la_ _manguera_ .",
|
||||
|
||||
"block.create.fluid_tank.tooltip": "TANQUE DE FLUIDOS",
|
||||
"block.create.fluid_tank.tooltip.summary": "Almacena todos tus _fluidos_ favoritos. Escala en anchura y altura.",
|
||||
"block.create.fluid_tank.tooltip.condition1": "Click Derecho con una Llave Inglesa",
|
||||
"block.create.fluid_tank.tooltip.behaviour1": "Cambia la ventana opcional",
|
||||
|
||||
"block.create.creative_fluid_tank.tooltip": "TANQUE DE FLUIDOS DEL CREATIVO",
|
||||
"block.create.creative_fluid_tank.tooltip.summary": "Este _Tanque_ _de_ _Fluidos_ permite la replicación infinita de cualquier Fluido. Escala en anchura y altura.",
|
||||
"block.create.creative_fluid_tank.tooltip.condition1": "Cuando hay fluido en el tanque",
|
||||
"block.create.creative_fluid_tank.tooltip.behaviour1": "Cualquier cosa que _extraiga_ de este tanque proporcionará un _suministro_ _ilimitado_ del fluido especificado. Los fluidos _insertados_ en este tanque serán _eliminados._",
|
||||
"block.create.creative_fluid_tank.tooltip.condition2": "Click Derecho con una Llave Inglesa",
|
||||
"block.create.creative_fluid_tank.tooltip.behaviour2": "Cambia la ventana opcional",
|
||||
|
||||
"block.create.fluid_valve.tooltip": "VÁLVULAL DE FLUIDOS",
|
||||
"block.create.fluid_valve.tooltip.summary": "Detiene el flujo de fluido por una tubería.",
|
||||
"block.create.fluid_valve.tooltip.condition1": "Flujo controlable",
|
||||
"block.create.fluid_valve.tooltip.behaviour1": "Aplicando una _fuerza_ _de_ _rotación_ forzará a la _válvula_ a cerrarse, cesando el flujo de _fluidos._ Invierte la dirección de la _fuerza_ _de_ _rotación_ para reabrir la válvula.",
|
||||
|
||||
"block.create.mechanical_pump.tooltip": "BOMBA MECÁNICA",
|
||||
"block.create.mechanical_pump.tooltip.summary": "Toma la _fuerza_ _de_ _rotación_ y la usa para mover el _fluido_ a lo largo de un _tubo._ Tiene un rango de efecto máximo en ambas direcciones. (16 bloques por defecto)",
|
||||
"block.create.mechanical_pump.tooltip.condition1": "Flujo de fluidos",
|
||||
"block.create.mechanical_pump.tooltip.behaviour1": "La _fuerza_ _de_ _rotación_ aplicada crea una presión que fuerza el _fluido_ a través de la red de _tuberías._ Invierte la dirección de la fuerza de rotación para cambiar la dirección en la que fluye el _fluido._",
|
||||
"block.create.mechanical_pump.tooltip.control1": "Click Derecho con una Llave Inglesa",
|
||||
"block.create.mechanical_pump.tooltip.action1": "Invierte la dirección de la _bomba,_ cambiando la dirección por defecto del flujo",
|
||||
|
||||
"block.create.smart_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS INTELIGENTE",
|
||||
"block.create.smart_fluid_pipe.tooltip.summary": "Una _tubería_ _de_ _fluidos_ con un filtro. Puede especificar que _fluidos_ pasan por ella.",
|
||||
"block.create.smart_fluid_pipe.tooltip.condition1": "Cuando los fluidos son empujados hacia ella",
|
||||
"block.create.smart_fluid_pipe.tooltip.behaviour1": "Las tuberías inteligentes que reciben un fluido que no coincide con su filtro bloquearán el flujo.",
|
||||
"block.create.smart_fluid_pipe.tooltip.condition2": "Cuando está adyacente a un recipiente de fluido",
|
||||
"block.create.smart_fluid_pipe.tooltip.behaviour2": "Las tuberías inteligentes que _inicien_ un _flujo_ desde cualquier contenedor sólo extraerán los fluidos que _coincidan_ con su _filtro._",
|
||||
|
||||
"block.create.spout.tooltip": "CANALETA",
|
||||
"block.create.spout.tooltip.summary": "Un inyector para rellenar sus _objetos_ con _fluidos._",
|
||||
"block.create.spout.tooltip.condition1": "Transferencia de fluidos",
|
||||
"block.create.spout.tooltip.behaviour1": "Cuando se coloca un _objeto_ que puede _contener_ _fluidos_ como una _cubeta_ o _botella_ debajo, la canaleta intentará rellenarlo con su propio _fluido_ almacenado.",
|
||||
"block.create.spout.tooltip.condition2": "Automatización de fluidos",
|
||||
"block.create.spout.tooltip.behaviour2": "La canaleta colocada sobre una _correa_ o _depósito_ reaccionará automáticamente con un _contenedor_ _de_ _líquido_ que pase por debajo de él.",
|
||||
|
||||
"block.create.item_drain.tooltip": "ITEM DRAIN",
|
||||
"block.create.item_drain.tooltip.summary": "Un depósito con rejilla para vaciar sus _objetos_ _con_ _fluidos._",
|
||||
"block.create.item_drain.tooltip.condition1": "Transferencia de fluidos",
|
||||
"block.create.item_drain.tooltip.behaviour1": "Cuando se inserta un _contenedor_ _de_ _fluidos_ como una _cubeta_ o _botella_ desde el lado, el extractor intentará vaciarlo en su propio _contenedor_ de _fluidos._ El objeto será entonces expulsado por el lado opuesto.",
|
||||
|
||||
"block.create.mechanical_arm.tooltip": "MECHANICAL ARM",
|
||||
"block.create.mechanical_arm.tooltip.summary": "Un artefacto avanzado para reubicar _objetos._",
|
||||
"block.create.mechanical_arm.tooltip.condition1": "Transferencia de objetos",
|
||||
"block.create.mechanical_arm.tooltip.behaviour1": "Puede tomar o colocar artículos en cualquier _inventario_ _accesible,_ como _Correas,_ _Depósitos,_ _Embudos_ y _Crafters_ _Mecánicos._",
|
||||
"block.create.mechanical_arm.tooltip.control1": "Mientras que este en la mano",
|
||||
"block.create.mechanical_arm.tooltip.action1": "Click Derecho en un _inventario_ _de_ _objetos_ _accesible_ para establecerlo como _fuente_ del _Brazo_ _Mecánico._ Haga clic derecho dos veces para establecerlo como el _destino._",
|
||||
"block.create.mechanical_arm.tooltip.control2": "Girar la rueda del ratón con la llave inglesa",
|
||||
"block.create.mechanical_arm.tooltip.action2": "Establece el criterio de comportamiento para la salida de los _objetos_ por el _Brazo_ _Mecánico._",
|
||||
|
||||
"item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND",
|
||||
"item.create.wand_of_symmetry.tooltip.summary": "Crea un 'espejo' que refleja perfectamente la colocación de bloques a través de los planos configurados.",
|
||||
"item.create.wand_of_symmetry.tooltip.condition1": "Cuando esta en la barra de ítems",
|
||||
"item.create.wand_of_symmetry.tooltip.behaviour1": "Se mantiene activo",
|
||||
"item.create.wand_of_symmetry.tooltip.control1": "Click Derecho en el suelo",
|
||||
"item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _mueve_ el 'espejo'.",
|
||||
"item.create.wand_of_symmetry.tooltip.control2": "Click Derecho en el aire",
|
||||
"item.create.wand_of_symmetry.tooltip.action2": "_Remueve_ el 'espejo' activo",
|
||||
"item.create.wand_of_symmetry.tooltip.control3": "Click Derecho cuando se esta agachado",
|
||||
"item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración_",
|
||||
|
||||
"item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER",
|
||||
"item.create.handheld_blockzapper.tooltip.summary": "Novedoso artilugio para colocar o intercambiar bloques a distancia.",
|
||||
"item.create.handheld_blockzapper.tooltip.control1": "Click Izquierdo a un bloque",
|
||||
"item.create.handheld_blockzapper.tooltip.action1": "Establece los bloques que serán colocados por la herramienta en el bloque objetivo.",
|
||||
"item.create.handheld_blockzapper.tooltip.control2": "Click Derecho en un bloque",
|
||||
"item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ o _reemplaza_ el bloque objetivo.",
|
||||
"item.create.handheld_blockzapper.tooltip.control3": "Click Derecho mientras se está agachado",
|
||||
"item.create.handheld_blockzapper.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración._",
|
||||
|
||||
"item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER",
|
||||
"item.create.handheld_worldshaper.tooltip.summary": "Una herramienta útil para crear _paisajes_ y _características_ en el _terreno._",
|
||||
"item.create.handheld_worldshaper.tooltip.control1": "Click Izquierdo a un bloque",
|
||||
"item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques que serán colocados por la herramienta en el bloque objetivo.",
|
||||
"item.create.handheld_worldshaper.tooltip.control2": "Click Derecho en un bloque",
|
||||
"item.create.handheld_worldshaper.tooltip.action2": "Aplica el _Pincel_ y la _Herramienta_ actualmente seleccionados en el lugar objetivo.",
|
||||
"item.create.handheld_worldshaper.tooltip.control3": "Click Derecho mientras se está agachado",
|
||||
"item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración._",
|
||||
|
||||
"item.create.tree_fertilizer.tooltip": "TREE FERTILIZER",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Una poderosa combinación de minerales adecuados para acelerar el crecimiento de los tipos de árboles comunes.",
|
||||
"item.create.tree_fertilizer.tooltip.condition1": "Cuando se usa en un retoño de árbol",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles, sin importar el espacio entre ellos.",
|
||||
|
||||
"item.create.deforester.tooltip": "DEFORESTER",
|
||||
"item.create.deforester.tooltip.summary": "Un _hacha_ _radiante_ capaz de cortar árboles en una fracción de segundo.",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "Boioioing! En gran medida, _aumenta_ _la_ _distancia_ _de_ _alcance_ del portador.",
|
||||
"item.create.extendo_grip.tooltip.condition1": "Cuando está en la mano secundaria",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Aumenta el rango de alcance de los objetos usados en la _mano_ _principal._",
|
||||
|
||||
"item.create.filter.tooltip": "FILTER",
|
||||
"item.create.filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _objetos_ o varios _filtros_ _anidados._",
|
||||
"item.create.filter.tooltip.condition1": "Cuando está en la ranura del filtro",
|
||||
"item.create.filter.tooltip.behaviour1": "_Controla_ el flujo de objetos según su _configuración._",
|
||||
"item.create.filter.tooltip.condition2": "Con Click Derecho",
|
||||
"item.create.filter.tooltip.behaviour2": "Abre la _Interfaz_ _de_ _Configuración._",
|
||||
|
||||
"item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER",
|
||||
"item.create.attribute_filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _atributos_ _de_ _objetos_ y _categorias._",
|
||||
"item.create.attribute_filter.tooltip.condition1": "Cuando está en la ranura del filtro",
|
||||
"item.create.attribute_filter.tooltip.behaviour1": "_Controla_ el flujo de objetos según su _configuración._",
|
||||
"item.create.attribute_filter.tooltip.condition2": "Con Click Derecho",
|
||||
"item.create.attribute_filter.tooltip.behaviour2": "Abre la _Interfaz_ _de_ _Configuración._",
|
||||
|
||||
"item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC",
|
||||
"item.create.empty_schematic.tooltip.summary": "Se usa como ingrediente en una receta y para escribir en la _Mesa_ _de_ _Esquemas._",
|
||||
|
||||
"item.create.schematic.tooltip": "SCHEMATIC",
|
||||
"item.create.schematic.tooltip.summary": "Sostiene una estructura para ser posicionada y colocada en el mundo. Posiciona el Holograma como se desee y usa un _Esquemacañon_ para construirlo.",
|
||||
"item.create.schematic.tooltip.condition1": "Cuando es sostenido",
|
||||
"item.create.schematic.tooltip.behaviour1": "Se puede posicionar usando las Herramientas en Pantalla.",
|
||||
"item.create.schematic.tooltip.control1": "Click Derecho mientras se está agachado",
|
||||
"item.create.schematic.tooltip.action1": "Abre una _interfaz_ para introducir las _coordenadas_ exactas.",
|
||||
|
||||
"item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL",
|
||||
"item.create.schematic_and_quill.tooltip.summary": "Se usa para guardar una estructura de tu mundo en un archivo .nbt",
|
||||
"item.create.schematic_and_quill.tooltip.condition1": "Paso 1",
|
||||
"item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos esquinas con Click Derecho.",
|
||||
"item.create.schematic_and_quill.tooltip.condition2": "Paso 2",
|
||||
"item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ _+_ _girar_ _rueda_ _del_ _ratón_ en las caras para ajustar el tamaño. Click Derecho de nuevo para Guardar.",
|
||||
"item.create.schematic_and_quill.tooltip.control1": "Click Derecho",
|
||||
"item.create.schematic_and_quill.tooltip.action1": "Selecciona una esquina / confirma el guardado.",
|
||||
"item.create.schematic_and_quill.tooltip.control2": "Manteniendo la tecla Ctrl",
|
||||
"item.create.schematic_and_quill.tooltip.action2": "Selecciona los puntos en _medio_ _del_ _aire._ _Girar_ _rueda_ _del_ _ratón_ para ajustar la distancia.",
|
||||
"item.create.schematic_and_quill.tooltip.control3": "Click Derecho mientras se está agachado",
|
||||
"item.create.schematic_and_quill.tooltip.action3": "_Reinicia_ y quita la selección.",
|
||||
|
||||
"block.create.schematicannon.tooltip": "SCHEMATICANNON",
|
||||
"block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _esquema_ ya desplegado en el mundo. Utiliza objetos de los inventarios adyacentes y _Pólvora_ como combustible.",
|
||||
"block.create.schematicannon.tooltip.control1": "Click Derecho sobre él",
|
||||
"block.create.schematicannon.tooltip.action1": "Abre la interfaz",
|
||||
|
||||
"block.create.schematic_table.tooltip": "SCHEMATIC TABLE",
|
||||
"block.create.schematic_table.tooltip.summary": "Escribe los esquemas guardados en un _Esquema_ _Vacío._",
|
||||
"block.create.schematic_table.tooltip.condition1": "Cuando se le da un esquema vacío",
|
||||
"block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de su carpeta de esquemas.",
|
||||
|
||||
"block.create.shaft.tooltip": "SHAFT",
|
||||
"block.create.shaft.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta.",
|
||||
|
||||
"block.create.cogwheel.tooltip": "COGWHEEL",
|
||||
"block.create.cogwheel.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta, y a las _Ruedas_ _Dentadas_ adyacentes.",
|
||||
|
||||
"block.create.large_cogwheel.tooltip": "LARGE COGWHEEL",
|
||||
"block.create.large_cogwheel.tooltip.summary": "Una versión más grande de la _Rueda_ _Dentada,_ que permite _cambiar_ _la_ _Velocidad_ _de_ _Rotación_ cuando se conecta a su Contraparte más pequeña.",
|
||||
|
||||
"block.create.encased_shaft.tooltip": "ENCASED SHAFT",
|
||||
"block.create.encased_shaft.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta. Adecuado para transmitir la rotación a través de las paredes.",
|
||||
|
||||
"block.create.gearbox.tooltip": "GEARBOX",
|
||||
"block.create.gearbox.tooltip.summary": "_Transmite_ la _rotación_ en _cuatro_ _direcciones._ Invierte las conexiones rectas.",
|
||||
|
||||
"block.create.gearshift.tooltip": "GEARSHIFT",
|
||||
"block.create.gearshift.tooltip.summary": "Un control para cambiar la dirección de rotación de los ejes conectados.",
|
||||
"block.create.gearshift.tooltip.condition1": "Cuando tiene una señal de Redstone",
|
||||
"block.create.gearshift.tooltip.behaviour1": "_Invierte_ la rotación de salida.",
|
||||
|
||||
"block.create.clutch.tooltip": "CLUTCH",
|
||||
"block.create.clutch.tooltip.summary": "Un control para activar/desactivar la rotación de los ejes conectados.",
|
||||
"block.create.clutch.tooltip.condition1": "Cuando tiene una señal de Redstone",
|
||||
"block.create.clutch.tooltip.behaviour1": "_Deja_ de transmitir la rotación hacia el otro lado.",
|
||||
|
||||
"block.create.encased_chain_drive.tooltip": "ENCASED_CHAIN_DRIVE",
|
||||
"block.create.encased_chain_drive.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta y a las _Transmisiones_ _de_ _Cadena_ _Empotrada_ adyacentes. Las transmisiones de cadena se conectan en un grupo cuando se colocan juntas por cualquier cara sin un eje. Su orientación no tiene por qué coincidir.",
|
||||
"block.create.encased_chain_drive.tooltip.condition1": "Cuando se conectan",
|
||||
"block.create.encased_chain_drive.tooltip.behaviour1": "Los bloques adjuntos transmitirán la _velocidad_ _de_ _rotación_ y el sentido de este componente.",
|
||||
|
||||
"block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta y a las _Transmisiones_ _de_ _Cadena_ _Empotrada_ adyacentes. Una _señal_ _de_ _redstone_ proporcionada a este bloque controlará el tamaño de la rueda motriz que se acopla a las cadenas de transmisión.",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.condition1": "Control por Redstone",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Sin_ una señal, las cadenas adyacentes transmitirán la _misma_ _velocidad._ Con una señal a _máxima_ _potencia,_ las cadenas adyacentes transmitirán exactamente el _doble_ _de_ _su_ _velocidad._ Cualquier cosa intermedia dará resultados entre 1-2x su velocidad.",
|
||||
|
||||
"item.create.belt_connector.tooltip": "BELT CONNECTOR",
|
||||
"item.create.belt_connector.tooltip.summary": "Conecta dos o más _ejes_ con una _Correa_ _Mecánica._ Los ejes conectados tendrán exactamente la misma velocidad y dirección de rotación. La cinta puede actuar como un _transportador_ para _Objetos_ y _Entidades._",
|
||||
"item.create.belt_connector.tooltip.control1": "Click Derecho en un eje",
|
||||
"item.create.belt_connector.tooltip.action1": "Selecciona el eje como una polea del cinturón. Ambos ejes seleccionados tienen que _alinearse_ ya sea _Verticalmente,_ _Horizontalmente,_ o _Diagonalmente_ hacia la dirección de la Correa.",
|
||||
"item.create.belt_connector.tooltip.control2": "Click Derecho mientras se está agachado",
|
||||
"item.create.belt_connector.tooltip.action2": "_Reinicia_ la primera posición seleccionada para la correa.",
|
||||
|
||||
"item.create.goggles.tooltip": "GOGGLES",
|
||||
"item.create.goggles.tooltip.summary": "Un par de gafas para aumentar la visión con _información_ _cinética_ útil.",
|
||||
"item.create.goggles.tooltip.condition1": "Cuando se usan",
|
||||
"item.create.goggles.tooltip.behaviour1": "Muestra _indicadores_ _con_ _colores_ correspondientes al _Nivel_ _de_ _Velocidad_ de un componente cinético colocado, así como _Impacto_ _de_ _Estrés_ y _Capacidad_ de los componentes individuales.",
|
||||
"item.create.goggles.tooltip.condition2": "Al mirar el medidor",
|
||||
"item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre la _velocidad_ o el _estrés_ de la red a la que está conectado el medidor.",
|
||||
|
||||
"item.create.wrench.tooltip": "WRENCH",
|
||||
"item.create.wrench.tooltip.summary": "Una herramienta útil para trabajar en artefactos cinéticos. Se puede utilizar para _Rotar,_ _Desmantelar_ y _Configurar_ componentes.",
|
||||
"item.create.wrench.tooltip.control1": "Click Derecho en un bloqueo cinético",
|
||||
"item.create.wrench.tooltip.action1": "_Gira_ los componentes hacia o en contra de la cara con la que interactuó.",
|
||||
"item.create.wrench.tooltip.control2": "Click Derecho mientras se está agachado",
|
||||
"item.create.wrench.tooltip.action2": "_Desmonta_ los _componentes_ _cinéticos_ y los coloca de nuevo en _tú_ _inventario._"
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -1414,7 +1414,7 @@
|
|||
"block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в кожухе_. Полученный _сигнал редстоуна_ будет контролировать, какой размер шестерни взаимодействует с присоединенными цепными приводами.",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.condition1": "Кнонтроль редстоуном",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Без_ сигнала редстоуна присоединённые приводы будут иметь _такую же_ скорость. При получении _сигнала редстоуна_ максимального уровня, соединённые приводы будут вращаться с ровно в два раза меньшей скоростью. Всё, что между этими значениями, будет выдавать скорость от 1 до 2 кратной скорости цепного механизма.",
|
||||
"block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Без_ сигнала редстоуна присоединённые приводы будут иметь _такую же_ скорость. При получении _сигнала редстоуна_ максимального уровня, соединённые приводы будут вращаться с удвоенной скоростью. Всё, что между минимальным и максимальным значениями, будет выдавать скорость от 1 до 2 кратной скорости цепного механизма.",
|
||||
|
||||
"item.create.belt_connector.tooltip": "BELT CONNECTOR",
|
||||
"item.create.belt_connector.tooltip.summary": "Соединяет _2_ _Вала_ с помощью _механического_ _ремня_._ Соединённые валы будут иметь одинаковые _скорость_ и _направление_ _вращения._ Лента может служить как _конвейер_ для _транспортировки._",
|
||||
|
|
File diff suppressed because it is too large
Load diff
1792
src/main/resources/assets/create/lang/zh_tw.json
Normal file
1792
src/main/resources/assets/create/lang/zh_tw.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,8 @@
|
|||
"parent": "block/block",
|
||||
"textures": {
|
||||
"4": "#plate",
|
||||
"5": "#bracket"
|
||||
"5": "#bracket",
|
||||
"particle": "#plate"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
"from": [0, 0, 0],
|
||||
"to": [16, 2, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 14, 16, 16], "texture": "#0"},
|
||||
"north": {"uv": [0, 14, 16, 16], "texture": "#1"},
|
||||
"east": {"uv": [0, 14, 16, 16], "texture": "#0"},
|
||||
"south": {"uv": [0, 14, 16, 16], "texture": "#0"},
|
||||
"south": {"uv": [0, 14, 16, 16], "texture": "#1"},
|
||||
"west": {"uv": [0, 14, 16, 16], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
|
@ -36,12 +36,12 @@
|
|||
"from": [0, 14, 0],
|
||||
"to": [16, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 2], "texture": "#0"},
|
||||
"north": {"uv": [0, 0, 16, 2], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 16, 2], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 16, 2], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 16, 2], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 16, 2], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -0,0 +1,153 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/axis",
|
||||
"8": "create:block/bearing_top_wooden",
|
||||
"9": "create:block/windmill_bearing_side",
|
||||
"10": "create:block/pinion",
|
||||
"particle": "create:block/andesite_casing",
|
||||
"opening": "create:block/gearbox"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Bottom",
|
||||
"from": [0, 0, 0],
|
||||
"to": [16, 16, 4],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#8"},
|
||||
"east": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#9"},
|
||||
"south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#8"},
|
||||
"west": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#9"},
|
||||
"up": {"uv": [0, 8, 16, 12], "rotation": 180, "texture": "#10"},
|
||||
"down": {"uv": [0, 8, 16, 12], "texture": "#10"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Bottom",
|
||||
"from": [6, 0, -4],
|
||||
"to": [10, 16, 0],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"east": {"uv": [6, 0, 10, 16], "texture": "#0"},
|
||||
"west": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"},
|
||||
"up": {"uv": [6, 12, 10, 16], "rotation": 180, "texture": "#10"},
|
||||
"down": {"uv": [6, 12, 10, 16], "texture": "#10"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Bottom",
|
||||
"from": [0, 6, -4],
|
||||
"to": [16, 10, 0],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"},
|
||||
"east": {"uv": [10, 12, 14, 16], "rotation": 270, "texture": "#10"},
|
||||
"west": {"uv": [6, 12, 10, 16], "rotation": 90, "texture": "#10"},
|
||||
"up": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"},
|
||||
"down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Core",
|
||||
"from": [1, 1, 2],
|
||||
"to": [15, 15, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"},
|
||||
"east": {"uv": [1, 4, 15, 14], "rotation": 270, "texture": "#opening"},
|
||||
"south": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"},
|
||||
"west": {"uv": [1, 4, 15, 14], "rotation": 90, "texture": "#opening"},
|
||||
"up": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#opening"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#opening"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Top",
|
||||
"from": [0, 0, 12],
|
||||
"to": [16, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#8"},
|
||||
"east": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#9"},
|
||||
"south": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#8"},
|
||||
"west": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#9"},
|
||||
"up": {"uv": [0, 0, 16, 4], "rotation": 180, "texture": "#9"},
|
||||
"down": {"uv": [0, 0, 16, 4], "texture": "#9"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "SideWest",
|
||||
"from": [0, 14, 4],
|
||||
"to": [16, 16, 12],
|
||||
"faces": {
|
||||
"east": {"uv": [14, 0, 16, 8], "rotation": 270, "texture": "#10"},
|
||||
"west": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#10"},
|
||||
"up": {"uv": [0, 0, 16, 8], "rotation": 180, "texture": "#10"},
|
||||
"down": {"uv": [0, 0, 16, 8], "texture": "#10"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "SideEast",
|
||||
"from": [0, 0, 4],
|
||||
"to": [16, 2, 12],
|
||||
"faces": {
|
||||
"east": {"uv": [0, 0, 2, 8], "rotation": 270, "texture": "#10"},
|
||||
"west": {"uv": [14, 0, 16, 8], "rotation": 90, "texture": "#10"},
|
||||
"up": {"uv": [0, 0, 16, 8], "rotation": 180, "texture": "#10"},
|
||||
"down": {"uv": [0, 0, 16, 8], "texture": "#10"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [75, 45, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.375, 0.375, 0.375]
|
||||
},
|
||||
"thirdperson_lefthand": {
|
||||
"rotation": [75, 45, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.375, 0.375, 0.375]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [0, 45, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [0, 225, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"ground": {
|
||||
"translation": [0, 3, 0],
|
||||
"scale": [0.25, 0.25, 0.25]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [30, 225, 0],
|
||||
"translation": [0, 1.5, 0],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"translation": [0, 2.25, 0],
|
||||
"scale": [0.45, 0.45, 0.45]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "item_andesite",
|
||||
"origin": [8, 8, 8],
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"name": "item",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3, 4, 5, 6,
|
||||
{
|
||||
"name": "shaft",
|
||||
"origin": [8, 8, 8],
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue