Scene machine

- Fix funnels not rendering filter slot items
- Ponder scenes for the Deployer, Harvester and Plough
- Fixed uvs on Deployer model
- Ploughs can now harvest snow layers
This commit is contained in:
simibubi 2021-03-16 21:04:42 +01:00
parent 13a4d0ca62
commit a897b5e78b
37 changed files with 1493 additions and 111 deletions

View file

@ -402,19 +402,19 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
2b12f3cf99e498899207a8c4855210e7b5dc55cd assets/create/lang/en_ud.json
f7bdf2fb1af4cae8bca1735861d603cce0870985 assets/create/lang/en_us.json
f83d2acecd5ce6ebe8dfddffde3c5c3a68abd492 assets/create/lang/unfinished/de_de.json
35e50f9ba61af0ef900154213b0b25d1dc5469d3 assets/create/lang/unfinished/es_es.json
98c26496201d8f12be5f6fc0ddaf919d9098f825 assets/create/lang/unfinished/es_mx.json
161ac9821b2445c96c6d594885c2d32cd784e8c5 assets/create/lang/unfinished/fr_fr.json
0c1baeb251ff32329a8d34a7200101de2cb724c4 assets/create/lang/unfinished/it_it.json
b0ccadbcc765e7ddee1089b3ca65414f5aa1ad95 assets/create/lang/unfinished/ja_jp.json
9551b6b6df919ff7e2b7e14361e8061b65cd4857 assets/create/lang/unfinished/ko_kr.json
552b3ef71a2898d7e263035ade5b47fb0bcfec23 assets/create/lang/unfinished/nl_nl.json
1661f76a0ba088209fcd837a8a1676dbed186368 assets/create/lang/unfinished/pt_br.json
621af99986c9e334d224f9a356c25d7468a1ef47 assets/create/lang/unfinished/ru_ru.json
6340ad62aedc1fec27abb6b490c36b1fd1317214 assets/create/lang/unfinished/zh_cn.json
56a1fedad3d453a36c456085c836fcfbf9740b1d assets/create/lang/unfinished/zh_tw.json
14e0e7784c59a76deddf3bfc32e334ce043396fe assets/create/lang/en_us.json
9d0c4eb5b8fcf787b1bbdd35dcb2efd37b7b9f9c assets/create/lang/unfinished/de_de.json
7e78635390f2802b325aec510ebef35345e2c9a4 assets/create/lang/unfinished/es_es.json
f87b6f876dbb50c37ebbd67d9f636f70c5e4e7f2 assets/create/lang/unfinished/es_mx.json
866086d9a9fe1f4c39208bf592b75145dd67bb47 assets/create/lang/unfinished/fr_fr.json
2f32a7fbbfaa1d78c6f9975c4aa121def52280b7 assets/create/lang/unfinished/it_it.json
2041ea4e1e516f7953be44b06092b144df0359b3 assets/create/lang/unfinished/ja_jp.json
e5057798e54fe5485a36f71b7298c6b2c73cd1b4 assets/create/lang/unfinished/ko_kr.json
e4bdb059ad70595c66c84ebfc3cac6a3929e97c4 assets/create/lang/unfinished/nl_nl.json
849db8c87d521cdf0ce8dc21652f8d95eea47194 assets/create/lang/unfinished/pt_br.json
cdafda2402e1c3259eba15fdd55a446117fece83 assets/create/lang/unfinished/ru_ru.json
8063b79a864f2a1a56c30aabe6df4bd616c938c2 assets/create/lang/unfinished/zh_cn.json
bd9961903c4e125cd3029dad62a4a7fd690149aa assets/create/lang/unfinished/zh_tw.json
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1585,7 +1585,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
9f9455ccb5fc9e3cbfce73862b46078346a522a5 assets/create/models/item/zinc_nugget.json
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
e76041b7ae829fdd7dc0524f6ca4d2f89fca51bb assets/create/sounds.json
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
356f4855a2a6c65be3fb51d7d1aabf2ca6034d42 data/create/advancements/arm_blaze_burner.json

View file

@ -1947,6 +1947,37 @@
"create.ponder.creative_motor.text_1": "Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "Using the Deployer",
"create.ponder.deployer.text_1": "Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "Items can also be inserted automatically",
"create.ponder.deployer.text_12": "Deployers carry a filter slot",
"create.ponder.deployer.text_13": "When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "Deployers can:",
"create.ponder.deployer.text_5": "Place Blocks,",
"create.ponder.deployer.text_6": "Use Items,",
"create.ponder.deployer.text_7": "Activate Blocks,",
"create.ponder.deployer.text_8": "Harvest blocks",
"create.ponder.deployer.text_9": "and Attack Mobs",
"create.ponder.deployer_contraption.header": "Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "Strength and Direction of Flow depends on the Rotational Input",
@ -2059,6 +2090,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "Speed and direction of movement depend on the Rotational Input",
@ -2068,6 +2103,12 @@
"create.ponder.mechanical_piston_modes.text_1": "Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2134,9 +2175,9 @@
"create.ponder.redstone_link.text_1": "Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1302",
"_": "Missing Localizations: 1337",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 333",
"_": "Missing Localizations: 368",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1232",
"_": "Missing Localizations: 1267",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1014",
"_": "Missing Localizations: 1049",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 350",
"_": "Missing Localizations: 385",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 357",
"_": "Missing Localizations: 392",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 403",
"_": "Missing Localizations: 438",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1501",
"_": "Missing Localizations: 1536",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1567",
"_": "Missing Localizations: 1602",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 353",
"_": "Missing Localizations: 388",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 351",
"_": "Missing Localizations: 386",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 356",
"_": "Missing Localizations: 391",
"_": "->------------------------] Game Elements [------------------------<-",
@ -1948,6 +1948,37 @@
"create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force",
"create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output",
"create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer",
"create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions",
"create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use",
"create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically",
"create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot",
"create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item",
"create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...",
"create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted",
"create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself",
"create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it",
"create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:",
"create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,",
"create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,",
"create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,",
"create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks",
"create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs",
"create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions",
"create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...",
"create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption",
"create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull",
"create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer",
"create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction",
"create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead",
"create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone",
"create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate",
"create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles",
"create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle",
"create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans",
"create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current",
"create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input",
@ -2060,6 +2091,10 @@
"create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...",
"create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into",
"create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions",
"create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...",
"create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way",
"create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons",
"create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them",
"create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input",
@ -2069,6 +2104,12 @@
"create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks",
"create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at",
"create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions",
"create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...",
"create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox",
"create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland",
"create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them",
"create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw",
"create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it",
"create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground",
@ -2135,9 +2176,9 @@
"create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly",
"create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode",
"create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers will emit the redstone power of transmitters within a range of 128 blocks",
"create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks",
"create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequency combinations will communicate",
"create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate",
"create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys",
"create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force",

View file

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

View file

