No turning back now

- Cart Assemblers now have a specific direction
- Assembled cart contraptions assemble and disassemble according to the assemblers direction
- Cart contraptions no longer turn exponentially
- Cart contraption now turn more sluggishly the larger they are
- Some changes to the cart assembler model
This commit is contained in:
simibubi 2021-06-27 01:42:35 +02:00
parent 112670de02
commit e61dd71df1
38 changed files with 373 additions and 297 deletions

View file

@ -39,7 +39,7 @@ adfbd6cc5e44a0f431180aedbe65a19428299d8e assets/create/blockstates/brass_funnel.
11ebdd9bd0815833e62ec1bea03a4cdd86ce00f3 assets/create/blockstates/brown_sail.json
e81608346d43406ee72cae0f78b8bcfb37ba2d75 assets/create/blockstates/brown_seat.json
322289524c058fac66bbe76b4924c3b0c0c33b84 assets/create/blockstates/brown_valve_handle.json
1ef072f86d95fd84638bbb6c298603eb311d1e53 assets/create/blockstates/cart_assembler.json
225a67e01348387f2c82b690a56785ab439a3a1c assets/create/blockstates/cart_assembler.json
7299cea212d879d6d5611bd139b24768b9af236f assets/create/blockstates/chiseled_dark_scoria.json
0f01f813388d3e6907c1cfd992e4b21c914e267e assets/create/blockstates/chiseled_dolomite.json
324488e0c228f38f2597b2f76849e962bc1a7d90 assets/create/blockstates/chiseled_gabbro.json
@ -407,21 +407,21 @@ 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
a653b0f1c3025a3cd6500a94f8bd33476bd7a307 assets/create/lang/en_ud.json
a439c55743394b9a8d64c8e83f15a7ff4d7916d5 assets/create/lang/en_us.json
a71e12072b830c74e35ad0bc6f57222b89210194 assets/create/lang/unfinished/de_de.json
b18e9d79be48ced653d6b74c933f90de9b3f33df assets/create/lang/unfinished/es_es.json
6b52b20eab6aeb55b47343ca9ca14fd411608444 assets/create/lang/unfinished/es_mx.json
6a7abf7fa4d567de46c200f6de1336e6b1a4d3b1 assets/create/lang/unfinished/fr_fr.json
bf287988337c6da1a4972328eee17a941f934ecf assets/create/lang/unfinished/it_it.json
51c0fe08a014501775f6c04c31232a704265ddbb assets/create/lang/unfinished/ja_jp.json
21bd6861640a1e0d10c0d9c6fb694e6290c41d3f assets/create/lang/unfinished/ko_kr.json
a6ac4ed14e89192928bbaee12d4d87eff62c7044 assets/create/lang/unfinished/nl_nl.json
e4a1c5579c6a9341aa64e5c6375778f5af71a483 assets/create/lang/unfinished/pl_pl.json
abd17be74ff3142252645365f8526d1a799d8c2f assets/create/lang/unfinished/pt_br.json
ca4a80fc40e2c86fd6c2f5514d81803c6908fcb6 assets/create/lang/unfinished/ru_ru.json
428e0831c3dfc80b888d675a4159af54105efc56 assets/create/lang/unfinished/zh_cn.json
e49b570ee482802accb0b76638de5b7f7f417deb assets/create/lang/unfinished/zh_tw.json
e6152504e06696dd5e67fc7711c8a35a0e89adc1 assets/create/lang/en_ud.json
00337b04d0232065f83af04be1602a4bbca41a9a assets/create/lang/en_us.json
72c1bdf241a2a1714012629313a7dca832f16543 assets/create/lang/unfinished/de_de.json
b5dba799882a10acabba2da1364f13c6315a2faf assets/create/lang/unfinished/es_es.json
e120bf71ae293dc52d3c3bce580f62f26342ff70 assets/create/lang/unfinished/es_mx.json
1ecb0ec82bb47c06d0aa70a91e8e41ccf6732ac4 assets/create/lang/unfinished/fr_fr.json
e351b0007f1a81b52dc665ee7e602c70674cbb1a assets/create/lang/unfinished/it_it.json
23356bb29f55045b67593be4b33373a9fdb5321b assets/create/lang/unfinished/ja_jp.json
237d03e301ec70dfec0e9c1350090f33d362b598 assets/create/lang/unfinished/ko_kr.json
8cd5ab5eadc7ef36415af7cc006afae47d0b84eb assets/create/lang/unfinished/nl_nl.json
eaa616c53638b79981efb639e5c1774bb71a3b64 assets/create/lang/unfinished/pl_pl.json
30bbe746564f86680c352df4bfca0a2b35e26e22 assets/create/lang/unfinished/pt_br.json
01ed0cf0d98ea2c51279419a566218a1d81ae491 assets/create/lang/unfinished/ru_ru.json
5dfb89943acd1b569516e95ce35acb0b686aaa41 assets/create/lang/unfinished/zh_cn.json
91b105a5e2a184e27e48be907a4f80ef3123e16f assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1655,7 +1655,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
f4c38d16e998aa2dbad4a827035fd5754c060104 assets/create/sounds.json
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json
@ -2456,6 +2456,7 @@ ba084fc3c680c9dea0d03fc664a831dfed18e52e data/create/loot_tables/blocks/crimson_
c28fa42746a4d5ca2f824001b67e58673810169e data/create/loot_tables/blocks/crushing_wheel.json
205f5899101262f31f5c1a88bb7d954918d08d04 data/create/loot_tables/blocks/crushing_wheel_controller.json
d370ee874b5b6b98e9a8c368218fe61f644d956d data/create/loot_tables/blocks/cuckoo_clock.json
da983da67346f3dda63505a83f59db6f8131f69b data/create/loot_tables/blocks/cursed_bell.json
28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/cyan_sail.json
49a14b9e93abdf02a7aef9c0c4085ac89617fae4 data/create/loot_tables/blocks/cyan_seat.json
fe24fd296812fea3f838defa2ca6270523d9d48e data/create/loot_tables/blocks/cyan_valve_handle.json
@ -2690,6 +2691,7 @@ dfeba5c6de20e9ec0252e43b7c4046f017284d3d data/create/loot_tables/blocks/paved_we
09789862582b5409cd446f734cd53b6f807342cf data/create/loot_tables/blocks/paved_weathered_limestone_slab.json
67b9227237ed2a8c09c4183c0f2ab1b3bd07084b data/create/loot_tables/blocks/paved_weathered_limestone_stairs.json
d3e4ab984aef19ee21a1c5b868eb3fde96c05afd data/create/loot_tables/blocks/paved_weathered_limestone_wall.json
3a54eca6d503c154a2235ad5b6be4653abd4b6e3 data/create/loot_tables/blocks/peculiar_bell.json
28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/pink_sail.json
6f32e1217986407e41358e9417de63602c78e810 data/create/loot_tables/blocks/pink_seat.json
d85b09659f08a73513c57b1b2e5ec7fc4b6f340a data/create/loot_tables/blocks/pink_valve_handle.json
@ -3673,7 +3675,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone
0f3c993eb6dd3f37953f304b8fad15bf60469ef4 data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json
6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json
11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json
20c20a12b0baff2ba493b1405db7d2d8a15b81af data/create/tags/blocks/brittle.json
558c1052ca384f1c014f9b404d21268764a493ee data/create/tags/blocks/brittle.json
330bfb3850ba3964b10b1bccbc3cbb9b012cae54 data/create/tags/blocks/fan_heaters.json
3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json
c81ea194e808985847159b201140d4aa4cbcca65 data/create/tags/blocks/safe_nbt.json

View file

