Birbs and Click input

This commit is contained in:
simibubi 2021-02-18 15:44:18 +01:00
parent fd99acc00a
commit 203ca6f849
39 changed files with 757 additions and 296 deletions

View File

@ -401,18 +401,18 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
e3f618c5b622d21880de858678d1802cbf65e615 assets/create/lang/en_ud.json e3f618c5b622d21880de858678d1802cbf65e615 assets/create/lang/en_ud.json
694cfe3d8fe9793b7ac0fbc7bbd3cf6bf455bf92 assets/create/lang/en_us.json 1c2c42b885b5d2b23f452d1550fb6c3a3a7ab952 assets/create/lang/en_us.json
499d461cf16f5a94049fbbe9eb758e0eaa19fa83 assets/create/lang/unfinished/de_de.json 90fb5c8d2b384d93c3bbc2693103be18a0ff3dc7 assets/create/lang/unfinished/de_de.json
8e486714ce38b6702fc614f4ba7cd34e003800aa assets/create/lang/unfinished/es_mx.json 3789e356240833be498849723cde53f12553c889 assets/create/lang/unfinished/es_mx.json
53f2918966bd9c045314a02ff0f5439720969087 assets/create/lang/unfinished/fr_fr.json 89aa38cb8250cd56dff4ae00d1491aea7e8aea36 assets/create/lang/unfinished/fr_fr.json
073ead0ceacdcf666fece6a78071a36fa9c3d356 assets/create/lang/unfinished/it_it.json 61e46061b0e9487f381c32a6c1004aacdb0be2b1 assets/create/lang/unfinished/it_it.json
0967bfc8888598329563ff6ee419038aef03df0a assets/create/lang/unfinished/ja_jp.json 70d3beec87b4e461b02b38feec572fcf92ffad35 assets/create/lang/unfinished/ja_jp.json
50e210e32d4a55561ffed5a62ac10802107b719e assets/create/lang/unfinished/ko_kr.json d77cefebb91bce27fc098d4e5a81a39c5b3f10de assets/create/lang/unfinished/ko_kr.json
40784b923f0defdecbd35f73c7d7ead9c3fe9d8a assets/create/lang/unfinished/nl_nl.json 6f7f629f4e8597c39f1cb259359e451255b31864 assets/create/lang/unfinished/nl_nl.json
ad719b1559c58c9e7c1b22023c5e686d4fa1ca19 assets/create/lang/unfinished/pt_br.json 0fd66b2ff7124cff646f32cebcd679d5e16ed805 assets/create/lang/unfinished/pt_br.json
1190f9152de89c7e0b7561c3cdddae6fe2f1aa19 assets/create/lang/unfinished/ru_ru.json 5cf5aae29b48a7066c98dfbb130f58dcca7be5f6 assets/create/lang/unfinished/ru_ru.json
bbcd8d37a18c779dfcca9aeaeb2b2d101a4b4fe2 assets/create/lang/unfinished/zh_cn.json d1afca478f7ceaa739220873cfdff4f2caa3b3fd assets/create/lang/unfinished/zh_cn.json
be270f1d2bc61ebd4a9f1be5b00daa56947de2d7 assets/create/lang/unfinished/zh_tw.json ee8599a8bf1c4fac02dc9501de5d08f58b19f395 assets/create/lang/unfinished/zh_tw.json
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json

View File