@ -7,6 +7,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.FarmlandBlock;
import net.minecraft.block.FlowingFluidBlock;
import net.minecraft.item.ItemStack;
@ -22,6 +23,9 @@ import net.minecraft.util.math.RayTraceResult.Type;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootParameter;
import net.minecraft.world.storage.loot.LootParameters;
public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour {
@ -75,6 +79,20 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour {
.getBlock() instanceof FarmlandBlock);
}
@Override
protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState brokenState) {
super.onBlockBroken(context, pos, brokenState);
if (brokenState.getBlock() == Blocks.SNOW && context.world instanceof ServerWorld) {
ServerWorld world = (ServerWorld) context.world;
brokenState.getDrops(new LootContext.Builder(world).withParameter(LootParameters.BLOCK_STATE, brokenState)
.withParameter(LootParameters.POSITION, pos)
.withParameter(LootParameters.THIS_ENTITY, getPlayer(context))
.withParameter(LootParameters.TOOL, new ItemStack(Items.IRON_SHOVEL)))
.forEach(s -> dropItem(context, s));
}
}
@Override
public void stopMoving(MovementContext context) {
super.stopMoving(context);

View file

@ -9,7 +9,6 @@ import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode;
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.State;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher;
import com.simibubi.create.foundation.render.SuperByteBuffer;
@ -123,15 +122,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer<DeployerTileEntity>
}
protected Vec3d getHandOffset(DeployerTileEntity te, float partialTicks, BlockState blockState) {
float progress = 0;
if (te.state == State.EXPANDING)
progress = 1 - (te.timer - partialTicks * te.getTimerSpeed()) / 1000f;
if (te.state == State.RETRACTING)
progress = (te.timer - partialTicks * te.getTimerSpeed()) / 1000f;
float handLength = te.getHandPose() == AllBlockPartials.DEPLOYER_HAND_POINTING ? 0
: te.getHandPose() == AllBlockPartials.DEPLOYER_HAND_HOLDING ? 4 / 16f : 3 / 16f;
float distance = Math.min(MathHelper.clamp(progress, 0, 1) * (te.reach + handLength), 21 / 16f);
float distance = te.getHandOffset(partialTicks);
Vec3d offset = new Vec3d(blockState.get(FACING)
.getDirectionVec()).scale(distance);
return offset;

View file

@ -15,6 +15,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
@ -53,6 +54,8 @@ public class DeployerTileEntity extends KineticTileEntity {
private LazyOptional<IItemHandlerModifiable> invHandler;
private ListNBT deferredInventoryList;
private LerpedFloat animatedOffset;
enum State {
WAITING, EXPANDING, RETRACTING, DUMPING;
}
@ -67,6 +70,8 @@ public class DeployerTileEntity extends KineticTileEntity {
mode = Mode.USE;
heldItem = ItemStack.EMPTY;
redstoneLocked = false;
animatedOffset = LerpedFloat.linear()
.startWithValue(0);
}
@Override
@ -106,7 +111,7 @@ public class DeployerTileEntity extends KineticTileEntity {
@Override
public void tick() {
super.tick();
if (getSpeed() == 0)
return;
if (!world.isRemote && player != null && player.blockBreakingProgress != null) {
@ -365,11 +370,11 @@ public class DeployerTileEntity extends KineticTileEntity {
@Override
public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) {
if (isItemHandlerCap(cap) && invHandler != null)
if (isItemHandlerCap(cap) && invHandler != null)
return invHandler.cast();
return super.getCapability(cap, side);
}
@Override
public boolean addToTooltip(List<String> tooltip, boolean isPlayerSneaking) {
if (super.addToTooltip(tooltip, isPlayerSneaking))
@ -386,4 +391,28 @@ public class DeployerTileEntity extends KineticTileEntity {
public boolean shouldRenderAsTE() {
return true;
}
public float getHandOffset(float partialTicks) {
if (isVirtual())
return animatedOffset.getValue(partialTicks);
float progress = 0;
int timerSpeed = getTimerSpeed();
AllBlockPartials handPose = getHandPose();
if (state == State.EXPANDING)
progress = 1 - (timer - partialTicks * timerSpeed) / 1000f;
if (state == State.RETRACTING)
progress = (timer - partialTicks * timerSpeed) / 1000f;
float handLength = handPose == AllBlockPartials.DEPLOYER_HAND_POINTING ? 0
: handPose == AllBlockPartials.DEPLOYER_HAND_HOLDING ? 4 / 16f : 3 / 16f;
float distance = Math.min(MathHelper.clamp(progress, 0, 1) * (reach + handLength), 21 / 16f);
return distance;
}
public void setAnimatedOffset(float offset) {
animatedOffset.setValue(offset);
}
}

View file

@ -4,7 +4,6 @@ import java.lang.ref.WeakReference;
import java.util.List;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.CreateClient;
import com.simibubi.create.content.contraptions.components.saw.SawTileEntity;
import com.simibubi.create.content.contraptions.goggles.IHaveHoveringInformation;
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
@ -13,7 +12,6 @@ import com.simibubi.create.content.contraptions.relays.belt.transport.Transporte
import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity;
import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape;
import com.simibubi.create.content.logistics.packet.FunnelFlapPacket;
import com.simibubi.create.content.logistics.packet.TunnelFlapPacket;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue;
import com.simibubi.create.foundation.item.TooltipHelper;
@ -42,7 +40,6 @@ import net.minecraft.util.math.Vec3d;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.network.PacketDistributor;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
@ -332,7 +329,7 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn
extractionCooldown = compound.getInt("TransferCooldown");
if (clientPacket)
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> FastRenderDispatcher.enqueueUpdate(this));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FastRenderDispatcher.enqueueUpdate(this));
}
@Override
@ -386,4 +383,10 @@ public class FunnelTileEntity extends SmartTileEntity implements IHaveHoveringIn
TooltipHelper.addHint(tooltip, "hint.horizontal_funnel");
return true;
}
@Override
public boolean shouldRenderAsTE() {
return true;
}
}

View file

@ -109,8 +109,10 @@ public class PonderRegistry {
String filepath = "ponder/" + path + ".nbt";
InputStream resourceAsStream = Create.class.getClassLoader()
.getResourceAsStream(filepath);
if (resourceAsStream == null)
throw new IllegalStateException("Could not find ponder schematic: " + filepath);
if (resourceAsStream == null) {
Create.logger.error("Ponder schematic missing: " + path);
return t;
}
try (DataInputStream stream =
new DataInputStream(new BufferedInputStream(new GZIPInputStream(resourceAsStream)))) {
CompoundNBT nbt = CompressedStreamTools.read(stream, new NBTSizeTracker(0x20000000L));

View file

@ -12,6 +12,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.schematics.SchematicWorld;
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
@ -106,6 +107,7 @@ public class PonderWorld extends SchematicWorld {
if (originalBlocks.containsKey(p))
blocks.put(p, originalBlocks.get(p));
});
scene.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw);
}
public void pushFakeLight(int light) {
@ -280,7 +282,7 @@ public class PonderWorld extends SchematicWorld {
}
}
}
@Override
protected BlockState processBlockStateForPrinting(BlockState state) {
return state;
@ -295,5 +297,5 @@ public class PonderWorld extends SchematicWorld {
public boolean isBlockPresent(BlockPos pos) {
return true; // fix particle lighting
}
}

View file

@ -177,7 +177,7 @@ public class SceneBuilder {
public void showBasePlate() {
world.showSection(
scene.getSceneBuildingUtil().select.cuboid(new BlockPos(scene.basePlateOffsetX, 0, scene.basePlateOffsetZ),
new Vec3i(scene.basePlateSize, 0, scene.basePlateSize)),
new Vec3i(scene.basePlateSize - 1, 0, scene.basePlateSize - 1)),
Direction.UP);
}
@ -513,6 +513,10 @@ public class SceneBuilder {
public void movePulley(BlockPos pos, float distance, int duration) {
addInstruction(AnimateTileEntityInstruction.pulley(pos, distance, duration));
}
public void moveDeployer(BlockPos pos, float distance, int duration) {
addInstruction(AnimateTileEntityInstruction.deployer(pos, distance, duration));
}
public void setBlocks(Selection selection, BlockState state, boolean spawnParticles) {
addInstruction(new ReplaceBlocksInstruction(selection, $ -> state, true, spawnParticles));

View file

@ -0,0 +1,460 @@
package com.simibubi.create.foundation.ponder.content;
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity;
import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.Selection;
import com.simibubi.create.foundation.ponder.elements.EntityElement;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.SheepEntity;
import net.minecraft.item.DyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.particles.BlockParticleData;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
public class DeployerScenes {
public static void filter(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("deployer", "Using the Deployer");
scene.configureBasePlate(0, 0, 5);
BlockPos potPosition = util.grid.at(1, 1, 2);
BlockPos deployerPos = util.grid.at(3, 1, 2);
Selection deployerSelection = util.select.position(deployerPos);
scene.world.setBlock(potPosition, Blocks.AIR.getDefaultState(), false);
scene.world.showSection(util.select.layer(0)
.add(util.select.position(1, 1, 2)), Direction.UP);
scene.idle(5);
scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 1, 5), Direction.DOWN);
scene.idle(10);
scene.world.showSection(deployerSelection, Direction.SOUTH);
scene.idle(10);
scene.overlay.showText(60)
.placeNearTarget()
.pointAt(util.vector.topOf(deployerPos))
.text("Given Rotational Force, a Deployer can imitate player interactions");
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(44);
scene.overlay.showSelectionWithText(util.select.position(deployerPos.west(2)), 60)
.text("It will always interact with the position 2 blocks in front of itself")
.attachKeyFrame()
.placeNearTarget()
.colored(PonderPalette.GREEN)
.attachKeyFrame();
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(20);
scene.world.showSection(util.select.fromTo(2, 1, 3, 2, 1, 1), Direction.DOWN);
scene.idle(24);
scene.overlay.showText(50)
.pointAt(util.vector.topOf(deployerPos.west()))
.text("Blocks directly in front will not obstruct it")
.placeNearTarget();
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(34);
scene.world.hideSection(util.select.fromTo(2, 1, 3, 2, 1, 1), Direction.UP);
scene.idle(20);
String[] actions =
new String[] { "Place Blocks,", "Use Items,", "Activate Blocks,", "Harvest blocks", "and Attack Mobs" };
scene.overlay.showText(80)
.attachKeyFrame()
.independent(40)
.placeNearTarget()
.text("Deployers can:");
int y = 60;
for (String s : actions) {
scene.idle(15);
scene.overlay.showText(50)
.colored(PonderPalette.MEDIUM)
.placeNearTarget()
.independent(y)
.text(s);
y += 16;
}
scene.idle(50);
ItemStack pot = new ItemStack(Items.FLOWER_POT);
Vec3d frontVec = util.vector.blockSurface(deployerPos, Direction.WEST)
.add(-.125, 0, 0);
scene.overlay.showControls(new InputWindowElement(frontVec, Pointing.DOWN).rightClick()
.withItem(pot), 40);
scene.idle(7);
Class<DeployerTileEntity> teType = DeployerTileEntity.class;
scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", pot.serializeNBT()));
scene.idle(10);
scene.overlay.showText(40)
.attachKeyFrame()
.placeNearTarget()
.pointAt(frontVec)
.text("Right-click the front to give it an Item to use");
scene.idle(40);
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.restoreBlocks(util.select.position(potPosition));
scene.world.modifyTileNBT(deployerSelection, teType,
nbt -> nbt.put("HeldItem", ItemStack.EMPTY.serializeNBT()));
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(20);
scene.world.showSection(util.select.position(deployerPos.up()), Direction.DOWN);
ItemStack tulip = new ItemStack(Items.RED_TULIP);
Vec3d entitySpawn = util.vector.topOf(deployerPos.up(3));
ElementLink<EntityElement> entity1 =
scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), tulip);
scene.idle(17);
scene.world.modifyEntity(entity1, Entity::remove);
scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", tulip.serializeNBT()));
scene.idle(10);
scene.overlay.showText(40)
.placeNearTarget()
.pointAt(util.vector.of(3, 2.5, 3))
.text("Items can also be inserted automatically");
scene.idle(30);
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.setBlock(potPosition, Blocks.POTTED_RED_TULIP.getDefaultState(), false);
scene.world.modifyTileNBT(deployerSelection, teType,
nbt -> nbt.put("HeldItem", ItemStack.EMPTY.serializeNBT()));
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(25);
scene.world.hideSection(util.select.position(potPosition), Direction.UP);
scene.world.hideSection(util.select.position(deployerPos.up()), Direction.EAST);
scene.idle(20);
Vec3d filterSlot = frontVec.add(0.375, 0.25, 0);
scene.overlay.showFilterSlotInput(filterSlot, 80);
scene.overlay.showText(40)
.attachKeyFrame()
.placeNearTarget()
.pointAt(filterSlot)
.text("Deployers carry a filter slot");
scene.idle(50);
ItemStack shears = new ItemStack(Items.SHEARS);
scene.overlay.showControls(new InputWindowElement(filterSlot, Pointing.DOWN).rightClick()
.withItem(shears), 40);
scene.idle(7);
scene.world.setFilterData(deployerSelection, teType, shears);
scene.overlay.showText(60)
.placeNearTarget()
.pointAt(filterSlot)
.text("When a filter is set, it activates only while holding a matching item");
scene.idle(70);
ElementLink<EntityElement> sheep = scene.world.createEntity(w -> {
SheepEntity entity = EntityType.SHEEP.create(w);
entity.setFleeceColor(DyeColor.PINK);
Vec3d p = util.vector.topOf(util.grid.at(1, 0, 2));
entity.setPosition(p.x, p.y, p.z);
entity.prevPosX = p.x;
entity.prevPosY = p.y;
entity.prevPosZ = p.z;
entity.limbSwing = 0;
entity.prevRotationYaw = 210;
entity.rotationYaw = 210;
entity.prevRotationYawHead = 210;
entity.rotationYawHead = 210;
return entity;
});
scene.idle(20);
scene.world.showSection(util.select.position(deployerPos.up()), Direction.WEST);
entity1 = scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), shears);
scene.idle(17);
scene.world.modifyEntity(entity1, Entity::remove);
scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", shears.serializeNBT()));
scene.idle(10);
scene.overlay.showText(60)
.placeNearTarget()
.pointAt(util.vector.of(3, 2.5, 3))
.text("Only items matching the filter can now be inserted...");
scene.idle(70);
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.modifyEntity(sheep, e -> ((SheepEntity) e).setSheared(true));
scene.effects.emitParticles(util.vector.topOf(deployerPos.west(2))
.add(0, -.25, 0),
Emitter.withinBlockSpace(new BlockParticleData(ParticleTypes.BLOCK, Blocks.PINK_WOOL.getDefaultState()),
util.vector.of(0, 0, 0)),
25, 1);
scene.world.moveDeployer(deployerPos, -1, 25);
scene.world.showSection(util.select.position(deployerPos.north()), Direction.SOUTH);
scene.idle(25);
scene.overlay.showText(80)
.placeNearTarget()
.pointAt(util.vector.of(3.5, 1.25, 1.25))
.text("...and only non-matching items will be extracted");
scene.world.flapFunnel(deployerPos.north(), true);
scene.world.createItemEntity(util.vector.centerOf(deployerPos.north())
.subtract(0, .45, 0), util.vector.of(0, 0, -0.1), new ItemStack(Items.PINK_WOOL));
scene.markAsFinished();
for (int i = 0; i < 10; i++) {
scene.idle(26);
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(26);
}
}
public static void modes(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("deployer_modes", "Modes of the Deployer");
scene.configureBasePlate(0, 0, 5);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 1, 5), Direction.DOWN);
scene.idle(10);
BlockPos deployerPos = util.grid.at(3, 1, 2);
Vec3d frontVec = util.vector.blockSurface(deployerPos, Direction.WEST)
.add(-.125, 0, 0);
Selection grassBlock = util.select.position(1, 1, 2);
Selection deployerSelection = util.select.position(deployerPos);
scene.world.showSection(deployerSelection, Direction.DOWN);
scene.idle(10);
scene.world.showSection(grassBlock, Direction.DOWN);
scene.idle(10);
ItemStack tool = new ItemStack(Items.GOLDEN_HOE);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(deployerPos), Pointing.DOWN).withItem(tool),
30);
scene.idle(7);
scene.world.modifyTileNBT(deployerSelection, DeployerTileEntity.class,
nbt -> nbt.put("HeldItem", tool.serializeNBT()));
scene.idle(45);
scene.world.setKineticSpeed(util.select.position(2, 0, 5), 16);
scene.world.setKineticSpeed(util.select.layer(1), -32);
scene.world.moveDeployer(deployerPos, 1, 25);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(1, 1, 2))
.text("By default, a Deployer imitates a Right-click interaction");
scene.idle(26);
scene.world.replaceBlocks(grassBlock, Blocks.FARMLAND.getDefaultState(), false);
scene.world.moveDeployer(deployerPos, -1, 25);
scene.idle(46);
scene.overlay.showControls(new InputWindowElement(frontVec, Pointing.LEFT).rightClick()
.withWrench(), 40);
scene.idle(7);
scene.world.modifyTileNBT(deployerSelection, DeployerTileEntity.class, nbt -> nbt.putString("Mode", "PUNCH"));
scene.idle(45);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(1, 1, 2))
.text("Using a Wrench, it can be set to imitate a Left-click instead");
BlockPos breakingPos = deployerPos.west(2);
for (int i = 0; i < 4; i++) {
scene.idle(26);
scene.world.moveDeployer(deployerPos, 1, 25);
scene.idle(26);
scene.world.incrementBlockBreakingProgress(breakingPos);
scene.world.incrementBlockBreakingProgress(breakingPos);
scene.world.incrementBlockBreakingProgress(breakingPos);
scene.world.moveDeployer(deployerPos, -1, 25);
if (i == 3)
scene.world.createItemEntity(util.vector.centerOf(breakingPos), util.vector.of(0, 0, 0),
new ItemStack(Blocks.DIRT));
scene.idle(26);
if (i == 0)
scene.markAsFinished();
}
}
public static void redstone(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("deployer_redstone", "Controlling Deployers with Redstone");
scene.configureBasePlate(0, 0, 5);
scene.world.showSection(util.select.layer(0), Direction.UP);
scene.idle(5);
scene.world.showSection(util.select.fromTo(3, 1, 5, 3, 1, 3), Direction.DOWN);
BlockPos deployerPos = util.grid.at(3, 1, 3);
Selection redstone = util.select.fromTo(3, 1, 1, 3, 1, 2);
BlockPos leverPos = util.grid.at(3, 1, 1);
scene.world.toggleRedstonePower(redstone);
scene.idle(26);
scene.world.moveDeployer(deployerPos, 1, 30);
scene.idle(31);
scene.world.moveDeployer(deployerPos, -1, 30);
scene.world.showSection(redstone, Direction.SOUTH);
scene.idle(31);
scene.world.toggleRedstonePower(redstone);
scene.effects.indicateRedstone(leverPos);
scene.idle(10);
scene.overlay.showText(60)
.colored(PonderPalette.RED)
.attachKeyFrame()
.pointAt(util.vector.topOf(deployerPos))
.placeNearTarget()
.text("When powered by Redstone, Deployers will not activate");
scene.idle(70);
scene.world.toggleRedstonePower(redstone);
scene.idle(10);
scene.world.moveDeployer(deployerPos, 1f, 30);
scene.idle(10);
scene.world.toggleRedstonePower(redstone);
scene.effects.indicateRedstone(leverPos);
scene.idle(21);
scene.overlay.showText(60)
.pointAt(util.vector.topOf(deployerPos))
.placeNearTarget()
.text("Before stopping, the Deployer will finish any started cycles");
scene.world.moveDeployer(deployerPos, -1f, 30);
scene.idle(70);
scene.world.toggleRedstonePower(redstone);
scene.idle(3);
scene.world.toggleRedstonePower(redstone);
scene.effects.indicateRedstone(leverPos);
scene.world.moveDeployer(deployerPos, 1, 30);
scene.overlay.showText(100)
.colored(PonderPalette.GREEN)
.attachKeyFrame()
.pointAt(util.vector.topOf(deployerPos))
.placeNearTarget()
.text("Thus, a negative pulse can be used to trigger exactly one activation cycle");
scene.idle(31);
scene.world.moveDeployer(deployerPos, -1, 30);
}
public static void contraption(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("deployer_contraption", "Using Deployers on Contraptions");
scene.configureBasePlate(0, 0, 6);
scene.scaleSceneView(.9f);
Selection flowers = util.select.fromTo(4, 1, 1, 1, 1, 1);
scene.world.replaceBlocks(flowers, Blocks.AIR.getDefaultState(), false);
Selection kinetics = util.select.fromTo(5, 1, 6, 5, 1, 3);
BlockPos deployerPos = util.grid.at(4, 1, 3);
Selection deployerSelection = util.select.position(deployerPos);
scene.world.showSection(util.select.layer(0)
.add(flowers), Direction.UP);
scene.idle(5);
ElementLink<WorldSectionElement> pistonHead =
scene.world.showIndependentSection(util.select.fromTo(5, 1, 2, 8, 1, 2), Direction.DOWN);
scene.world.moveSection(pistonHead, util.vector.of(0, 0, 1), 0);
scene.world.showSection(kinetics, Direction.DOWN);
scene.idle(5);
ElementLink<WorldSectionElement> contraption =
scene.world.showIndependentSection(deployerSelection, Direction.DOWN);
scene.idle(5);
scene.world.glueBlockOnto(util.grid.at(4, 2, 3), Direction.DOWN, contraption);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(deployerPos, Direction.WEST))
.text("Whenever Deployers are moved as part of an animated Contraption...");
scene.idle(70);
scene.world.setKineticSpeed(util.select.position(4, 0, 6), -8);
scene.world.setKineticSpeed(kinetics, 16);
scene.world.moveSection(pistonHead, util.vector.of(-3, 0, 0), 100);
scene.world.moveSection(contraption, util.vector.of(-3, 0, 0), 100);
for (int x = 0; x < 4; x++) {
scene.world.moveDeployer(deployerPos, 1, 9);
scene.idle(10);
scene.world.moveDeployer(deployerPos, -1, 9);
scene.world.restoreBlocks(util.select.position(4 - x, 1, 1));
scene.idle(18);
}
scene.overlay.showSelectionWithText(flowers, 90)
.attachKeyFrame()
.colored(PonderPalette.GREEN)
.text("They activate at each visited location, using items from inventories anywhere on the contraption");
scene.idle(100);
scene.world.hideSection(flowers, Direction.UP);
scene.idle(15);
scene.world.replaceBlocks(flowers, Blocks.AIR.getDefaultState(), false);
scene.world.showSection(flowers, Direction.UP);
Vec3d frontVec = util.vector.blockSurface(deployerPos.west(3), Direction.NORTH)
.add(0, 0, -.125);
Vec3d filterSlot = frontVec.add(0, 0.25, 0.375);
scene.overlay.showFilterSlotInput(filterSlot, 80);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(filterSlot)
.text("The Filter slot can be used to specify which items to pull");
scene.idle(70);
ItemStack poppy = new ItemStack(Items.POPPY);
scene.overlay.showControls(new InputWindowElement(filterSlot, Pointing.DOWN).withItem(poppy), 30);
scene.idle(7);
scene.world.setFilterData(deployerSelection, DeployerTileEntity.class, poppy);
scene.idle(25);
scene.world.setKineticSpeed(util.select.position(4, 0, 6), 8);
scene.world.setKineticSpeed(kinetics, -16);
scene.world.moveSection(pistonHead, util.vector.of(3, 0, 0), 100);
scene.world.moveSection(contraption, util.vector.of(3, 0, 0), 100);
for (int x = 0; x < 4; x++) {
scene.world.moveDeployer(deployerPos, 1, 9);
scene.idle(10);
scene.world.moveDeployer(deployerPos, -1, 9);
scene.world.setBlock(util.grid.at(1 + x, 1, 1), Blocks.POPPY.getDefaultState(), false);
scene.idle(18);
}
}
}