@ -1,88 +1,152 @@
{
"variants": {
"powered=false,rail_type=regular,shape=north_south": {
"backwards=false,powered=false,rail_type=regular,shape=north_south": {
"model": "create:block/cart_assembler/block_regular"
},
"powered=true,rail_type=regular,shape=north_south": {
"backwards=true,powered=false,rail_type=regular,shape=north_south": {
"model": "create:block/cart_assembler/block_regular",
"y": 180
},
"backwards=false,powered=true,rail_type=regular,shape=north_south": {
"model": "create:block/cart_assembler/block_regular_powered"
},
"powered=false,rail_type=powered_rail,shape=north_south": {
"backwards=true,powered=true,rail_type=regular,shape=north_south": {
"model": "create:block/cart_assembler/block_regular_powered",
"y": 180
},
"backwards=false,powered=false,rail_type=powered_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_powered_rail"
},
"powered=true,rail_type=powered_rail,shape=north_south": {
"backwards=true,powered=false,rail_type=powered_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_powered_rail",
"y": 180
},
"backwards=false,powered=true,rail_type=powered_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_powered_rail_powered"
},
"powered=false,rail_type=detector_rail,shape=north_south": {
"backwards=true,powered=true,rail_type=powered_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_powered_rail_powered",
"y": 180
},
"backwards=false,powered=false,rail_type=detector_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_detector_rail"
},
"powered=true,rail_type=detector_rail,shape=north_south": {
"backwards=true,powered=false,rail_type=detector_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_detector_rail",
"y": 180
},
"backwards=false,powered=true,rail_type=detector_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_detector_rail_powered"
},
"powered=false,rail_type=activator_rail,shape=north_south": {
"backwards=true,powered=true,rail_type=detector_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_detector_rail_powered",
"y": 180
},
"backwards=false,powered=false,rail_type=activator_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_activator_rail"
},
"powered=true,rail_type=activator_rail,shape=north_south": {
"backwards=true,powered=false,rail_type=activator_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_activator_rail",
"y": 180
},
"backwards=false,powered=true,rail_type=activator_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_activator_rail_powered"
},
"powered=false,rail_type=controller_rail,shape=north_south": {
"backwards=true,powered=true,rail_type=activator_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_activator_rail_powered",
"y": 180
},
"backwards=false,powered=false,rail_type=controller_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_controller_rail"
},
"powered=true,rail_type=controller_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_controller_rail_powered"
},
"powered=false,rail_type=controller_rail_backwards,shape=north_south": {
"backwards=true,powered=false,rail_type=controller_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_controller_rail",
"y": 180
},
"powered=true,rail_type=controller_rail_backwards,shape=north_south": {
"backwards=false,powered=true,rail_type=controller_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_controller_rail_powered"
},
"backwards=true,powered=true,rail_type=controller_rail,shape=north_south": {
"model": "create:block/cart_assembler/block_controller_rail_powered",
"y": 180
},
"powered=false,rail_type=regular,shape=east_west": {
"backwards=false,powered=false,rail_type=regular,shape=east_west": {
"model": "create:block/cart_assembler/block_regular",
"y": 270
},
"powered=true,rail_type=regular,shape=east_west": {
"backwards=true,powered=false,rail_type=regular,shape=east_west": {
"model": "create:block/cart_assembler/block_regular",
"y": 90
},
"backwards=false,powered=true,rail_type=regular,shape=east_west": {
"model": "create:block/cart_assembler/block_regular_powered",
"y": 270
},
"powered=false,rail_type=powered_rail,shape=east_west": {
"backwards=true,powered=true,rail_type=regular,shape=east_west": {
"model": "create:block/cart_assembler/block_regular_powered",
"y": 90
},
"backwards=false,powered=false,rail_type=powered_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_powered_rail",
"y": 270
},
"powered=true,rail_type=powered_rail,shape=east_west": {
"backwards=true,powered=false,rail_type=powered_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_powered_rail",
"y": 90
},
"backwards=false,powered=true,rail_type=powered_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_powered_rail_powered",
"y": 270
},
"powered=false,rail_type=detector_rail,shape=east_west": {
"backwards=true,powered=true,rail_type=powered_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_powered_rail_powered",
"y": 90
},
"backwards=false,powered=false,rail_type=detector_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_detector_rail",
"y": 270
},
"powered=true,rail_type=detector_rail,shape=east_west": {
"backwards=true,powered=false,rail_type=detector_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_detector_rail",
"y": 90
},
"backwards=false,powered=true,rail_type=detector_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_detector_rail_powered",
"y": 270
},
"powered=false,rail_type=activator_rail,shape=east_west": {
"backwards=true,powered=true,rail_type=detector_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_detector_rail_powered",
"y": 90
},
"backwards=false,powered=false,rail_type=activator_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_activator_rail",
"y": 270
},
"powered=true,rail_type=activator_rail,shape=east_west": {
"backwards=true,powered=false,rail_type=activator_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_activator_rail",
"y": 90
},
"backwards=false,powered=true,rail_type=activator_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_activator_rail_powered",
"y": 270
},
"powered=false,rail_type=controller_rail,shape=east_west": {
"backwards=true,powered=true,rail_type=activator_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_activator_rail_powered",
"y": 90
},
"backwards=false,powered=false,rail_type=controller_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_controller_rail",
"y": 270
},
"powered=true,rail_type=controller_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_controller_rail_powered",
"y": 270
},
"powered=false,rail_type=controller_rail_backwards,shape=east_west": {
"backwards=true,powered=false,rail_type=controller_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_controller_rail",
"y": 90
},
"powered=true,rail_type=controller_rail_backwards,shape=east_west": {
"backwards=false,powered=true,rail_type=controller_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_controller_rail_powered",
"y": 270
},
"backwards=true,powered=true,rail_type=controller_rail,shape=east_west": {
"model": "create:block/cart_assembler/block_controller_rail_powered",
"y": 90
}

View file

@ -69,6 +69,7 @@
"block.create.crushing_wheel": "\u05DF\u01DD\u01DD\u0265M bu\u0131\u0265sn\u0279\u0186",
"block.create.crushing_wheel_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 \u05DF\u01DD\u01DD\u0265M bu\u0131\u0265sn\u0279\u0186",
"block.create.cuckoo_clock": "\u029E\u0254o\u05DF\u0186 oo\u029E\u0254n\u0186",
"block.create.cursed_bell": "\u05DF\u05DF\u01DD\u15FA p\u01DDs\u0279n\u0186",
"block.create.cyan_sail": "\u05DF\u0131\u0250S u\u0250\u028E\u0186",
"block.create.cyan_seat": "\u0287\u0250\u01DDS u\u0250\u028E\u0186",
"block.create.cyan_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u0250\u028E\u0186",
@ -304,6 +305,7 @@
"block.create.paved_weathered_limestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500",
"block.create.paved_weathered_limestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500",
"block.create.paved_weathered_limestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500",
"block.create.peculiar_bell": "\u05DF\u05DF\u01DD\u15FA \u0279\u0250\u0131\u05DFn\u0254\u01DD\u0500",
"block.create.pink_sail": "\u05DF\u0131\u0250S \u029Eu\u0131\u0500",
"block.create.pink_seat": "\u0287\u0250\u01DDS \u029Eu\u0131\u0500",
"block.create.pink_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u029Eu\u0131\u0500",

View file