@ -1797,14 +1797,11 @@
"create.ponder.hold_to_ponder": "Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "Hold [%1$s] to Ponder",
"create.ponder.pondering": "Pondering about...", "create.ponder.pondering": "Pondering about...",
"create.ponder.shared.more_shared": "This is Shared stuff", "create.ponder.shared.sneak_and": "Sneak +",
"create.ponder.shared.when_wrenched": "When Wrenched", "create.ponder.shared.ctrl_and": "Ctrl +",
"create.ponder.cogwheel.scene_0.title": "My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "Encasing Shafts", "create.ponder.shaft.scene_1.title": "Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "Das X axis", "create.ponder.brass_hand.scene_0.x": "Das X axis",
"create.ponder.brass_hand.scene_0.y": "Das Y axis", "create.ponder.brass_hand.scene_0.y": "Das Y axis",
@ -1814,11 +1811,13 @@
"create.ponder.brass_hand.scene_1.title": "Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "Incoming...", "create.ponder.brass_hand.scene_4.incoming": "Incoming...",
"create.ponder.brass_hand.scene_4.title": "Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1119", "_": "Missing Localizations: 1124",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1798,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1815,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 910", "_": "Missing Localizations: 915",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:",
"create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:",
"create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed",
"create.gui.stressometer.title": "UNLOCALIZED: Network Stress", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 690", "_": "Missing Localizations: 695",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:",
"create.gui.goggles.at_current_speed": "À la vitesse actuelle", "create.gui.goggles.at_current_speed": "À la vitesse actuelle",
"create.gui.goggles.pole_length": "Longueur de la barre", "create.gui.goggles.pole_length": "Longueur de la barre",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "Informations sur la jauge:", "create.gui.gauge.info_header": "Informations sur la jauge:",
"create.gui.speedometer.title": "Vitesse de rotation", "create.gui.speedometer.title": "Vitesse de rotation",
"create.gui.stressometer.title": "Stress du réseau", "create.gui.stressometer.title": "Stress du réseau",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 27", "_": "Missing Localizations: 32",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "Statistiche cinetiche:", "create.gui.goggles.kinetic_stats": "Statistiche cinetiche:",
"create.gui.goggles.at_current_speed": "Alla velocità attuale", "create.gui.goggles.at_current_speed": "Alla velocità attuale",
"create.gui.goggles.pole_length": "Lunghezza palo:", "create.gui.goggles.pole_length": "Lunghezza palo:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "Informazioni sul calibro:", "create.gui.gauge.info_header": "Informazioni sul calibro:",
"create.gui.speedometer.title": "Velocità di rotazione", "create.gui.speedometer.title": "Velocità di rotazione",
"create.gui.stressometer.title": "Stress della rete", "create.gui.stressometer.title": "Stress della rete",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 36", "_": "Missing Localizations: 41",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "動力の統計:", "create.gui.goggles.kinetic_stats": "動力の統計:",
"create.gui.goggles.at_current_speed": "現在の速度", "create.gui.goggles.at_current_speed": "現在の速度",
"create.gui.goggles.pole_length": "ポールの長さ:", "create.gui.goggles.pole_length": "ポールの長さ:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "計器の情報:", "create.gui.gauge.info_header": "計器の情報:",
"create.gui.speedometer.title": "回転速度", "create.gui.speedometer.title": "回転速度",
"create.gui.stressometer.title": "ネットワークの応力", "create.gui.stressometer.title": "ネットワークの応力",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 79", "_": "Missing Localizations: 84",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "가동 상태:", "create.gui.goggles.kinetic_stats": "가동 상태:",
"create.gui.goggles.at_current_speed": "현재 에너지량", "create.gui.goggles.at_current_speed": "현재 에너지량",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "게이지 정보:", "create.gui.gauge.info_header": "게이지 정보:",
"create.gui.speedometer.title": "회전 속도", "create.gui.speedometer.title": "회전 속도",
"create.gui.stressometer.title": "네트워크 부하", "create.gui.stressometer.title": "네트워크 부하",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1179", "_": "Missing Localizations: 1184",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:",
"create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:",
"create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed",
"create.gui.stressometer.title": "UNLOCALIZED: Network Stress", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1245", "_": "Missing Localizations: 1250",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:",
"create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:",
"create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed",
"create.gui.stressometer.title": "UNLOCALIZED: Network Stress", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 29", "_": "Missing Localizations: 34",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "Кинетическая статистика:", "create.gui.goggles.kinetic_stats": "Кинетическая статистика:",
"create.gui.goggles.at_current_speed": "На текущей скорости", "create.gui.goggles.at_current_speed": "На текущей скорости",
"create.gui.goggles.pole_length": "Длина поршня", "create.gui.goggles.pole_length": "Длина поршня",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.gauge.info_header": "Калибровочная информация:",
"create.gui.speedometer.title": "Скорость вращения", "create.gui.speedometer.title": "Скорость вращения",
"create.gui.stressometer.title": "Сетевой момент", "create.gui.stressometer.title": "Сетевой момент",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 27", "_": "Missing Localizations: 32",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "动力学状态:", "create.gui.goggles.kinetic_stats": "动力学状态:",
"create.gui.goggles.at_current_speed": "当前速度应力值", "create.gui.goggles.at_current_speed": "当前速度应力值",
"create.gui.goggles.pole_length": "活塞杆长度:", "create.gui.goggles.pole_length": "活塞杆长度:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "仪表信息:", "create.gui.gauge.info_header": "仪表信息:",
"create.gui.speedometer.title": "旋转速度", "create.gui.speedometer.title": "旋转速度",
"create.gui.stressometer.title": "网络应力", "create.gui.stressometer.title": "网络应力",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 32", "_": "Missing Localizations: 37",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -823,6 +823,12 @@
"create.gui.goggles.kinetic_stats": "機械學狀態:", "create.gui.goggles.kinetic_stats": "機械學狀態:",
"create.gui.goggles.at_current_speed": "現在速度動能值", "create.gui.goggles.at_current_speed": "現在速度動能值",
"create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:",
"create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:",
"create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s %2$s %3$s]",
"create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s %2$s %3$s] was not in a loaded chunk",
"create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s",
"create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles",
"create.gui.gauge.info_header": "儀表訊息:", "create.gui.gauge.info_header": "儀表訊息:",
"create.gui.speedometer.title": "旋轉速度", "create.gui.speedometer.title": "旋轉速度",
"create.gui.stressometer.title": "網路動能", "create.gui.stressometer.title": "網路動能",
@ -1792,14 +1798,11 @@
"create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder",
"create.ponder.pondering": "UNLOCALIZED: Pondering about...", "create.ponder.pondering": "UNLOCALIZED: Pondering about...",
"create.ponder.shared.more_shared": "UNLOCALIZED: This is Shared stuff", "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +",
"create.ponder.shared.when_wrenched": "UNLOCALIZED: When Wrenched", "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.cogwheel.scene_0.title": "UNLOCALIZED: My First Ponder Story, Parrots", "create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts will relay rotation in a straight line.",
"create.ponder.cogwheel.scene_1.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.cogwheel.scene_2.title": "UNLOCALIZED: My First Ponder Story, Parrots",
"create.ponder.shaft.scene_0.shaft_relay": "UNLOCALIZED: Shafts seem to relay rotation in a straight line.",
"create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts", "create.ponder.shaft.scene_0.title": "UNLOCALIZED: Relaying rotational force using Shafts",
"create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: I could use Brass or Andesite Casing to hide them.", "create.ponder.shaft.scene_1.shaft_can_be_encased": "UNLOCALIZED: Andesite or Brass Casing can be used to encase them.",
"create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts", "create.ponder.shaft.scene_1.title": "UNLOCALIZED: Encasing Shafts",
"create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis", "create.ponder.brass_hand.scene_0.x": "UNLOCALIZED: Das X axis",
"create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis", "create.ponder.brass_hand.scene_0.y": "UNLOCALIZED: Das Y axis",
@ -1809,11 +1812,13 @@
"create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks", "create.ponder.brass_hand.scene_1.title": "UNLOCALIZED: Debug Scene 2: Changing Blocks",
"create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids", "create.ponder.brass_hand.scene_2.title": "UNLOCALIZED: Debug Scene 3: Showing Fluids",
"create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.", "create.ponder.brass_hand.scene_2.fluids": "UNLOCALIZED: Fluid rendering test.",
"create.ponder.brass_hand.scene_3.outofbounds2": "UNLOCALIZED: Blocks outside of the base plate \n\nIgnored by scaling, thanks to configureBasePlate()", "create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate do not affect scaling",
"create.ponder.brass_hand.scene_3.outofbounds": "UNLOCALIZED: Blocks outside of the base plate", "create.ponder.brass_hand.scene_3.thanks_to_configureBasePlate": "UNLOCALIZED: configureBasePlate() makes sure of that.",
"create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate", "create.ponder.brass_hand.scene_3.title": "UNLOCALIZED: Debug Scene 4: Out of bounds / configureBasePlate",
"create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...", "create.ponder.brass_hand.scene_4.incoming": "UNLOCALIZED: Incoming...",
"create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles", "create.ponder.brass_hand.scene_4.title": "UNLOCALIZED: Debug Scene 5: Emitting particles",
"create.ponder.brass_hand.scene_5.title": "UNLOCALIZED: Debug Scene 6: Basic player interaction",
"create.ponder.brass_hand.scene_6.title": "UNLOCALIZED: Debug Scene 7: Birbs",
"_": "Thank you for translating Create!" "_": "Thank you for translating Create!"

View File

