Ponder on Tracks

- Ponder scenes for the Cart Assembler
This commit is contained in:
simibubi 2021-03-17 23:31:30 +01:00
parent cddc4a40f5
commit f7f51d1988
29 changed files with 1162 additions and 43 deletions

View file

@ -402,19 +402,19 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
2b12f3cf99e498899207a8c4855210e7b5dc55cd assets/create/lang/en_ud.json
73cd8748a2a6277ec1ec1e4c0af4fe9cffbda8ce assets/create/lang/en_us.json
9777ac3724ec7d626437b12b67b533f6894afd29 assets/create/lang/unfinished/de_de.json
91e44b23201b2165b64837d9a8d0f3d5313a8058 assets/create/lang/unfinished/es_es.json
c859cb5f44c409adcdfa3de65642eb1f6c8fd5bc assets/create/lang/unfinished/es_mx.json
512e8b757d5a6b511a946f3cb56ce90653885f04 assets/create/lang/unfinished/fr_fr.json
af6c1fdea2304970eacaf8413e85fab5c0731918 assets/create/lang/unfinished/it_it.json
96063374af85f0f269b64262c319b3bde9623d45 assets/create/lang/unfinished/ja_jp.json
b5f1962be245e0042255d23c18de532f84a3b0fa assets/create/lang/unfinished/ko_kr.json
14b0b2b88be1d3d9d064f26a36b28e6762522809 assets/create/lang/unfinished/nl_nl.json
a8f5e1dcb5db76b2daffb056841fd0b785af5597 assets/create/lang/unfinished/pt_br.json
d06fb4feed18286366ed958044ab82d1bf2d15b8 assets/create/lang/unfinished/ru_ru.json
3498b6288bce0184992a2a4051c9416d76ad1a13 assets/create/lang/unfinished/zh_cn.json
8c26a0392f613db72705d56f46e8fdaa7e117dc6 assets/create/lang/unfinished/zh_tw.json
e371fd4fccf90c4ee6f2fbea91ea5d70e3d6c652 assets/create/lang/en_us.json
610a33e7074c3fb8e88370bed76549bfcfe0eddb assets/create/lang/unfinished/de_de.json
29339e0bf9743251639a2598d17f194cd406602c assets/create/lang/unfinished/es_es.json
e7138596de0babd4fc90a4b8ffb8fdea13088086 assets/create/lang/unfinished/es_mx.json
a95f57787534ae5d4920fe8e4825fe3012fdcd70 assets/create/lang/unfinished/fr_fr.json
7956b67df2d19a9f890f893c9d736516cc6e8629 assets/create/lang/unfinished/it_it.json
95394f8cc9d53397e030c46a9abef4fa4348e2ad assets/create/lang/unfinished/ja_jp.json
edcd5ffe8239f13cedbd63ab11c8334a38b90c90 assets/create/lang/unfinished/ko_kr.json
1749d2d020f02a2ccca4698d85bfdc4dcf849e3f assets/create/lang/unfinished/nl_nl.json
83c43209c295b3d3d85f7bebaa9a8ce7b79d47da assets/create/lang/unfinished/pt_br.json
a1a67295a2fe537080254fc8b353699d4d30989a assets/create/lang/unfinished/ru_ru.json
a525852b4f3aa0af52816e02e5cf4181de0c60c5 assets/create/lang/unfinished/zh_cn.json
51242fa9de9994103e9373e5c8dd6941438ec9a8 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

View file

@ -1907,6 +1907,26 @@
"create.ponder.brass_funnel.text_3": "Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "All shafts connected like this will rotate in the same direction",
@ -1996,6 +2016,11 @@
"create.ponder.fan_source.text_1": "Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "Funnel compatibility",
"create.ponder.funnel_compat.text_1": "Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1350",
"_": "Missing Localizations: 1370",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 381",
"_": "Missing Localizations: 401",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1280",
"_": "Missing Localizations: 1300",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1062",
"_": "Missing Localizations: 1082",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 398",
"_": "Missing Localizations: 418",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 405",
"_": "Missing Localizations: 425",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 451",
"_": "Missing Localizations: 471",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1549",
"_": "Missing Localizations: 1569",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1615",
"_": "Missing Localizations: 1635",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 401",
"_": "Missing Localizations: 421",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 399",
"_": "Missing Localizations: 419",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 404",
"_": "Missing Localizations: 424",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1908,6 +1908,26 @@
"create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.",
"create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.",
"create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers",
"create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts",
"create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks",
"create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere",
"create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions",
"create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...",
"create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption",
"create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling",
"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_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",
"create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered",
"create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor",
"create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories",
"create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives",
"create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row",
"create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction",
@ -1997,6 +2017,11 @@
"create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force",
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel",
"create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine",
"create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity",
"create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine",
"create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility",
"create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.",
"create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws",

View file