@ -72,6 +72,7 @@
"block.create.crushing_wheel": "Crushing Wheel",
"block.create.crushing_wheel_controller": "Crushing Wheel Controller",
"block.create.cuckoo_clock": "Cuckoo Clock",
"block.create.cursed_bell": "Cursed Bell",
"block.create.cyan_sail": "Cyan Sail",
"block.create.cyan_seat": "Cyan Seat",
"block.create.cyan_valve_handle": "Cyan Valve Handle",
@ -307,6 +308,7 @@
"block.create.paved_weathered_limestone_slab": "Paved Weathered Limestone Slab",
"block.create.paved_weathered_limestone_stairs": "Paved Weathered Limestone Stairs",
"block.create.paved_weathered_limestone_wall": "Paved Weathered Limestone Wall",
"block.create.peculiar_bell": "Peculiar Bell",
"block.create.pink_sail": "Pink Sail",
"block.create.pink_seat": "Pink Seat",
"block.create.pink_valve_handle": "Pink Valve Handle",
@ -1581,7 +1583,8 @@
"create.ponder.cart_assembler_modes.header": "Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1061",
"_": "Missing Localizations: 1064",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Mahlwerkrad",
"block.create.crushing_wheel_controller": "Mahlwerkrad Steurung",
"block.create.cuckoo_clock": "Kuckucksuhr",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Türkises Segel",
"block.create.cyan_seat": "Türkiser Sitz",
"block.create.cyan_valve_handle": "Türkiser Ventilgriff",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "Gepflasterte Verwitterte Kalksteinstufe",
"block.create.paved_weathered_limestone_stairs": "Gepflasterte Verwitterte Kalksteintreppe",
"block.create.paved_weathered_limestone_wall": "Gepflasterte Verwitterte Kalksteinmauer",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "Rosa Segel",
"block.create.pink_seat": "Rosa Sitz",
"block.create.pink_valve_handle": "Rosa Ventilgriff",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 822",
"_": "Missing Localizations: 825",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Rueda trituradora",
"block.create.crushing_wheel_controller": "Controlador de Rueda trituradora",
"block.create.cuckoo_clock": "Reloj Cucú",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Vela cian",
"block.create.cyan_seat": "Asiento cian",
"block.create.cyan_valve_handle": "Asa de válvula cian",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "Losa de piedra caliza erosionada pavimentada",
"block.create.paved_weathered_limestone_stairs": "Escaleras de piedra caliza erosionada pavimentada",
"block.create.paved_weathered_limestone_wall": "Pared de piedra caliza erosionada pavimentada",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "Vela rosa",
"block.create.pink_seat": "Asiento rosa",
"block.create.pink_valve_handle": "Asa de válvula rosa",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1428",
"_": "Missing Localizations: 1431",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Rueda Trituradora",
"block.create.crushing_wheel_controller": "UNLOCALIZED:Crushing Wheel Controller",
"block.create.cuckoo_clock": "Reloj Cuco",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Vela Cian",
"block.create.cyan_seat": "Asiento Cian",
"block.create.cyan_valve_handle": "Manija de Válvula Cian",
@ -308,6 +309,7 @@
"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.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "Vela Rosa",
"block.create.pink_seat": "Asiento Rosa",
"block.create.pink_valve_handle": "Manija de Válvula Rosa",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1313",
"_": "Missing Localizations: 1316",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Roue de concassage",
"block.create.crushing_wheel_controller": "Contrôleur de roue de concassage",
"block.create.cuckoo_clock": "Horloge à coucou",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Voile cyan",
"block.create.cyan_seat": "Siège cyan",
"block.create.cyan_valve_handle": "Vanne cyan",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab",
"block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs",
"block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "UNLOCALIZED: Pink Sail",
"block.create.pink_seat": "UNLOCALIZED: Pink Seat",
"block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 839",
"_": "Missing Localizations: 842",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Ruota di frantumazione",
"block.create.crushing_wheel_controller": "Telecomando per ruota di frantumazione",
"block.create.cuckoo_clock": "Orologio a cucù",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Vela ciano",
"block.create.cyan_seat": "Sedile ciano",
"block.create.cyan_valve_handle": "Maniglia per valvola ciano",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "Lastra di calcare consumato lastricato",
"block.create.paved_weathered_limestone_stairs": "Scalini di calcare consumato lastricato",
"block.create.paved_weathered_limestone_wall": "Muretto di calcare consumato lastricato",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "Vela rosa",
"block.create.pink_seat": "Sedile rosa",
"block.create.pink_valve_handle": "Maniglia per valvola rosa",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 205",
"_": "Missing Localizations: 208",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "破砕ホイール",
"block.create.crushing_wheel_controller": "破砕ホイールコントローラー",
"block.create.cuckoo_clock": "鳩時計",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "水色の帆",
"block.create.cyan_seat": "水色のシート",
"block.create.cyan_valve_handle": "水色のバルブハンドル",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "舗装された風化した石灰岩のハーフブロック",
"block.create.paved_weathered_limestone_stairs": "舗装された風化した石灰岩の階段",
"block.create.paved_weathered_limestone_wall": "舗装された風化した石灰岩の壁",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "桃色の帆",
"block.create.pink_seat": "桃色のシート",
"block.create.pink_valve_handle": "桃色のバルブハンドル",
@ -1583,6 +1585,7 @@
"create.ponder.cart_assembler_modes.header": "からくり付きトロッコの方向設定",
"create.ponder.cart_assembler_modes.text_1": "トロッコの構造物は、トロッコの動きに合わせて回転します",
"create.ponder.cart_assembler_modes.text_2": "アセンブラーが「常に向きを固定する」に設定されている場合、構造物の向きは変わりません",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "その他のトロッコとレールの種類",
"create.ponder.cart_assembler_rails.text_1": "通常のレールに設置されたトロッコアセンブラは、通過するカートの動きに影響を与えません",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 892",
"_": "Missing Localizations: 895",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "분쇄 휠",
"block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러",
"block.create.cuckoo_clock": "뻐꾸기 시계",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "청록색 날개",
"block.create.cyan_seat": "청록색 좌석",
"block.create.cyan_valve_handle": "청록색 밸브 손잡이",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "포장된 풍화된 석회암 반 블록",
"block.create.paved_weathered_limestone_stairs": "포장된 풍화된 석회암 계단",
"block.create.paved_weathered_limestone_wall": "포장된 풍화된 석회암 담장",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "분홍색 날개",
"block.create.pink_seat": "분홍색 좌석",
"block.create.pink_valve_handle": "분홍색 밸브 손잡이",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1696",
"_": "Missing Localizations: 1699",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Verpulveraar",
"block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller",
"block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "UNLOCALIZED: Cyan Sail",
"block.create.cyan_seat": "UNLOCALIZED: Cyan Seat",
"block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab",
"block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs",
"block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "UNLOCALIZED: Pink Sail",
"block.create.pink_seat": "UNLOCALIZED: Pink Seat",
"block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 181",
"_": "Missing Localizations: 184",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Koło kruszące",
"block.create.crushing_wheel_controller": "Sterownik koła kruszącego",
"block.create.cuckoo_clock": "Zegar z kukułką",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Błękitny żagiel",
"block.create.cyan_seat": "Błękitne siedzenie",
"block.create.cyan_valve_handle": "Błękitne pokrętło",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "Wygładzona zwietrzała wapienna płyta",
"block.create.paved_weathered_limestone_stairs": "Wygładzone zwietrzałe wapienne schody",
"block.create.paved_weathered_limestone_wall": "Wygładzony zwietrzały wapienny murek",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "Różowy żagiel",
"block.create.pink_seat": "Różowe siedzenie",
"block.create.pink_valve_handle": "Różowe pokrętło",
@ -1583,6 +1585,7 @@
"create.ponder.cart_assembler_modes.header": "Dostosowywanie orientacji maszyn w wagoniku",
"create.ponder.cart_assembler_modes.text_1": "Maszyny w wagoniku obracają się wraz z wagonikiem",
"create.ponder.cart_assembler_modes.text_2": "Jeśli monter jest ustawiony na tryb 'Zablokuj obrót', maszyna nigdy nie zmieni swojej orientacji",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "Inne typy wagoników i torów",
"create.ponder.cart_assembler_rails.text_1": "Montery wagoników stojące na zwykłych torach nie zmienią prędkości przejeżdżającego wagonika",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1737",
"_": "Missing Localizations: 1740",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Roda de Moer",
"block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller",
"block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "UNLOCALIZED: Cyan Sail",
"block.create.cyan_seat": "UNLOCALIZED: Cyan Seat",
"block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab",
"block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs",
"block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "UNLOCALIZED: Pink Sail",
"block.create.pink_seat": "UNLOCALIZED: Pink Seat",
"block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 738",
"_": "Missing Localizations: 741",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "Колесо дробления",
"block.create.crushing_wheel_controller": "Контроллер колеса дробления",
"block.create.cuckoo_clock": "Часы с кукушкой",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "Бирюзовый парус",
"block.create.cyan_seat": "Бирюзовое сииденье",
"block.create.cyan_valve_handle": "Бирюзовый ручной вентиль",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "Плита из мощёного выветренного известняка",
"block.create.paved_weathered_limestone_stairs": "Ступени из мощёного выветренного известняка",
"block.create.paved_weathered_limestone_wall": "Стена из мощёного выветренного известняка",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "Розовый парус",
"block.create.pink_seat": "Розовое сиденье",
"block.create.pink_valve_handle": "Розовый ручной вентиль",
@ -1582,7 +1584,8 @@
"create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions",
"create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: This Arrow indicates which side of the Structure will be considered the front",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails",
"create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 222",
"_": "Missing Localizations: 225",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "粉碎轮",
"block.create.crushing_wheel_controller": "粉碎轮控制器",
"block.create.cuckoo_clock": "布谷鸟闹钟",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "青色风帆",
"block.create.cyan_seat": "青色坐垫",
"block.create.cyan_valve_handle": "青色阀门手轮",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶",
"block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯",
"block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "粉红色风帆",
"block.create.pink_seat": "粉红色坐垫",
"block.create.pink_valve_handle": "粉红色阀门手轮",
@ -1583,6 +1585,7 @@
"create.ponder.cart_assembler_modes.header": "矿车装置的方向设定",
"create.ponder.cart_assembler_modes.text_1": "矿车装置会随着矿车的运动而发生转向",
"create.ponder.cart_assembler_modes.text_2": "如果装配结构的方向锁定了,那么结构的方向将不再改变",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "另外几种矿车以及铁轨",
"create.ponder.cart_assembler_rails.text_1": "放置在普通轨道上的矿车装配站并不会影响路过矿车装置的运动",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 217",
"_": "Missing Localizations: 220",
"_": "->------------------------] Game Elements [------------------------<-",
@ -73,6 +73,7 @@
"block.create.crushing_wheel": "粉碎輪",
"block.create.crushing_wheel_controller": "粉碎輪控制器",
"block.create.cuckoo_clock": "布穀鳥鐘",
"block.create.cursed_bell": "UNLOCALIZED: Cursed Bell",
"block.create.cyan_sail": "藍綠色風帆",
"block.create.cyan_seat": "藍綠色坐墊",
"block.create.cyan_valve_handle": "藍綠色閥門開關",
@ -308,6 +309,7 @@
"block.create.paved_weathered_limestone_slab": "風化石灰岩鋪路石半磚",
"block.create.paved_weathered_limestone_stairs": "風化石灰岩鋪路石樓梯",
"block.create.paved_weathered_limestone_wall": "風化石灰岩鋪路石牆",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_sail": "粉紅色風帆",
"block.create.pink_seat": "粉紅色坐墊",
"block.create.pink_valve_handle": "粉紅色閥門開關",
@ -1583,6 +1585,7 @@
"create.ponder.cart_assembler_modes.header": "礦車結構的方向設定",
"create.ponder.cart_assembler_modes.text_1": "礦車結構會隨著礦車方向改變",
"create.ponder.cart_assembler_modes.text_2": "如果在裝修站鎖定其方向,則結構方向不會隨礦車方向改變",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_rails.header": "其他種類的礦車和鐵軌",
"create.ponder.cart_assembler_rails.text_1": "放在普通鐵軌上的礦車裝修站不會影響礦車的動作",

