Merge remote-tracking branch 'origin/mc1.15/dev' into mc1.15/dev

This commit is contained in:
grimmauld 2021-02-05 21:36:10 +01:00
commit 3d2edc492b
182 changed files with 17008 additions and 6373 deletions

View file

@ -22,7 +22,7 @@ boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equal
ext.buildnumber = 0
project.buildnumber = System.getenv('BUILD_NUMBER') != null ? System.getenv('BUILD_NUMBER') : "custom"
version = "mc${minecraft_version}_v${mod_version}"
version = "mc${minecraft_version}_v${mod_version}" + (dev ? "+${buildnumber}" : '')
group = 'com.simibubi.create'
archivesBaseName = 'create'

View file

@ -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
@ -335,7 +337,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl
d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json
92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json
61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json
89b63c6e5875da07226854651079bcea85439f5b assets/create/blockstates/radial_chassis.json
bdd56f32ce0a148b6e466a55ab2777f69fc08cfc assets/create/blockstates/radial_chassis.json
45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json
da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json
722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json
@ -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
b8e44c8c33b3c36b850f579e317103eb57f85f07 assets/create/lang/unfinished/fr_fr.json
89f7029d73733938ee9f900fc36d52ab7fc97563 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
54da7badbd4fb043f73f6e9a4dfc52bd9e7f515c 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

View file

@ -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
}
}
}

View file

@ -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
}
}
}

View file