@ -83,6 +83,9 @@ public class PonderUI extends NavigatableSimiScreen {
private ClipboardHelper clipboardHelper;
private BlockPos copiedBlockPos;
private LerpedFloat finishingFlash;
private int finishingFlashWarmup = 0;
private LerpedFloat lazyIndex;
private int index = 0;
private PonderTag referredToByTag;
@ -133,6 +136,9 @@ public class PonderUI extends NavigatableSimiScreen {
.startWithValue(0)
.chase(1, .1f, Chaser.EXP);
clipboardHelper = new ClipboardHelper();
finishingFlash = LerpedFloat.linear()
.startWithValue(0)
.chase(0, .1f, Chaser.EXP);
}
@Override
@ -250,10 +256,22 @@ public class PonderUI extends NavigatableSimiScreen {
if (skipCooling == 0)
activeScene.tick();
}
lazyIndex.tickChaser();
fadeIn.tickChaser();
finishingFlash.tickChaser();
progressBar.tick();
if (activeScene.currentTime == activeScene.totalTime - 1)
finishingFlashWarmup = 30;
if (finishingFlashWarmup > 0) {
finishingFlashWarmup--;
if (finishingFlashWarmup == 0) {
finishingFlash.setValue(1);
finishingFlash.setValue(1);
}
}
if (!identifyMode) {
float lazyIndexValue = lazyIndex.getValue();
if (Math.abs(lazyIndexValue - index) > 1 / 512f)
@ -389,10 +407,26 @@ public class PonderUI extends NavigatableSimiScreen {
RenderSystem.pushMatrix();
RenderSystem.translated(story.basePlateOffsetX, 0, story.basePlateOffsetZ);
RenderSystem.scaled(1, -1, 1);
float flash = finishingFlash.getValue(partialTicks) * .9f;
float alpha = flash;
flash *= flash;
flash = ((flash * 2) - 1);
flash *= flash;
flash = 1 - flash;
for (int f = 0; f < 4; f++) {
RenderSystem.translated(story.basePlateSize, 0, 0);
RenderSystem.pushMatrix();
RenderSystem.translated(0, 0, 1 / 1024f);
RenderSystem.translated(0, 0, -1 / 1024f);
if (flash > 0) {
RenderSystem.pushMatrix();
RenderSystem.scaled(1, .5 + flash * .75, 1);
GuiUtils.drawGradientRect(0, 0, -1, -story.basePlateSize, 0, 0x00_c6ffc9,
ColorHelper.applyAlpha(0xaa_c6ffc9, alpha));
RenderSystem.popMatrix();
}
RenderSystem.translated(0, 0, 2 / 1024f);
GuiUtils.drawGradientRect(0, 0, 0, -story.basePlateSize, 4, 0x66_000000, 0x00_000000);
RenderSystem.popMatrix();
RenderSystem.rotatef(-90, 0, 1, 0);

View file

@ -17,18 +17,23 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity;
import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity;
import com.simibubi.create.foundation.ponder.content.PonderPalette;
import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement;
import com.simibubi.create.foundation.ponder.elements.BeltItemElement;
import com.simibubi.create.foundation.ponder.elements.EntityElement;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.elements.MinecartElement;
import com.simibubi.create.foundation.ponder.elements.MinecartElement.MinecartConstructor;
import com.simibubi.create.foundation.ponder.elements.ParrotElement;
import com.simibubi.create.foundation.ponder.elements.ParrotElement.ParrotPose;
import com.simibubi.create.foundation.ponder.elements.ParrotElement.SpinOnComponentPose;
import com.simibubi.create.foundation.ponder.elements.TextWindowElement;
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.ponder.instructions.AnimateMinecartInstruction;
import com.simibubi.create.foundation.ponder.instructions.AnimateParrotInstruction;
import com.simibubi.create.foundation.ponder.instructions.AnimateTileEntityInstruction;
import com.simibubi.create.foundation.ponder.instructions.AnimateWorldSectionInstruction;
import com.simibubi.create.foundation.ponder.instructions.ChaseAABBInstruction;
import com.simibubi.create.foundation.ponder.instructions.CreateMinecartInstruction;
import com.simibubi.create.foundation.ponder.instructions.CreateParrotInstruction;
import com.simibubi.create.foundation.ponder.instructions.DelayInstruction;
import com.simibubi.create.foundation.ponder.instructions.DisplayWorldSectionInstruction;
@ -328,12 +333,15 @@ public class SceneBuilder {
}
public void showCenteredScrollInput(BlockPos pos, Direction side, int duration) {
showScrollInput(scene.getSceneBuildingUtil().vector.blockSurface(pos, side), side, duration);
}
public void showScrollInput(Vec3d location, Direction side, int duration) {
Axis axis = side.getAxis();
float s = 1 / 16f;
float q = 1 / 4f;
Vec3d expands = new Vec3d(axis == Axis.X ? s : q, axis == Axis.Y ? s : q, axis == Axis.Z ? s : q);
addInstruction(new HighlightValueBoxInstruction(scene.getSceneBuildingUtil().vector.blockSurface(pos, side),
expands, duration));
addInstruction(new HighlightValueBoxInstruction(location, expands, duration));
}
public void showRepeaterScrollInput(BlockPos pos, int duration) {
@ -359,6 +367,10 @@ public class SceneBuilder {
addInstruction(new OutlineSelectionInstruction(color, slot, selection, duration));
}
public <T extends AnimatedSceneElement> void hideElement(ElementLink<T> link, Direction direction) {
addInstruction(new FadeOutOfSceneInstruction<>(15, direction, link));
}
}
public class SpecialInstructions {
@ -402,6 +414,22 @@ public class SceneBuilder {
addInstruction(AnimateParrotInstruction.move(link, offset, duration));
}
public ElementLink<MinecartElement> createCart(Vec3d location, float angle, MinecartConstructor type) {
ElementLink<MinecartElement> link = new ElementLink<>(MinecartElement.class);
MinecartElement cart = new MinecartElement(location, angle, type);
addInstruction(new CreateMinecartInstruction(10, Direction.DOWN, cart));
addInstruction(scene -> scene.linkElement(cart, link));
return link;
}
public void rotateCart(ElementLink<MinecartElement> link, float yRotation, int duration) {
addInstruction(AnimateMinecartInstruction.rotate(link, yRotation, duration));
}
public void moveCart(ElementLink<MinecartElement> link, Vec3d offset, int duration) {
addInstruction(AnimateMinecartInstruction.move(link, offset, duration));
}
}
public class WorldInstructions {
@ -445,6 +473,13 @@ public class SceneBuilder {
return instruction.createLink(scene);
}
public ElementLink<WorldSectionElement> showIndependentSectionImmediately(Selection selection) {
DisplayWorldSectionInstruction instruction =
new DisplayWorldSectionInstruction(0, Direction.DOWN, selection, Optional.empty());
addInstruction(instruction);
return instruction.createLink(scene);
}
public void hideSection(Selection selection, Direction fadeOutDirection) {
WorldSectionElement worldSectionElement = new WorldSectionElement(selection);
ElementLink<WorldSectionElement> elementLink = new ElementLink<>(WorldSectionElement.class);
@ -513,7 +548,7 @@ public class SceneBuilder {
public void movePulley(BlockPos pos, float distance, int duration) {
addInstruction(AnimateTileEntityInstruction.pulley(pos, distance, duration));
}
public void moveDeployer(BlockPos pos, float distance, int duration) {
addInstruction(AnimateTileEntityInstruction.deployer(pos, distance, duration));
}

View file

@ -0,0 +1,534 @@
package com.simibubi.create.foundation.ponder.content;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock;
import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.Selection;
import com.simibubi.create.foundation.ponder.elements.EntityElement;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.elements.MinecartElement;
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.minecart.ChestMinecartEntity;
import net.minecraft.entity.item.minecart.FurnaceMinecartEntity;
import net.minecraft.entity.item.minecart.MinecartEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.state.properties.RailShape;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
public class CartAssemblerScenes {
public static void anchor(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("cart_assembler", "Moving Structures using Cart Assemblers");
scene.configureBasePlate(0, 0, 5);
scene.scaleSceneView(.9f);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
BlockPos assemblerPos = util.grid.at(2, 1, 2);
scene.world.setBlock(assemblerPos, Blocks.RAIL.getDefaultState(), false);
for (int z = 0; z < 5; z++) {
scene.world.showSection(util.select.position(2, 1, z), Direction.DOWN);
scene.idle(2);
}
BlockPos leverPos = util.grid.at(0, 1, 2);
Selection toggle = util.select.fromTo(assemblerPos, leverPos);
scene.idle(10);
scene.overlay
.showControls(new InputWindowElement(util.vector.centerOf(assemblerPos), Pointing.DOWN).rightClick()
.withItem(AllBlocks.CART_ASSEMBLER.asStack()), 30);
scene.idle(7);
scene.world.setBlock(assemblerPos, AllBlocks.CART_ASSEMBLER.getDefaultState()
.with(CartAssemblerBlock.RAIL_SHAPE, RailShape.NORTH_SOUTH)
.with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true);
scene.idle(20);
scene.world.showSection(util.select.fromTo(0, 1, 2, 1, 1, 2), Direction.EAST);
scene.idle(20);
scene.world.toggleRedstonePower(toggle);
scene.effects.indicateRedstone(leverPos);
scene.idle(10);
scene.overlay.showText(70)
.text("Powered Cart Assemblers mount attached structures to passing Minecarts")
.attachKeyFrame()
.pointAt(util.vector.topOf(assemblerPos))
.placeNearTarget();
scene.idle(80);
ElementLink<MinecartElement> cart =
scene.special.createCart(util.vector.topOf(2, 0, 4), 90, MinecartEntity::new);
scene.world.showSection(util.select.position(assemblerPos.up()), Direction.DOWN);
scene.idle(10);
scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20);
scene.idle(20);
ElementLink<WorldSectionElement> plank =
scene.world.makeSectionIndependent(util.select.position(assemblerPos.up()));
ElementLink<WorldSectionElement> anchor =
scene.world.showIndependentSectionImmediately(util.select.position(assemblerPos.east()));
scene.world.moveSection(anchor, util.vector.of(-1, 0, 0), 0);
scene.effects.indicateSuccess(assemblerPos);
scene.idle(1);
scene.world.moveSection(anchor, util.vector.of(0, 0, -2), 20);
scene.world.moveSection(plank, util.vector.of(0, 0, -2), 20);
scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20);
scene.idle(20);
scene.world.toggleRedstonePower(toggle);
scene.idle(10);
scene.overlay.showText(70)
.text("Without a redstone signal, it disassembles passing cart contraptions back into blocks")
.colored(PonderPalette.RED)
.attachKeyFrame()
.pointAt(util.vector.topOf(assemblerPos))
.placeNearTarget();
scene.idle(80);
scene.world.rotateSection(anchor, 0, 180, 0, 6);
scene.world.rotateSection(plank, 0, 180, 0, 6);
scene.idle(3);
scene.world.moveSection(anchor, util.vector.of(0, 0, 2), 20);
scene.world.moveSection(plank, util.vector.of(0, 0, 2), 20);
scene.special.moveCart(cart, util.vector.of(0, 0, 2), 20);
scene.idle(21);
scene.world.moveSection(anchor, util.vector.of(0, -2, 0), 0);
scene.special.moveCart(cart, util.vector.of(0, 0, 2), 20);
scene.idle(30);
scene.world.destroyBlock(assemblerPos.up());
scene.idle(5);
ElementLink<WorldSectionElement> contraption =
scene.world.showIndependentSection(util.select.fromTo(1, 4, 2, 3, 3, 2), Direction.DOWN);
scene.world.moveSection(contraption, util.vector.of(0, -1, 0), 0);
scene.idle(10);
scene.world.showSectionAndMerge(util.select.position(3, 3, 1), Direction.SOUTH, contraption);
scene.idle(15);
scene.effects.superGlue(util.grid.at(3, 2, 1), Direction.SOUTH, true);
scene.overlay.showText(80)
.attachKeyFrame()
.sharedText("movement_anchors")
.pointAt(util.vector.blockSurface(util.grid.at(1, 3, 2), Direction.NORTH))
.placeNearTarget();
scene.idle(80);
scene.world.toggleRedstonePower(toggle);
scene.effects.indicateRedstone(leverPos);
scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20);
scene.idle(20);
scene.world.moveSection(anchor, util.vector.of(0, 2, 0), 0);
scene.idle(1);
scene.world.moveSection(anchor, util.vector.of(0, 0, -2), 20);
scene.world.moveSection(contraption, util.vector.of(0, 0, -2), 20);
scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20);
scene.idle(25);
Vec3d cartCenter = util.vector.centerOf(assemblerPos.north(2));
scene.overlay.showControls(new InputWindowElement(cartCenter, Pointing.LEFT).rightClick()
.withWrench(), 40);
scene.idle(7);
scene.special.moveCart(cart, util.vector.of(0, -100, 4), 0);
scene.world.moveSection(anchor, util.vector.of(0, -100, 4), 0);
scene.world.moveSection(contraption, util.vector.of(0, -100, 4), 0);
ItemStack asStack = AllItems.MINECART_CONTRAPTION.asStack();
ElementLink<EntityElement> itemEntity =
scene.world.createItemEntity(cartCenter, util.vector.of(0, .1, 0), asStack);
scene.idle(40);
scene.overlay.showText(80)
.attachKeyFrame()
.text("Using a Wrench on the Minecart will let you carry the Contraption elsewhere")
.pointAt(cartCenter)
.placeNearTarget();
scene.idle(80);
scene.world.modifyEntity(itemEntity, Entity::remove);
scene.overlay.showControls(new InputWindowElement(cartCenter.add(0, 0, 4), Pointing.DOWN).rightClick()
.withItem(asStack), 20);
scene.idle(20);
scene.special.moveCart(cart, util.vector.of(0, 100.5, 0), 0);
scene.world.moveSection(anchor, util.vector.of(0, 100.5, 0), 0);
scene.world.moveSection(contraption, util.vector.of(0, 100.5, 0), 0);
scene.idle(1);
scene.special.moveCart(cart, util.vector.of(0, -.5, 0), 5);
scene.world.moveSection(anchor, util.vector.of(0, -.5, 0), 5);
scene.world.moveSection(contraption, util.vector.of(0, -.5, 0), 5);
}
public static void modes(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("cart_assembler_modes", "Orientation Settings for Minecart Contraptions");
scene.configureBasePlate(0, 0, 5);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
for (int z = 0; z < 4; z++) {
scene.world.showSection(util.select.position(1, 1, z), Direction.DOWN);
scene.idle(2);
}
for (int x = 2; x < 5; x++) {
scene.world.showSection(util.select.position(x, 1, 3), Direction.DOWN);
scene.idle(2);
}
BlockPos assemblerPos = util.grid.at(3, 1, 3);
scene.idle(5);
scene.world.setBlock(assemblerPos, AllBlocks.CART_ASSEMBLER.getDefaultState()
.with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST)
.with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true);
scene.idle(5);
scene.world.showSection(util.select.fromTo(3, 1, 1, 3, 1, 2), Direction.SOUTH);
ElementLink<WorldSectionElement> contraption =
scene.world.showIndependentSection(util.select.position(3, 2, 3), Direction.DOWN);
scene.idle(10);
scene.world.glueBlockOnto(util.grid.at(2, 2, 3), Direction.EAST, contraption);
scene.world.toggleRedstonePower(util.select.fromTo(3, 1, 1, 3, 1, 3));
scene.effects.indicateRedstone(util.grid.at(3, 1, 1));
scene.idle(10);
ElementLink<MinecartElement> cart =
scene.special.createCart(util.vector.topOf(util.grid.at(4, 0, 3)), 0, MinecartEntity::new);
scene.idle(20);
scene.special.moveCart(cart, util.vector.of(-1, 0, 0), 10);
scene.idle(10);
ElementLink<WorldSectionElement> anchor =
scene.world.showIndependentSectionImmediately(util.select.position(assemblerPos.south()));
scene.world.moveSection(anchor, util.vector.of(0, 0, -1), 0);
scene.idle(1);
scene.world.setKineticSpeed(util.select.position(2, 2, 3), 32);
scene.special.moveCart(cart, util.vector.of(-1.5, 0, 0), 15);
scene.world.moveSection(anchor, util.vector.of(-1.5, 0, 0), 15);
scene.world.moveSection(contraption, util.vector.of(-1.5, 0, 0), 15);
scene.idle(16);
scene.special.rotateCart(cart, -45, 2);
scene.special.moveCart(cart, util.vector.of(-.5, 0, -.5), 8);
scene.world.moveSection(anchor, util.vector.of(-.5, 0, -.5), 8);
scene.world.moveSection(contraption, util.vector.of(-.5, 0, -.5), 8);
scene.world.rotateSection(anchor, 0, -90, 0, 12);
scene.world.rotateSection(contraption, 0, -90, 0, 12);
scene.idle(9);
scene.special.rotateCart(cart, -45, 2);
scene.special.moveCart(cart, util.vector.of(0, 0, -1.5), 15);
scene.world.moveSection(anchor, util.vector.of(0, 0, -1.5), 15);
scene.world.moveSection(contraption, util.vector.of(0, 0, -1.5), 15);
scene.idle(15);
scene.world.setKineticSpeed(util.select.position(2, 2, 3), 0);
scene.overlay.showText(80)
.attachKeyFrame()
.text("Cart Contraptions will rotate to face towards their carts' motion")
.pointAt(util.vector.of(1.5, 2.5, 0))
.placeNearTarget();
scene.idle(90);
scene.world.hideIndependentSection(contraption, Direction.UP);
scene.world.hideIndependentSection(anchor, Direction.UP);
scene.overlay.hideElement(cart, Direction.UP);
scene.idle(25);
Vec3d blockSurface = util.vector.blockSurface(assemblerPos, Direction.NORTH)
.add(0, 0, -2 / 16f);
scene.overlay.showScrollInput(blockSurface, Direction.NORTH, 60);
scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.DOWN).scroll()
.withWrench(), 60);
scene.idle(10);
scene.overlay.showText(60)
.pointAt(util.vector.of(3, 1.5, 3))
.placeNearTarget()
.sharedText("behaviour_modify_wrench");
scene.idle(70);
contraption = scene.world.showIndependentSection(util.select.fromTo(3, 2, 3, 2, 2, 3), Direction.DOWN);
cart = scene.special.createCart(util.vector.topOf(util.grid.at(4, 0, 3)), 0, MinecartEntity::new);
scene.idle(10);
scene.special.moveCart(cart, util.vector.of(-1, 0, 0), 10);
scene.idle(10);
anchor = scene.world.showIndependentSectionImmediately(util.select.position(assemblerPos.south()));
scene.world.moveSection(anchor, util.vector.of(0, 0, -1), 0);
scene.idle(1);
scene.world.setKineticSpeed(util.select.position(2, 2, 3), 32);
scene.special.moveCart(cart, util.vector.of(-1.5, 0, 0), 15);
scene.world.moveSection(anchor, util.vector.of(-1.5, 0, 0), 15);
scene.world.moveSection(contraption, util.vector.of(-1.5, 0, 0), 15);
scene.idle(16);
scene.special.rotateCart(cart, -45, 2);
scene.special.moveCart(cart, util.vector.of(-.5, 0, -.5), 8);
scene.world.moveSection(anchor, util.vector.of(-.5, 0, -.5), 8);
scene.world.moveSection(contraption, util.vector.of(-.5, 0, -.5), 8);
scene.idle(9);
scene.special.rotateCart(cart, -45, 2);
scene.special.moveCart(cart, util.vector.of(0, 0, -1.5), 15);
scene.world.moveSection(anchor, util.vector.of(0, 0, -1.5), 15);
scene.world.moveSection(contraption, util.vector.of(0, 0, -1.5), 15);
scene.idle(15);
scene.world.setKineticSpeed(util.select.position(2, 2, 3), 0);
scene.overlay.showText(80)
.attachKeyFrame()
.text("If the Assembler is set to Lock Rotation, the contraptions' orientation will never change")
.pointAt(util.vector.of(0, 2.5, 1.5))
.placeNearTarget();
scene.idle(90);
}
public static void dual(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("cart_assembler_dual", "Assembling Carriage Contraptions");
scene.configureBasePlate(0, 0, 6);
scene.scaleSceneView(.9f);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
for (int z = 0; z < 5; z++) {
scene.world.showSection(util.select.position(1, 1, z), Direction.DOWN);
scene.idle(2);
}
for (int x = 2; x < 6; x++) {
scene.world.showSection(util.select.position(x, 1, 4), Direction.DOWN);
scene.idle(2);
}
BlockPos assembler1 = util.grid.at(2, 1, 4);
BlockPos assembler2 = util.grid.at(5, 1, 4);
Selection chassis = util.select.fromTo(5, 2, 4, 2, 2, 4);
scene.idle(5);
scene.world.showSection(util.select.fromTo(2, 1, 3, 2, 1, 2), Direction.SOUTH);
scene.idle(5);
ElementLink<MinecartElement> cart =
scene.special.createCart(util.vector.topOf(assembler1.down()), 0, MinecartEntity::new);
ElementLink<MinecartElement> cart2 =
scene.special.createCart(util.vector.topOf(assembler2.down()), 0, ChestMinecartEntity::new);
scene.idle(15);
scene.world.setBlock(assembler1, AllBlocks.CART_ASSEMBLER.getDefaultState()
.with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST)
.with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.CONTROLLER_RAIL), true);
scene.idle(5);
scene.world.setBlock(assembler2, AllBlocks.CART_ASSEMBLER.getDefaultState()
.with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST)
.with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true);
scene.idle(5);
ElementLink<WorldSectionElement> contraption = scene.world.showIndependentSection(chassis, Direction.DOWN);
scene.idle(15);
scene.overlay.showOutline(PonderPalette.GREEN, new Object(), util.select.position(assembler2), 60);
scene.overlay.showSelectionWithText(util.select.position(assembler1), 60)
.colored(PonderPalette.GREEN)
.pointAt(util.vector.blockSurface(util.grid.at(2, 2, 4), Direction.NORTH))
.placeNearTarget()
.text("Whenever two Cart Assembers share an attached structure...")
.attachKeyFrame();
scene.idle(70);
scene.overlay.showText(60)
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 4), Direction.NORTH))
.placeNearTarget()
.text("Powering either of them will create a Carriage Contraption");
scene.idle(70);
scene.effects.indicateRedstone(util.grid.at(2, 1, 2));
scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 2, 1, 4));
ElementLink<WorldSectionElement> anchors =
scene.world.showIndependentSectionImmediately(util.select.fromTo(assembler1.south(), assembler2.south()));
scene.world.moveSection(anchors, util.vector.of(0, 0, -1), 0);
scene.world.configureCenterOfRotation(anchors, util.vector.centerOf(util.grid.at(2, 2, 5)));
scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(util.grid.at(2, 2, 4)));
scene.idle(5);
Vec3d m = util.vector.of(-0.5, 0, 0);
scene.special.moveCart(cart, m, 5);
scene.special.moveCart(cart2, m, 5);
scene.world.moveSection(contraption, m, 5);
scene.world.moveSection(anchors, m, 5);
scene.idle(5);
scene.special.rotateCart(cart, -45, 2);
scene.special.moveCart(cart2, util.vector.of(-.3, 0, 0), 8);
m = util.vector.of(-.5, 0, -.5);
scene.special.moveCart(cart, m, 8);
scene.world.moveSection(anchors, m, 8);
scene.world.moveSection(contraption, m, 8);
scene.world.rotateSection(anchors, 0, -10, 0, 8);
scene.world.rotateSection(contraption, 0, -10, 0, 8);
scene.idle(8);
scene.special.rotateCart(cart, -45, 2);
scene.special.moveCart(cart2, util.vector.of(-.4, 0, 0), 5);
m = util.vector.of(0, 0, -3.5);
scene.special.moveCart(cart, m, 25);
scene.world.moveSection(anchors, m, 25);
scene.world.moveSection(contraption, m, 25);
scene.world.rotateSection(anchors, 0, -33, 0, 10);
scene.world.rotateSection(contraption, 0, -33, 0, 10);
scene.idle(5);
scene.special.moveCart(cart2, util.vector.of(-0.8, 0, 0), 5);
scene.idle(5);
scene.special.moveCart(cart2, util.vector.of(-1.5, 0, 0), 9);
scene.world.rotateSection(anchors, 0, -42, 0, 9);
scene.world.rotateSection(contraption, 0, -42, 0, 9);
scene.idle(9);
m = util.vector.of(-.5, 0, -.5);
scene.special.moveCart(cart2, m, 2);
scene.special.rotateCart(cart2, -45, 2);
scene.world.rotateSection(anchors, 0, -5, 0, 5);
scene.world.rotateSection(contraption, 0, -5, 0, 5);
scene.idle(2);
scene.special.moveCart(cart2, util.vector.of(0, 0, -.5), 5);
scene.special.rotateCart(cart2, -45, 2);
scene.idle(10);
scene.overlay.showText(70)
.attachKeyFrame()
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 3), Direction.WEST))
.placeNearTarget()
.text("The carts will behave like those connected via Minecart Coupling");
scene.idle(80);
}
public static void rails(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("cart_assembler_rails", "Other types of Minecarts and Rails");
scene.configureBasePlate(0, 0, 6);
scene.scaleSceneView(.9f);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
for (int x = 0; x < 6; x++) {
scene.world.showSection(util.select.position(x, 1, 3), Direction.DOWN);
scene.idle(2);
}
BlockPos assembler = util.grid.at(3, 1, 3);
Selection chassis = util.select.fromTo(4, 2, 3, 2, 2, 3);
scene.idle(5);
scene.overlay.showText(70)
.attachKeyFrame()
.pointAt(util.vector.blockSurface(assembler, Direction.DOWN))
.placeNearTarget()
.text("Cart Assemblers on Regular Tracks will not affect the passing carts' motion");
scene.idle(10);
scene.world.setBlock(assembler, AllBlocks.CART_ASSEMBLER.getDefaultState()
.with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST)
.with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true);
scene.idle(70);
ElementLink<MinecartElement> cart = scene.special.createCart(util.vector.topOf(assembler.east(2)
.down()), 0, MinecartEntity::new);
ElementLink<WorldSectionElement> anchor =
scene.world.showIndependentSection(util.select.position(assembler.south()), Direction.DOWN);
ElementLink<WorldSectionElement> contraption =
scene.world.showIndependentSection(util.select.position(assembler.south()
.up()), Direction.DOWN);
scene.world.moveSection(contraption, util.vector.of(2, 0, -1), 0);
scene.world.moveSection(anchor, util.vector.of(2, 0, -1), 0);
scene.idle(10);
scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 10);
scene.world.moveSection(anchor, util.vector.of(-2, 0, 0), 10);
scene.special.moveCart(cart, util.vector.of(-5, 0, 0), 25);
scene.idle(30);
scene.overlay.hideElement(cart, Direction.UP);
scene.world.hideIndependentSection(contraption, Direction.UP);
scene.world.moveSection(anchor, util.vector.of(0, -3, 0), 0);
scene.idle(30);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(assembler), Pointing.DOWN)
.withItem(new ItemStack(Items.POWERED_RAIL)), 50);
scene.idle(7);
scene.world.setBlock(assembler, AllBlocks.CART_ASSEMBLER.getDefaultState()
.with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST)
.with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.POWERED_RAIL), true);
scene.overlay.showText(100)
.attachKeyFrame()
.pointAt(util.vector.topOf(assembler))
.placeNearTarget()
.text("When on Powered or Controller Rail, the carts will be held in place until it's Powered");
scene.idle(110);
scene.world.hideIndependentSection(anchor, Direction.DOWN);
cart = scene.special.createCart(util.vector.topOf(assembler.east(2)
.down()), 0, MinecartEntity::new);
anchor = scene.world.showIndependentSection(util.select.position(assembler.south()), Direction.DOWN);
contraption = scene.world.showIndependentSection(util.select.position(assembler.south()
.up()), Direction.DOWN);
scene.world.moveSection(contraption, util.vector.of(2, 0, -1), 0);
scene.world.moveSection(anchor, util.vector.of(2, 0, -1), 0);
scene.idle(10);
scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 10);
scene.world.moveSection(anchor, util.vector.of(-2, 0, 0), 10);
scene.special.moveCart(cart, util.vector.of(-2, 0, 0), 10);
scene.world.showSection(util.select.fromTo(3, 1, 1, 3, 1, 2), Direction.SOUTH);
scene.idle(30);
scene.world.toggleRedstonePower(util.select.fromTo(3, 1, 1, 3, 1, 3));
scene.effects.indicateRedstone(util.grid.at(3, 1, 1));
scene.idle(5);
scene.world.moveSection(contraption, util.vector.of(-3, 0, 0), 15);
scene.world.moveSection(anchor, util.vector.of(-3, 0, 0), 15);
scene.special.moveCart(cart, util.vector.of(-3, 0, 0), 15);
scene.idle(30);
scene.overlay.hideElement(cart, Direction.UP);
scene.world.hideIndependentSection(anchor, Direction.UP);
scene.world.hideIndependentSection(contraption, Direction.UP);
scene.idle(20);
cart = scene.special.createCart(util.vector.topOf(assembler.east(2)
.down()), 0, FurnaceMinecartEntity::new);
scene.idle(10);
scene.overlay.showText(50)
.attachKeyFrame()
.pointAt(util.vector.topOf(assembler.east(2)))
.placeNearTarget()
.text("Other types of Minecarts can be used as the anchor");
scene.idle(50);
contraption = scene.world.showIndependentSection(chassis, Direction.DOWN);
scene.idle(5);
scene.world.glueBlockOnto(assembler.up(2), Direction.DOWN, contraption);
scene.idle(15);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(assembler.up()), Pointing.UP)
.withItem(new ItemStack(Items.CHARCOAL)), 40);
scene.idle(7);
scene.overlay.showText(80)
.pointAt(util.vector.blockSurface(assembler.up(2), Direction.WEST))
.placeNearTarget()
.text("Furnace Carts will keep themselves powered, pulling fuel from any attached inventories");
scene.idle(85);
Emitter smoke = Emitter.simple(ParticleTypes.LARGE_SMOKE, util.vector.of(0, 0, 0));
scene.special.moveCart(cart, util.vector.of(-5, 0, 0), 50);
scene.idle(20);
anchor = scene.world.showIndependentSectionImmediately(util.select.position(assembler.south()));
scene.world.moveSection(anchor, util.vector.of(0, 0, -1), 0);
scene.idle(1);
scene.world.setKineticSpeed(util.select.position(2, 2, 3), 32);
scene.world.moveSection(contraption, util.vector.of(-3, 0, 0), 30);
scene.world.moveSection(anchor, util.vector.of(-3, 0, 0), 30);
Vec3d vec = util.vector.centerOf(assembler)
.add(.25, .25, -0.5);
for (int i = 0; i < 7; i++) {
scene.effects.emitParticles(vec = vec.add(-.5, 0, 0), smoke, 2, 1);
scene.idle(5);
}
scene.world.setKineticSpeed(util.select.position(2, 2, 3), 0);
}
}