View file

@ -28,8 +28,8 @@
"trigger": "create:bracket_apply",
"conditions": {
"accepted_entries": [
"create:cogwheel",
"create:large_cogwheel"
"create:large_cogwheel",
"create:cogwheel"
]
}
},

View file

@ -1305,8 +1305,10 @@ public class AllBlocks {
public static final BlockEntry<PeculiarBellBlock> PECULIAR_BELL =
REGISTRATE.block("peculiar_bell", PeculiarBellBlock::new)
.initialProperties(SharedProperties::softMetal)
.blockstate((c, p) -> {})
.tag(AllBlockTags.BRITTLE.tag)
.item()
.model((c, p) -> {})
.build()
.register();
@ -1314,7 +1316,9 @@ public class AllBlocks {
REGISTRATE.block("cursed_bell", CursedBellBlock::new)
.initialProperties(() -> PECULIAR_BELL.get())
.tag(AllBlockTags.BRITTLE.tag)
.blockstate((c, p) -> {})
.item()
.model((c, p) -> {})
.build()
.register();

View file

@ -12,6 +12,7 @@ import com.simibubi.create.AllEntityTypes;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity.CartMovementMode;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption;
import com.simibubi.create.content.contraptions.components.structureMovement.train.MinecartSim2020;
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController;
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController;
import com.simibubi.create.foundation.item.ItemHelper;
@ -21,6 +22,7 @@ import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.AbstractRailBlock;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
@ -34,6 +36,7 @@ import net.minecraft.nbt.ListNBT;
import net.minecraft.network.datasync.DataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.state.properties.RailShape;
import net.minecraft.tags.BlockTags;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
@ -84,8 +87,7 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
initialYawOffset = -1;
}
public static OrientedContraptionEntity create(World world, Contraption contraption,
Direction initialOrientation) {
public static OrientedContraptionEntity create(World world, Contraption contraption, Direction initialOrientation) {
OrientedContraptionEntity entity =
new OrientedContraptionEntity(AllEntityTypes.ORIENTED_CONTRAPTION.get(), world);
entity.setContraption(contraption);
@ -373,19 +375,19 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
movementVector = locationDiff;
Vector3d motion = movementVector.normalize();
if (!isInitialOrientationPresent() && !world.isRemote) {
if (locationDiff.length() > 0) {
Direction facingFromVector =
Direction.getFacingFromVector(locationDiff.x, locationDiff.y, locationDiff.z);
if (initialYawOffset != -1)
facingFromVector = Direction.fromAngle(facingFromVector.getHorizontalAngle() - initialYawOffset);
if (facingFromVector.getAxis()
.isHorizontal())
setInitialOrientation(facingFromVector);
}
}
if (!rotationLock) {
if (riding instanceof AbstractMinecartEntity) {
AbstractMinecartEntity minecartEntity = (AbstractMinecartEntity) riding;
BlockPos railPosition = minecartEntity.getCurrentRailPosition();
BlockState blockState = world.getBlockState(railPosition);
if (blockState.getBlock() instanceof AbstractRailBlock) {
AbstractRailBlock abstractRailBlock = (AbstractRailBlock) blockState.getBlock();
RailShape railDirection =
abstractRailBlock.getRailDirection(blockState, world, railPosition, minecartEntity);
motion = VecHelper.project(motion, MinecartSim2020.getRailVec(railDirection));
}
}
if (motion.length() > 0) {
targetYaw = yawFromVector(motion);
if (targetYaw < 0)
@ -395,7 +397,10 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
}
prevYaw = yaw;
yaw = angleLerp(0.4f, yaw, targetYaw);
float maxApproachSpeed = (float) (motion.length() * 12f / (Math.max(1, getBoundingBox().getXSize() / 6f)));
float approach = AngleHelper.getShortestAngleDiff(yaw, targetYaw);
approach = MathHelper.clamp(approach, -maxApproachSpeed, maxApproachSpeed);
yaw += approach;
if (Math.abs(AngleHelper.getShortestAngleDiff(yaw, targetYaw)) < 1f)
yaw = targetYaw;
else
@ -553,7 +558,8 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
private void repositionOnCart(float partialTicks, MatrixStack[] matrixStacks, Entity ridingEntity) {
Vector3d cartPos = getCartOffset(partialTicks, ridingEntity);
if (cartPos == Vector3d.ZERO) return;
if (cartPos == Vector3d.ZERO)
return;
for (MatrixStack stack : matrixStacks)
stack.translate(cartPos.x, cartPos.y, cartPos.z);

View file

@ -1,10 +1,8 @@
package com.simibubi.create.content.contraptions.components.structureMovement.mounted;
import java.util.function.Predicate;
import java.util.function.Supplier;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock;
import com.simibubi.create.foundation.utility.Lang;
import com.tterrag.registrate.util.entry.BlockEntry;
@ -20,27 +18,21 @@ public enum CartAssembleRailType implements IStringSerializable {
POWERED_RAIL(Blocks.POWERED_RAIL),
DETECTOR_RAIL(Blocks.DETECTOR_RAIL),
ACTIVATOR_RAIL(Blocks.ACTIVATOR_RAIL),
CONTROLLER_RAIL(AllBlocks.CONTROLLER_RAIL, blockState -> AllBlocks.CONTROLLER_RAIL.has(blockState)
&& blockState.contains(ControllerRailBlock.BACKWARDS) && !blockState.get(ControllerRailBlock.BACKWARDS)),
CONTROLLER_RAIL_BACKWARDS(AllBlocks.CONTROLLER_RAIL, blockState -> AllBlocks.CONTROLLER_RAIL.has(blockState)
&& blockState.contains(ControllerRailBlock.BACKWARDS) && blockState.get(ControllerRailBlock.BACKWARDS))
CONTROLLER_RAIL(AllBlocks.CONTROLLER_RAIL)
;
private final Supplier<Block> railBlockSupplier;
private final Supplier<Item> railItemSupplier;
public final Predicate<BlockState> matches;
CartAssembleRailType(Block block) {
this.railBlockSupplier = () -> block;
this.railItemSupplier = block::asItem;
this.matches = blockState -> blockState.getBlock() == getBlock();
}
CartAssembleRailType(BlockEntry<?> block, Predicate<BlockState> matches) {
CartAssembleRailType(BlockEntry<?> block) {
this.railBlockSupplier = block::get;
this.railItemSupplier = () -> block.get().asItem();
this.matches = matches;
}
public Block getBlock() {
@ -51,6 +43,10 @@ public enum CartAssembleRailType implements IStringSerializable {
return railItemSupplier.get();
}
public boolean matches(BlockState rail) {
return rail.getBlock() == railBlockSupplier.get();
}
@Override
public String getString() {
return Lang.asId(name());

View file

@ -60,15 +60,17 @@ import net.minecraft.world.server.ServerWorld;
public class CartAssemblerBlock extends AbstractRailBlock
implements ITE<CartAssemblerTileEntity>, IWrenchable, ISpecialBlockItemRequirement {
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards");
public static final Property<RailShape> RAIL_SHAPE =
EnumProperty.create("shape", RailShape.class, RailShape.EAST_WEST, RailShape.NORTH_SOUTH);
public static final Property<CartAssembleRailType> RAIL_TYPE =
EnumProperty.create("rail_type", CartAssembleRailType.class);
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
public CartAssemblerBlock(Properties properties) {
super(true, properties);
setDefaultState(getDefaultState().with(POWERED, false)
.with(BACKWARDS, false)
.with(RAIL_TYPE, CartAssembleRailType.POWERED_RAIL));
}
@ -88,15 +90,14 @@ public class CartAssemblerBlock extends AbstractRailBlock
.getBlock();
BlockState railState = railBlock.getDefaultState()
.with(railBlock.getShapeProperty(), state.get(RAIL_SHAPE));
if (railState.contains(ControllerRailBlock.BACKWARDS)) {
railState = railState.with(ControllerRailBlock.BACKWARDS, state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS);
}
if (railState.contains(ControllerRailBlock.BACKWARDS))
railState = railState.with(ControllerRailBlock.BACKWARDS, state.get(BACKWARDS));
return railState;
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> builder) {
builder.add(RAIL_SHAPE, POWERED, RAIL_TYPE);
builder.add(RAIL_SHAPE, POWERED, RAIL_TYPE, BACKWARDS);
super.fillStateContainer(builder);
}
@ -141,25 +142,22 @@ public class CartAssemblerBlock extends AbstractRailBlock
public static CartAssemblerAction getActionForCart(BlockState state, AbstractMinecartEntity cart) {
CartAssembleRailType type = state.get(RAIL_TYPE);
boolean powered = state.get(POWERED);
if (type == CartAssembleRailType.REGULAR)
return powered ? CartAssemblerAction.ASSEMBLE : CartAssemblerAction.DISASSEMBLE;
if (type == CartAssembleRailType.ACTIVATOR_RAIL)
switch (type) {
case ACTIVATOR_RAIL:
return powered ? CartAssemblerAction.DISASSEMBLE : CartAssemblerAction.PASS;
if (type == CartAssembleRailType.POWERED_RAIL)
return powered ? CartAssemblerAction.ASSEMBLE_ACCELERATE : CartAssemblerAction.DISASSEMBLE_BRAKE;
if (type == CartAssembleRailType.DETECTOR_RAIL)
return cart.getPassengers()
.isEmpty() ? CartAssemblerAction.ASSEMBLE_ACCELERATE : CartAssemblerAction.DISASSEMBLE;
if (type == CartAssembleRailType.CONTROLLER_RAIL || type == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS)
case CONTROLLER_RAIL:
return powered ? CartAssemblerAction.ASSEMBLE_ACCELERATE_DIRECTIONAL
: CartAssemblerAction.DISASSEMBLE_BRAKE;
return CartAssemblerAction.PASS;
case DETECTOR_RAIL:
return cart.getPassengers()
.isEmpty() ? CartAssemblerAction.ASSEMBLE_ACCELERATE : CartAssemblerAction.DISASSEMBLE;
case POWERED_RAIL:
return powered ? CartAssemblerAction.ASSEMBLE_ACCELERATE : CartAssemblerAction.DISASSEMBLE_BRAKE;
case REGULAR:
return powered ? CartAssemblerAction.ASSEMBLE : CartAssemblerAction.DISASSEMBLE;
default:
return CartAssemblerAction.PASS;
}
}
public static boolean canAssembleTo(AbstractMinecartEntity cart) {
@ -200,12 +198,9 @@ public class CartAssemblerBlock extends AbstractRailBlock
@Nonnull Block blockIn, @Nonnull BlockPos fromPos, boolean isMoving) {
if (worldIn.isRemote)
return;
boolean previouslyPowered = state.get(POWERED);
if (previouslyPowered != worldIn.isBlockPowered(pos)) {
if (previouslyPowered != worldIn.isBlockPowered(pos))
worldIn.setBlockState(pos, state.cycle(POWERED), 2);
}
super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving);
}
@ -254,6 +249,14 @@ public class CartAssemblerBlock extends AbstractRailBlock
return false;
}
@Override
public ItemRequirement getRequiredItems(BlockState state, TileEntity te) {
ArrayList<ItemStack> reuiredItems = new ArrayList<>();
reuiredItems.add(new ItemStack(getRailItem(state)));
reuiredItems.add(new ItemStack(asItem()));
return new ItemRequirement(ItemUseType.CONSUME, reuiredItems);
}
@Override
@SuppressWarnings("deprecation")
@Nonnull
@ -264,16 +267,8 @@ public class CartAssemblerBlock extends AbstractRailBlock
return drops;
}
@Override
public ItemRequirement getRequiredItems(BlockState state, TileEntity te) {
ArrayList<ItemStack> reuiredItems = new ArrayList<>();
reuiredItems.add(new ItemStack(getRailItem(state)));
reuiredItems.add(new ItemStack(asItem()));
return new ItemRequirement(ItemUseType.CONSUME, reuiredItems);
}
@SuppressWarnings("deprecation")
public List<ItemStack> getDropedAssembler(BlockState state, ServerWorld world, BlockPos pos,
public List<ItemStack> getDropsNoRail(BlockState state, ServerWorld world, BlockPos pos,
@Nullable TileEntity p_220077_3_, @Nullable Entity p_220077_4_, ItemStack p_220077_5_) {
return super.getDrops(state, (new LootContext.Builder(world)).withRandom(world.rand)
.withParameter(LootParameters.ORIGIN, Vector3d.of(pos))
@ -289,13 +284,10 @@ public class CartAssemblerBlock extends AbstractRailBlock
PlayerEntity player = context.getPlayer();
if (world.isRemote)
return ActionResultType.SUCCESS;
if (player != null && !player.isCreative())
getDropedAssembler(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem())
.forEach(itemStack -> {
player.inventory.placeItemBackInInventory(world, itemStack);
});
if(world instanceof ServerWorld)
getDropsNoRail(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem())
.forEach(itemStack -> player.inventory.placeItemBackInInventory(world, itemStack));
if (world instanceof ServerWorld)
state.spawnAdditionalDrops((ServerWorld) world, pos, ItemStack.EMPTY);
world.setBlockState(pos, getRailBlock(state));
return ActionResultType.SUCCESS;
@ -341,39 +333,38 @@ public class CartAssemblerBlock extends AbstractRailBlock
public BlockState rotate(BlockState state, Rotation rotation) {
if (rotation == Rotation.NONE)
return state;
boolean is_controller_rail_backwards = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS;
boolean is_controller_rail = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL || is_controller_rail_backwards;
BlockState base = AllBlocks.CONTROLLER_RAIL.getDefaultState()
.with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE))
.with(ControllerRailBlock.BACKWARDS, is_controller_rail_backwards)
.rotate(rotation);
if (is_controller_rail) {
state = state.with(RAIL_TYPE,
base.get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS :
CartAssembleRailType.CONTROLLER_RAIL
);
}
return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE));
.with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE))
.with(ControllerRailBlock.BACKWARDS, state.get(BACKWARDS))
.rotate(rotation);
return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE))
.with(BACKWARDS, base.get(ControllerRailBlock.BACKWARDS));
}
@Override
public BlockState mirror(BlockState state, Mirror mirror) {
if (mirror == Mirror.NONE)
return state;
boolean is_controller_rail_backwards = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS;
boolean is_controller_rail = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL || is_controller_rail_backwards;
BlockState base = AllBlocks.CONTROLLER_RAIL.getDefaultState()
.with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE))
.with(ControllerRailBlock.BACKWARDS, is_controller_rail_backwards)
.mirror(mirror);
if (is_controller_rail) {
state = state.with(RAIL_TYPE,
base.get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS :
CartAssembleRailType.CONTROLLER_RAIL
);
.with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE))
.with(ControllerRailBlock.BACKWARDS, state.get(BACKWARDS))
.mirror(mirror);
return state.with(BACKWARDS, base.get(ControllerRailBlock.BACKWARDS));
}
public static Direction getHorizontalDirection(BlockState blockState) {
if (!(blockState.getBlock() instanceof CartAssemblerBlock))
return Direction.SOUTH;
Direction pointingTo = getPointingTowards(blockState);
return blockState.get(BACKWARDS) ? pointingTo.getOpposite() : pointingTo;
}
private static Direction getPointingTowards(BlockState state) {
switch (state.get(RAIL_SHAPE)) {
case EAST_WEST:
return Direction.WEST;
default:
return Direction.NORTH;
}
return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE));
}
}