@ -89,8 +89,8 @@
},
{
"when": {
"sticky_west": "true",
"axis": "x"
"axis": "x",
"sticky_west": "true"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -99,8 +99,8 @@
},
{
"when": {
"sticky_west": "true",
"axis": "y"
"axis": "y",
"sticky_west": "true"
},
"apply": {
"model": "create:block/radial_chassis_side_y_sticky",
@ -109,8 +109,8 @@
},
{
"when": {
"sticky_west": "true",
"axis": "z"
"axis": "z",
"sticky_west": "true"
},
"apply": {
"model": "create:block/radial_chassis_side_z_sticky",
@ -119,8 +119,8 @@
},
{
"when": {
"sticky_west": "false",
"axis": "x"
"axis": "x",
"sticky_west": "false"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -129,8 +129,8 @@
},
{
"when": {
"sticky_west": "false",
"axis": "y"
"axis": "y",
"sticky_west": "false"
},
"apply": {
"model": "create:block/radial_chassis_side_y",
@ -139,8 +139,8 @@
},
{
"when": {
"sticky_west": "false",
"axis": "z"
"axis": "z",
"sticky_west": "false"
},
"apply": {
"model": "create:block/radial_chassis_side_z",
@ -207,8 +207,8 @@
},
{
"when": {
"sticky_east": "true",
"axis": "x"
"axis": "x",
"sticky_east": "true"
},
"apply": {
"model": "create:block/radial_chassis_side_x_sticky",
@ -217,8 +217,8 @@
},
{
"when": {
"sticky_east": "true",
"axis": "y"
"axis": "y",
"sticky_east": "true"
},
"apply": {
"model": "create:block/radial_chassis_side_y_sticky",
@ -227,8 +227,8 @@
},
{
"when": {
"sticky_east": "true",
"axis": "z"
"axis": "z",
"sticky_east": "true"
},
"apply": {
"model": "create:block/radial_chassis_side_z_sticky"
@ -236,8 +236,8 @@
},
{
"when": {
"sticky_east": "false",
"axis": "x"
"axis": "x",
"sticky_east": "false"
},
"apply": {
"model": "create:block/radial_chassis_side_x",
@ -246,8 +246,8 @@
},
{
"when": {
"sticky_east": "false",
"axis": "y"
"axis": "y",
"sticky_east": "false"
},
"apply": {
"model": "create:block/radial_chassis_side_y",
@ -256,8 +256,8 @@
},
{
"when": {
"sticky_east": "false",
"axis": "z"
"axis": "z",
"sticky_east": "false"
},
"apply": {
"model": "create:block/radial_chassis_side_z"

View file

@ -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",

View file

@ -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",

View file

@ -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",

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,10 @@
{
"_": "Missing Localizations: 862",
"_": "Missing Localizations: 730",
"_": "->------------------------] Game Elements [------------------------<-",
"block.create.acacia_window": "UNLOCALIZED: Acacia Window",
"block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane",
"block.create.acacia_window": "Fenêtre en acacia",
"block.create.acacia_window_pane": "Vitre en acacia",
"block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift",
"block.create.adjustable_crate": "Caisse ajustable",
"block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable",
@ -12,21 +12,21 @@
"block.create.analog_lever": "Levier analogique",
"block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel",
"block.create.andesite_bricks": "Briques d'andésite",
"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_bricks_slab": "Dalle en briques d'andésite",
"block.create.andesite_bricks_stairs": "Escalier en briques d'andésite",
"block.create.andesite_bricks_wall": "Mur en briques d'andésite",
"block.create.andesite_casing": "Boîtier en andésite",
"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.andesite_cobblestone": "Pierres d'andésite",
"block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite",
"block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite",
"block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite",
"block.create.andesite_encased_shaft": "Arbre mécanique dans un revêtement en andésite",
"block.create.andesite_funnel": "Entonnoir en andésite",
"block.create.andesite_pillar": "Pilier en andésite",
"block.create.andesite_tunnel": "Tunnel en andésite",
"block.create.basin": "Bassin",
"block.create.belt": "Tapis roulant",
"block.create.birch_window": "UNLOCALIZED: Birch Window",
"block.create.birch_window": "Fenêtre en bouleau",
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
"block.create.black_sail": "UNLOCALIZED: Black Sail",
"block.create.black_seat": "UNLOCALIZED: Black Seat",
@ -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",
@ -401,71 +403,72 @@
"block.create.yellow_sail": "UNLOCALIZED: Yellow Sail",
"block.create.yellow_seat": "UNLOCALIZED: Yellow Seat",
"block.create.yellow_valve_handle": "UNLOCALIZED: Yellow Valve Handle",
"block.create.zinc_block": "UNLOCALIZED: Zinc Block",
"block.create.zinc_block": "Bloc de zinc",
"block.create.zinc_ore": "Minerai de zinc",
"entity.create.contraption": "UNLOCALIZED: Contraption",
"entity.create.seat": "UNLOCALIZED: Seat",
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
"entity.create.contraption": "Engin",
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
"entity.create.seat": "Siège",
"entity.create.stationary_contraption": "Engin stationnaire",
"entity.create.super_glue": "Colle extra-forte",
"fluid.create.milk": "UNLOCALIZED: Milk",
"fluid.create.potion": "UNLOCALIZED: Potion",
"fluid.create.tea": "UNLOCALIZED: Builder's Tea",
"fluid.create.milk": "Lait",
"fluid.create.potion": "Potion",
"fluid.create.tea": "Thé du constructeur",
"item.create.andesite_alloy": "Alliage d'andésite",
"item.create.attribute_filter": "Filtre d'attribut",
"item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate",
"item.create.bar_of_chocolate": "Barre de chocolat",
"item.create.belt_connector": "Tapis roulant",
"item.create.blaze_cake": "UNLOCALIZED: Blaze Cake",
"item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base",
"item.create.blaze_cake": "Cake au blaze",
"item.create.blaze_cake_base": "Base d'un cake au blase",
"item.create.brass_hand": "Main",
"item.create.brass_ingot": "Lingot de laiton",
"item.create.brass_nugget": "Pépite de laiton",
"item.create.brass_sheet": "Plaques de laiton",
"item.create.builders_tea": "UNLOCALIZED: Builder's Tea",
"item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption",
"item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket",
"item.create.builders_tea": "Thé du constructeur",
"item.create.chest_minecart_contraption": "Engin de wagonnet avec coffre",
"item.create.chocolate_bucket": "Seau de chocolat",
"item.create.chromatic_compound": "Composé chromatique",
"item.create.cinder_flour": "UNLOCALIZED: Cinder Flour",
"item.create.cinder_flour": "Farine de braise",
"item.create.copper_ingot": "Lingot de cuivre",
"item.create.copper_nugget": "Pépite de cuivre",
"item.create.copper_sheet": "Plaques de cuivre",
"item.create.crafter_slot_cover": "Couvercle",
"item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore",
"item.create.crushed_aluminum_ore": "Aluminium concassé",
"item.create.crushed_brass": "Laiton concassé",
"item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore",
"item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore",
"item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore",
"item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore",
"item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore",
"item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore",
"item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore",
"item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore",
"item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore",
"item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore",
"item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore",
"item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore",
"item.create.crushed_copper_ore": "Cuivre concassé",
"item.create.crushed_gold_ore": "Or concassé",
"item.create.crushed_iron_ore": "Fer concassé",
"item.create.crushed_lead_ore": "Plomb concassé",
"item.create.crushed_nickel_ore": "Nickel concassé",
"item.create.crushed_osmium_ore": "Osmium concassé",
"item.create.crushed_platinum_ore": "Platinium concassé",
"item.create.crushed_quicksilver_ore": "Vif-argent concassé",
"item.create.crushed_silver_ore": "Argent concassé",
"item.create.crushed_tin_ore": "Etain concassé",
"item.create.crushed_uranium_ore": "Uranium concassé",
"item.create.crushed_zinc_ore": "Zinc concassé",
"item.create.deforester": "Déforesteur",
"item.create.dough": "Pâte",
"item.create.electron_tube": "Tube électronique",
"item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner",
"item.create.empty_blaze_burner": "Brûleur à blaze vide",
"item.create.empty_schematic": "Schéma vide",
"item.create.extendo_grip": "UNLOCALIZED: Extendo Grip",
"item.create.extendo_grip": "Extendo Grip",
"item.create.filter": "Filtre",
"item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption",
"item.create.furnace_minecart_contraption": "Engin de wagon avec fourneau",
"item.create.goggles": "Lunettes d'ingénieur",
"item.create.golden_sheet": "UNLOCALIZED: Golden Sheet",
"item.create.golden_sheet": "Feuille d'or",
"item.create.handheld_blockzapper": "Blockzappeur portable",
"item.create.handheld_worldshaper": "Térraformeur portable",
"item.create.honey_bucket": "UNLOCALIZED: Honey Bucket",
"item.create.honey_bucket": "Seau de miel",
"item.create.integrated_circuit": "Circuit intégré",
"item.create.iron_sheet": "Plaque de Fer",
"item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet",
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
"item.create.lapis_sheet": "Feuille de lapis",
"item.create.minecart_contraption": "Engin de wagonnet",
"item.create.minecart_coupling": "Lien pour wagonnet",
"item.create.polished_rose_quartz": "Quartz rose poli",
"item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian",
"item.create.powdered_obsidian": "Obsidienne concassée",
"item.create.propeller": "Hélice",
"item.create.red_sand_paper": "Papier de verre rouge",
"item.create.refined_radiance": "Éclat raffiné",
@ -474,11 +477,11 @@
"item.create.schematic": "Schéma",
"item.create.schematic_and_quill": "Schéma et plume",
"item.create.shadow_steel": "Acier sombre",
"item.create.super_glue": "UNLOCALIZED: Super Glue",
"item.create.super_glue": "Colle extra-forte",
"item.create.tree_fertilizer": "Engrais pour arbre",
"item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox",
"item.create.vertical_gearbox": "Boîte de transfert verticale",
"item.create.wand_of_symmetry": "Bâton de symétrie",
"item.create.wheat_flour": "UNLOCALIZED: Wheat Flour",
"item.create.wheat_flour": "Farine",
"item.create.whisk": "Fouet",
"item.create.wrench": "Clé",
"item.create.zinc_ingot": "Barre de zinc",
@ -487,16 +490,16 @@
"_": "->------------------------] Advancements [------------------------<-",
"advancement.create.root": "UNLOCALIZED: Welcome to Create",
"advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!",
"advancement.create.root": "Bienvenue dans Create.",
"advancement.create.root.desc": "Le temps de la redstone est révolu!",
"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.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.",
"advancement.create.its_alive": "Ça bouge!",
"advancement.create.its_alive.desc": "Regardez vos bremiers composants tourner.",
"advancement.create.shifting_gears": "Arbre de transmission",
"advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin",
"advancement.create.overstressed": "Surtension",
"advancement.create.overstressed.desc": "Testez d'abord les limites de la force mécanique",
"advancement.create.belt": "UNLOCALIZED: Kelp Drive",
"advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.",
"advancement.create.tunnel": "UNLOCALIZED: Take cover!",
@ -535,15 +538,15 @@
"advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!",
"advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power",
"advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.",
"advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel",
"advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.",
"advancement.create.cuckoo": "UNLOCALIZED: Is it time?",
"advancement.create.lava_wheel": "Roue à aubes... dans de la lave?",
"advancement.create.lava_wheel.desc": "Cela... N'aurait pas dû fonctionner.",
"advancement.create.cuckoo": "C'est déjà l'heure?",
"advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.",
"advancement.create.millstone": "UNLOCALIZED: Pocket Crusher",
"advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.",
"advancement.create.windmill": "UNLOCALIZED: A mild Breeze",
"advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.",
"advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze",
"advancement.create.windmill": "Une brise moyenne...",
"advancement.create.windmill.desc": "Construire un moulin à vent",
"advancement.create.maxed_windmill": "Et une forte brise.",
"advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.",
"advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age",
"advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.",
@ -651,8 +654,8 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "UNLOCALIZED: Create Palettes",
"itemGroup.create.base": "Create",
"itemGroup.create.palettes": "Create Palettes",
"death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage",
"death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud",
@ -665,32 +668,32 @@
"create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block",
"create.recipe.crushing": "Ecrasement",
"create.recipe.milling": "UNLOCALIZED: Milling",
"create.recipe.fan_washing": "UNLOCALIZED: Bulk Washing",
"create.recipe.fan_washing.fan": "UNLOCALIZED: Fan behind Flowing Water",
"create.recipe.fan_smoking": "UNLOCALIZED: Bulk Smoking",
"create.recipe.fan_smoking.fan": "UNLOCALIZED: Fan behind Fire",
"create.recipe.fan_blasting": "UNLOCALIZED: Bulk Blasting",
"create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava",
"create.recipe.milling": "Mouture",
"create.recipe.fan_washing": "Lavage",
"create.recipe.fan_washing.fan": "Ventilateur derrière de l'eau",
"create.recipe.fan_smoking": "Fumage",
"create.recipe.fan_smoking.fan": "Ventilateur derrière du feu",
"create.recipe.fan_blasting": "Fonte",
"create.recipe.fan_blasting.fan": "Ventilateur derrière de la lave",
"create.recipe.pressing": "Pressage",
"create.recipe.mixing": "Mixage",
"create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting",
"create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing",
"create.recipe.automatic_brewing": "Alchimie automatisée",
"create.recipe.packing": "Compactage",
"create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing",
"create.recipe.sawing": "UNLOCALIZED: Sawing",
"create.recipe.automatic_packing": "Compactage automatisé",
"create.recipe.sawing": "Sciage",
"create.recipe.mechanical_crafting": "Fabrication mécanique",
"create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting",
"create.recipe.block_cutting": "Coupe de bloc",
"create.recipe.blockzapper_upgrade": "Blockzappeur portable",
"create.recipe.sandpaper_polishing": "Polissage au papier de verre",
"create.recipe.mystery_conversion": "Métamorphose chromatique",
"create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout",
"create.recipe.spout_filling": "Remplissage par un bec verseur",
"create.recipe.draining": "UNLOCALIZED: Item Draining",
"create.recipe.processing.chance": "%1$s%% de chance",
"create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required",
"create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated",
"create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated",
"create.recipe.heat_requirement.none": "Pas de chauffage requis",
"create.recipe.heat_requirement.heated": "Chauffé",
"create.recipe.heat_requirement.superheated": "Surchauffé",
"create.generic.range": "Portée",
"create.generic.radius": "Rayon",
@ -705,9 +708,9 @@
"create.generic.unit.rpm": "tr/min",
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "UNLOCALIZED: %1$smB",
"create.generic.clockwise": "UNLOCALIZED: Clockwise",
"create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise",
"create.generic.unit.millibuckets": "%1$smS",
"create.generic.clockwise": "dans le sens horaire",
"create.generic.counter_clockwise": "dans le sens anti-horaire",
"create.action.scroll": "Faire défiler",
"create.action.confirm": "Confirmer",
@ -808,18 +811,18 @@
"create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first",
"create.logistics.filter": "Filtre",
"create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter",
"create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter",
"create.logistics.recipe_filter": "Filtre de recettes",
"create.logistics.fluid_filter": "Filtre de fuides",
"create.logistics.firstFrequency": "Freq. #1",
"create.logistics.secondFrequency": "Freq. #2",
"create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.",
"create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.",
"create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.",
"create.logistics.filter.apply": "Filtre appliqué à %1$s.",
"create.logistics.filter.apply_click_again": "Filtre appliqué à %1$s, appuiez de nouveau pour copier le montant",
"create.logistics.filter.apply_count": "Montant d'extraction appliqué au filtre",
"create.gui.goggles.generator_stats": "Statistiques du générateur:",
"create.gui.goggles.kinetic_stats": "Statistiques cinétiques:",
"create.gui.goggles.at_current_speed": "À la vitesse actuelle",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.goggles.pole_length": "Longueur de la barre",
"create.gui.gauge.info_header": "Informations sur la jauge:",
"create.gui.speedometer.title": "Vitesse de rotation",
"create.gui.stressometer.title": "Stress du réseau",
@ -831,9 +834,9 @@
"create.gui.adjustable_crate.title": "Caisse réglable",
"create.gui.adjustable_crate.storageSpace": "Espace de stockage",
"create.gui.stockpile_switch.title": "Commutateur de stockage",
"create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal",
"create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%",
"create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%",
"create.gui.stockpile_switch.invert_signal": "Inverser le signal",
"create.gui.stockpile_switch.move_to_lower_at": "Bouger sur la ligne du bas à %1$s%%",
"create.gui.stockpile_switch.move_to_upper_at": "Bouger sur la ligne de haut à %1$s%%",
"create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé",
"create.gui.sequenced_gearshift.instruction": "Instructions",
"create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner",
@ -854,8 +857,8 @@
"create.schematicAndQuill.secondPos": "Seconde position définie.",
"create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.",
"create.schematicAndQuill.abort": "Sélection supprimée.",
"create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:",
"create.schematicAndQuill.convert": "UNLOCALIZED: Save and Deploy Immediately",
"create.schematicAndQuill.title": "Nom du schéma:",
"create.schematicAndQuill.convert": "Enregistrer et déployer immédiatement",
"create.schematicAndQuill.fallbackName": "Mon schéma",
"create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s",
@ -905,8 +908,8 @@
"create.schematics.uploadTooLarge": "Votre schéma est trop grand.",
"create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:",
"create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files",
"create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder",
"create.gui.schematicTable.refresh": "Actualiser les fichiers",
"create.gui.schematicTable.open_folder": "Ouvrir le dossier",
"create.gui.schematicTable.title": "Table à schéma",
"create.gui.schematicTable.availableSchematics": "Schémas disponibles",
"create.gui.schematicTable.noSchematics": "Aucun schéma enregistré",
@ -919,14 +922,14 @@
"create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s",
"create.gui.schematicannon.optionEnabled": "Actuellement activé",
"create.gui.schematicannon.optionDisabled": "Actuellement désactivé",
"create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings",
"create.gui.schematicannon.showOptions": "Afficher les paramètres d'impression",
"create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides",
"create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide",
"create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi",
"create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien",
"create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants",
"create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities",
"create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon",
"create.gui.schematicannon.slot.gunpowder": "Ajouter de la poudre a canon pour alimenter le canon",
"create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic",
"create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.",
"create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.",
@ -954,7 +957,7 @@
"create.schematicannon.status.schematicNotPlaced": "Schéma non déployé",
"create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration",
"create.materialChecklist": "UNLOCALIZED: Material Checklist",
"create.materialChecklist": "Liste des matériaux",
"create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.",
"create.gui.filter.deny_list": "Liste noire",
@ -967,47 +970,47 @@
"create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.",
"create.item_attributes.placeable": "est placeable",
"create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable",
"create.item_attributes.placeable.inverted": "n'est pas plaçable",
"create.item_attributes.consumable": "peut être mangé",
"create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten",
"create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted",
"create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted",
"create.item_attributes.washable": "UNLOCALIZED: can be Washed",
"create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed",
"create.item_attributes.smokable": "UNLOCALIZED: can be Smoked",
"create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked",
"create.item_attributes.crushable": "UNLOCALIZED: can be Crushed",
"create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed",
"create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace",
"create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace",
"create.item_attributes.consumable.inverted": "ne peut pas être mangé",
"create.item_attributes.smeltable": "peut être fondu",
"create.item_attributes.smeltable.inverted": "ne peut pas être fondu",
"create.item_attributes.washable": "peut être lavé",
"create.item_attributes.washable.inverted": "ne peut pas être lavé",
"create.item_attributes.smokable": "peut être fumé",
"create.item_attributes.smokable.inverted": "ne peut pas être fumé",
"create.item_attributes.crushable": "peut être concassé",
"create.item_attributes.crushable.inverted": "ne peut pas être concassé",
"create.item_attributes.blastable": "est fondable dans un Haut fourneau",
"create.item_attributes.blastable.inverted": "n'est pas fondable dans un Haut fourneau",
"create.item_attributes.enchanted": "est enchanté",
"create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted",
"create.item_attributes.enchanted.inverted": "n'est pas enchanté",
"create.item_attributes.damaged": "est endommagé",
"create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged",
"create.item_attributes.damaged.inverted": "n'est pas endomagé",
"create.item_attributes.badly_damaged": "est fortement damaged",
"create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged",
"create.item_attributes.badly_damaged.inverted": "n'est pas fortement endomagé",
"create.item_attributes.not_stackable": "ne peut pas s'empiler",
"create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked",
"create.item_attributes.not_stackable.inverted": "peut être empilé",
"create.item_attributes.equipable": "peut être équipé",
"create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped",
"create.item_attributes.equipable.inverted": "ne peut pas être équipé",
"create.item_attributes.furnace_fuel": "est du combustible",
"create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel",
"create.item_attributes.furnace_fuel.inverted": "n'est pas un combustible",
"create.item_attributes.in_tag": "est étiqueté %1$s",
"create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s",
"create.item_attributes.in_tag.inverted": "n'est pas étiqueté",
"create.item_attributes.in_item_group": "appartient à %1$s",
"create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'",
"create.item_attributes.in_item_group.inverted": "n'appartient pas à %1$s'",
"create.item_attributes.added_by": "a été ajouté par %1$s",
"create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s",
"create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s",
"create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s",
"create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s",
"create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s",
"create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s",
"create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s",
"create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s",
"create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s",
"create.item_attributes.book_copy_original": "UNLOCALIZED: is an original",
"create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original",
"create.item_attributes.added_by.inverted": "n'a pas été ajouté par %1$s",
"create.item_attributes.has_enchant": "est enchanté %1$s",
"create.item_attributes.has_enchant.inverted": "n'est pas enchenté %1$s",
"create.item_attributes.has_fluid": "contient %1$s",
"create.item_attributes.has_fluid.inverted": "ne contient pas %1$s",
"create.item_attributes.has_name": "est renommé %1$s",
"create.item_attributes.has_name.inverted": "n'est pas renommé %1$s",
"create.item_attributes.book_author": "a été écrit par %1$s",
"create.item_attributes.book_author.inverted": "n'a pas été écrit par %1$s",
"create.item_attributes.book_copy_original": "est originel",
"create.item_attributes.book_copy_original.inverted": "n'est pas originel",
"create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy",
"create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy",
"create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy",

View file

@ -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": "강력 접착제",

View file

@ -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",

View file

@ -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",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2",
"_": "Missing Localizations: 5",
"_": "->------------------------] Game Elements [------------------------<-",
@ -20,7 +20,7 @@
"block.create.andesite_cobblestone_slab": "Андезит-булыжниковая плита",
"block.create.andesite_cobblestone_stairs": "Андезит-булыжниковые ступени",
"block.create.andesite_cobblestone_wall": "Андезит-булыжниковая стена",
"block.create.andesite_encased_shaft": "Андезитовый вал в кожухе",
"block.create.andesite_encased_shaft": "Вал в андезитовом корпусе",
"block.create.andesite_funnel": "Андезитовая воронка",
"block.create.andesite_pillar": "Андезитовая колонна",
"block.create.andesite_tunnel": "Андезитовый туннель",
@ -30,20 +30,20 @@
"block.create.birch_window_pane": "Панель берёзового окна",
"block.create.black_sail": "Чёрный парус",
"block.create.black_seat": "Чёрное сиденье",
"block.create.black_valve_handle": "Чёрная ручка крана",
"block.create.black_valve_handle": "Чёрный ручной вентиль",
"block.create.blaze_burner": "Горелка Всполоха",
"block.create.blue_sail": "Синий парус",
"block.create.blue_seat": "Синее сиденье",
"block.create.blue_valve_handle": "Синяя ручка крана",
"block.create.blue_valve_handle": "Синий ручной вентиль",
"block.create.brass_belt_funnel": "Латунная конвейерная воронка",
"block.create.brass_block": "Латунный блок",
"block.create.brass_casing": "Латунный корпус",
"block.create.brass_encased_shaft": "Латунный вал в кожухе",
"block.create.brass_encased_shaft": "Вал в латунном корпусе",
"block.create.brass_funnel": "Латунная воронка",
"block.create.brass_tunnel": "Латунный туннель",
"block.create.brown_sail": "Коричневый парус",
"block.create.brown_seat": "Коричневое сиденье",
"block.create.brown_valve_handle": "Коричневая ручка крана",
"block.create.brown_valve_handle": "Коричневый ручной вентиль",
"block.create.cart_assembler": "Сборщик вагонеток",
"block.create.chiseled_dark_scoria": "Резной тёмный пепел",
"block.create.chiseled_dolomite": "Резной доломит",
@ -63,20 +63,20 @@
"block.create.copper_ore": "Медная руда",
"block.create.copper_shingles": "Медная черепица",
"block.create.copper_tiles": "Медная плитка",
"block.create.copper_valve_handle": "Медная ручка крана",
"block.create.copper_valve_handle": "Медный ручной вентиль",
"block.create.creative_crate": "Творческий ящик",
"block.create.creative_fluid_tank": "Творческиф жидкостный бак",
"block.create.creative_fluid_tank": "Творческий жидкостный бак",
"block.create.creative_motor": "Творческий мотор",
"block.create.crushing_wheel": "Колесо дробления",
"block.create.crushing_wheel_controller": "Контроллер колеса дробления",
"block.create.cuckoo_clock": "Часы с кукушкой",
"block.create.cyan_sail": "Бирюзовый парус",
"block.create.cyan_seat": "Бирюзовое сииденье",
"block.create.cyan_valve_handle": "Бирюзовая ручка крана",
"block.create.cyan_valve_handle": "Бирюзовый ручной вентиль",
"block.create.dark_oak_window": "Окно из тёмного дуба",
"block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб",
"block.create.dark_scoria": "Тёмный пепел",
"block.create.dark_scoria_bricks": "Тёмные пепельный кирпич",
"block.create.dark_scoria_bricks": "Тёмный пепельный кирпич",
"block.create.dark_scoria_bricks_slab": "Плита из тёмного пепельного кирпича",
"block.create.dark_scoria_bricks_stairs": "Ступени из тёмного пепельного кирпича",
"block.create.dark_scoria_bricks_wall": "Стена из тёмного пепельного кирпича",
@ -106,9 +106,9 @@
"block.create.dolomite_cobblestone_stairs": "Ступени доломит-булыжника",
"block.create.dolomite_cobblestone_wall": "Стена доломит-булыжника",
"block.create.dolomite_pillar": "Доломитовая колонна",
"block.create.encased_chain_drive": "Цепной привод в кожухе",
"block.create.encased_fan": "Вентилятор в кожухе",
"block.create.encased_fluid_pipe": "Жидкостная труба в кожухе",
"block.create.encased_chain_drive": "Цепной привод в корпусе",
"block.create.encased_fan": "Вентилятор в корпусе",
"block.create.encased_fluid_pipe": "Жидкостная труба в корпусе",
"block.create.fancy_andesite_bricks": "Красивый андезитовый кирпич",
"block.create.fancy_andesite_bricks_slab": "Плита из красивого андезитового кирпича",
"block.create.fancy_andesite_bricks_stairs": "Ступени из красивого андезитового кирпича",
@ -147,7 +147,7 @@
"block.create.fancy_weathered_limestone_bricks_wall": "Стена из красивого выветренного известнякового кирпича",
"block.create.fluid_pipe": "Жидкостная труба",
"block.create.fluid_tank": "Жидкостный бак",
"block.create.fluid_valve": "Жидкостный вентиль",
"block.create.fluid_valve": "Жидкостный клапан",
"block.create.flywheel": "Маховик",
"block.create.framed_glass": "Обрамлённое стекло",
"block.create.framed_glass_pane": "Обрамлённая стеклянная панель",
@ -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": "Стеклянная жидкостная труба",
@ -176,15 +178,15 @@
"block.create.granite_pillar": "Гранитная колонна",
"block.create.gray_sail": "Серый парус",
"block.create.gray_seat": "Серое сиденье",
"block.create.gray_valve_handle": "Серная ручка крана",
"block.create.gray_valve_handle": "Серый ручной вентиль",
"block.create.green_sail": "Зелёный парус",
"block.create.green_seat": "Зелёное сиденье",
"block.create.green_valve_handle": "Зелёная ручка крана",
"block.create.green_valve_handle": "Зелёный ручной вентиль",
"block.create.hand_crank": "Рукоятка",
"block.create.honey": "Мёд",
"block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло",
"block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель",
"block.create.hose_pulley": "Шкив для шланга",
"block.create.hose_pulley": "Шкив с шлангом",
"block.create.item_drain": "Предметный осушитель",
"block.create.jungle_window": "Окно из тропического дерева",
"block.create.jungle_window_pane": "Панель окна из тропического дерева",
@ -200,13 +202,13 @@
"block.create.layered_weathered_limestone": "Слоистый выветренный известняк",
"block.create.light_blue_sail": "Голубой парус",
"block.create.light_blue_seat": "Голубое сиденье",
"block.create.light_blue_valve_handle": "Голубая ручка крана",
"block.create.light_blue_valve_handle": "Голубой ручной вентиль",
"block.create.light_gray_sail": "Светло-серый парус",
"block.create.light_gray_seat": "Светло-серое сиденье",
"block.create.light_gray_valve_handle": "Светло-серая ручка крана",
"block.create.light_gray_valve_handle": "Светло-серый ручной вентиль",
"block.create.lime_sail": "Лаймовый парус",
"block.create.lime_seat": "Лаймовое сиденье",
"block.create.lime_valve_handle": "Лаймовая ручка крана",
"block.create.lime_valve_handle": "Лаймовый ручной вентиль",
"block.create.limesand": "Известковый песок",
"block.create.limestone": "Известняк",
"block.create.limestone_bricks": "Известняковый кирпич",
@ -222,7 +224,7 @@
"block.create.lit_blaze_burner": "Зажжёная горелка Всполоха",
"block.create.magenta_sail": "Пурпурный парус",
"block.create.magenta_seat": "Пурпурное сиденье",
"block.create.magenta_valve_handle": "Пурпурная ручка крана",
"block.create.magenta_valve_handle": "Пурпурный ручной вентиль",
"block.create.mechanical_arm": "Механическая рука",
"block.create.mechanical_bearing": "Механический вращатель",
"block.create.mechanical_crafter": "Механический крафтер",
@ -235,7 +237,7 @@
"block.create.mechanical_press": "Механический пресс",
"block.create.mechanical_pump": "Механическая помпа",
"block.create.mechanical_saw": "Механическая пила",
"block.create.metal_bracket": "Металлический кронштейн",
"block.create.metal_bracket": "Металлическая скоба",
"block.create.millstone": "Жернов",
"block.create.minecart_anchor": "Вагонеточный якорь",
"block.create.mossy_andesite": "Замшелый андезит",
@ -255,7 +257,7 @@
"block.create.oak_window_pane": "Панель из дубового окна",
"block.create.orange_sail": "Оранжевый парус",
"block.create.orange_seat": "Оранжевое сиденье",
"block.create.orange_valve_handle": "Оранжевая ручка крана",
"block.create.orange_valve_handle": "Оранжевый ручной вентиль",
"block.create.ornate_iron_window": "Украшенное железное окно",
"block.create.ornate_iron_window_pane": "Панель из украшенного железного окна",
"block.create.overgrown_andesite": "Заросший андезит",
@ -305,7 +307,7 @@
"block.create.paved_weathered_limestone_wall": "Стена из мощёного выветренного известняка",
"block.create.pink_sail": "Розовый парус",
"block.create.pink_seat": "Розовое сиденье",
"block.create.pink_valve_handle": "Розовая ручка крана",
"block.create.pink_valve_handle": "Розовый ручной вентиль",
"block.create.piston_extension_pole": "Удлинитель поршня",
"block.create.polished_dark_scoria": "Полированный тёмный пепел",
"block.create.polished_dark_scoria_slab": "Плита из полированного тёмного пепла",
@ -335,15 +337,15 @@
"block.create.portable_storage_interface": "Портативный интерфейс хранения",
"block.create.powered_latch": "Механизированная защёлка",
"block.create.powered_toggle_latch": "Механизированная рычаг-защёлка",
"block.create.pulley_magnet": "Шкивный магнит",
"block.create.pulley_magnet": "Магнитный шкив",
"block.create.pulse_repeater": "Импульсный повторитель",
"block.create.purple_sail": "Фиолетовый парус",
"block.create.purple_seat": "Фиолетовое сиденье",
"block.create.purple_valve_handle": "Фиолетовая ручка крана",
"block.create.purple_valve_handle": "Фиолетовый ручной вентиль",
"block.create.radial_chassis": "Радиальное шасси",
"block.create.red_sail": "Красный парус",
"block.create.red_seat": "Красное сиденье",
"block.create.red_valve_handle": "Красная ручка крана",
"block.create.red_valve_handle": "Красный ручной вентиль",
"block.create.redstone_contact": "Контакт сигнала красного камня",
"block.create.redstone_link": "Беспроводной передатчик сигнала красного камня",
"block.create.refined_radiance_casing": "Сияющий корпус",
@ -366,12 +368,12 @@
"block.create.scoria_pillar": "Колонна из пепла",
"block.create.secondary_linear_chassis": "Вторичное линейное шасси",
"block.create.sequenced_gearshift": "Последовательный переключатель передач",
"block.create.shadow_steel_casing": "Теневой кожух",
"block.create.shadow_steel_casing": "Теневой корпус",
"block.create.shaft": "Вал",
"block.create.smart_chute": "UNLOCALIZED: Smart Chute",
"block.create.smart_fluid_pipe": "Умная жидкостная труба",
"block.create.speedometer": "Спидометр",
"block.create.spout": "Слив",
"block.create.spout": "Дозатор",
"block.create.spruce_window": "Еловое окно",
"block.create.spruce_window_pane": "Панель из елового окна",
"block.create.sticky_mechanical_piston": "Липкий механический поршень",
@ -395,17 +397,18 @@
"block.create.weathered_limestone_pillar": "Колонна из выветренного известняка",
"block.create.white_sail": "Белый парус",
"block.create.white_seat": "Белое сиденье",
"block.create.white_valve_handle": "Белая ручка крана",
"block.create.white_valve_handle": "Белый ручной вентиль",
"block.create.windmill_bearing": "Подшипник ветряной мельницы",
"block.create.wooden_bracket": "Деревянный кронштейн",
"block.create.wooden_bracket": "Деревянная скоба",
"block.create.yellow_sail": "Жёлтый парус",
"block.create.yellow_seat": "Жёлтое сиденье",
"block.create.yellow_valve_handle": "Жёлтая ручка крана",
"block.create.yellow_valve_handle": "Жёлтый ручной вентиль",
"block.create.zinc_block": "Цинковый блок",
"block.create.zinc_ore": "Цинковая руда",
"entity.create.contraption": "Штуковина",
"entity.create.seat": "сиденье",
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
"entity.create.seat": "Сиденье",
"entity.create.stationary_contraption": "Стационарная штуковина",
"entity.create.super_glue": "Супер-клей",
@ -427,25 +430,25 @@
"item.create.chest_minecart_contraption": "Сундуко-вагонеточная штуковина",
"item.create.chocolate_bucket": "Ведро шоколада",
"item.create.chromatic_compound": "Хроматический компаунд",
"item.create.cinder_flour": "Пепельная мука",
"item.create.cinder_flour": "Незераковая пыль",
"item.create.copper_ingot": "Медный слиток",
"item.create.copper_nugget": "Кусочек меди",
"item.create.copper_sheet": "Медный лист",
"item.create.crafter_slot_cover": "Крышка на слот крафтера",
"item.create.crushed_aluminum_ore": "Измельчённая алюминиевая руда",
"item.create.crushed_brass": "Дробленая латунь",
"item.create.crushed_copper_ore": "Измельчённая медная руда",
"item.create.crushed_gold_ore": "Измельчённая золотая руда",
"item.create.crushed_iron_ore": "Измельчённая железная руда",
"item.create.crushed_lead_ore": "Измельчённая свинцовая руда",
"item.create.crushed_nickel_ore": "Измельчённая никелевая руда",
"item.create.crushed_osmium_ore": "Измельчённая осмиевая руда",
"item.create.crushed_platinum_ore": "Измельчённая платиновая руда",
"item.create.crushed_quicksilver_ore": "Измельчённая ртутная руда",
"item.create.crushed_silver_ore": "Измельчённая серебрянная руда",
"item.create.crushed_tin_ore": "Измельчённая оловянная руда",
"item.create.crushed_uranium_ore": "Измельчённая урановая руда",
"item.create.crushed_zinc_ore": "Измельчённая цинковая руда",
"item.create.crushed_brass": "Дроблёная латунь",
"item.create.crushed_copper_ore": "Дроблёная медная руда",
"item.create.crushed_gold_ore": "Дроблёная золотая руда",
"item.create.crushed_iron_ore": "Дроблёная железная руда",
"item.create.crushed_lead_ore": "Дроблёная свинцовая руда",
"item.create.crushed_nickel_ore": "Дроблёная никелевая руда",
"item.create.crushed_osmium_ore": "Дроблёная осмиевая руда",
"item.create.crushed_platinum_ore": "Дроблёная платиновая руда",
"item.create.crushed_quicksilver_ore": "Дроблёная ртутная руда",
"item.create.crushed_silver_ore": "Дроблёная серебрянная руда",
"item.create.crushed_tin_ore": "Дроблёная оловянная руда",
"item.create.crushed_uranium_ore": "Дроблёная урановая руда",
"item.create.crushed_zinc_ore": "Дроблёная цинковая руда",
"item.create.deforester": "Уничтожитель леса",
"item.create.dough": "Тесто",
"item.create.electron_tube": "Электронная лампа",
@ -500,15 +503,15 @@
"advancement.create.belt": "Передайте за проезд!",
"advancement.create.belt.desc": "Соедините два вала с помощью механического ремня.",
"advancement.create.tunnel": "В укрытие!",
"advancement.create.tunnel.desc": "Украсьте свой механический ремень Туннелем.",
"advancement.create.tunnel.desc": "Украсьте свой конвейер туннелем.",
"advancement.create.splitter_tunnel": "Разделяй и властвуй",
"advancement.create.splitter_tunnel.desc": "Создайте разделитель из группы латунных туннелей..",
"advancement.create.splitter_tunnel.desc": "Создайте разделитель из группы латунных туннелей.",
"advancement.create.chute": "Упало",
"advancement.create.chute.desc": "Разместите желоб, вертикальный аналог ремня.",
"advancement.create.chute.desc": "Разместите желоб, вертикальный аналог конвейера.",
"advancement.create.upward_chute": "Воздушное похищение",
"advancement.create.upward_chute.desc": "Посмотрите как предмет засасывается в желоб с вентилятором.",
"advancement.create.belt_funnel": "Болтающиеся воронки",
"advancement.create.belt_funnel.desc": "Поместите воронку боком, сверху ремня или депо, чтобы создать её специальный тип.",
"advancement.create.belt_funnel.desc": "Поместите воронку боком, сверху конвейера или депо, чтобы создать её специальный тип.",
"advancement.create.belt_funnel_kiss": "Механический ужин",
"advancement.create.belt_funnel_kiss.desc": "Заставте две смонтированные на ремнях воронки поцеловаться.",
"advancement.create.fan": "Механический маг воздуха",
@ -528,9 +531,9 @@
"advancement.create.stressometer": "Так сильно?",
"advancement.create.stressometer.desc": "Поставьте и подключите динамометр. Посмотрите на динамометр через очки, чтобы прочитать точное значение.",
"advancement.create.aesthetics": "Бах! Эстетично!",
"advancement.create.aesthetics.desc": "Разместите кронштейн на валу, трубе или шестерне.",
"advancement.create.aesthetics.desc": "Разместите скобы на валу, трубе или шестерне.",
"advancement.create.reinforced": "Бах! Усилено!",
"advancement.create.reinforced.desc": "Разместите подходящий блок корпуса на вал, трубу и механический ремень.",
"advancement.create.reinforced.desc": "Разместите подходящий блок корпуса на вал, трубу и конвейер.",
"advancement.create.water_wheel": "Гидравлика",
"advancement.create.water_wheel.desc": "Поставьте водяное колесо и попытайтесь заставить его вращаться!",
"advancement.create.chocolate_wheel": "Вкусная сила",
@ -566,15 +569,15 @@
"advancement.create.compact": "Автоматическое уплотнение",
"advancement.create.compact.desc": "Используйте пресс и чашу для уплотнения некоторых предметов.",
"advancement.create.brass": "Действительный сплав",
"advancement.create.brass.desc": "Используйте измельчённую медь и измельчённый цинк, чтобы создать немного латуни.",
"advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного латуни.",
"advancement.create.brass_casing": "Бронзовый век",
"advancement.create.brass_casing.desc": "Используйте только что полученную латунь и немного дерева, чтобы создать более продвинутый корпус.",
"advancement.create.copper_casing": "Медный век",
"advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания медного корпуса.",
"advancement.create.spout": "Буль",
"advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Слива.",
"advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора.",
"advancement.create.spout_potion": "Основательная пивоварня",
"advancement.create.spout_potion.desc": "Посмотрите как Слив наполняет бутылку зельем.",
"advancement.create.spout_potion.desc": "Посмотрите как Дозатор наполняет бутылку зельем.",
"advancement.create.chocolate": "Сказочный мир",
"advancement.create.chocolate.desc": "Получите ведро расплавленного шоколада.",
"advancement.create.item_drain": "Осушение",
@ -666,16 +669,16 @@
"create.recipe.crushing": "Измельчение",
"create.recipe.milling": "Помол",
"create.recipe.fan_washing": "Объёмная промывка",
"create.recipe.fan_washing": "Массовая промывка",
"create.recipe.fan_washing.fan": "Вентилятор за текущей водой",
"create.recipe.fan_smoking": "Объёмное копчение",
"create.recipe.fan_smoking": "Массовое копчение",
"create.recipe.fan_smoking.fan": "Вентилятор за горящим огнём",
"create.recipe.fan_blasting": "Объёмное плавление",
"create.recipe.fan_blasting": "Массовое плавление",
"create.recipe.fan_blasting.fan": "Вентилятор за текущей лавой",
"create.recipe.pressing": "Прессование",
"create.recipe.mixing": "Смешивание",
"create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка",
"create.recipe.automatic_brewing": "Автоматической смешивание",
"create.recipe.automatic_brewing": "Автоматическое смешивание",
"create.recipe.packing": "Прессование",
"create.recipe.automatic_packing": "Автоматическая упаковка",
"create.recipe.sawing": "Распиливание",
@ -685,7 +688,7 @@
"create.recipe.blockzapper_upgrade": "Ручная блоковая пушка",
"create.recipe.sandpaper_polishing": "Полировка наждачной бумагой",
"create.recipe.mystery_conversion": "Хроматический метаморфоз",
"create.recipe.spout_filling": "Заполнение сливом",
"create.recipe.spout_filling": "Заполнение дозатором",
"create.recipe.draining": "Осушение предметов",
"create.recipe.processing.chance": "%1$s%% шанса",
"create.recipe.heat_requirement.none": "Не требует нагрева",
@ -834,7 +837,7 @@
"create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал",
"create.gui.stockpile_switch.move_to_lower_at": "Двигаться к нижней линии при %1$s%%",
"create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%",
"create.gui.sequenced_gearshift.title": "Посл. переключ. передач",
"create.gui.sequenced_gearshift.title": "Последовательное переключение передач",
"create.gui.sequenced_gearshift.instruction": "Инструкция",
"create.gui.sequenced_gearshift.instruction.turn_angle": "Повернуть",
"create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Угол",
@ -989,7 +992,7 @@
"create.item_attributes.not_stackable": "не может складываться",
"create.item_attributes.not_stackable.inverted": "складывается",
"create.item_attributes.equipable": "может быть надет",
"create.item_attributes.equipable.inverted": "не ожет быть надет",
"create.item_attributes.equipable.inverted": "не может быть надет",
"create.item_attributes.furnace_fuel": "является топливом",
"create.item_attributes.furnace_fuel.inverted": "не является топливом",
"create.item_attributes.in_tag": "помечен %1$s",
@ -1078,7 +1081,7 @@
"create.tooltip.chute.header": "Инвормация о желобе",
"create.tooltip.chute.items_move_down": "Предметы двигаются вниз",
"create.tooltip.chute.items_move_up": "Предметы двигаются вверх",
"create.tooltip.chute.no_fans_attached": "Нед подключеных вентиляторов",
"create.tooltip.chute.no_fans_attached": "Нет подключеных вентиляторов",
"create.tooltip.chute.fans_push_up": "Вентилятор толкает снизу",
"create.tooltip.chute.fans_push_down": "Вентилятор толкает сверху",
"create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху",
@ -1100,11 +1103,11 @@
"create.gui.config.overlay1": "Привет :)",
"create.gui.config.overlay2": "Это образец оверлея",
"create.gui.config.overlay3": "кликни и тащи с помощью мыши",
"create.gui.config.overlay3": "Кликни и тащи с помощью мыши",
"create.gui.config.overlay4": "чтобы переместить его",
"create.gui.config.overlay5": "Нажми ESC чтобы выйти",
"create.gui.config.overlay6": "и сохранить новую позицию",
"create.gui.config.overlay7": "Запусти /create overlay reset",
"create.gui.config.overlay7": "Введи /create overlay reset",
"create.gui.config.overlay8": "чтобы сбросить позицию до стандартной",
"create.command.killTPSCommand": "killtps",
@ -1139,10 +1142,10 @@
"item.create.example_item.tooltip.action1": "These controls are displayed.",
"block.create.andesite_encased_shaft.tooltip": "ANDESITE ENCASED SHAFT",
"block.create.andesite_encased_shaft.tooltip.summary": "_Креативный предмет_. Установите кожух на вал, находящийся _в мире_ импользуя _Андезитовый корпус_. Блоки корпуса не будут использованы.",
"block.create.andesite_encased_shaft.tooltip.summary": "_Креативный предмет_. Установите корпус на вал, находящийся _в мире_ импользуя _Андезитовый корпус_. Блоки корпуса не будут использованы.",
"block.create.brass_encased_shaft.tooltip": "BRASS ENCASED SHAFT",
"block.create.brass_encased_shaft.tooltip.summary": "_Креативный предмет_. Установите кожух на вал, находящийся _в мире_ импользуя _Латунный корпус_. Блоки корпуса не будут использованы.",
"block.create.brass_encased_shaft.tooltip.summary": "_Креативный предмет_. Установите корпус на вал, находящийся _в мире_ импользуя _Латунный корпус_. Блоки корпуса не будут использованы.",
"block.create.wooden_bracket.tooltip": "WOODEN BRACKET",
"block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя уютное деревянное укрепление.",
@ -1163,7 +1166,7 @@
"block.create.andesite_funnel.tooltip.behaviour3": "Будет _транспортировать_ предметы _вниз_, как воронка без буфера.",
"block.create.andesite_tunnel.tooltip": "ANDESITE TUNNEL",
"block.create.andesite_tunnel.tooltip.summary": "Защитное покрытие для ваших _Механических ремней_! _Андезитовые туннели_ могут отделять один предмет от стака, когда еще один механический ремень или депо расположены рядом с соновным ремнём.",
"block.create.andesite_tunnel.tooltip.summary": "Защитное покрытие для вашего _Конвейера_! _Андезитовые туннели_ могут отделять один предмет от стака, когда еще один механический ремень или депо расположены рядом с соновным ремнём.",
"block.create.andesite_tunnel.tooltip.control1": "Правый клик Гаечным ключом по стороне",
"block.create.andesite_tunnel.tooltip.action1": "_Регулирует оконные ставни_, если на этой стороне туннеля есть окно.",
@ -1179,7 +1182,7 @@
"block.create.brass_tunnel.tooltip": "BRASS TUNNEL",
"block.create.brass_tunnel.tooltip.summary": "Красивое покрытие для ваших _Механических ремней_! _Латунные туннели_ так же поставляются с фильтрами и возможностью разделения стаков ваших предметов.",
"block.create.brass_tunnel.tooltip.condition1": "При размещении бок о бок",
"block.create.brass_tunnel.tooltip.behaviour1": "_Латунные туннели_ соединяются с другими, позволяя перенаправить поток предметов с одного _ремня_ на другой.",
"block.create.brass_tunnel.tooltip.behaviour1": "_Латунные туннели_ соединяются с другими, позволяя перенаправить поток предметов с одного _конвейера_ на другой.",
"block.create.brass_tunnel.tooltip.condition2": "Фильтрация",
"block.create.brass_tunnel.tooltip.behaviour2": "_Латунные тунелли_ поставляюстя с фильтрами, для _входа_ и _выхода_. Если _предмет_ не соответствует _фильтру_, он будет перенаправлен на выход соседнего _туннеля_.",
"block.create.brass_tunnel.tooltip.condition3": "Разделение",
@ -1192,7 +1195,7 @@
"block.create.copper_casing.tooltip": "COPPER CASING",
"block.create.copper_casing.tooltip.summary": "Прочный машинный корпус для разнообразного использования. Безопасно для украшения.",
"block.create.copper_casing.tooltip.condition1": "При использовании на жидкостной трубе",
"block.create.copper_casing.tooltip.behaviour1": "Покрывает _жидкостную трубу_ _кожухом_. Трубы в кожухеакрепят свои соединения_ и не будут соединятся с другими трубами, расположенными по соседству.",
"block.create.copper_casing.tooltip.behaviour1": "Покрывает _жидкостную трубу_ _корпусом_. Трубы в корпусеакрепят свои соединения_ и не будут соединятся с другими трубами, расположенными по соседству.",
"block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE",
"block.create.encased_fluid_pipe.tooltip.summary": "_Труба_ в _Медном корпусе_.",
@ -1210,12 +1213,12 @@
"block.create.chute.tooltip": "CHUTE",
"block.create.chute.tooltip.summary": "_Собирает_ и транспортирует предметы по вертикали и диагонали. Может как брать так класть предметы в _контейнеры_. Вы так же можете взаиодействовать с желобом, разместив сбоку воронку.",
"block.create.chute.tooltip.condition1": "Если соединено с вентилятором",
"block.create.chute.tooltip.behaviour1": "Соеденённые сентилятором_ желоба могут двигать _предметы_ вверх, и засасывать их с _ремней_ и _депо_.",
"block.create.chute.tooltip.behaviour1": "Соеденённые сентилятором_ желоба могут двигать _предметы_ вверх, и засасывать их с _конвейера_ и _депо_.",
"block.create.depot.tooltip": "DEPOT",
"block.create.depot.tooltip.summary": "Полезное место куда вы можете класть свои _предметы_. Обеспечивает точку взаимодействия для некоторых машин",
"block.create.depot.tooltip.condition1": "При правом клике",
"block.create.depot.tooltip.behaviour1": "Размещает или забирает _предмет_ сепо_. _Блоки_ и _Устройства_, которые могут взаимодействовать с _ремнём_, так же работают сепо_.",
"block.create.depot.tooltip.behaviour1": "Размещает или забирает _предмет_ сепо_. _Блоки_ и _Устройства_, которые могут взаимодействовать с _конвейером_, так же работают сепо_.",
"item.create.blaze_cake.tooltip": "BLAZE CAKE",
"item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги _Горелки Всполоха_. Зажигает их всех!",
@ -1247,7 +1250,7 @@
"block.create.fluid_tank.tooltip.behaviour1": "Переключает опциональное отображение окна",
"block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK",
"block.create.creative_fluid_tank.tooltip.summary": "Этот _Жидкостный бак_ позволяет бесконечную репликацию любой жидкости. Скалируется в высоту и ширину.",
"block.create.creative_fluid_tank.tooltip.summary": "Этот _Жидкостный бак_ позволяет иметь бесконечную репликацию любой жидкости. Скалируется в высоту и ширину.",
"block.create.creative_fluid_tank.tooltip.condition1": "Когда жидкость в баке",
"block.create.creative_fluid_tank.tooltip.behaviour1": "Всё что _извлекает_ из бака, будет снабжаться _бесконечным запасом_ жидкости. Жидкости _закачивающиеся_ в бак будут _удаляться_.",
"block.create.creative_fluid_tank.tooltip.condition2": "Правый клик с гаечным ключом",
@ -1275,9 +1278,9 @@
"block.create.spout.tooltip": "SPOUT",
"block.create.spout.tooltip.summary": "Форсунка для пополнения предметов, имеющих возможность хранить жидкость.",
"block.create.spout.tooltip.condition1": "Транспортировка жидкости",
"block.create.spout.tooltip.behaviour1": "Когда предмет, _с возможностью содержать жидкость_, такой как _ведро_ или _бутылочка_, размещён под сливом, слив будет пытаться заполнить предмет содержащейся в нём _жидкостью_.",
"block.create.spout.tooltip.behaviour1": "Когда предмет, _с возможностью содержать жидкость_, такой как _ведро_ или _бутылочка_, размещён под дозатором, дозатор будет пытаться заполнить предмет содержащейся в нём _жидкостью_.",
"block.create.spout.tooltip.condition2": "Автоматизация жидкости",
"block.create.spout.tooltip.behaviour2": "Слив расположеный над _ремнём_ или _депо_ будет автоматически взаимодействовать с _предметами, которые могут содержать жидкость_, которые проходят под ним.",
"block.create.spout.tooltip.behaviour2": "Дозатор расположеный над _конвейером_ или _депо_ будет автоматически взаимодействовать с _предметами, которые могут содержать жидкость_, которые проходят под ним.",
"block.create.item_drain.tooltip": "ITEM DRAIN",
"block.create.item_drain.tooltip.summary": "Депо с решёткой, которое может выкачивать _жидкость_ из ваших _предметов_",
@ -1287,7 +1290,7 @@
"block.create.mechanical_arm.tooltip": "MECHANICAL ARM",
"block.create.mechanical_arm.tooltip.summary": "Продвинутуе устройство для перемещения _предметов_.",
"block.create.mechanical_arm.tooltip.condition1": "Транспортировка предметов",
"block.create.mechanical_arm.tooltip.behaviour1": "Может брать или размещать предметы в любой открытый инвентарь, такой как _ремень_, _депо_, _воронка_ и _механический крафтер_.",
"block.create.mechanical_arm.tooltip.behaviour1": "Может брать или размещать предметы в любой открытый инвентарь, такой как _конвейер_, _депо_, _воронка_ и _механический крафтер_.",
"block.create.mechanical_arm.tooltip.control1": "Когда в руке",
"block.create.mechanical_arm.tooltip.action1": "Правый клик на _открытом инвентаре_ установит _точку для сбора_, для _механической руки_. Кликните еще раз чтобы установить _точку для размещения_.",
"block.create.mechanical_arm.tooltip.control2": "Прокрутка с ключом",
@ -1408,14 +1411,14 @@
"block.create.clutch.tooltip.behaviour1": "_Прекращает_ передачу вращения на другую сторону.",
"block.create.encased_chain_drive.tooltip": "ENCASED_CHAIN_DRIVE",
"block.create.encased_chain_drive.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в кожухе_. Цепные приводы соединяются, когда расположены рядом друг с другом, без необходимости использовать вал. Их направление не обязательно должно совпадать.",
"block.create.encased_chain_drive.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в корпусе_. Цепные приводы соединяются, когда расположены рядом друг с другом, без необходимости использовать вал. Их направление не обязательно должно совпадать.",
"block.create.encased_chain_drive.tooltip.condition1": "Когда соединено",
"block.create.encased_chain_drive.tooltip.behaviour1": "Соединённые блоки будут получать _скорость вращения_ и егоаправление_ от этого компонента.",
"block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT",
"block.create.adjustable_chain_gearshift.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в кожухе_. Полученный _сигнал редстоуна_ будет контролировать, какой размер шестерни взаимодействует с присоединенными цепными приводами.",
"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_ _Вала_ с помощью _механического_ _ремня_._ Соединённые валы будут иметь одинаковые _скорость_ и _направление_ _вращения._ Лента может служить как _конвейер_ для _транспортировки._",
@ -1493,7 +1496,7 @@
"block.create.basin.tooltip": "BASIN",
"block.create.basin.tooltip.summary": "Удобный _контейнер_ _для_ _предметов_, используемый при обработке _механическим_ _смешивателем_ и _механическим прессом_. Поддерживает компараторы.",
"block.create.basin.tooltip.condition1": "Авто-выход",
"block.create.basin.tooltip.behaviour1": "Когда _открытые инвентари_, такие как ремни, другие чаши, депо и т.д. находятся _под_ чашей, они будут автоматически принимать любые _жидкости_ и _предметы_, созданные в чаше. Это полезно для автоматизации.",
"block.create.basin.tooltip.behaviour1": "Когда _открытые инвентари_, такие как конвейер, другие чаши, депо и т.д. находятся _под_ чашей, они будут автоматически принимать любые _жидкости_ и _предметы_, созданные в чаше. Это полезно для автоматизации.",
"block.create.blaze_burner.tooltip": "BLAZE BURNER",
"block.create.blaze_burner.tooltip.summary": "Блок для нагревания чаши, работающий когда в нём находится прирученый Всполох.",
@ -1508,7 +1511,7 @@
"block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER",
"block.create.mechanical_mixer.tooltip.summary": "Кинетический венчик, используемый для смешивания предметов, находящихся под ним. Требуется _постоянная_ _вращательная_ _сила_ и _чаша_, расположенная внизу (с промежутком между ними).",
"block.create.mechanical_mixer.tooltip.condition1": "Когда над чашей",
"block.create.mechanical_mixer.tooltip.behaviour1": "Начинает смешивать предметы в бассейне, когда присутствуют все необходимые ингредиенты.",
"block.create.mechanical_mixer.tooltip.behaviour1": "Начинает смешивать предметы в чаше, когда присутствуют все необходимые ингредиенты.",
"block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER",
"block.create.mechanical_crafter.tooltip.summary": "_Кинетический_ _сборщик_ для автоматизации любого рецепта крафта. _Поместите_ _ингредиенты_ в сетку, _соответственно_ _нужному_ _рецепту_, и расположите их так, чтобы _создать_ _поток_, который _кончается_ на одном из крафтеров.",
@ -1524,7 +1527,7 @@
"block.create.furnace_engine.tooltip": "FURNACE ENGINE",
"block.create.furnace_engine.tooltip.summary": "_Мощный_ источник _энергии_ _вращения_, для работы которого требуется _работающая_ _печь.",
"block.create.furnace_engine.tooltip.condition1": "Когда прикреплен к работающей печи",
"block.create.furnace_engine.tooltip.behaviour1": "_Начинает_ _приводить_ _в_ _действие_ _маховик_, расположенный _перед_ ним (на расстоянии 1 м). Используйте доменную печь для более высоких скоростей.",
"block.create.furnace_engine.tooltip.behaviour1": "_Начинает_ _приводить_ _в_ _действие_ _маховик_, расположенный _перед_ ним (на расстоянии 1 м). Используйте плавильную печь для более высоких скоростей.",
"block.create.flywheel.tooltip": "FLYWHEEL",
"block.create.flywheel.tooltip.summary": "Большое металлическое колесо для _удержания_ и _стабилизации_ создаваемой силы с помощью _прикреплённого_ _двигателя_. Маховики _соединяются_ с _двигателями_, если они находятся на расстоянии _1_ _м_ друг от друга и под углом _90°_ друг к другу.",
@ -1532,7 +1535,7 @@
"block.create.flywheel.tooltip.behaviour1": "Обеспечивает вращательную силу для подключенного устройства в зависимости от силы и скорости генератора.",
"block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE",
"block.create.portable_storage_interface.tooltip.summary": "Переносная точка обмена для _перемещения_ предметов внутрь или из _конструкции_, перемещаемой _поршнем_, _шасси_, _вагонеткой_ или _ремнём_.",
"block.create.portable_storage_interface.tooltip.summary": "Переносная точка обмена для _перемещения_ предметов внутрь или из _конструкции_, перемещаемой _поршнем_, _шасси_, _вагонеткой_ или _конвейером_.",
"block.create.portable_storage_interface.tooltip.condition1": "Во время движения",
"block.create.portable_storage_interface.tooltip.behaviour1": "Взаимодействует со стационарными переместителями так, что переместители, обращенные в сторону от интерфейса, вытягивают предметы, а транспортеры, нацеленные на интерфейс, вставляют предметы из прикреплённого инвентаря. Конструкция ненадолго остановится при обмене предметов.",
"block.create.portable_storage_interface.tooltip.condition2": "Когда запитан редстоуном",
@ -1708,7 +1711,7 @@
"block.create.deployer.tooltip.behaviour3": "Автоматический активатор будет активирован, если только удерживаемый предмет _совпадает_ с предметом в _фильтре_. Не совпадающие предметы не могут быть помещены; Удерживаемые предметы, соответствующие фильтру, не могут быть извлечены.",
"block.create.brass_casing.tooltip": "BRASS CASING",
"block.create.brass_casing.tooltip.summary": "Прочный корпус машины с различными вариантами применения. Безопасно для украшения.",
"block.create.brass_casing.tooltip.summary": "Прочный корпус машины с различными вариантами применения. Безопасно для декорирования.",
"block.create.pulse_repeater.tooltip": "PULSE REPEATER",
"block.create.pulse_repeater.tooltip.summary": "Простая схема обрезки длинны проходящего сигнала до _1_ _тика_.",
@ -1765,7 +1768,7 @@
"item.create.shadow_steel.tooltip.summary": "Хроматический материал, _добытый_ _в_ _пустоте_.",
"item.create.minecart_coupling.tooltip": "MINECART COUPLING",
"item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или orеревозочные устройства_ вместе, чтобы создать великолепный поезд.",
"item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ илиеревозочные устройства_ вместе, чтобы создать великолепный поезд.",
"item.create.minecart_coupling.tooltip.condition1": "При использовании на вагонетке",
"item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определенной дистанции_ при движении.",

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_end",
"textures": {
"2": "create:block/gantry_shaft_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_end",
"textures": {
"2": "create:block/gantry_shaft_powered"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_end",
"textures": {
"2": "create:block/gantry_shaft_powered_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_middle",
"textures": {
"2": "create:block/gantry_shaft_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_middle",
"textures": {
"2": "create:block/gantry_shaft_powered"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_middle",
"textures": {
"2": "create:block/gantry_shaft_powered_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_single",
"textures": {
"2": "create:block/gantry_shaft_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_single",
"textures": {
"2": "create:block/gantry_shaft_powered"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_single",
"textures": {
"2": "create:block/gantry_shaft_powered_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_start",
"textures": {
"2": "create:block/gantry_shaft_flipped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_start",
"textures": {
"2": "create:block/gantry_shaft_powered"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "create:block/gantry_shaft/block_start",
"textures": {
"2": "create:block/gantry_shaft_powered_flipped"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/gantry_pinion/item"
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/gantry_shaft/block_single"
}

View file

@ -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"
]
]
}

View file

@ -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"
]
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:gantry_pinion"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:gantry_shaft"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -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"
}
}

View file

@ -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
}
}

View file

@ -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")

View file

@ -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,11 +91,11 @@ 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;
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
import com.simibubi.create.content.contraptions.relays.belt.BeltColor;
import com.simibubi.create.content.contraptions.relays.belt.BeltGenerator;
import com.simibubi.create.content.contraptions.relays.belt.BeltModel;
import com.simibubi.create.content.contraptions.relays.elementary.BracketedKineticBlockModel;
@ -172,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;
@ -314,7 +317,6 @@ public class AllBlocks {
.properties(p -> p.hardnessAndResistance(0.8F))
.blockstate(new BeltGenerator()::generate)
.transform(StressConfigDefaults.setImpact(1.0))
.onRegister(CreateRegistrate.blockColors(() -> BeltColor::new))
.onRegister(CreateRegistrate.blockModel(() -> BeltModel::new))
.register();
@ -688,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))

View file

@ -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);
}

View file

@ -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(),

View file

@ -18,44 +18,40 @@ import com.simibubi.create.foundation.block.render.SpriteShifter;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.block.WoodType;
import net.minecraft.item.DyeColor;
public class AllSpriteShifts {
static final Map<WoodType, CTSpriteShiftEntry>
WOODEN_WINDOWS = new IdentityHashMap<>();
static final Map<PaletteStoneVariants, Map<PaletteBlockPatterns.CTs, CTSpriteShiftEntry>>
PALETTE_VARIANT_PATTERNS = new IdentityHashMap<>();
static final Map<WoodType, CTSpriteShiftEntry> WOODEN_WINDOWS = new IdentityHashMap<>();
static final Map<PaletteStoneVariants, Map<PaletteBlockPatterns.CTs, CTSpriteShiftEntry>> PALETTE_VARIANT_PATTERNS =
new IdentityHashMap<>();
public static final CTSpriteShiftEntry
FRAMED_GLASS = getCT(OMNIDIRECTIONAL, "palettes/framed_glass", "palettes/framed_glass"),
public static final Map<DyeColor, SpriteShiftEntry> DYED_BELTS = new IdentityHashMap<>(),
DYED_OFFSET_BELTS = new IdentityHashMap<>(), DYED_DIAGONAL_BELTS = new IdentityHashMap<>();
public static final CTSpriteShiftEntry FRAMED_GLASS =
getCT(OMNIDIRECTIONAL, "palettes/framed_glass", "palettes/framed_glass"),
HORIZONTAL_FRAMED_GLASS = getCT(HORIZONTAL, "palettes/framed_glass", "palettes/horizontal_framed_glass"),
VERTICAL_FRAMED_GLASS = getCT(VERTICAL, "palettes/framed_glass", "palettes/vertical_framed_glass"),
ORNATE_IRON_WINDOW = vertical("palettes/ornate_iron_window");
public static final CTSpriteShiftEntry
CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"),
public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"),
CRAFTER_SIDE = getCT(CTType.VERTICAL, "crafter_side"),
CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side");
public static final CTSpriteShiftEntry
ANDESITE_CASING = omni("andesite_casing"),
BRASS_CASING = omni("brass_casing"),
COPPER_CASING = omni("copper_casing"),
SHADOW_STEEL_CASING = omni("shadow_steel_casing"),
REFINED_RADIANCE_CASING = omni("refined_radiance_casing"),
public static final CTSpriteShiftEntry ANDESITE_CASING = omni("andesite_casing"),
BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"),
SHADOW_STEEL_CASING = omni("shadow_steel_casing"), REFINED_RADIANCE_CASING = omni("refined_radiance_casing"),
CREATIVE_CASING = getCT(CTType.CROSS, "creative_casing");
public static final CTSpriteShiftEntry
CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"),
public static final CTSpriteShiftEntry CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"),
CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky");
public static final CTSpriteShiftEntry
BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"),
public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"),
FLUID_TANK = getCT(CTType.CROSS, "fluid_tank"),
CREATIVE_FLUID_TANK = getCT(CTType.CROSS, "creative_fluid_tank");
public static final SpriteShiftEntry
BELT = SpriteShifter.get("block/belt", "block/belt_animated"),
public static final SpriteShiftEntry BELT = SpriteShifter.get("block/belt", "block/belt_animated"),
BELT_OFFSET = SpriteShifter.get("block/belt_offset", "block/belt_animated"),
BELT_DIAGONAL = SpriteShifter.get("block/belt_diagonal", "block/belt_diagonal_animated"),
ANDESIDE_BELT_CASING = SpriteShifter.get("block/brass_casing_belt", "block/andesite_casing_belt"),
@ -93,6 +89,13 @@ public class AllSpriteShifts {
map.put(texture, getCT(texture.type, target));
}
}
for (DyeColor color : DyeColor.values()) {
String id = color.getName();
DYED_BELTS.put(color, SpriteShifter.get("block/belt", "block/belt/" + id));
DYED_OFFSET_BELTS.put(color, SpriteShifter.get("block/belt_offset", "block/belt/" + id));
DYED_DIAGONAL_BELTS.put(color, SpriteShifter.get("block/belt_diagonal", "block/belt/" + id + "_diagonal"));
}
}
//

View file

@ -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)

View file

@ -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();

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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;
}

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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

View file

@ -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);
}
}

View file

@ -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();
}
}

View file

@ -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) {}
}

View file

@ -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);
}
}

View file

@ -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;
}
}