View file

@ -1,7 +1,5 @@
package com.simibubi.create.foundation.ponder.content;
import java.io.File;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock;
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock;
@ -854,7 +852,16 @@ public class KineticsScenes {
}
public static void furnaceEngine(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("furnace_engine", "Generating Rotational Force using the Furnace Engine");
furnaceEngine(scene, util, false);
}
public static void flywheel(SceneBuilder scene, SceneBuildingUtil util) {
furnaceEngine(scene, util, true);
}
private static void furnaceEngine(SceneBuilder scene, SceneBuildingUtil util, boolean flywheel) {
scene.title(flywheel ? "flywheel" : "furnace_engine",
"Generating Rotational Force using the " + (flywheel ? "Flywheel" : "Furnace Engine"));
scene.configureBasePlate(0, 0, 6);
scene.world.showSection(util.select.layer(0), Direction.UP);
@ -871,11 +878,13 @@ public class KineticsScenes {
scene.world.showSection(util.select.position(furnacePos.west(3)), Direction.EAST);
scene.idle(10);
String text = flywheel ? "Flywheels are required for generating rotational force with the Furnace Engine"
: "Furnace Engines generate Rotational Force while their attached Furnace is running";
scene.overlay.showText(80)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(furnacePos.west()))
.text("Furnace Engines generate Rotational Force while their attached Furnace is running");
.pointAt(util.vector.topOf(furnacePos.west(flywheel ? 3 : 1)))
.text(text);
scene.idle(90);
scene.overlay.showControls(
@ -993,7 +1002,7 @@ public class KineticsScenes {
scene.world.multiplyKineticSpeed(util.select.fromTo(1, 2, 1, 1, 2, 3), 4);
scene.effects.rotationSpeedIndicator(cogPos);
scene.idle(55);
scene.overlay.showControls(input, 30);
scene.idle(15);
scene.world.multiplyKineticSpeed(util.select.fromTo(1, 2, 1, 1, 2, 3), -.05f);

View file

@ -70,8 +70,10 @@ public class PonderIndex {
PonderRegistry.forComponents(AllBlocks.ENCASED_CHAIN_DRIVE, AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT)
.addStoryBoard("chain_drive/gearshift", ChainDriveScenes::adjustableChainGearshift);
PonderRegistry.forComponents(AllBlocks.FURNACE_ENGINE, AllBlocks.FLYWHEEL)
PonderRegistry.forComponents(AllBlocks.FURNACE_ENGINE)
.addStoryBoard("furnace_engine", KineticsScenes::furnaceEngine);
PonderRegistry.forComponents(AllBlocks.FLYWHEEL)
.addStoryBoard("furnace_engine", KineticsScenes::flywheel);
PonderRegistry.forComponents(AllBlocks.ROTATION_SPEED_CONTROLLER)
.addStoryBoard("speed_controller", KineticsScenes::speedController);
@ -142,6 +144,13 @@ public class PonderIndex {
.addStoryBoard("gantry/direction", GantryScenes::direction)
.addStoryBoard("gantry/subgantry", GantryScenes::subgantry);
// Cart Assembler
PonderRegistry.forComponents(AllBlocks.CART_ASSEMBLER)
.addStoryBoard("cart_assembler/anchor", CartAssemblerScenes::anchor, PonderTag.MOVEMENT_ANCHOR)
.addStoryBoard("cart_assembler/modes", CartAssemblerScenes::modes)
.addStoryBoard("cart_assembler/dual", CartAssemblerScenes::dual)
.addStoryBoard("cart_assembler/rails", CartAssemblerScenes::rails);
// Movement Actors
PonderRegistry.forComponents(AllBlocks.PORTABLE_STORAGE_INTERFACE)
.addStoryBoard("portable_interface/transfer", MovementActorScenes::psiTransfer, PonderTag.CONTRAPTION_ACTOR)

View file

@ -0,0 +1,113 @@
package com.simibubi.create.foundation.ponder.elements;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.foundation.ponder.PonderScene;
import com.simibubi.create.foundation.ponder.PonderWorld;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
public class MinecartElement extends AnimatedSceneElement {
private Vec3d location;
private LerpedFloat rotation;
private AbstractMinecartEntity entity;
private MinecartConstructor constructor;
private float initialRotation;
public interface MinecartConstructor {
AbstractMinecartEntity create(World w, double x, double y, double z);
}
public MinecartElement(Vec3d location, float rotation, MinecartConstructor constructor) {
initialRotation = rotation;
this.location = location.add(0, 1 / 16f, 0);
this.constructor = constructor;
this.rotation = LerpedFloat.angular()
.startWithValue(rotation);
}
@Override
public void reset(PonderScene scene) {
super.reset(scene);
entity.setPos(0, 0, 0);
entity.prevPosX = 0;
entity.prevPosY = 0;
entity.prevPosZ = 0;
entity.lastTickPosX = 0;
entity.lastTickPosY = 0;
entity.lastTickPosZ = 0;
rotation.startWithValue(initialRotation);
}
@Override
public void tick(PonderScene scene) {
super.tick(scene);
if (entity == null)
entity = constructor.create(scene.getWorld(), 0, 0, 0);
entity.ticksExisted++;
entity.onGround = true;
entity.prevPosX = entity.getX();
entity.prevPosY = entity.getY();
entity.prevPosZ = entity.getZ();
entity.lastTickPosX = entity.getX();
entity.lastTickPosY = entity.getY();
entity.lastTickPosZ = entity.getZ();
}
public void setPositionOffset(Vec3d position, boolean immediate) {
if (entity == null)
return;
entity.setPosition(position.x, position.y, position.z);
if (!immediate)
return;
entity.prevPosX = position.x;
entity.prevPosY = position.y;
entity.prevPosZ = position.z;
}
public void setRotation(float angle, boolean immediate) {
if (entity == null)
return;
rotation.setValue(angle);
if (!immediate)
return;
rotation.startWithValue(angle);
}
public Vec3d getPositionOffset() {
return entity != null ? entity.getPositionVec() : Vec3d.ZERO;
}
public Vec3d getRotation() {
return new Vec3d(0, rotation.getValue(), 0);
}
@Override
protected void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) {
EntityRendererManager entityrenderermanager = Minecraft.getInstance()
.getRenderManager();
if (entity == null)
entity = constructor.create(world, 0, 0, 0);
ms.push();
ms.translate(location.x, location.y, location.z);
ms.translate(MathHelper.lerp(pt, entity.prevPosX, entity.getX()),
MathHelper.lerp(pt, entity.prevPosY, entity.getY()), MathHelper.lerp(pt, entity.prevPosZ, entity.getZ()));
MatrixStacker.of(ms)
.rotateY(rotation.getValue(pt));
entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade));
ms.pop();
}
}

View file

@ -50,13 +50,17 @@ public class ParrotElement extends AnimatedSceneElement {
entity.lastTickPosX = 0;
entity.lastTickPosY = 0;
entity.lastTickPosZ = 0;
entity.prevRotationPitch = entity.rotationPitch = 0;
entity.prevRotationYaw = entity.rotationYaw = 180;
}
@Override
public void tick(PonderScene scene) {
super.tick(scene);
if (entity == null)
return;
if (entity == null) {
entity = pose.create(scene.getWorld());
entity.prevRotationYaw = entity.rotationYaw = 180;
}
entity.ticksExisted++;
entity.prevRotationYawHead = entity.rotationYawHead;
@ -112,8 +116,10 @@ public class ParrotElement extends AnimatedSceneElement {
EntityRendererManager entityrenderermanager = Minecraft.getInstance()
.getRenderManager();
if (entity == null)
if (entity == null) {
entity = pose.create(world);
entity.prevRotationYaw = entity.rotationYaw = 180;
}
ms.push();
ms.translate(location.x, location.y, location.z);
@ -209,10 +215,13 @@ public class ParrotElement extends AnimatedSceneElement {
double d1 = p_200602_2_.y - vec3d.y;
double d2 = p_200602_2_.z - vec3d.z;
double d3 = (double) MathHelper.sqrt(d0 * d0 + d2 * d2);
entity.rotationPitch =
float targetPitch =
MathHelper.wrapDegrees((float) -(MathHelper.atan2(d1, d3) * (double) (180F / (float) Math.PI)));
entity.rotationYaw =
float targetYaw =
MathHelper.wrapDegrees((float) -(MathHelper.atan2(d2, d0) * (double) (180F / (float) Math.PI)) + 90);
entity.rotationPitch = AngleHelper.angleLerp(.4f, entity.rotationPitch, targetPitch);
entity.rotationYaw = AngleHelper.angleLerp(.4f, entity.rotationYaw, targetYaw);
}
protected abstract Vec3d getFacedVec(PonderScene scene);

View file

@ -47,6 +47,7 @@ public class AnimateElementInstruction<T extends PonderSceneElement> extends Tic
if (element == null)
return;
if (remainingTicks == 0) {
setter.accept(element, target);
setter.accept(element, target);
return;
}

View file

@ -0,0 +1,28 @@
package com.simibubi.create.foundation.ponder.instructions;
import java.util.function.BiConsumer;
import java.util.function.Function;
import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.elements.MinecartElement;
import net.minecraft.util.math.Vec3d;
public class AnimateMinecartInstruction extends AnimateElementInstruction<MinecartElement> {
public static AnimateMinecartInstruction rotate(ElementLink<MinecartElement> link, float rotation, int ticks) {
return new AnimateMinecartInstruction(link, new Vec3d(0, rotation, 0), ticks,
(wse, v) -> wse.setRotation((float) v.y, ticks == 0), MinecartElement::getRotation);
}
public static AnimateMinecartInstruction move(ElementLink<MinecartElement> link, Vec3d offset, int ticks) {
return new AnimateMinecartInstruction(link, offset, ticks, (wse, v) -> wse.setPositionOffset(v, ticks == 0),
MinecartElement::getPositionOffset);
}
protected AnimateMinecartInstruction(ElementLink<MinecartElement> link, Vec3d totalDelta, int ticks,
BiConsumer<MinecartElement, Vec3d> setter, Function<MinecartElement, Vec3d> getter) {
super(link, totalDelta, ticks, setter, getter);
}
}

View file

@ -0,0 +1,18 @@
package com.simibubi.create.foundation.ponder.instructions;
import com.simibubi.create.foundation.ponder.elements.MinecartElement;
import net.minecraft.util.Direction;
public class CreateMinecartInstruction extends FadeIntoSceneInstruction<MinecartElement> {
public CreateMinecartInstruction(int fadeInTicks, Direction fadeInFrom, MinecartElement element) {
super(fadeInTicks, fadeInFrom, element);
}
@Override
protected Class<MinecartElement> getElementClass() {
return MinecartElement.class;
}
}

View file

@ -23,6 +23,7 @@ public abstract class FadeIntoSceneInstruction<T extends AnimatedSceneElement> e
protected void firstTick(PonderScene scene) {
super.firstTick(scene);
scene.addElement(element);
element.setVisible(true);
element.setFade(0);
element.setFadeVec(new Vec3d(fadeInFrom.getDirectionVec()).scale(.5f));
if (elementLink != null)
@ -32,10 +33,13 @@ public abstract class FadeIntoSceneInstruction<T extends AnimatedSceneElement> e
@Override
public void tick(PonderScene scene) {
super.tick(scene);
float fade = (remainingTicks / (float) totalTicks);
float fade = totalTicks == 0 ? 1 : (remainingTicks / (float) totalTicks);
element.setFade(1 - fade * fade);
if (remainingTicks == 0)
if (remainingTicks == 0) {
if (totalTicks == 0)
element.setFade(1);
element.setFade(1);
}
}
public ElementLink<T> createLink(PonderScene scene) {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.