View file

@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.mo
import javax.annotation.Nonnull;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.block.AbstractRailBlock;
@ -13,6 +14,8 @@ import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemUseContext;
import net.minecraft.state.properties.RailShape;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.AxisDirection;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.math.BlockPos;
@ -28,7 +31,8 @@ public class CartAssemblerBlockItem extends BlockItem {
@Nonnull
public ActionResultType onItemUse(ItemUseContext context) {
if (tryPlaceAssembler(context)) {
context.getWorld().playSound(null, context.getPos(), SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1, 1);
context.getWorld()
.playSound(null, context.getPos(), SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1, 1);
return ActionResultType.SUCCESS;
}
return super.onItemUse(context);
@ -56,7 +60,7 @@ public class CartAssemblerBlockItem extends BlockItem {
.with(CartAssemblerBlock.RAIL_SHAPE, shape);
CartAssembleRailType newType = null;
for (CartAssembleRailType type : CartAssembleRailType.values())
if (type.matches.test(state))
if (type.matches(state))
newType = type;
if (newType == null)
return false;
@ -64,9 +68,18 @@ public class CartAssemblerBlockItem extends BlockItem {
return true;
newState = newState.with(CartAssemblerBlock.RAIL_TYPE, newType);
if (state.contains(ControllerRailBlock.BACKWARDS))
newState = newState.with(CartAssemblerBlock.BACKWARDS, state.get(ControllerRailBlock.BACKWARDS));
else {
Direction direction = player.getAdjustedHorizontalFacing();
newState =
newState.with(CartAssemblerBlock.BACKWARDS, direction.getAxisDirection() == AxisDirection.POSITIVE);
}
world.setBlockState(pos, newState);
if (!player.isCreative())
context.getItem().shrink(1);
context.getItem()
.shrink(1);
return true;
}
}

View file

@ -21,17 +21,12 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOpt
import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
import net.minecraft.entity.item.minecart.FurnaceMinecartEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.state.properties.RailShape;
import net.minecraft.tileentity.TileEntityType;
@ -43,8 +38,6 @@ import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.vector.Vector3i;
import net.minecraft.world.World;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber
@ -54,9 +47,7 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
protected ScrollOptionBehaviour<CartMovementMode> movementMode;
private int ticksSinceMinecartUpdate;
protected AssemblyException lastException;
protected AbstractMinecartEntity cartToAssemble;
protected Direction cartInitialOrientation = Direction.NORTH;
public CartAssemblerTileEntity(TileEntityType<? extends CartAssemblerTileEntity> type) {
super(type);
@ -93,41 +84,44 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
if (action.shouldDisassemble())
disassemble(world, pos, cart);
if (action == CartAssemblerBlock.CartAssemblerAction.ASSEMBLE_ACCELERATE) {
Direction facing = cart.getAdjustedHorizontalFacing();
RailShape railShape = state.get(CartAssemblerBlock.RAIL_SHAPE);
for (Direction d : Iterate.directionsInAxis(railShape == RailShape.EAST_WEST ? Axis.X : Axis.Z))
if (world.getBlockState(pos.offset(d))
if (cart.getMotion()
.length() > 1 / 128f) {
Direction facing = cart.getAdjustedHorizontalFacing();
RailShape railShape = state.get(CartAssemblerBlock.RAIL_SHAPE);
for (Direction d : Iterate.directionsInAxis(railShape == RailShape.EAST_WEST ? Axis.X : Axis.Z))
if (world.getBlockState(pos.offset(d))
.isNormalCube(world, pos.offset(d)))
facing = d.getOpposite();
facing = d.getOpposite();
float speed = block.getRailMaxSpeed(state, world, pos, cart);
cart.setMotion(facing.getXOffset() * speed, facing.getYOffset() * speed, facing.getZOffset() * speed);
float speed = block.getRailMaxSpeed(state, world, pos, cart);
cart.setMotion(facing.getXOffset() * speed, facing.getYOffset() * speed, facing.getZOffset() * speed);
}
}
if (action == CartAssemblerBlock.CartAssemblerAction.ASSEMBLE_ACCELERATE_DIRECTIONAL) {
Vector3i accelerationVector = ControllerRailBlock.getAccelerationVector(
AllBlocks.CONTROLLER_RAIL.getDefaultState()
.with(ControllerRailBlock.SHAPE, state.get(CartAssemblerBlock.RAIL_SHAPE))
.with(ControllerRailBlock.BACKWARDS, state.get(CartAssemblerBlock.RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS));
Vector3i accelerationVector =
ControllerRailBlock.getAccelerationVector(AllBlocks.CONTROLLER_RAIL.getDefaultState()
.with(ControllerRailBlock.SHAPE, state.get(CartAssemblerBlock.RAIL_SHAPE))
.with(ControllerRailBlock.BACKWARDS, state.get(CartAssemblerBlock.BACKWARDS)));
float speed = block.getRailMaxSpeed(state, world, pos, cart);
cart.setMotion(Vector3d.of(accelerationVector).scale(speed));
cart.setMotion(Vector3d.of(accelerationVector)
.scale(speed));
}
if (action == CartAssemblerBlock.CartAssemblerAction.DISASSEMBLE_BRAKE) {
Vector3d diff = VecHelper.getCenterOf(pos)
.subtract(cart.getPositionVec());
.subtract(cart.getPositionVec());
cart.setMotion(diff.x / 16f, 0, diff.z / 16f);
}
}
protected void assemble(World world, BlockPos pos, AbstractMinecartEntity cart) {
if (!cart.getPassengers()
.isEmpty())
.isEmpty())
return;
LazyOptional<MinecartController> optional =
cart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY);
cart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY);
if (optional.isPresent() && optional.orElse(null)
.isCoupledThroughContraption())
.isCoupledThroughContraption())
return;
CartMovementMode mode = CartMovementMode.values()[movementMode.value];
@ -146,13 +140,12 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
}
boolean couplingFound = contraption.connectedCart != null;
Direction initialOrientation = cart.getMotion()
.length() < 1 / 512f ? cartInitialOrientation : cart.getAdjustedHorizontalFacing();
Direction initialOrientation = CartAssemblerBlock.getHorizontalDirection(getBlockState());
if (couplingFound) {
cart.setPosition(pos.getX() + .5f, pos.getY(), pos.getZ() + .5f);
if (!CouplingHandler.tryToCoupleCarts(null, world, cart.getEntityId(),
contraption.connectedCart.getEntityId()))
contraption.connectedCart.getEntityId()))
return;
}
@ -161,7 +154,8 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
contraption.expandBoundsAroundAxis(Axis.Y);
if (couplingFound) {
Vector3d diff = contraption.connectedCart.getPositionVec().subtract(cart.getPositionVec());
Vector3d diff = contraption.connectedCart.getPositionVec()
.subtract(cart.getPositionVec());
initialOrientation = Direction.fromAngle(MathHelper.atan2(diff.z, diff.x) * 180 / Math.PI);
}
@ -182,16 +176,18 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
protected void disassemble(World world, BlockPos pos, AbstractMinecartEntity cart) {
if (cart.getPassengers()
.isEmpty())
.isEmpty())
return;
Entity entity = cart.getPassengers()
.get(0);
.get(0);
if (!(entity instanceof OrientedContraptionEntity))
return;
OrientedContraptionEntity contraption = (OrientedContraptionEntity) entity;
UUID couplingId = contraption.getCouplingId();
if (couplingId == null) {
contraption.yaw = CartAssemblerBlock.getHorizontalDirection(getBlockState())
.getHorizontalAngle();
disassembleCart(cart);
return;
}
@ -206,17 +202,18 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
if (minecartController.cart() == cart)
continue;
BlockPos otherPos = minecartController.cart()
.getBlockPos();
.getBlockPos();
BlockState blockState = world.getBlockState(otherPos);
if (!AllBlocks.CART_ASSEMBLER.has(blockState))
return;
if (!CartAssemblerBlock.getActionForCart(blockState, minecartController.cart()).shouldDisassemble())
if (!CartAssemblerBlock.getActionForCart(blockState, minecartController.cart())
.shouldDisassemble())
return;
}
for (boolean current : Iterate.trueAndFalse)
coupledCarts.get(current)
.removeConnection(current);
.removeConnection(current);
disassembleCart(cart);
}
@ -242,14 +239,12 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
public void write(CompoundNBT compound, boolean clientPacket) {
AssemblyException.write(compound, lastException);
super.write(compound, clientPacket);
NBTHelper.writeEnum(compound, "CartInitialOrientation", cartInitialOrientation);
}
@Override
protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) {
lastException = AssemblyException.read(compound);
super.fromTag(state, compound, clientPacket);
cartInitialOrientation = NBTHelper.readEnum(compound, "CartInitialOrientation", Direction.class);
}
@Override
@ -322,26 +317,4 @@ public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplay
return ticksSinceMinecartUpdate >= assemblyCooldown;
}
// TODO: Remove these methods once we give Cart Assemblers directionality
protected void setCartInitialOrientation(Direction direction) {
cartInitialOrientation = direction;
}
@SubscribeEvent
public static void getOrientationOfStationaryCart(PlayerInteractEvent.RightClickBlock event) {
PlayerEntity player = event.getPlayer();
if (player == null)
return;
Item item = event.getItemStack().getItem();
if (item != Items.MINECART && item != Items.CHEST_MINECART && item != Items.FURNACE_MINECART)
return;
Block block = event.getWorld().getBlockState(event.getPos()).getBlock();
if (!(block instanceof CartAssemblerBlock))
return;
CartAssemblerTileEntity te = ((CartAssemblerBlock) block).getTileEntity(event.getWorld(), event.getPos());
if (te == null)
return;
te.setCartInitialOrientation(player.getHorizontalFacing());
}
}