View file

@ -173,6 +173,7 @@ public class MechanicalSawScenes {
public static void treeCutting(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("mechanical_saw_breaker", "Cutting Trees with the Mechanical Saw");
scene.configureBasePlate(0, 0, 5);
scene.scaleSceneView(.9f);
scene.world.setBlock(util.grid.at(2, 0, 2), Blocks.GRASS_BLOCK.getDefaultState(), false);
scene.world.showSection(util.select.layer(0)
.add(util.select.position(3, 1, 1))
@ -265,6 +266,7 @@ public class MechanicalSawScenes {
public static void contraption(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("mechanical_saw_contraption", "Using Mechanical Saws on Contraptions");
scene.configureBasePlate(1, 0, 6);
scene.scaleSceneView(.9f);
scene.world.setBlock(util.grid.at(2, 0, 3), Blocks.GRASS_BLOCK.getDefaultState(), false);
scene.world.showSection(util.select.layer(0)
.add(util.select.position(3, 1, 1))

View file

@ -1,19 +1,27 @@
package com.simibubi.create.foundation.ponder.content;
import com.simibubi.create.AllItems;
import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity;
import com.simibubi.create.content.contraptions.components.actors.PortableItemInterfaceTileEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock;
import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.Selection;
import com.simibubi.create.foundation.ponder.elements.EntityElement;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.ponder.elements.ParrotElement;
import com.simibubi.create.foundation.ponder.elements.ParrotElement.FlappyPose;
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CropsBlock;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
@ -189,4 +197,313 @@ public class MovementActorScenes {
scene.markAsFinished();
}
public static void harvester(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("mechanical_harvester", "Using Mechanical Harvesters on Contraptions");
scene.configureBasePlate(0, 0, 6);
scene.scaleSceneView(0.9f);
Selection crops = util.select.fromTo(4, 1, 2, 3, 1, 2)
.add(util.select.fromTo(3, 1, 1, 2, 1, 1)
.add(util.select.position(2, 1, 3))
.add(util.select.position(1, 1, 2)));
scene.world.setBlocks(crops, Blocks.WHEAT.getDefaultState()
.with(CropsBlock.AGE, 7), false);
scene.world.showSection(util.select.layer(0), Direction.UP);
BlockPos bearingPos = util.grid.at(4, 1, 4);
scene.idle(5);
scene.world.showSection(crops, Direction.UP);
scene.world.showSection(util.select.position(bearingPos), Direction.DOWN);
scene.idle(5);
ElementLink<WorldSectionElement> contraption =
scene.world.showIndependentSection(util.select.fromTo(4, 2, 4, 2, 2, 5)
.add(util.select.fromTo(2, 1, 5, 0, 1, 5)), Direction.DOWN);
scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos));
scene.idle(10);
for (int i = 0; i < 3; i++) {
scene.world.showSectionAndMerge(util.select.position(i, 1, 4), Direction.SOUTH, contraption);
scene.idle(5);
}
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 4), Direction.SOUTH))
.text("Whenever Harvesters are moved as part of an animated Contraption...");
scene.idle(70);
for (int i = 0; i < 3; i++)
scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class,
hte -> hte.setAnimatedSpeed(-150));
scene.world.rotateBearing(bearingPos, -360, 140);
scene.world.rotateSection(contraption, 0, -360, 0, 140);
BlockState harvested = Blocks.WHEAT.getDefaultState();
ItemStack wheatItem = new ItemStack(Items.WHEAT);
scene.idle(5);
BlockPos current = util.grid.at(2, 1, 3);
scene.world.setBlock(current, harvested, true);
scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(0, 0.3, -.2), wheatItem);
scene.idle(5);
current = util.grid.at(1, 1, 2);
scene.world.setBlock(current, harvested, true);
scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(0, 0.3, -.2), wheatItem);
scene.idle(5);
current = util.grid.at(3, 1, 2);
scene.world.setBlock(current, harvested, true);
scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.1, 0.3, -.1), wheatItem);
current = util.grid.at(2, 1, 1);
scene.world.setBlock(current, harvested, true);
scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.1, 0.3, -.1), wheatItem);
scene.idle(5);
current = util.grid.at(3, 1, 1);
scene.world.setBlock(current, harvested, true);
scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.1, 0.3, -.1), wheatItem);
scene.idle(5);
current = util.grid.at(4, 1, 2);
scene.world.setBlock(current, harvested, true);
scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.2, 0.3, 0), wheatItem);
scene.overlay.showText(80)
.pointAt(util.vector.topOf(1, 0, 2))
.text("They will harvest and reset any mature crops on their way")
.placeNearTarget();
scene.idle(101);
scene.world.hideSection(crops, Direction.DOWN);
scene.idle(15);
scene.world.modifyEntities(ItemEntity.class, Entity::remove);
scene.world.setBlocks(crops, Blocks.WHEAT.getDefaultState()
.with(CropsBlock.AGE, 7), false);
scene.world.showSection(crops, Direction.UP);
for (int i = 0; i < 3; i++)
scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class,
hte -> hte.setAnimatedSpeed(0));
scene.idle(10);
scene.world.cycleBlockProperty(util.grid.at(1, 1, 5), LinearChassisBlock.STICKY_TOP);
scene.world.glueBlockOnto(util.grid.at(1, 2, 5), Direction.DOWN, contraption);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(1, 2, 5), Direction.WEST))
.sharedText("storage_on_contraption");
scene.idle(70);
for (int i = 0; i < 3; i++)
scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class,
hte -> hte.setAnimatedSpeed(-150));
scene.world.rotateBearing(bearingPos, -360, 140);
scene.world.rotateSection(contraption, 0, -360, 0, 140);
scene.idle(5);
current = util.grid.at(2, 1, 3);
scene.world.setBlock(current, harvested, true);
scene.idle(5);
current = util.grid.at(1, 1, 2);
scene.world.setBlock(current, harvested, true);
scene.idle(5);
current = util.grid.at(3, 1, 2);
scene.world.setBlock(current, harvested, true);
current = util.grid.at(2, 1, 1);
scene.world.setBlock(current, harvested, true);
scene.idle(5);
current = util.grid.at(3, 1, 1);
scene.world.setBlock(current, harvested, true);
scene.idle(5);
current = util.grid.at(4, 1, 2);
scene.world.setBlock(current, harvested, true);
scene.idle(116);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(1, 2, 5), Pointing.DOWN).withItem(wheatItem), 50);
for (int i = 0; i < 3; i++)
scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class,
hte -> hte.setAnimatedSpeed(0));
}
public static void plough(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("mechanical_plough", "Using Mechanical Ploughs on Contraptions");
scene.configureBasePlate(0, 0, 6);
scene.scaleSceneView(0.9f);
Selection garbage = util.select.fromTo(2, 1, 3, 1, 1, 2);
Selection kinetics = util.select.fromTo(5, 1, 6, 5, 1, 2);
Selection dynamic = util.select.fromTo(4, 0, 6, 5, 1, 6);
scene.showBasePlate();
ElementLink<WorldSectionElement> cogs =
scene.world.showIndependentSection(util.select.fromTo(4, 0, 6, 5, 1, 6), Direction.UP);
scene.idle(5);
scene.world.showSection(kinetics.substract(dynamic), Direction.DOWN);
ElementLink<WorldSectionElement> pistonHead =
scene.world.showIndependentSection(util.select.fromTo(5, 1, 1, 7, 1, 1), Direction.DOWN);
scene.world.moveSection(pistonHead, util.vector.of(0, 0, 1), 0);
scene.idle(5);
ElementLink<WorldSectionElement> contraption =
scene.world.showIndependentSection(util.select.fromTo(4, 1, 3, 4, 1, 2), Direction.DOWN);
scene.idle(10);
scene.world.showSectionAndMerge(util.select.position(3, 1, 3), Direction.EAST, contraption);
scene.idle(5);
scene.world.showSectionAndMerge(util.select.position(3, 1, 2), Direction.EAST, contraption);
scene.idle(20);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 3), Direction.EAST))
.text("Whenever Ploughs are moved as part of an animated Contraption...");
scene.idle(50);
scene.world.showSection(garbage, Direction.EAST);
scene.idle(20);
scene.world.setKineticSpeed(util.select.position(4, 0, 6), -8);
scene.world.setKineticSpeed(kinetics, 16);
scene.world.moveSection(pistonHead, util.vector.of(-2, 0, 0), 60);
scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 60);
scene.idle(15);
Vec3d m = util.vector.of(-0.1, .2, 0);
scene.world.destroyBlock(util.grid.at(2, 1, 3));
scene.world.createItemEntity(util.vector.centerOf(2, 1, 3), m, new ItemStack(Items.LEVER));
scene.world.destroyBlock(util.grid.at(2, 1, 2));
scene.world.createItemEntity(util.vector.centerOf(2, 1, 2), m, new ItemStack(Items.TORCH));
scene.idle(30);
scene.world.destroyBlock(util.grid.at(1, 1, 3));
scene.world.createItemEntity(util.vector.centerOf(1, 1, 3), m, new ItemStack(Items.RAIL));
scene.world.destroyBlock(util.grid.at(1, 1, 2));
scene.world.createItemEntity(util.vector.centerOf(1, 1, 2), m, new ItemStack(Items.REDSTONE));
scene.overlay.showText(60)
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 3), Direction.EAST))
.text("...they will break blocks without a solid collision hitbox");
scene.idle(50);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f);
scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40);
scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40);
scene.world.hideSection(garbage, Direction.UP);
scene.idle(40);
scene.world.setBlocks(garbage, Blocks.SNOW.getDefaultState(), false);
scene.world.modifyEntities(ItemEntity.class, Entity::remove);
ElementLink<WorldSectionElement> chest =
scene.world.showIndependentSection(util.select.position(4, 2, 2), Direction.DOWN);
scene.overlay.showText(60)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(4, 2, 2), Direction.WEST))
.sharedText("storage_on_contraption");
scene.idle(15);
scene.effects.superGlue(util.grid.at(4, 2, 2), Direction.DOWN, true);
scene.idle(45);
scene.world.showSection(garbage, Direction.EAST);
scene.idle(20);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f);
scene.world.moveSection(pistonHead, util.vector.of(-2, 0, 0), 60);
scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 60);
scene.world.moveSection(chest, util.vector.of(-2, 0, 0), 60);
scene.idle(15);
scene.world.destroyBlock(util.grid.at(2, 1, 3));
scene.world.destroyBlock(util.grid.at(2, 1, 2));
scene.idle(30);
scene.world.destroyBlock(util.grid.at(1, 1, 3));
scene.world.destroyBlock(util.grid.at(1, 1, 2));
scene.idle(15);
scene.overlay.showControls(
new InputWindowElement(util.vector.topOf(2, 2, 2), Pointing.DOWN).withItem(new ItemStack(Items.SNOWBALL)),
40);
scene.idle(40);
scene.world.hideIndependentSection(chest, Direction.UP);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f);
scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40);
scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40);
scene.idle(40);
Selection dirt = util.select.fromTo(2, 0, 3, 1, 0, 2);
scene.world.hideSection(dirt, Direction.DOWN);
scene.idle(15);
scene.world.setBlocks(dirt, Blocks.GRASS_BLOCK.getDefaultState(), false);
scene.world.showSection(dirt, Direction.UP);
scene.overlay.showText(60)
.placeNearTarget()
.attachKeyFrame()
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 3), Direction.EAST))
.text("Additionally, ploughs can create farmland");
scene.idle(30);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f);
scene.world.moveSection(pistonHead, util.vector.of(-2, 0, 0), 60);
scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 60);
scene.world.moveSection(chest, util.vector.of(-2, 0, 0), 60);
scene.idle(15);
scene.world.setBlocks(util.select.fromTo(2, 0, 2, 2, 0, 3), Blocks.FARMLAND.getDefaultState(), true);
scene.idle(30);
scene.world.setBlocks(util.select.fromTo(1, 0, 2, 1, 0, 3), Blocks.FARMLAND.getDefaultState(), true);
scene.idle(20);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f);
scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40);
scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40);
scene.idle(50);
scene.world.setKineticSpeed(util.select.everywhere(), 0);
scene.world.hideSection(kinetics.substract(dynamic), Direction.EAST);
scene.world.hideSection(dirt, Direction.DOWN);
scene.world.hideIndependentSection(pistonHead, Direction.EAST);
scene.world.moveSection(cogs, util.vector.of(-1, 0, 0), 15);
scene.idle(15);
scene.world.restoreBlocks(dirt);
scene.world.showSection(dirt, Direction.UP);
scene.world.showSection(util.select.fromTo(4, 1, 6, 4, 3, 4), Direction.NORTH);
scene.idle(15);
scene.world.showSectionAndMerge(util.select.fromTo(4, 3, 3, 4, 2, 3), Direction.DOWN, contraption);
scene.idle(15);
BlockPos bearingPos = util.grid.at(4, 3, 4);
scene.addKeyframe();
scene.world.setKineticSpeed(util.select.position(4, 0, 6), 8);
scene.world.setKineticSpeed(util.select.position(5, 1, 6), -16);
scene.world.setKineticSpeed(util.select.position(4, 3, 5), -16);
scene.world.setKineticSpeed(util.select.position(4, 1, 5), -16);
scene.world.setKineticSpeed(util.select.position(4, 2, 5), 16);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f);
scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos));
scene.world.rotateSection(contraption, 0, 0, 90, 20);
scene.world.rotateBearing(bearingPos, 90, 20);
scene.idle(10);
ElementLink<ParrotElement> birb = scene.special.createBirb(util.vector.topOf(3, 0, 2)
.add(0, 0, 0.5), FlappyPose::new);
scene.idle(11);
scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f);
scene.world.rotateSection(contraption, 0, 0, -135, 10);
scene.world.rotateBearing(bearingPos, -135, 10);
scene.idle(7);
scene.special.moveParrot(birb, util.vector.of(-20, 15, 0), 20);
scene.special.rotateParrot(birb, 0, 360, 0, 20);
scene.idle(3);
scene.world.setKineticSpeed(util.select.everywhere(), 0);
scene.idle(20);
scene.overlay.showText(60)
.placeNearTarget()
.pointAt(util.vector.centerOf(util.grid.at(1, 3, 2)))
.text("...they can also launch entities without hurting them");
scene.idle(30);
}
}