@ -13,7 +13,7 @@ import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
public class SpeedGaugeTileEntity extends GaugeTileEntity{ public class SpeedGaugeTileEntity extends GaugeTileEntity {
public SpeedGaugeTileEntity(TileEntityType<? extends SpeedGaugeTileEntity> type) { public SpeedGaugeTileEntity(TileEntityType<? extends SpeedGaugeTileEntity> type) {
super(type); super(type);
@ -23,28 +23,36 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity{
public void onSpeedChanged(float prevSpeed) { public void onSpeedChanged(float prevSpeed) {
super.onSpeedChanged(prevSpeed); super.onSpeedChanged(prevSpeed);
float speed = Math.abs(getSpeed()); float speed = Math.abs(getSpeed());
float medium = AllConfigs.SERVER.kinetics.mediumSpeed.get().floatValue();
float fast = AllConfigs.SERVER.kinetics.fastSpeed.get().floatValue();
float max = AllConfigs.SERVER.kinetics.maxRotationSpeed.get().floatValue();
color = ColorHelper.mixColors(SpeedLevel.of(speed).getColor(), 0xffffff, .25f);
color = speed == 0 ? 0x333333
: ColorHelper.mixColors(SpeedLevel.of(speed)
.getColor(), 0xffffff, .25f);
if (speed == 69) if (speed == 69)
AllTriggers.triggerForNearbyPlayers(AllTriggers.SPEED_READ, world, pos, 6, AllTriggers.triggerForNearbyPlayers(AllTriggers.SPEED_READ, world, pos, 6, GogglesItem::canSeeParticles);
GogglesItem::canSeeParticles);
if (speed == 0) { dialTarget = getDialTarget(speed);
dialTarget = 0;
color = 0x333333;
} else if (speed < medium) {
dialTarget = MathHelper.lerp(speed / medium, 0, .45f);
} else if (speed < fast) {
dialTarget = MathHelper.lerp((speed - medium) / (fast - medium), .45f, .75f);
} else {
dialTarget = MathHelper.lerp((speed - fast) / (max - fast), .75f, 1.125f);
}
markDirty(); markDirty();
} }
public static float getDialTarget(float speed) {
float medium = AllConfigs.SERVER.kinetics.mediumSpeed.get()
.floatValue();
float fast = AllConfigs.SERVER.kinetics.fastSpeed.get()
.floatValue();
float max = AllConfigs.SERVER.kinetics.maxRotationSpeed.get()
.floatValue();
float target = 0;
if (speed == 0)
target = 0;
else if (speed < medium)
target = MathHelper.lerp(speed / medium, 0, .45f);
else if (speed < fast)
target = MathHelper.lerp((speed - medium) / (fast - medium), .45f, .75f);
else
target = MathHelper.lerp((speed - fast) / (max - fast), .75f, 1.125f);
return target;
}
@Override @Override
public boolean addToGoggleTooltip(List<String> tooltip, boolean isPlayerSneaking) { public boolean addToGoggleTooltip(List<String> tooltip, boolean isPlayerSneaking) {
super.addToGoggleTooltip(tooltip, isPlayerSneaking); super.addToGoggleTooltip(tooltip, isPlayerSneaking);

View File

@ -78,6 +78,9 @@ public enum AllGuiTextures {
INDICATOR_GREEN("widgets.png", 36, 18, 18, 6), INDICATOR_GREEN("widgets.png", 36, 18, 18, 6),
INDICATOR_YELLOW("widgets.png", 54, 18, 18, 6), INDICATOR_YELLOW("widgets.png", 54, 18, 18, 6),
INDICATOR_RED("widgets.png", 72, 18, 18, 6), INDICATOR_RED("widgets.png", 72, 18, 18, 6),
SPEECH_TOOLTIP("widgets.png", 0, 24, 8, 8),
SPEECH_TOOLTIP_HIGHLIGHT("widgets.png", 8, 24, 8, 8),
; ;

View File

@ -70,7 +70,10 @@ public class AllIcons {
I_REPLACE = next(), I_REPLACE = next(),
I_CLEAR = next(), I_CLEAR = next(),
I_OVERLAY = next(), I_OVERLAY = next(),
I_FLATTEN = next(); I_FLATTEN = next(),
I_LMB = next(),
I_SCROLL = next(),
I_RMB = next();
public static final AllIcons public static final AllIcons
I_TOOL_DEPLOY = newRow(), I_TOOL_DEPLOY = newRow(),

View File

@ -23,7 +23,6 @@ import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTSizeTracker; import net.minecraft.nbt.NBTSizeTracker;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.gen.feature.template.PlacementSettings; import net.minecraft.world.gen.feature.template.PlacementSettings;
import net.minecraft.world.gen.feature.template.Template; import net.minecraft.world.gen.feature.template.Template;

View File

@ -14,6 +14,7 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity;
import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity;
import com.simibubi.create.foundation.ponder.content.PonderPalette; import com.simibubi.create.foundation.ponder.content.PonderPalette;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.elements.ParrotElement; import com.simibubi.create.foundation.ponder.elements.ParrotElement;
import com.simibubi.create.foundation.ponder.elements.PonderOverlayElement; import com.simibubi.create.foundation.ponder.elements.PonderOverlayElement;
import com.simibubi.create.foundation.ponder.elements.PonderSceneElement; import com.simibubi.create.foundation.ponder.elements.PonderSceneElement;
@ -21,12 +22,15 @@ import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.ponder.instructions.CreateParrotInstruction; import com.simibubi.create.foundation.ponder.instructions.CreateParrotInstruction;
import com.simibubi.create.foundation.ponder.instructions.DelayInstruction; import com.simibubi.create.foundation.ponder.instructions.DelayInstruction;
import com.simibubi.create.foundation.ponder.instructions.DisplayWorldSectionInstruction; import com.simibubi.create.foundation.ponder.instructions.DisplayWorldSectionInstruction;
import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction;
import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter;
import com.simibubi.create.foundation.ponder.instructions.HideAllInstruction; import com.simibubi.create.foundation.ponder.instructions.HideAllInstruction;
import com.simibubi.create.foundation.ponder.instructions.MarkAsFinishedInstruction; import com.simibubi.create.foundation.ponder.instructions.MarkAsFinishedInstruction;
import com.simibubi.create.foundation.ponder.instructions.MovePoiInstruction; import com.simibubi.create.foundation.ponder.instructions.MovePoiInstruction;
import com.simibubi.create.foundation.ponder.instructions.ReplaceBlocksInstruction; import com.simibubi.create.foundation.ponder.instructions.ReplaceBlocksInstruction;
import com.simibubi.create.foundation.ponder.instructions.RotateSceneInstruction; import com.simibubi.create.foundation.ponder.instructions.RotateSceneInstruction;
import com.simibubi.create.foundation.ponder.instructions.ShowCompleteSchematicInstruction; import com.simibubi.create.foundation.ponder.instructions.ShowCompleteSchematicInstruction;
import com.simibubi.create.foundation.ponder.instructions.ShowInputInstruction;
import com.simibubi.create.foundation.ponder.instructions.TextInstruction; import com.simibubi.create.foundation.ponder.instructions.TextInstruction;
import com.simibubi.create.foundation.ponder.instructions.TileEntityDataInstruction; import com.simibubi.create.foundation.ponder.instructions.TileEntityDataInstruction;
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
@ -41,6 +45,7 @@ import net.minecraft.client.renderer.ActiveRenderInfo;
import net.minecraft.client.renderer.Matrix4f; import net.minecraft.client.renderer.Matrix4f;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.Vector4f; import net.minecraft.client.renderer.Vector4f;
import net.minecraft.particles.RedstoneParticleData;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -360,7 +365,7 @@ public class PonderScene {
} }
public SceneBuilder replaceBlocks(Select selection, BlockState state) { public SceneBuilder replaceBlocks(Select selection, BlockState state) {
return addInstruction(new ReplaceBlocksInstruction(selection, state, false)); return addInstruction(new ReplaceBlocksInstruction(selection, state, true));
} }
public SceneBuilder setKineticSpeed(Select selection, float speed) { public SceneBuilder setKineticSpeed(Select selection, float speed) {
@ -373,17 +378,11 @@ public class PonderScene {
public SceneBuilder modifyKineticSpeed(Select selection, UnaryOperator<Float> speedFunc) { public SceneBuilder modifyKineticSpeed(Select selection, UnaryOperator<Float> speedFunc) {
addInstruction(new TileEntityDataInstruction(selection, SpeedGaugeTileEntity.class, nbt -> { addInstruction(new TileEntityDataInstruction(selection, SpeedGaugeTileEntity.class, nbt -> {
if (!nbt.contains("Speed"))
return nbt;
float newSpeed = speedFunc.apply(nbt.getFloat("Speed")); float newSpeed = speedFunc.apply(nbt.getFloat("Speed"));
// TODO speed gauge consistency nbt.putFloat("Value", SpeedGaugeTileEntity.getDialTarget(newSpeed));
nbt.putFloat("Value", Math.abs(newSpeed) / 256f);
return nbt; return nbt;
}, false)); }, false));
return addInstruction(new TileEntityDataInstruction(selection, KineticTileEntity.class, nbt -> { return addInstruction(new TileEntityDataInstruction(selection, KineticTileEntity.class, nbt -> {
if (!nbt.contains("Speed"))
return nbt;
nbt.putFloat("Speed", speedFunc.apply(nbt.getFloat("Speed"))); nbt.putFloat("Speed", speedFunc.apply(nbt.getFloat("Speed")));
return nbt; return nbt;
}, false)); }, false));
@ -396,19 +395,42 @@ public class PonderScene {
}, false)); }, false));
} }
public SceneBuilder createParrotSpinningOn(BlockPos pos, Direction fadeInDirection) {
return addInstruction(new CreateParrotInstruction(15, fadeInDirection,
ParrotElement.spinOnComponent(new Vec3d(pos).add(.5, 0, .5), pos.down())));
}
public SceneBuilder createParrotLookingAtPOI(Vec3d location, Direction fadeInDirection) {
return addInstruction(new CreateParrotInstruction(15, fadeInDirection, ParrotElement.lookAtPOI(location)));
}
public SceneBuilder movePOI(Vec3d location) { public SceneBuilder movePOI(Vec3d location) {
return addInstruction(new MovePoiInstruction(location)); return addInstruction(new MovePoiInstruction(location));
} }
public SceneBuilder showControls(InputWindowElement element, int duration) {
return addInstruction(new ShowInputInstruction(element, duration));
}
public SceneBuilder emitParticles(Vec3d location, Emitter emitter, float amountPerCycle, int cycles) {
return addInstruction(new EmitParticlesInstruction(location, emitter, amountPerCycle, cycles));
}
public SceneBuilder indicateSuccess(BlockPos pos) {
return addInstruction(new EmitParticlesInstruction(VecHelper.getCenterOf(pos),
Emitter.withinBlockSpace(new RedstoneParticleData(.5f, 1, .7f, 1), new Vec3d(0, 0, 0)), 20, 2));
}
public SceneBuilder birbOnTurntable(BlockPos pos) {
return addInstruction(new CreateParrotInstruction(10, Direction.DOWN,
ParrotElement.spinOnComponent(VecHelper.getCenterOf(pos), pos)));
}
public SceneBuilder birbOnSpinnyShaft(BlockPos pos) {
return addInstruction(
new CreateParrotInstruction(10, Direction.DOWN, ParrotElement.spinOnComponent(VecHelper.getCenterOf(pos)
.add(0, 0.5, 0), pos)));
}
public SceneBuilder birbLookingAtPOI(Vec3d location) {
return addInstruction(new CreateParrotInstruction(10, Direction.DOWN, ParrotElement.lookAtPOI(location)));
}
public SceneBuilder birbPartying(Vec3d location) {
return addInstruction(new CreateParrotInstruction(10, Direction.DOWN, ParrotElement.dance(location)));
}
public SceneBuilder addInstruction(PonderInstruction instruction) { public SceneBuilder addInstruction(PonderInstruction instruction) {
schedule.add(instruction); schedule.add(instruction);
return this; return this;
@ -420,6 +442,10 @@ public class PonderScene {
return VecHelper.getCenterOf(new BlockPos(x, y, z)); return VecHelper.getCenterOf(new BlockPos(x, y, z));
} }
public Vec3d topOf(int x, int y, int z) {
return new Vec3d(x + .5, y + 1, z + .5);
}
public Vec3d vector(double x, double y, double z) { public Vec3d vector(double x, double y, double z) {
return new Vec3d(x, y, z); return new Vec3d(x, y, z);
} }

View File

@ -7,6 +7,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.AbstractSimiScreen;
import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.ponder.content.PonderIndex; import com.simibubi.create.foundation.ponder.content.PonderIndex;
import com.simibubi.create.foundation.ponder.ui.PonderButton; import com.simibubi.create.foundation.ponder.ui.PonderButton;
@ -15,6 +16,7 @@ import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.LerpedFloat; import com.simibubi.create.foundation.utility.LerpedFloat;
import com.simibubi.create.foundation.utility.LerpedFloat.Chaser; import com.simibubi.create.foundation.utility.LerpedFloat.Chaser;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.client.GameSettings; import net.minecraft.client.GameSettings;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -141,43 +143,44 @@ public class PonderUI extends AbstractSimiScreen {
RenderSystem.enableAlphaTest(); RenderSystem.enableAlphaTest();
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
ms.push(); ms.push();
story.transform.updateScreenParams(width, height, slide); story.transform.updateScreenParams(width, height, slide);
story.transform.apply(ms); story.transform.apply(ms);
story.renderScene(buffer, ms); story.renderScene(buffer, ms);
buffer.draw(); buffer.draw();
// coords for debug // coords for debug
if (PonderIndex.EDITOR_MODE) { if (PonderIndex.EDITOR_MODE) {
MutableBoundingBox bounds = story.getBounds(); MutableBoundingBox bounds = story.getBounds();
RenderSystem.pushMatrix(); RenderSystem.pushMatrix();
RenderSystem.multMatrix(ms.peek().getModel()); RenderSystem.multMatrix(ms.peek()
RenderSystem.scaled(-1/16d, -1/16d, 1/16d); .getModel());
RenderSystem.translated(1, -8, -1/64f); RenderSystem.scaled(-1 / 16d, -1 / 16d, 1 / 16d);
RenderSystem.translated(1, -8, -1 / 64f);
RenderSystem.pushMatrix(); RenderSystem.pushMatrix();
for (int x = 0; x <= bounds.getXSize(); x++) { for (int x = 0; x <= bounds.getXSize(); x++) {
RenderSystem.translated(-16, 0, 0); RenderSystem.translated(-16, 0, 0);
font.drawString(x == bounds.getXSize() ? "x" : "" + x, 0, 0, 0xFFFFFFFF); font.drawString(x == bounds.getXSize() ? "x" : "" + x, 0, 0, 0xFFFFFFFF);
} }
RenderSystem.popMatrix(); RenderSystem.popMatrix();
RenderSystem.pushMatrix(); RenderSystem.pushMatrix();
RenderSystem.scaled(-1, 1, 1); RenderSystem.scaled(-1, 1, 1);
RenderSystem.rotatef(-90, 0, 1, 0); RenderSystem.rotatef(-90, 0, 1, 0);
RenderSystem.translated(-8, -2, 2/64f); RenderSystem.translated(-8, -2, 2 / 64f);
for (int z = 0; z <= bounds.getZSize(); z++) { for (int z = 0; z <= bounds.getZSize(); z++) {
RenderSystem.translated(16, 0, 0); RenderSystem.translated(16, 0, 0);
font.drawString(z == bounds.getZSize() ? "z" : "" + z, 0, 0, 0xFFFFFFFF); font.drawString(z == bounds.getZSize() ? "z" : "" + z, 0, 0, 0xFFFFFFFF);
} }
RenderSystem.popMatrix(); RenderSystem.popMatrix();
buffer.draw(); buffer.draw();
RenderSystem.popMatrix(); RenderSystem.popMatrix();
} }
ms.pop(); ms.pop();
} }
@ -229,6 +232,7 @@ public class PonderUI extends AbstractSimiScreen {
right.flash(); right.flash();
else else
right.dim(); right.dim();
} }
protected void lowerButtonGroup(int index, int mouseX, int mouseY, float fade, AllIcons icon, KeyBinding key) { protected void lowerButtonGroup(int index, int mouseX, int mouseY, float fade, AllIcons icon, KeyBinding key) {
@ -320,7 +324,72 @@ public class PonderUI extends AbstractSimiScreen {
} }
public static void renderBox(int x, int y, int w, int h, boolean highlighted) { public static void renderBox(int x, int y, int w, int h, boolean highlighted) {
renderBox(x, y, w, h, 0xdd000000, highlighted ? 0x70ffffff : 0x30eebb00, highlighted ? 0x30ffffff : 0x10eebb00); renderBox(x, y, w, h, 0xff000000, highlighted ? 0xf0ffeedd : 0x40ffeedd, highlighted ? 0x60ffeedd : 0x20ffeedd);
}
public static void renderSpeechBox(int x, int y, int w, int h, boolean highlighted, Pointing pointing,
boolean returnWithLocalTransform) {
if (!returnWithLocalTransform)
RenderSystem.pushMatrix();
int boxX = x;
int boxY = y;
int divotX = x;
int divotY = y;
int divotRotation = 0;
int divotSize = 8;
int distance = 1;
int divotRadius = divotSize / 2;
switch (pointing) {
default:
case DOWN:
divotRotation = 0;
boxX -= w / 2;
boxY -= h + divotSize + 1 + distance;
divotX -= divotRadius;
divotY -= divotSize + distance;
break;
case LEFT:
divotRotation = 90;
boxX += divotSize + 1 + distance;
boxY -= h / 2;
divotX += distance;
divotY -= divotRadius;
break;
case RIGHT:
divotRotation = 270;
boxX -= w + divotSize + 1 + distance;
boxY -= h / 2;
divotX -= divotSize + distance;
divotY -= divotRadius;
break;
case UP:
divotRotation = 180;
boxX -= w / 2;
boxY += divotSize + 1 + distance;
divotX -= divotRadius;
divotY += distance;
break;
}
renderBox(boxX, boxY, w, h, highlighted);
RenderSystem.pushMatrix();
AllGuiTextures toRender = highlighted ? AllGuiTextures.SPEECH_TOOLTIP_HIGHLIGHT : AllGuiTextures.SPEECH_TOOLTIP;
RenderSystem.translated(divotX + divotRadius, divotY + divotRadius, 10);
RenderSystem.rotatef(divotRotation, 0, 0, 1);
RenderSystem.translated(-divotRadius, -divotRadius, 0);
toRender.draw(0, 0);
RenderSystem.popMatrix();
if (returnWithLocalTransform) {
RenderSystem.translated(boxX, boxY, 0);
return;
}
RenderSystem.popMatrix();
} }
public static void renderBox(int x, int y, int w, int h, int backgroundColor, int borderColorStart, public static void renderBox(int x, int y, int w, int h, int backgroundColor, int borderColorStart,

View File

@ -131,6 +131,9 @@ public class PonderWorld extends SchematicWorld {
public void addBlockDestroyEffects(BlockPos pos, BlockState state) { public void addBlockDestroyEffects(BlockPos pos, BlockState state) {
VoxelShape voxelshape = state.getShape(this, pos); VoxelShape voxelshape = state.getShape(this, pos);
if (voxelshape.isEmpty())
return;
AxisAlignedBB bb = voxelshape.getBoundingBox(); AxisAlignedBB bb = voxelshape.getBoundingBox();
double d1 = Math.min(1.0D, bb.maxX - bb.minX); double d1 = Math.min(1.0D, bb.maxX - bb.minX);
double d2 = Math.min(1.0D, bb.maxY - bb.minY); double d2 = Math.min(1.0D, bb.maxY - bb.minY);

View File

@ -1,42 +0,0 @@
package com.simibubi.create.foundation.ponder.content;
import com.simibubi.create.foundation.ponder.PonderStoryBoard;
import com.simibubi.create.foundation.ponder.Select;
import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder;
import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder.SceneBuildingUtil;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
public class CogwheelStory extends PonderStoryBoard {
public CogwheelStory() {
}
@Override
public String getSchematicName() {
return "cogwheel/first";
}
@Override
public String getStoryTitle() {
return "My First Ponder Story, Parrots";
}
@Override
public void program(SceneBuilder scene, SceneBuildingUtil util) {
scene.movePOI(new Vec3d(3.5, 4, 4.5));
scene.showBasePlate();
scene.idle(10);
scene.createParrotSpinningOn(new BlockPos(1, 4, 2), Direction.DOWN);
scene.showSection(util.layersFrom(1), Direction.DOWN);
scene.idle(10);
scene.rotateCameraY(180);
}
}

View File

@ -11,14 +11,18 @@ import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder;
import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.PonderStoryBoard; import com.simibubi.create.foundation.ponder.PonderStoryBoard;
import com.simibubi.create.foundation.ponder.Select; import com.simibubi.create.foundation.ponder.Select;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction; import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction;
import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter;
import com.simibubi.create.foundation.utility.Pointing;
import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.ItemEntry;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.particles.ParticleTypes; import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
public abstract class DebugScenes extends PonderStoryBoard { public abstract class DebugScenes extends PonderStoryBoard {
@ -33,6 +37,8 @@ public abstract class DebugScenes extends PonderStoryBoard {
PonderRegistry.addStoryBoard(item, new FluidsScene(++i)); PonderRegistry.addStoryBoard(item, new FluidsScene(++i));
PonderRegistry.addStoryBoard(item, new OffScreenScene(++i)); PonderRegistry.addStoryBoard(item, new OffScreenScene(++i));
PonderRegistry.addStoryBoard(item, new ParticlesScene(++i)); PonderRegistry.addStoryBoard(item, new ParticlesScene(++i));
PonderRegistry.addStoryBoard(item, new ControlsScene(++i));
PonderRegistry.addStoryBoard(item, new BirbScene(++i));
} }
public DebugScenes(int index) { public DebugScenes(int index) {
@ -64,7 +70,6 @@ public abstract class DebugScenes extends PonderStoryBoard {
scene.showBasePlate(); scene.showBasePlate();
scene.idle(10); scene.idle(10);
scene.showSection(util.layersFrom(1), Direction.DOWN); scene.showSection(util.layersFrom(1), Direction.DOWN);
// scene.showTargetedText(WHITE, new Vec3d(1.5, 1.5, 1.5), "coordinate", "Schematic orientation: ", 40);
scene.idle(10); scene.idle(10);
scene.showSelectionWithText(PonderPalette.RED, Select.fromTo(2, 1, 1, 4, 1, 1), "x", "Das X axis", 20); scene.showSelectionWithText(PonderPalette.RED, Select.fromTo(2, 1, 1, 4, 1, 1), "x", "Das X axis", 20);
@ -96,9 +101,10 @@ public abstract class DebugScenes extends PonderStoryBoard {
scene.idle(10); scene.idle(10);
scene.showText(WHITE, 10, "change_blocks", "Blocks can be modified", 1000); scene.showText(WHITE, 10, "change_blocks", "Blocks can be modified", 1000);
scene.idle(20); scene.idle(20);
scene.replaceBlocks(Select.fromTo(1, 1, 2, 2, 2, 4), AllBlocks.REFINED_RADIANCE_CASING.getDefaultState()); scene.replaceBlocks(Select.fromTo(1, 1, 3, 2, 2, 4), AllBlocks.REFINED_RADIANCE_CASING.getDefaultState());
scene.idle(10); scene.idle(10);
scene.replaceBlocks(Select.pos(3, 1, 1), Blocks.GOLD_BLOCK.getDefaultState()); scene.replaceBlocks(Select.pos(3, 1, 1), Blocks.GOLD_BLOCK.getDefaultState());
scene.rotateCameraY(180);
scene.markAsFinished(); scene.markAsFinished();
} }
@ -131,6 +137,36 @@ public abstract class DebugScenes extends PonderStoryBoard {
} }
static class OffScreenScene extends DebugScenes {
public OffScreenScene(int index) {
super(index);
}
@Override
public void program(SceneBuilder scene, SceneBuildingUtil util) {
scene.configureBasePlate(1, 0, 6);
scene.showBasePlate();
Select out1 = Select.fromTo(7, 0, 0, 8, 0, 5);
Select out2 = Select.fromTo(0, 0, 0, 0, 0, 5);
scene.idle(10);
scene.showSection(Select.compound(util.layersFrom(1), out1, out2), Direction.DOWN);
scene.idle(10);
scene.showSelectionWithText(PonderPalette.BLACK, out1, "outofbounds",
"Blocks outside of the base plate do not affect scaling", 100);
scene.showSelectionWithText(PonderPalette.BLACK, out2, "thanks_to_configureBasePlate",
"configureBasePlate() makes sure of that.", 100);
scene.markAsFinished();
}
@Override
protected String getTitle() {
return "Out of bounds / configureBasePlate";
}
}
static class ParticlesScene extends DebugScenes { static class ParticlesScene extends DebugScenes {
public ParticlesScene(int index) { public ParticlesScene(int index) {
@ -165,34 +201,94 @@ public abstract class DebugScenes extends PonderStoryBoard {
} }
static class OffScreenScene extends DebugScenes { static class ControlsScene extends DebugScenes {
public OffScreenScene(int index) { public ControlsScene(int index) {
super(index); super(index);
} }
@Override @Override
public void program(SceneBuilder scene, SceneBuildingUtil util) { public void program(SceneBuilder scene, SceneBuildingUtil util) {
scene.configureBasePlate(1, 0, 6);
scene.showBasePlate(); scene.showBasePlate();
Select out1 = Select.fromTo(7, 0, 0, 8, 0, 5);
Select out2 = Select.fromTo(0, 0, 0, 0, 0, 5);
scene.idle(10); scene.idle(10);
scene.showSection(Select.compound(util.layersFrom(1), out1, out2), Direction.DOWN); scene.showSection(util.layer(1), Direction.DOWN);
scene.idle(4);
scene.showSection(util.layer(2), Direction.DOWN);
scene.idle(4);
scene.showSection(util.layer(3), Direction.DOWN);
scene.idle(10); scene.idle(10);
scene.showSelectionWithText(PonderPalette.BLACK, out1, "outofbounds", scene.showControls(new InputWindowElement(util.topOf(3, 1, 1), Pointing.DOWN).rightClick()
"Blocks outside of the base plate do not affect scaling", 100); .whileSneaking()
scene.showSelectionWithText(PonderPalette.BLACK, out2, "thanks_to_configureBasePlate", .withWrench(), 40);
"configureBasePlate() makes sure of that.", 100); scene.idle(8);
scene.markAsFinished(); scene.replaceBlocks(Select.pos(3, 1, 1), AllBlocks.SHAFT.getDefaultState());
scene.idle(20);
scene.showControls(new InputWindowElement(new Vec3d(1, 4.5, 3.5), Pointing.LEFT).rightClick()
.withItem(new ItemStack(Blocks.POLISHED_ANDESITE)), 20);
scene.idle(4);
scene.showSection(util.layer(4), Direction.DOWN);
scene.idle(8);
scene.showControls(new InputWindowElement(new Vec3d(2.5, 1.5, 3), Pointing.UP).whileCTRL()
.scroll()
.withWrench(), 40);
} }
@Override @Override
protected String getTitle() { protected String getTitle() {
return "Out of bounds / configureBasePlate"; return "Basic player interaction";
} }
} }
static class BirbScene extends DebugScenes {
public BirbScene(int index) {
super(index);
}
@Override
public void program(SceneBuilder scene, SceneBuildingUtil util) {
scene.showBasePlate();
scene.idle(10);
scene.showSection(util.layersFrom(1), Direction.DOWN);
scene.idle(10);
BlockPos pos = new BlockPos(1, 2, 3);
scene.birbOnSpinnyShaft(pos);
scene.showTargetedText(PonderPalette.GREEN, util.topOf(1, 2, 3), "birbs_interesting",
"More birbs = More interesting", 100);
scene.idle(10);
scene.birbPartying(util.topOf(0, 1, 2));
scene.idle(10);
scene.movePOI(Vec3d.ZERO);
scene.birbLookingAtPOI(util.centerOf(3, 1, 3)
.add(0, 0.25f, 0));
scene.idle(20);
scene.replaceBlocks(Select.pos(4, 1, 0), Blocks.GOLD_BLOCK.getDefaultState());
scene.movePOI(util.centerOf(4, 1, 0));
scene.idle(20);
scene.replaceBlocks(Select.pos(0, 1, 4), Blocks.GOLD_BLOCK.getDefaultState());
scene.movePOI(util.centerOf(0, 1, 4));
scene.showTargetedText(PonderPalette.FAST, util.centerOf(0, 1, 4), "poi", "Point of Interest", 20);
scene.idle(20);
scene.replaceBlocks(Select.pos(4, 1, 0), Blocks.AIR.getDefaultState());
scene.movePOI(util.centerOf(4, 1, 0));
scene.idle(20);
scene.replaceBlocks(Select.pos(0, 1, 4), Blocks.AIR.getDefaultState());
scene.movePOI(util.centerOf(0, 1, 4));
}
@Override
protected String getTitle() {
return "Birbs";
}
}
} }

View File

@ -14,10 +14,6 @@ public class PonderIndex {
public static void register() { public static void register() {
// Register storyboards here (Requires re-launch) // Register storyboards here (Requires re-launch)
PonderRegistry.addStoryBoard(AllBlocks.COGWHEEL, new CogwheelStory());
PonderRegistry.addStoryBoard(AllBlocks.COGWHEEL, new CogwheelStory());
PonderRegistry.addStoryBoard(AllBlocks.COGWHEEL, new CogwheelStory());
PonderRegistry.addStoryBoard(AllBlocks.SHAFT, new ShaftAsRelay()); PonderRegistry.addStoryBoard(AllBlocks.SHAFT, new ShaftAsRelay());
PonderRegistry.addStoryBoard(AllBlocks.SHAFT, new ShaftsCanBeEncased()); PonderRegistry.addStoryBoard(AllBlocks.SHAFT, new ShaftsCanBeEncased());

View File

@ -10,7 +10,6 @@ import com.simibubi.create.foundation.ponder.Select;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.Vec3i;
class ShaftAsRelay extends PonderStoryBoard { class ShaftAsRelay extends PonderStoryBoard {
@ -26,26 +25,30 @@ class ShaftAsRelay extends PonderStoryBoard {
@Override @Override
public void program(SceneBuilder scene, SceneBuildingUtil util) { public void program(SceneBuilder scene, SceneBuildingUtil util) {
scene.showBasePlate(); scene.configureBasePlate(0, 0, 5);
scene.showSection(util.layer(0), Direction.UP);
Select encased = util.column(4, 2); Select gauge = Select.pos(0, 1, 2);
Select gauge = util.column(0, 2); scene.showSection(gauge, Direction.UP);
Select shafts = Select.cuboid(new BlockPos(1, 1, 2), new Vec3i(2, 0, 0));
scene.idle(10);
scene.showSection(encased, Direction.DOWN);
scene.idle(10);
scene.showSection(gauge, Direction.DOWN);
scene.setKineticSpeed(gauge, 0); scene.setKineticSpeed(gauge, 0);
scene.idle(20); scene.idle(5);
scene.showSection(shafts, Direction.DOWN); scene.showSection(Select.pos(5, 1, 2), Direction.DOWN);
scene.setKineticSpeed(gauge, -112); scene.idle(10);
for (int i = 4; i >= 1; i--) {
if (i == 2)
scene.rotateCameraY(70);
scene.idle(5);
scene.showSection(Select.pos(i, 1, 2), Direction.DOWN);
}
scene.setKineticSpeed(gauge, 64);
scene.indicateSuccess(new BlockPos(0, 1, 2));
scene.idle(10); scene.idle(10);
scene.showTargetedText(WHITE, new Vec3d(3, 1.5, 2.5), "shaft_relay", scene.showTargetedText(WHITE, new Vec3d(3, 1.5, 2.5), "shaft_relay",
"Shafts seem to relay rotation in a straight line.", 1000); "Shafts will relay rotation in a straight line.", 1000);
scene.idle(20); scene.idle(20);
scene.markAsFinished(); scene.markAsFinished();

View File

@ -8,6 +8,9 @@ import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder;
import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.PonderScene.SceneBuilder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.PonderStoryBoard; import com.simibubi.create.foundation.ponder.PonderStoryBoard;
import com.simibubi.create.foundation.ponder.Select; import com.simibubi.create.foundation.ponder.Select;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.utility.Pointing;
import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
@ -38,18 +41,26 @@ class ShaftsCanBeEncased extends PonderStoryBoard {
scene.showSection(shaft, Direction.DOWN); scene.showSection(shaft, Direction.DOWN);
scene.idle(20); scene.idle(20);
scene.setBlocks(andesite, AllBlocks.ANDESITE_ENCASED_SHAFT.getDefaultState() BlockEntry<EncasedShaftBlock> andesiteEncased = AllBlocks.ANDESITE_ENCASED_SHAFT;
scene.showControls(new InputWindowElement(util.topOf(3, 1, 2), Pointing.DOWN).rightClick()
.withItem(AllBlocks.ANDESITE_CASING.asStack()), 60);
scene.idle(7);
scene.setBlocks(andesite, andesiteEncased.getDefaultState()
.with(EncasedShaftBlock.AXIS, Axis.X)); .with(EncasedShaftBlock.AXIS, Axis.X));
scene.setKineticSpeed(shaft, -112); scene.setKineticSpeed(shaft, -112);
scene.idle(10); scene.idle(10);
scene.setBlocks(brass, AllBlocks.BRASS_ENCASED_SHAFT.getDefaultState() BlockEntry<EncasedShaftBlock> brassEncased = AllBlocks.BRASS_ENCASED_SHAFT;
scene.showControls(new InputWindowElement(util.topOf(1, 0, 2), Pointing.UP).rightClick()
.withItem(AllBlocks.BRASS_CASING.asStack()), 60);
scene.idle(7);
scene.setBlocks(brass, brassEncased.getDefaultState()
.with(EncasedShaftBlock.AXIS, Axis.X)); .with(EncasedShaftBlock.AXIS, Axis.X));
scene.setKineticSpeed(shaft, -112); scene.setKineticSpeed(shaft, -112);
scene.idle(10); scene.idle(10);
scene.showTargetedText(WHITE, new Vec3d(1.5, 2, 2.5), "shaft_can_be_encased", scene.showTargetedText(WHITE, new Vec3d(1.5, 2, 2.5), "shaft_can_be_encased",
"I could use Brass or Andesite Casing to hide them.", 1000); "Andesite or Brass Casing can be used to encase them.", 1000);
} }
} }

View File

@ -7,8 +7,8 @@ public class SharedText {
public static void gatherText() { public static void gatherText() {
// Add entries used across several ponder scenes (Safe for hotswap) // Add entries used across several ponder scenes (Safe for hotswap)
add("when_wrenched", "When Wrenched"); add("sneak_and", "Sneak +");
add("more_shared", "This is Shared stuff"); add("ctrl_and", "Ctrl +");
} }

View File

@ -0,0 +1,135 @@
package com.simibubi.create.foundation.ponder.elements;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.AllItems;
import com.simibubi.create.foundation.gui.AllIcons;
import com.simibubi.create.foundation.gui.GuiGameElement;
import com.simibubi.create.foundation.ponder.PonderLocalization;
import com.simibubi.create.foundation.ponder.PonderScene;
import com.simibubi.create.foundation.ponder.PonderUI;
import com.simibubi.create.foundation.ponder.content.PonderPalette;
import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.Vec2f;
import net.minecraft.util.math.Vec3d;
public class InputWindowElement extends AnimatedOverlayElement {
private Pointing direction;
String key;
AllIcons icon;
ItemStack item = ItemStack.EMPTY;
private Vec3d sceneSpace;
public InputWindowElement(Vec3d sceneSpace, Pointing direction) {
this.sceneSpace = sceneSpace;
this.direction = direction;
}
public InputWindowElement withItem(ItemStack stack) {
item = stack;
return this;
}
public InputWindowElement withWrench() {
item = AllItems.WRENCH.asStack();
return this;
}
public InputWindowElement scroll() {
icon = AllIcons.I_SCROLL;
return this;
}
public InputWindowElement rightClick() {
icon = AllIcons.I_RMB;
return this;
}
public InputWindowElement leftClick() {
icon = AllIcons.I_LMB;
return this;
}
public InputWindowElement whileSneaking() {
key = "sneak_and";
return this;
}
public InputWindowElement whileCTRL() {
key = "ctrl_and";
return this;
}
@Override
protected void render(PonderScene scene, PonderUI screen, MatrixStack ms, float partialTicks, float fade) {
FontRenderer font = screen.getFontRenderer();
int width = 0;
int height = 0;
int xFade = direction == Pointing.RIGHT ? -1 : direction == Pointing.LEFT ? 1 : 0;
int yFade = direction == Pointing.DOWN ? -1 : direction == Pointing.UP ? 1 : 0;
xFade *= 10 * (1 - fade);
yFade *= 10 * (1 - fade);
boolean hasItem = !item.isEmpty();
boolean hasText = key != null;
boolean hasIcon = icon != null;
int keyWidth = 0;
String text = hasText ? PonderLocalization.getShared(key) : "";
if (fade < 1 / 16f)
return;
Vec2f sceneToScreen = scene.getTransform()
.sceneToScreen(sceneSpace);
if (hasIcon) {
width += 24;
height = 24;
}
if (hasText) {
keyWidth = font.getStringWidth(text);
width += keyWidth;
}
if (hasItem) {
width += 24;
height = 24;
}
RenderSystem.pushMatrix();
RenderSystem.translated(sceneToScreen.x + xFade, sceneToScreen.y + yFade, 400);
PonderUI.renderSpeechBox(0, 0, width, height, false, direction, true);
if (hasText)
font.drawString(text, 2, (height - font.FONT_HEIGHT) / 2 + 2,
ColorHelper.applyAlpha(PonderPalette.WHITE.getColor(), fade));
if (hasIcon) {
RenderSystem.pushMatrix();
RenderSystem.translated(keyWidth, 0, 0);
RenderSystem.scaled(1.5, 1.5, 1.5);
icon.draw(0, 0);
RenderSystem.popMatrix();
}
if (hasItem) {
GuiGameElement.of(item)
.at(keyWidth + 24, 0)
.scale(1.5)
.render();
RenderSystem.disableDepthTest();
}
RenderSystem.popMatrix();
}
}

View File

@ -5,12 +5,12 @@ import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderScene;
import com.simibubi.create.foundation.ponder.PonderWorld; import com.simibubi.create.foundation.ponder.PonderWorld;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker; import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.command.arguments.EntityAnchorArgument;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.ParrotEntity; import net.minecraft.entity.passive.ParrotEntity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -29,13 +29,19 @@ public class ParrotElement extends AnimatedSceneElement {
parrotElement.pose = parrotElement.new FacePointOfInterestPose(); parrotElement.pose = parrotElement.new FacePointOfInterestPose();
return parrotElement; return parrotElement;
} }
public static ParrotElement spinOnComponent(Vec3d location, BlockPos componentPos) { public static ParrotElement spinOnComponent(Vec3d location, BlockPos componentPos) {
ParrotElement parrotElement = new ParrotElement(location); ParrotElement parrotElement = new ParrotElement(location);
parrotElement.pose = parrotElement.new SpinOnComponentPose(componentPos); parrotElement.pose = parrotElement.new SpinOnComponentPose(componentPos);
return parrotElement; return parrotElement;
} }
public static ParrotElement dance(Vec3d location) {
ParrotElement parrotElement = new ParrotElement(location);
parrotElement.pose = parrotElement.new DancePose();
return parrotElement;
}
protected ParrotElement(Vec3d location) { protected ParrotElement(Vec3d location) {
this.location = location; this.location = location;
} }
@ -69,7 +75,7 @@ public class ParrotElement extends AnimatedSceneElement {
ms.translate(location.x, location.y, location.z); ms.translate(location.x, location.y, location.z);
MatrixStacker.of(ms) MatrixStacker.of(ms)
.rotateY(MathHelper.lerp(pt, entity.prevRotationYaw, entity.rotationYaw)); .rotateY(AngleHelper.angleLerp(pt, entity.prevRotationYaw, entity.rotationYaw));
entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade)); entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade));
ms.pop(); ms.pop();
@ -81,7 +87,24 @@ public class ParrotElement extends AnimatedSceneElement {
void create(PonderWorld world) { void create(PonderWorld world) {
entity = new ParrotEntity(EntityType.PARROT, world); entity = new ParrotEntity(EntityType.PARROT, world);
entity.setVariant(Create.random.nextInt(5)); int nextInt = Create.random.nextInt(5);
entity.setVariant(nextInt == 1 ? 0 : nextInt); // blue parrots are kinda hard to see
}
}
class DancePose extends ParrotPose {
@Override
void create(PonderWorld world) {
super.create(world);
entity.setPartying(BlockPos.ZERO, true);
}
@Override
void tick(PonderScene scene) {
entity.prevRotationYaw = entity.rotationYaw;
entity.rotationYaw -= 2;
} }
} }
@ -111,7 +134,18 @@ public class ParrotElement extends AnimatedSceneElement {
@Override @Override
void tick(PonderScene scene) { void tick(PonderScene scene) {
entity.lookAt(EntityAnchorArgument.Type.EYES, scene.getPointOfInterest()); Vec3d p_200602_2_ = scene.getPointOfInterest();
Vec3d vec3d = location.add(entity.getEyePosition(0));
double d0 = p_200602_2_.x - vec3d.x;
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.prevRotationYaw = entity.rotationYaw;
entity.prevRotationPitch = entity.rotationPitch;
entity.rotationPitch =
MathHelper.wrapDegrees((float) -(MathHelper.atan2(d1, d3) * (double) (180F / (float) Math.PI)));
entity.rotationYaw =
MathHelper.wrapDegrees((float) -(MathHelper.atan2(d2, d0) * (double) (180F / (float) Math.PI)) + 90);
} }
} }

View File

@ -22,6 +22,12 @@ public class EmitParticlesInstruction extends TickingInstruction {
return (w, x, y, z) -> w.addParticle(data, x, y, z, motion.x, motion.y, motion.z); return (w, x, y, z) -> w.addParticle(data, x, y, z, motion.x, motion.y, motion.z);
} }
public static <T extends IParticleData> Emitter withinBlockSpace(T data, Vec3d motion) {
return (w, x, y, z) -> w.addParticle(data, Math.floor(x) + Create.random.nextFloat(),
Math.floor(y) + Create.random.nextFloat(), Math.floor(z) + Create.random.nextFloat(), motion.x,
motion.y, motion.z);
}
static ParticleManager paticleManager() { static ParticleManager paticleManager() {
return Minecraft.getInstance().particles; return Minecraft.getInstance().particles;
} }

View File

@ -0,0 +1,49 @@
package com.simibubi.create.foundation.ponder.instructions;
import com.simibubi.create.foundation.ponder.PonderScene;
public abstract class FadeInOutInstruction extends TickingInstruction {
protected static final int fadeTime = 5;
public FadeInOutInstruction(int duration) {
super(false, duration + 2 * fadeTime);
}
protected abstract void show(PonderScene scene);
protected abstract void hide(PonderScene scene);
protected abstract void applyFade(PonderScene scene, float fade);
@Override
protected void firstTick(PonderScene scene) {
super.firstTick(scene);
show(scene);
applyFade(scene, 0);
}
@Override
public void tick(PonderScene scene) {
super.tick(scene);
int elapsed = totalTicks - remainingTicks;
if (elapsed < fadeTime) {
float fade = (elapsed / (float) fadeTime);
applyFade(scene, fade * fade);
} else if (remainingTicks < fadeTime) {
float fade = (remainingTicks / (float) fadeTime);
applyFade(scene, fade * fade);
} else
applyFade(scene, 1);
if (remainingTicks == 0) {
applyFade(scene, 0);
hide(scene);
}
}
}

View File

@ -0,0 +1,31 @@
package com.simibubi.create.foundation.ponder.instructions;
import com.simibubi.create.foundation.ponder.PonderScene;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
public class ShowInputInstruction extends FadeInOutInstruction {
private InputWindowElement element;
public ShowInputInstruction(InputWindowElement element, int ticks) {
super(ticks);
this.element = element;
}
@Override
protected void show(PonderScene scene) {
scene.addElement(element);
element.setVisible(true);
}
@Override
protected void hide(PonderScene scene) {
element.setVisible(false);
}
@Override
protected void applyFade(PonderScene scene, float fade) {
element.setFade(fade);
}
}

View File

@ -9,14 +9,13 @@ import com.simibubi.create.foundation.ponder.elements.TextWindowElement;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
public class TextInstruction extends TickingInstruction { public class TextInstruction extends FadeInOutInstruction {
private TextWindowElement element; private TextWindowElement element;
private OutlinerElement outline; private OutlinerElement outline;
private static final int fadeTime = 5;
protected TextInstruction(int color, Supplier<String> text, int duration) { protected TextInstruction(int color, Supplier<String> text, int duration) {
super(false, duration + 2 * fadeTime); super(duration);
} }
public TextInstruction(int color, Supplier<String> text, int duration, Select selection) { public TextInstruction(int color, Supplier<String> text, int duration, Select selection) {
@ -41,11 +40,9 @@ public class TextInstruction extends TickingInstruction {
} }
@Override @Override
protected void firstTick(PonderScene scene) { protected void show(PonderScene scene) {
super.firstTick(scene);
scene.addElement(element); scene.addElement(element);
element.setVisible(true); element.setVisible(true);
element.setFade(0);
if (outline != null) { if (outline != null) {
scene.addElement(outline); scene.addElement(outline);
outline.setFade(1); outline.setFade(1);
@ -54,31 +51,17 @@ public class TextInstruction extends TickingInstruction {
} }
@Override @Override
public void tick(PonderScene scene) { protected void hide(PonderScene scene) {
super.tick(scene); element.setVisible(false);
int elapsed = totalTicks - remainingTicks; if (outline != null) {
outline.setFade(0);
if (elapsed < fadeTime) { outline.setVisible(false);
float fade = (elapsed / (float) fadeTime);
element.setFade(fade * fade);
} else if (remainingTicks < fadeTime) {
float fade = (remainingTicks / (float) fadeTime);
element.setFade(fade * fade);
} else
element.setFade(1);
if (remainingTicks == 0) {
element.setFade(0);
element.setFade(0);
element.setVisible(false);
if (outline != null) {
outline.setFade(0);
outline.setVisible(false);
}
} }
}
@Override
protected void applyFade(PonderScene scene, float fade) {
element.setFade(fade);
} }
} }

View File

@ -119,7 +119,7 @@ public class VecHelper {
} }
public static Vec3d lerp(float p, Vec3d from, Vec3d to) { public static Vec3d lerp(float p, Vec3d from, Vec3d to) {
return from.add(from.subtract(to) return from.add(to.subtract(from)
.scale(p)); .scale(p));
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Binary file not shown.