View file

@ -41,8 +41,6 @@ public class PotatoCannonItem extends ShootableItem {
public static ItemStack CLIENT_CURRENT_AMMO = ItemStack.EMPTY;
public static final int MAX_DAMAGE = 100;
public static int PREV_SHOT = 0;// remove this
public PotatoCannonItem(Properties p_i48487_1_) {
super(p_i48487_1_);
}
@ -232,10 +230,4 @@ public class PotatoCannonItem extends ShootableItem {
return 15;
}
// FIXME Temporary; use zappers way of animating
public static void clientTick() {
if (PREV_SHOT > 0)
PREV_SHOT--;
}
}

View file

@ -27,7 +27,6 @@ import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHa
import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer;
import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer;
import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler;
import com.simibubi.create.content.curiosities.weapons.PotatoCannonItem;
import com.simibubi.create.content.curiosities.zapper.ZapperItem;
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperRenderHandler;
import com.simibubi.create.content.logistics.block.depot.EjectorTargetHandler;
@ -106,11 +105,9 @@ public class ClientEvents {
return;
}
SoundScapes.tick();
AnimationTickHolder.tick();
ScrollValueHandler.tick();
PotatoCannonItem.clientTick();
CreateClient.SCHEMATIC_SENDER.tick();
CreateClient.SCHEMATIC_AND_QUILL_HANDLER.tick();