View file

@ -148,6 +148,15 @@ public class PonderIndex {
.addStoryBoard("mechanical_drill/breaker", MechanicalDrillScenes::breaker, PonderTag.KINETIC_APPLIANCES)
.addStoryBoard("mechanical_drill/contraption", MechanicalDrillScenes::contraption,
PonderTag.CONTRAPTION_ACTOR);
PonderRegistry.forComponents(AllBlocks.DEPLOYER)
.addStoryBoard("deployer/filter", DeployerScenes::filter, PonderTag.KINETIC_APPLIANCES)
.addStoryBoard("deployer/modes", DeployerScenes::modes)
.addStoryBoard("deployer/redstone", DeployerScenes::redstone)
.addStoryBoard("deployer/contraption", DeployerScenes::contraption, PonderTag.CONTRAPTION_ACTOR);
PonderRegistry.forComponents(AllBlocks.MECHANICAL_HARVESTER)
.addStoryBoard("harvester", MovementActorScenes::harvester);
PonderRegistry.forComponents(AllBlocks.MECHANICAL_PLOUGH)
.addStoryBoard("plough", MovementActorScenes::plough);
// Redstone
PonderRegistry.forComponents(AllBlocks.PULSE_REPEATER)
@ -208,6 +217,7 @@ public class PonderIndex {
.add(AllBlocks.MECHANICAL_CRAFTER)
.add(AllBlocks.MECHANICAL_DRILL)
.add(AllBlocks.MECHANICAL_SAW)
.add(AllBlocks.DEPLOYER)
.add(AllBlocks.MECHANICAL_PUMP)
.add(AllBlocks.MECHANICAL_ARM)
.add(AllBlocks.MECHANICAL_PISTON)
@ -320,7 +330,6 @@ public class PonderIndex {
.add(AllBlocks.BRASS_FUNNEL)
.add(AllBlocks.SEATS[0])
.add(AllBlocks.REDSTONE_CONTACT)
.add(AllBlocks.SAIL)
.add(Blocks.BELL)
.add(Blocks.DISPENSER)
.add(Blocks.DROPPER);

View file

@ -24,9 +24,9 @@ public class TextWindowElement extends AnimatedOverlayElement {
// from 0 to 200
int y;
Vec3d vec;
boolean nearScene = false;
int color = PonderPalette.WHITE.getColor();
@ -52,7 +52,7 @@ public class TextWindowElement extends AnimatedOverlayElement {
TextWindowElement.this.y = y;
return this;
}
public Builder independent() {
return independent(0);
}
@ -71,12 +71,13 @@ public class TextWindowElement extends AnimatedOverlayElement {
TextWindowElement.this.nearScene = true;
return this;
}
public Builder attachKeyFrame() {
scene.builder().addLazyKeyframe();
scene.builder()
.addLazyKeyframe();
return this;
}
}
@Override
@ -86,7 +87,7 @@ public class TextWindowElement extends AnimatedOverlayElement {
if (fade < 1 / 16f)
return;
Vec2f sceneToScreen = vec != null ? scene.getTransform()
.sceneToScreen(vec) : new Vec2f(0, (screen.height - 200) / 2 + y - 8);
.sceneToScreen(vec) : new Vec2f(screen.width / 2, (screen.height - 200) / 2 + y - 8);
float yDiff = (screen.height / 2 - sceneToScreen.y - 10) / 100f;
int targetX = (int) (screen.width * MathHelper.lerp(yDiff * yDiff, 6f / 8, 5f / 8));
@ -122,7 +123,7 @@ public class TextWindowElement extends AnimatedOverlayElement {
}
FontHelper.drawSplitString(screen.getFontRenderer(), bakedText, targetX - 10, 3, textWidth,
ColorHelper.applyAlpha(brighterColor, fade));
ColorHelper.applyAlpha(brighterColor, fade));
RenderSystem.popMatrix();
}

View file

@ -4,6 +4,7 @@ import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Function;
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.IBearingTileEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity;
import com.simibubi.create.foundation.ponder.PonderScene;
@ -36,6 +37,14 @@ public class AnimateTileEntityInstruction extends TickingInstruction {
.orElse(0f));
}
public static AnimateTileEntityInstruction deployer(BlockPos location, float totalDelta, int ticks) {
return new AnimateTileEntityInstruction(location, totalDelta, ticks,
(w, f) -> castIfPresent(w, location, DeployerTileEntity.class)
.ifPresent(deployer -> deployer.setAnimatedOffset(f)),
(w) -> castIfPresent(w, location, DeployerTileEntity.class).map(deployer -> deployer.getHandOffset(1))
.orElse(0f));
}
protected AnimateTileEntityInstruction(BlockPos location, float totalDelta, int ticks,
BiConsumer<PonderWorld, Float> setter, Function<PonderWorld, Float> getter) {
super(false, ticks);
@ -57,7 +66,11 @@ public class AnimateTileEntityInstruction extends TickingInstruction {
public void tick(PonderScene scene) {
super.tick(scene);
PonderWorld world = scene.getWorld();
setter.accept(world, (float) (remainingTicks == 0 ? target : getter.apply(world) + deltaPerTick));
float current = getter.apply(world);
float next = (float) (remainingTicks == 0 ? target : current + deltaPerTick);
setter.accept(world, next);
if (remainingTicks == 0) // lock interpolation
setter.accept(world, next);
}
private static <T> Optional<T> castIfPresent(PonderWorld world, BlockPos pos, Class<T> teType) {

View file

@ -4,7 +4,6 @@
"ambientocclusion": false,
"textures": {
"18": "create:block/deployer",
"particle": "create:block/gearbox_top",
"mechanical_press_head": "create:block/mechanical_press_head",
"mechanical_press_pole": "create:block/mechanical_press_pole"
},
@ -25,15 +24,15 @@
},
{
"from": [6, 6, 14],
"to": [10, 9, 16],
"to": [10, 10, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 5]},
"faces": {
"north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"east": {"uv": [0, 0, 2, 3], "texture": "#mechanical_press_head"},
"east": {"uv": [3, 0, 5, 4], "rotation": 180, "texture": "#mechanical_press_head"},
"south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"west": {"uv": [0, 0, 2, 3], "texture": "#mechanical_press_head"},
"up": {"uv": [0, 0, 2, 4], "rotation": 270, "texture": "#mechanical_press_head"},
"down": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#mechanical_press_head"}
"west": {"uv": [3, 0, 5, 4], "texture": "#mechanical_press_head"},
"up": {"uv": [3, 0, 5, 4], "rotation": 270, "texture": "#mechanical_press_head"},
"down": {"uv": [3, 0, 5, 4], "rotation": 90, "texture": "#mechanical_press_head"}
}
},
{

View file

@ -4,7 +4,6 @@
"ambientocclusion": false,
"textures": {
"18": "create:block/deployer",
"particle": "create:block/gearbox_top",
"mechanical_press_head": "create:block/mechanical_press_head",
"mechanical_press_pole": "create:block/mechanical_press_pole"
},
@ -51,15 +50,15 @@
},
{
"from": [6, 6, 14],
"to": [10, 9, 18],
"to": [10, 9.95, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 5]},
"faces": {
"north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"east": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"east": {"uv": [3, 0, 7, 4], "texture": "#mechanical_press_head"},
"south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"west": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"west": {"uv": [3, 0, 7, 4], "texture": "#mechanical_press_head"},
"up": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#mechanical_press_head"},
"down": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#mechanical_press_head"}
"down": {"uv": [4, 8, 8, 12], "rotation": 90, "texture": "#mechanical_press_head"}
}
},
{

View file

@ -4,7 +4,6 @@
"ambientocclusion": false,
"textures": {
"18": "create:block/deployer",
"particle": "create:block/gearbox_top",
"mechanical_press_head": "create:block/mechanical_press_head",
"mechanical_press_pole": "create:block/mechanical_press_pole"
},
@ -25,14 +24,15 @@
},
{
"from": [6, 6, 14],
"to": [10, 9, 17],
"to": [10.05, 9.95, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]},
"faces": {
"north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"east": {"uv": [0, 0, 3, 3], "texture": "#mechanical_press_head"},
"east": {"uv": [4, 0, 7, 4], "texture": "#mechanical_press_head"},
"south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"},
"west": {"uv": [0, 0, 3, 3], "texture": "#mechanical_press_head"},
"up": {"uv": [0, 0, 3, 4], "rotation": 270, "texture": "#mechanical_press_head"},
"down": {"uv": [0, 0, 3, 4], "rotation": 90, "texture": "#mechanical_press_head"}
"west": {"uv": [3, 0, 6, 4], "texture": "#mechanical_press_head"},
"up": {"uv": [3, 0, 6, 4], "rotation": 270, "texture": "#mechanical_press_head"},
"down": {"uv": [4, 8, 7, 12], "rotation": 270, "texture": "#mechanical_press_head"}
}
},
{
@ -88,28 +88,28 @@
}
},
{
"from": [9, 8, 16],
"from": [9, 8, 15],
"to": [11, 10, 17],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]},
"faces": {
"north": {"uv": [0, 2, 2, 4], "rotation": 90, "texture": "#18"},
"east": {"uv": [0, 3, 2, 4], "rotation": 90, "texture": "#18"},
"east": {"uv": [0, 2, 2, 4], "rotation": 90, "texture": "#18"},
"south": {"uv": [0, 8, 2, 10], "rotation": 180, "texture": "#18"},
"west": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#18"},
"up": {"uv": [0, 0, 1, 2], "rotation": 90, "texture": "#18"},
"up": {"uv": [0, 0, 2, 2], "rotation": 90, "texture": "#18"},
"down": {"uv": [0, 0, 1, 2], "rotation": 270, "texture": "#18"}
}
},
{
"from": [5, 7, 15],
"to": [9, 10, 17],
"to": [10, 11, 17],
"rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]},
"faces": {
"north": {"uv": [0, 3, 4, 6], "texture": "#18"},
"east": {"uv": [1, 2, 3, 5], "texture": "#18"},
"north": {"uv": [6, 1, 10, 6], "rotation": 90, "texture": "#18"},
"east": {"uv": [0, 6, 3, 8], "rotation": 90, "texture": "#18"},
"south": {"uv": [0, 0, 3, 4], "rotation": 270, "texture": "#18"},
"west": {"uv": [0, 2, 2, 5], "texture": "#18"},
"up": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#18"},
"west": {"uv": [0, 2, 2, 6], "texture": "#18"},
"up": {"uv": [0, 0, 2, 5], "rotation": 90, "texture": "#18"},
"down": {"uv": [1, 4, 3, 8], "rotation": 270, "texture": "#18"}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.