View file

@ -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));
}
}

View file

@ -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();
}
}

View file

@ -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

View file

@ -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;

View file

@ -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);

View file

@ -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() {}

View file

@ -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() {}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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;
}
}

View file

@ -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)));
}
}

View file

@ -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();
}

View file

@ -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))

View file

@ -9,6 +9,7 @@ import com.simibubi.create.AllItems;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.processing.EmptyingByBasin;
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType;
import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo;
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock;
@ -31,6 +32,8 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.DyeColor;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
@ -62,6 +65,7 @@ import net.minecraft.world.WorldType;
import net.minecraft.world.storage.loot.LootParameters;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.Tags;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
@ -83,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))
@ -211,8 +221,19 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
return ActionResultType.PASS;
ItemStack heldItem = player.getHeldItem(handIn);
boolean isShaft = AllBlocks.SHAFT.isIn(heldItem);
boolean isDye = Tags.Items.DYES.contains(heldItem.getItem());
boolean hasWater = EmptyingByBasin.emptyItem(world, heldItem, true)
.getFirst()
.getFluid()
.isEquivalentTo(Fluids.WATER);
boolean isHand = heldItem.isEmpty() && handIn == Hand.MAIN_HAND;
if (isDye || hasWater) {
if (!world.isRemote)
withTileEntityDo(world, pos, te -> te.applyColor(DyeColor.getColor(heldItem)));
return ActionResultType.SUCCESS;
}
BeltTileEntity belt = BeltHelper.getSegmentTE(world, pos);
if (belt == null)
return ActionResultType.PASS;
@ -413,7 +434,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
return;
if (isMoving)
return;
TileEntity te = world.getTileEntity(pos);
if (te instanceof BeltTileEntity) {
BeltTileEntity beltTileEntity = (BeltTileEntity) te;

View file

@ -1,27 +0,0 @@
package com.simibubi.create.content.contraptions.relays.belt;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class BeltColor implements IBlockColor {
@Override
public int getColor(BlockState state, ILightReader reader, BlockPos pos, int layer) {
if (reader == null)
return 0;
TileEntity tileEntity = reader.getTileEntity(pos);
if (tileEntity instanceof BeltTileEntity) {
BeltTileEntity te = (BeltTileEntity) tileEntity;
if (te.color != -1)
return te.color;
}
return 0;
}
}

View file

@ -28,6 +28,7 @@ import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.entity.Entity;
import net.minecraft.item.DyeColor;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection;
@ -40,7 +41,7 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
public BeltRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public boolean isGlobalRenderer(BeltTileEntity te) {
return BeltBlock.canTransportObjects(te.getBlockState());
@ -97,14 +98,22 @@ public class BeltRenderer extends SafeTileEntityRenderer<BeltTileEntity> {
SuperByteBuffer beltBuffer = beltPartial.renderOn(blockState)
.light(light);
SpriteShiftEntry spriteShift =
diagonal ? AllSpriteShifts.BELT_DIAGONAL : bottom ? AllSpriteShifts.BELT_OFFSET : AllSpriteShifts.BELT;
SpriteShiftEntry spriteShift = null;
if (te.color.isPresent()) {
DyeColor color = te.color.get();
spriteShift = (diagonal ? AllSpriteShifts.DYED_DIAGONAL_BELTS
: bottom ? AllSpriteShifts.DYED_OFFSET_BELTS : AllSpriteShifts.DYED_BELTS).get(color);
} else
spriteShift = diagonal ? AllSpriteShifts.BELT_DIAGONAL
: bottom ? AllSpriteShifts.BELT_OFFSET : AllSpriteShifts.BELT;
int cycleLength = diagonal ? 12 : 16;
int cycleOffset = bottom ? 8 : 0;
// UV shift
float speed = te.getSpeed();
if (speed != 0) {
if (speed != 0 || te.color.isPresent()) {
float time = renderTick * axisDirection.getOffset();
if (diagonal && (downward ^ alongX) || !sideways && !diagonal && alongX
|| sideways && axisDirection == AxisDirection.NEGATIVE)

View file

@ -9,9 +9,11 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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;
@ -24,7 +26,6 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.block.Block;
@ -54,7 +55,7 @@ import net.minecraftforge.items.IItemHandler;
public class BeltTileEntity extends KineticTileEntity {
public Map<Entity, TransportedEntityInfo> passengers;
public int color;
public Optional<DyeColor> color;
public int beltLength;
public int index;
public Direction lastInsert;
@ -75,7 +76,7 @@ public class BeltTileEntity extends KineticTileEntity {
controller = BlockPos.ZERO;
itemHandler = LazyOptional.empty();
casing = CasingType.NONE;
color = -1;
color = Optional.empty();
}
@Override
@ -182,11 +183,13 @@ public class BeltTileEntity extends KineticTileEntity {
if (controller != null)
compound.put("Controller", NBTUtil.writeBlockPos(controller));
compound.putBoolean("IsController", isController());
compound.putInt("Color", color);
compound.putInt("Length", beltLength);
compound.putInt("Index", index);
NBTHelper.writeEnum(compound, "Casing", casing);
if (color.isPresent())
NBTHelper.writeEnum(compound, "Dye", color.get());
if (isController())
compound.put("Inventory", getInventory().write());
super.write(compound, clientPacket);
@ -199,11 +202,13 @@ public class BeltTileEntity extends KineticTileEntity {
if (compound.getBoolean("IsController"))
controller = pos;
color = compound.contains("Dye") ? Optional.of(NBTHelper.readEnum(compound, "Dye", DyeColor.class))
: Optional.empty();
if (!wasMoved) {
if (!isController())
controller = NBTUtil.readBlockPos(compound.getCompound("Controller"));
trackerUpdateTag = compound;
color = compound.getInt("Color");
beltLength = compound.getInt("Length");
index = compound.getInt("Index");
}
@ -233,12 +238,17 @@ public class BeltTileEntity extends KineticTileEntity {
}
public void applyColor(DyeColor colorIn) {
int colorValue = colorIn.getMapColor().colorValue;
if (colorIn == null) {
if (!color.isPresent())
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)
continue;
belt.color = belt.color == -1 ? colorValue : ColorHelper.mixColors(belt.color, colorValue, .5f);
belt.color = Optional.ofNullable(colorIn);
belt.markDirty();
belt.sendData();
}
@ -471,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;
}
}

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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;

View file

@ -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) {

View file

@ -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;
}

View file

@ -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();

View file

@ -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");
}
}

View file

@ -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) {

View file

@ -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);
}

View file

@ -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

View file

@ -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);
}
}

View file

@ -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())

View file

@ -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),
;

View file

@ -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!

View file

@ -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!"
}

View 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

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more