View file

@ -218,12 +218,12 @@ public class BlockStateGen {
.forAllStates(state -> {
CartAssembleRailType type = state.get(CartAssemblerBlock.RAIL_TYPE);
Boolean powered = state.get(CartAssemblerBlock.POWERED);
Boolean backwards = state.get(CartAssemblerBlock.BACKWARDS);
RailShape shape = state.get(CartAssemblerBlock.RAIL_SHAPE);
int yRotation = shape == RailShape.EAST_WEST ? 270 : 0;
if (type == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS) {
if (backwards)
yRotation += 180;
type = CartAssembleRailType.CONTROLLER_RAIL;
}
return ConfiguredModel.builder()
.modelFile(p.models()

View file

@ -235,6 +235,13 @@ public class CartAssemblerScenes {
.placeNearTarget();
scene.idle(90);
scene.overlay.showText(80)
.attachKeyFrame()
.text("This Arrow indicates which side of the Structure will be considered the front")
.pointAt(util.vector.topOf(assemblerPos))
.placeNearTarget();
scene.idle(90);
scene.world.hideIndependentSection(contraption, Direction.UP);
scene.world.hideIndependentSection(anchor, Direction.UP);
scene.special.hideElement(cart, Direction.UP);

View file

@ -2,12 +2,12 @@
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"4": "create:block/bearing_top",
"4": "create:block/cart_assembler_top",
"5": "create:block/mechanical_bearing_side",
"clutch_off": "create:block/clutch_off",
"6": "create:block/cart_assembler_side_off",
"rail": "block/powered_rail",
"translation_chassis_side": "create:block/cart_assembler_side",
"particle": "create:block/cart_assembler_side"
"particle": "create:block/cart_assembler_side",
"translation_chassis_side": "create:block/cart_assembler_side"
},
"elements": [
{
@ -24,12 +24,12 @@
"from": [13.875, 0.062, 1.125],
"to": [17.875, 13.937, 14.875],
"faces": {
"north": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"},
"east": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"},
"south": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"},
"north": {"uv": [1, 14.875, 5, 1], "texture": "#6"},
"east": {"uv": [1, 15, 15, 1], "rotation": 180, "texture": "#6"},
"south": {"uv": [11, 14.875, 15, 1], "texture": "#6"},
"west": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"},
"up": {"uv": [5, 1, 9, 15], "texture": "#translation_chassis_side"},
"down": {"uv": [2, 1, 6, 15], "texture": "#translation_chassis_side"}
"up": {"uv": [1, 5, 14.75, 1], "rotation": 270, "texture": "#6"},
"down": {"uv": [1, 15, 14.75, 11], "rotation": 90, "texture": "#6"}
}
},
{
@ -37,12 +37,12 @@
"from": [-1.875, 0.062, 1.125],
"to": [2.125, 13.937, 14.875],
"faces": {
"north": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"},
"north": {"uv": [11, 14.875, 15, 1], "texture": "#6"},
"east": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"},
"south": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"},
"west": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"},
"up": {"uv": [9, 1, 5, 15], "texture": "#translation_chassis_side"},
"down": {"uv": [6, 1, 2, 15], "texture": "#translation_chassis_side"}
"south": {"uv": [1, 14.875, 5, 1], "texture": "#6"},
"west": {"uv": [1, 15, 15, 1], "rotation": 180, "texture": "#6"},
"up": {"uv": [1, 5, 14.75, 1], "rotation": 90, "texture": "#6"},
"down": {"uv": [1, 15, 14.75, 11], "rotation": 270, "texture": "#6"}
}
},
{
@ -50,23 +50,13 @@
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#5"},
"north": {"uv": [0, 0, 16, 4], "texture": "#translation_chassis_side"},
"east": {"uv": [0, 0, 16, 4], "texture": "#5"},
"south": {"uv": [0, 0, 16, 4], "texture": "#5"},
"south": {"uv": [0, 0, 16, 4], "texture": "#translation_chassis_side"},
"west": {"uv": [0, 0, 16, 4], "texture": "#5"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#translation_chassis_side"}
}
},
{
"from": [2, 10, 1],
"to": [14, 12, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [18, 22, 10]},
"faces": {
"north": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"},
"south": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"},
"down": {"uv": [2, 1, 14, 15], "texture": "#translation_chassis_side"}
}
}
],
"display": {

View file

@ -1,7 +1,7 @@
{
"parent": "create:block/cart_assembler/block",
"textures": {
"clutch_off": "create:block/clutch_on",
"6": "create:block/cart_assembler_side_on",
"rail": "block/activator_rail_on"
}
}

View file

@ -1,7 +1,7 @@
{
"parent": "create:block/cart_assembler/block",
"textures": {
"clutch_off": "create:block/clutch_on",
"6": "create:block/cart_assembler_side_on",
"rail": "create:block/controller_rail_powered"
}
}

View file

@ -1,7 +1,7 @@
{
"parent": "create:block/cart_assembler/block",
"textures": {
"clutch_off": "create:block/clutch_on",
"6": "create:block/cart_assembler_side_on",
"rail": "block/detector_rail_on"
}
}

View file

@ -1,7 +1,7 @@
{
"parent": "create:block/cart_assembler/block",
"textures": {
"clutch_off": "create:block/clutch_on",
"6": "create:block/cart_assembler_side_on",
"rail": "block/powered_rail_on"
}
}

View file

@ -1,7 +1,7 @@
{
"parent": "create:block/cart_assembler/block",
"textures": {
"clutch_off": "create:block/clutch_on",
"6": "create:block/cart_assembler_side_on",
"rail": "block/rail"
}
}

View file

@ -2,11 +2,11 @@
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"4": "create:block/bearing_top",
"5": "create:block/mechanical_bearing_side",
"clutch_off": "create:block/clutch_off",
"6": "create:block/cart_assembler_side_off",
"particle": "create:block/cart_assembler_side",
"translation_chassis_side": "create:block/cart_assembler_side",
"particle": "create:block/cart_assembler_side"
"1_4": "create:block/cart_assembler_top"
},
"elements": [
{
@ -14,12 +14,12 @@
"from": [13.875, 0.062, 1.125],
"to": [17.875, 13.937, 14.875],
"faces": {
"north": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"},
"east": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"},
"south": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"},
"north": {"uv": [1, 14.875, 5, 1], "texture": "#6"},
"east": {"uv": [1, 15, 15, 1], "rotation": 180, "texture": "#6"},
"south": {"uv": [11, 14.875, 15, 1], "texture": "#6"},
"west": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"},
"up": {"uv": [5, 1, 9, 15], "texture": "#translation_chassis_side"},
"down": {"uv": [2, 1, 6, 15], "texture": "#translation_chassis_side"}
"up": {"uv": [1, 5, 14.75, 1], "rotation": 270, "texture": "#6"},
"down": {"uv": [1, 15, 14.75, 11], "rotation": 90, "texture": "#6"}
}
},
{
@ -27,12 +27,12 @@
"from": [-1.875, 0.062, 1.125],
"to": [2.125, 13.937, 14.875],
"faces": {
"north": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"},
"north": {"uv": [11, 14.875, 15, 1], "texture": "#6"},
"east": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"},
"south": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"},
"west": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"},
"up": {"uv": [9, 1, 5, 15], "texture": "#translation_chassis_side"},
"down": {"uv": [6, 1, 2, 15], "texture": "#translation_chassis_side"}
"south": {"uv": [1, 14.875, 5, 1], "texture": "#6"},
"west": {"uv": [1, 15, 15, 1], "rotation": 180, "texture": "#6"},
"up": {"uv": [1, 5, 14.75, 1], "rotation": 90, "texture": "#6"},
"down": {"uv": [1, 15, 14.75, 11], "rotation": 270, "texture": "#6"}
}
},
{
@ -40,23 +40,13 @@
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#5"},
"north": {"uv": [0, 0, 16, 4], "texture": "#translation_chassis_side"},
"east": {"uv": [0, 0, 16, 4], "texture": "#5"},
"south": {"uv": [0, 0, 16, 4], "texture": "#5"},
"south": {"uv": [0, 0, 16, 4], "texture": "#translation_chassis_side"},
"west": {"uv": [0, 0, 16, 4], "texture": "#5"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1_4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#translation_chassis_side"}
}
},
{
"from": [2, 10, 1],
"to": [14, 12, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [18, 22, 10]},
"faces": {
"north": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"},
"south": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"},
"down": {"uv": [2, 1, 14, 15], "texture": "#translation_chassis_side"}
}
}
],
"display": {
@ -89,5 +79,12 @@
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
}
},
"groups": [
{
"name": "block",
"origin": [8, 8, 8],
"children": [0, 1, 2]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B