mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-28 16:06:48 +01:00
Thinking with Pipes
- Implemented ponder scenes for Fluid Pipes and Copper Casing - Adjusted Fluid transfer, containment and rendering behaviours to function in 'virtual' environments
This commit is contained in:
parent
813a1ccaba
commit
0a376b719e
33 changed files with 722 additions and 131 deletions
|
@ -408,20 +408,20 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
|
|||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
c71f5246d2cb8e9913d1552d23fcc82c43cde7a0 assets/create/lang/en_ud.json
|
||||
ecb2b14e09668bb04ead075b25751af4d47d530a assets/create/lang/en_us.json
|
||||
32a311fee8bea2504ec80f4ecfabf64afc994109 assets/create/lang/unfinished/de_de.json
|
||||
af669cb92010605ebb73ea48bad9215e8efa216b assets/create/lang/unfinished/es_es.json
|
||||
23dce1fd449f6e0e747c10508f9551edb3912a69 assets/create/lang/unfinished/es_mx.json
|
||||
461155a3e7555df12d07748e7b8c7ca137f2ce69 assets/create/lang/unfinished/fr_fr.json
|
||||
9cb68aeeeb220466ec4766ac7fd4adc4a28a14ee assets/create/lang/unfinished/it_it.json
|
||||
1a287c031e3a9cd370e61b8912a2d1f39273b051 assets/create/lang/unfinished/ja_jp.json
|
||||
0eaa7a9f39f3cd8be5b88e61992cf3198b76689d assets/create/lang/unfinished/ko_kr.json
|
||||
db87b45eff6bd38dd1774510fa54429c47c194b9 assets/create/lang/unfinished/nl_nl.json
|
||||
4c90c5055d090adc5765e8ab80f73f7e22185151 assets/create/lang/unfinished/pl_pl.json
|
||||
bf04fa57b3e3efee8c6989b69f98fb374c8eff86 assets/create/lang/unfinished/pt_br.json
|
||||
c8f9159b77f8176c994fb008d9b57f9154f48c6d assets/create/lang/unfinished/ru_ru.json
|
||||
9f55faa2273c7493fe66aa7d369bfdd6edcb2a3f assets/create/lang/unfinished/zh_cn.json
|
||||
9333985168408e58aa76f9c865b2c5fad4691527 assets/create/lang/unfinished/zh_tw.json
|
||||
0352f128a214a76365bae7365d7904536ffccbba assets/create/lang/en_us.json
|
||||
d2fe2b5beb7c4b7d05842dc45da6630dd1f0611f assets/create/lang/unfinished/de_de.json
|
||||
a486966e82368a85f4c6c5c6b4fd17b0b6e260b4 assets/create/lang/unfinished/es_es.json
|
||||
94c05715d19c5ceced368c4aa4307b5184eb9d0f assets/create/lang/unfinished/es_mx.json
|
||||
44fe3efbe33085dc4248ba7ee94e35065aab5cca assets/create/lang/unfinished/fr_fr.json
|
||||
c53beea261e7a64bdbe397481a2010bb166b10ce assets/create/lang/unfinished/it_it.json
|
||||
2d75e6eb0c1683ef4856acf86b4f1e49d9e7b9b2 assets/create/lang/unfinished/ja_jp.json
|
||||
a0d8634f363ee47f3e5ac568d5b63cc6e25a4267 assets/create/lang/unfinished/ko_kr.json
|
||||
75e6dcc51ef14e39fd7ec1a87a0bbc945ef12637 assets/create/lang/unfinished/nl_nl.json
|
||||
93b883e54947c1a1869984bc4e764c34b7055998 assets/create/lang/unfinished/pl_pl.json
|
||||
fc093fa80821bfc4076261dcf1ec56c21edc2262 assets/create/lang/unfinished/pt_br.json
|
||||
c5b4013e8758f6bfde86eb2d25ec920b5d25c7d1 assets/create/lang/unfinished/ru_ru.json
|
||||
5bb493fd0d4a05d4b83db99eacea460cb96f8f1a assets/create/lang/unfinished/zh_cn.json
|
||||
9c049cc88deb8b319c6de28caa417eea9baa7f79 assets/create/lang/unfinished/zh_tw.json
|
||||
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
|
||||
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
|
||||
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
|
||||
|
|
|
@ -1751,6 +1751,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1771,8 +1774,20 @@
|
|||
"create.ponder.fan_source.text_2": "When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1024",
|
||||
"_": "Missing Localizations: 1039",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 725",
|
||||
"_": "Missing Localizations: 740",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1337",
|
||||
"_": "Missing Localizations: 1352",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1276",
|
||||
"_": "Missing Localizations: 1291",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 742",
|
||||
"_": "Missing Localizations: 757",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 106",
|
||||
"_": "Missing Localizations: 121",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "しかし、これは加工用の熱源には適していません",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"create.ponder.fan_direction.header": "ケース入りファンの気流",
|
||||
"create.ponder.fan_direction.text_1": "ケース入りファンは、回転力を利用して気流を生み出します",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 795",
|
||||
"_": "Missing Localizations: 810",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1659",
|
||||
"_": "Missing Localizations: 1674",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 82",
|
||||
"_": "Missing Localizations: 97",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "Nie będzie on dawał jednak ciepła",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"create.ponder.fan_direction.header": "Przepływ powietrza przez izolowane wiatraki",
|
||||
"create.ponder.fan_direction.text_1": "Izolowane wiatraki używają siły obrotowej, aby wytworzyć przepływ powietrza",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "Po zasileniu, wiatraki zaczną przesyłać siłę do przylegających komponentów",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1700",
|
||||
"_": "Missing Localizations: 1715",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 639",
|
||||
"_": "Missing Localizations: 654",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"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",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 125",
|
||||
"_": "Missing Localizations: 140",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "但是,这样的热源不足以给机器提加工供足够的热量",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"create.ponder.fan_direction.header": "鼓风机的气流",
|
||||
"create.ponder.fan_direction.text_1": "鼓风机使用旋转力来制造气流",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 118",
|
||||
"_": "Missing Localizations: 133",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1752,6 +1752,9 @@
|
|||
"create.ponder.empty_blaze_burner.text_5": "但是,這樣的熱源不足以給機器提加工供足夠的熱量",
|
||||
|
||||
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
|
||||
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
|
||||
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
|
||||
|
||||
"create.ponder.fan_direction.header": "鼓風機的氣流",
|
||||
"create.ponder.fan_direction.text_1": "鼓風機使用動能來製造氣流",
|
||||
|
@ -1772,8 +1775,20 @@
|
|||
"create.ponder.fan_source.text_2": "當鼓風機接受紅石訊號後,它便會向外供給動能",
|
||||
|
||||
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
|
||||
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
|
||||
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
|
||||
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
|
||||
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
|
||||
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
|
||||
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
|
||||
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
|
||||
|
||||
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
|
||||
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
|
||||
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
|
||||
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
|
||||
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
|
||||
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
|
||||
|
||||
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
|
||||
|
||||
|
|
|
@ -60,8 +60,8 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour {
|
|||
super.tick();
|
||||
World world = getWorld();
|
||||
BlockPos pos = getPos();
|
||||
boolean onClient = world.isRemote;
|
||||
|
||||
boolean onServer = !world.isRemote || tileEntity.isVirtual();
|
||||
|
||||
if (interfaces == null)
|
||||
return;
|
||||
Collection<PipeConnection> connections = interfaces.values();
|
||||
|
@ -81,7 +81,7 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!onClient) {
|
||||
if (onServer) {
|
||||
boolean sendUpdate = false;
|
||||
for (PipeConnection connection : connections) {
|
||||
sendUpdate |= connection.flipFlowsIfPressureReversed();
|
||||
|
@ -96,7 +96,7 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!onClient) {
|
||||
if (onServer) {
|
||||
FluidStack availableFlow = FluidStack.EMPTY;
|
||||
FluidStack collidingFlow = FluidStack.EMPTY;
|
||||
|
||||
|
@ -131,7 +131,7 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour {
|
|||
sendUpdate |= connection.manageFlows(world, pos, internalFluid, extractionPredicate);
|
||||
}
|
||||
|
||||
if (sendUpdate)
|
||||
if (sendUpdate)
|
||||
tileEntity.notifyUpdate();
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour {
|
|||
}
|
||||
|
||||
interfaces.values()
|
||||
.forEach(connection -> connection.deserializeNBT(nbt, clientPacket));
|
||||
.forEach(connection -> connection.deserializeNBT(nbt, tileEntity.getPos(), clientPacket));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -208,8 +208,9 @@ public class OpenEndedPipe extends FlowSource {
|
|||
return compound;
|
||||
}
|
||||
|
||||
public static OpenEndedPipe fromNBT(CompoundNBT compound) {
|
||||
OpenEndedPipe oep = new OpenEndedPipe(BlockFace.fromNBT(compound.getCompound("Location")));
|
||||
public static OpenEndedPipe fromNBT(CompoundNBT compound, BlockPos tilePos) {
|
||||
BlockFace fromNBT = BlockFace.fromNBT(compound.getCompound("Location"));
|
||||
OpenEndedPipe oep = new OpenEndedPipe(new BlockFace(tilePos, fromNBT.getFace()));
|
||||
oep.fluidHandler.readFromNBT(compound);
|
||||
oep.wasPulling = compound.getBoolean("Pulling");
|
||||
return oep;
|
||||
|
|
|
@ -239,7 +239,7 @@ public class PipeConnection {
|
|||
return source.orElse(null) instanceof OpenEndedPipe;
|
||||
}
|
||||
|
||||
public void deserializeNBT(CompoundNBT tag, boolean clientPacket) {
|
||||
public void deserializeNBT(CompoundNBT tag, BlockPos tilePos, boolean clientPacket) {
|
||||
CompoundNBT connectionData = tag.getCompound(side.getName2());
|
||||
|
||||
if (connectionData.contains("Pressure")) {
|
||||
|
@ -250,7 +250,7 @@ public class PipeConnection {
|
|||
|
||||
source = Optional.empty();
|
||||
if (connectionData.contains("OpenEnd"))
|
||||
source = Optional.of(OpenEndedPipe.fromNBT(connectionData.getCompound("OpenEnd")));
|
||||
source = Optional.of(OpenEndedPipe.fromNBT(connectionData.getCompound("OpenEnd"), tilePos));
|
||||
|
||||
if (connectionData.contains("Flow")) {
|
||||
CompoundNBT flowData = connectionData.getCompound("Flow");
|
||||
|
@ -367,8 +367,9 @@ public class PipeConnection {
|
|||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private void spawnParticlesInner(World world, BlockPos pos, FluidStack fluid) {
|
||||
if (!isRenderEntityWithinDistance(pos))
|
||||
return;
|
||||
if (world == Minecraft.getInstance().world)
|
||||
if (!isRenderEntityWithinDistance(pos))
|
||||
return;
|
||||
if (hasOpenEnd())
|
||||
spawnPouringLiquid(world, pos, fluid, 1);
|
||||
else if (r.nextFloat() < IDLE_PARTICLE_SPAWN_CHANCE)
|
||||
|
@ -377,8 +378,9 @@ public class PipeConnection {
|
|||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private void spawnSplashOnRimInner(World world, BlockPos pos, FluidStack fluid) {
|
||||
if (!isRenderEntityWithinDistance(pos))
|
||||
return;
|
||||
if (world == Minecraft.getInstance().world)
|
||||
if (!isRenderEntityWithinDistance(pos))
|
||||
return;
|
||||
spawnRimParticles(world, pos, fluid, SPLASH_PARTICLE_AMOUNT);
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,8 @@ public class PumpTileEntity extends KineticTileEntity {
|
|||
return;
|
||||
arrowDirection.chase(speed >= 0 ? 1 : -1, .5f, Chaser.EXP);
|
||||
arrowDirection.tickChaser();
|
||||
return;
|
||||
if (!isVirtual())
|
||||
return;
|
||||
}
|
||||
|
||||
sidesToUpdate.forEachWithContext((update, isFront) -> {
|
||||
|
@ -96,7 +97,7 @@ public class PumpTileEntity extends KineticTileEntity {
|
|||
return;
|
||||
if (speed != 0)
|
||||
reversed = speed < 0;
|
||||
if (world.isRemote)
|
||||
if (world.isRemote && !isVirtual())
|
||||
return;
|
||||
|
||||
BlockPos frontPos = pos.offset(getFront());
|
||||
|
|
|
@ -105,6 +105,10 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI
|
|||
if (fluidLevel != null)
|
||||
fluidLevel.tick();
|
||||
}
|
||||
|
||||
public BlockPos getLastKnownPos() {
|
||||
return lastKnownPos;
|
||||
}
|
||||
|
||||
public boolean isController() {
|
||||
return controller == null
|
||||
|
@ -157,6 +161,12 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI
|
|||
markDirty();
|
||||
sendData();
|
||||
}
|
||||
|
||||
if (isVirtual()) {
|
||||
if (fluidLevel == null)
|
||||
fluidLevel = new InterpolatedChasingValue().start(getFillState());
|
||||
fluidLevel.target(getFillState());
|
||||
}
|
||||
}
|
||||
|
||||
protected void setLuminosity(int luminosity) {
|
||||
|
@ -268,7 +278,7 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI
|
|||
}
|
||||
|
||||
public void setController(BlockPos controller) {
|
||||
if (world.isRemote)
|
||||
if (world.isRemote && !isVirtual())
|
||||
return;
|
||||
if (controller.equals(this.controller))
|
||||
return;
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.util.function.Function;
|
|||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
@ -39,6 +40,9 @@ public class FluidRenderer {
|
|||
|
||||
int color = fluidAttributes.getColor(fluidStack);
|
||||
IVertexBuilder builder = buffer.getBuffer(RenderType.getTranslucent());
|
||||
if (buffer instanceof SuperRenderTypeBuffer)
|
||||
builder = ((SuperRenderTypeBuffer) buffer).getLateBuffer(RenderType.getTranslucent());
|
||||
|
||||
MatrixStacker msr = MatrixStacker.of(ms);
|
||||
int blockLightIn = (light >> 4) & 0xf;
|
||||
int luminosity = Math.max(blockLightIn, fluidAttributes.getLuminosity(fluidStack));
|
||||
|
@ -87,6 +91,8 @@ public class FluidRenderer {
|
|||
|
||||
int color = fluidAttributes.getColor(fluidStack);
|
||||
IVertexBuilder builder = buffer.getBuffer(RenderType.getTranslucent());
|
||||
if (buffer instanceof SuperRenderTypeBuffer)
|
||||
builder = ((SuperRenderTypeBuffer) buffer).getLateBuffer(RenderType.getTranslucent());
|
||||
MatrixStacker msr = MatrixStacker.of(ms);
|
||||
Vector3d center = new Vector3d(xMin + (xMax - xMin) / 2, yMin + (yMax - yMin) / 2, zMin + (zMax - zMin) / 2);
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Map;
|
|||
import javax.annotation.Nullable;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity;
|
||||
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;
|
||||
|
@ -104,15 +105,26 @@ public class PonderWorld extends SchematicWorld {
|
|||
originalEntities.forEach(e -> EntityType.loadEntityUnchecked(e.serializeNBT(), this)
|
||||
.ifPresent(entities::add));
|
||||
particles.clearEffects();
|
||||
fixBeltTileEntities();
|
||||
fixControllerTileEntities();
|
||||
}
|
||||
|
||||
public void restoreBlocks(Selection selection) {
|
||||
selection.forEach(p -> {
|
||||
if (originalBlocks.containsKey(p))
|
||||
blocks.put(p, originalBlocks.get(p));
|
||||
if (originalTileEntities.containsKey(p)) {
|
||||
TileEntity te = TileEntity.createFromTag(originalBlocks.get(p), originalTileEntities.get(p)
|
||||
.write(new CompoundNBT()));
|
||||
onTEadded(te, te.getPos());
|
||||
tileEntities.put(p, te);
|
||||
}
|
||||
});
|
||||
scene.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw);
|
||||
redraw();
|
||||
}
|
||||
|
||||
private void redraw() {
|
||||
if (scene != null)
|
||||
scene.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw);
|
||||
}
|
||||
|
||||
public void pushFakeLight(int light) {
|
||||
|
@ -226,6 +238,11 @@ public class PonderWorld extends SchematicWorld {
|
|||
: iparticlefactory.makeParticle(data, asClientWorld.getValue(), x, y, z, mx, my, mz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setBlockState(BlockPos pos, BlockState arg1, int arg2) {
|
||||
return super.setBlockState(pos, arg1, arg2);
|
||||
}
|
||||
|
||||
public void addParticle(Particle p) {
|
||||
if (p != null)
|
||||
particles.addParticle(p);
|
||||
|
@ -240,20 +257,34 @@ public class PonderWorld extends SchematicWorld {
|
|||
smartTileEntity.markVirtual();
|
||||
}
|
||||
|
||||
public void fixBeltTileEntities() {
|
||||
public void fixControllerTileEntities() {
|
||||
for (TileEntity tileEntity : tileEntities.values()) {
|
||||
if (!(tileEntity instanceof BeltTileEntity))
|
||||
continue;
|
||||
BeltTileEntity beltTileEntity = (BeltTileEntity) tileEntity;
|
||||
if (!beltTileEntity.isController())
|
||||
continue;
|
||||
BlockPos controllerPos = tileEntity.getPos();
|
||||
for (BlockPos blockPos : BeltBlock.getBeltChain(this, controllerPos)) {
|
||||
TileEntity tileEntity2 = getTileEntity(blockPos);
|
||||
if (!(tileEntity2 instanceof BeltTileEntity))
|
||||
if (tileEntity instanceof BeltTileEntity) {
|
||||
BeltTileEntity beltTileEntity = (BeltTileEntity) tileEntity;
|
||||
if (!beltTileEntity.isController())
|
||||
continue;
|
||||
BeltTileEntity belt2 = (BeltTileEntity) tileEntity2;
|
||||
belt2.setController(controllerPos);
|
||||
BlockPos controllerPos = tileEntity.getPos();
|
||||
for (BlockPos blockPos : BeltBlock.getBeltChain(this, controllerPos)) {
|
||||
TileEntity tileEntity2 = getTileEntity(blockPos);
|
||||
if (!(tileEntity2 instanceof BeltTileEntity))
|
||||
continue;
|
||||
BeltTileEntity belt2 = (BeltTileEntity) tileEntity2;
|
||||
belt2.setController(controllerPos);
|
||||
}
|
||||
}
|
||||
if (tileEntity instanceof FluidTankTileEntity) {
|
||||
FluidTankTileEntity fluidTankTileEntity = (FluidTankTileEntity) tileEntity;
|
||||
BlockPos lastKnown = fluidTankTileEntity.getLastKnownPos();
|
||||
BlockPos current = fluidTankTileEntity.getPos();
|
||||
if (lastKnown == null || current == null)
|
||||
continue;
|
||||
if (fluidTankTileEntity.isController())
|
||||
continue;
|
||||
if (!lastKnown.equals(current)) {
|
||||
BlockPos newControllerPos = fluidTankTileEntity.getController()
|
||||
.add(current.subtract(lastKnown));
|
||||
fluidTankTileEntity.setController(newControllerPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -302,7 +333,7 @@ public class PonderWorld extends SchematicWorld {
|
|||
protected BlockState processBlockStateForPrinting(BlockState state) {
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isBlockLoaded(BlockPos pos) {
|
||||
return true; // fix particle lighting
|
||||
|
|
|
@ -14,6 +14,8 @@ import com.simibubi.create.content.contraptions.components.crafter.ConnectedInpu
|
|||
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem;
|
||||
import com.simibubi.create.content.contraptions.fluids.FluidPropagator;
|
||||
import com.simibubi.create.content.contraptions.fluids.PumpTileEntity;
|
||||
import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity;
|
||||
|
@ -739,6 +741,10 @@ public class SceneBuilder {
|
|||
});
|
||||
}
|
||||
|
||||
public void propagatePipeChange(BlockPos pos) {
|
||||
modifyTileEntity(pos, PumpTileEntity.class, te -> te.onSpeedChanged(0));
|
||||
}
|
||||
|
||||
public void setFilterData(Selection selection, Class<? extends TileEntity> teType, ItemStack filter) {
|
||||
modifyTileNBT(selection, teType, nbt -> {
|
||||
nbt.put("Filter", filter.serializeNBT());
|
||||
|
|
|
@ -45,6 +45,7 @@ public class DebugScenes {
|
|||
add(DebugScenes::birbScene);
|
||||
add(DebugScenes::sectionsScene);
|
||||
add(DebugScenes::itemScene);
|
||||
add(DebugScenes::pipeScene);
|
||||
}
|
||||
|
||||
private static void add(PonderStoryBoard sb) {
|
||||
|
@ -433,5 +434,17 @@ public class DebugScenes {
|
|||
|
||||
scene.world.modifyEntities(ItemEntity.class, Entity::remove);
|
||||
}
|
||||
|
||||
public static void pipeScene(SceneBuilder scene, SceneBuildingUtil util) {
|
||||
scene.title("debug_pipes", "Manipulating Items");
|
||||
scene.configureBasePlate(0, 0, 5);
|
||||
scene.world.showSection(util.select.layer(0), Direction.UP);
|
||||
scene.idle(10);
|
||||
scene.world.showSection(util.select.layersFrom(1), Direction.DOWN);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -242,11 +242,11 @@ public class PonderIndex {
|
|||
// Fluids
|
||||
|
||||
PonderRegistry.forComponents(AllBlocks.FLUID_PIPE)
|
||||
.addStoryBoard("debug/scene_1", PipeScenes::flow, PonderTag.FLUIDS)
|
||||
.addStoryBoard("debug/scene_1", PipeScenes::interaction)
|
||||
.addStoryBoard("debug/scene_1", PipeScenes::encasing);
|
||||
.addStoryBoard("fluid_pipe/flow", PipeScenes::flow, PonderTag.FLUIDS)
|
||||
.addStoryBoard("fluid_pipe/interaction", PipeScenes::interaction)
|
||||
.addStoryBoard("fluid_pipe/encasing", PipeScenes::encasing);
|
||||
PonderRegistry.forComponents(AllBlocks.COPPER_CASING)
|
||||
.addStoryBoard("debug/scene_1", PipeScenes::encasing);
|
||||
.addStoryBoard("fluid_pipe/encasing", PipeScenes::encasing);
|
||||
PonderRegistry.forComponents(AllBlocks.MECHANICAL_PUMP)
|
||||
.addStoryBoard("debug/scene_1", PumpScenes::flow, PonderTag.FLUIDS, PonderTag.KINETIC_APPLIANCES)
|
||||
.addStoryBoard("debug/scene_1", PumpScenes::speed);
|
||||
|
|
|
@ -1,76 +1,364 @@
|
|||
package com.simibubi.create.foundation.ponder.content.fluid;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.fluids.PumpBlock;
|
||||
import com.simibubi.create.content.contraptions.fluids.actors.ItemDrainTileEntity;
|
||||
import com.simibubi.create.content.contraptions.fluids.pipes.AxisPipeBlock;
|
||||
import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity;
|
||||
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.content.PonderPalette;
|
||||
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
|
||||
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Pointing;
|
||||
|
||||
import net.minecraft.block.BeehiveBlock;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.fluid.Fluids;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.state.BooleanProperty;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
|
||||
|
||||
public class PipeScenes {
|
||||
|
||||
public static void flow(SceneBuilder scene, SceneBuildingUtil util) {
|
||||
scene.title("fluid_pipe_flow", "Moving Fluids using Copper Pipes");
|
||||
scene.configureBasePlate(0, 0, 5);
|
||||
scene.world.showSection(util.select.layer(0), Direction.UP);
|
||||
scene.showBasePlate();
|
||||
scene.idle(5);
|
||||
scene.world.showSection(util.select.layersFrom(1), Direction.DOWN);
|
||||
|
||||
// scene.overlay.showText(50)
|
||||
// .text("")
|
||||
// .attachKeyFrame()
|
||||
// .placeNearTarget()
|
||||
// .pointAt(util.vector.topOf(2, 0, 2));
|
||||
BlockState pipeState = AllBlocks.FLUID_PIPE.getDefaultState()
|
||||
.with(FluidPipeBlock.UP, false)
|
||||
.with(FluidPipeBlock.DOWN, false);
|
||||
|
||||
/*
|
||||
* Use Fluid Pipes to connect two fluid sources, containers or empty spaces
|
||||
*
|
||||
* Using a wrench, a straight pipe segment can be given a window
|
||||
*
|
||||
* Windowed pipes will not connect to any other adjancent pipe segements
|
||||
*
|
||||
* Powered by Mechanical Pumps, Fluid Pipes can be used to transport Fluids between endpoints
|
||||
*
|
||||
* Until the flow finds a target, nothing is extracted from the source
|
||||
*
|
||||
* Once a connection is established, fluids are gradually transferred between the endpoints
|
||||
*
|
||||
* Thus, the Pipe blocks themselves never 'physically' contain any fluid
|
||||
*/
|
||||
scene.world.setBlock(util.grid.at(2, 1, 1), pipeState.with(FluidPipeBlock.NORTH, false)
|
||||
.with(FluidPipeBlock.SOUTH, false), false);
|
||||
scene.world.setBlock(util.grid.at(1, 1, 2), pipeState.with(FluidPipeBlock.WEST, false)
|
||||
.with(FluidPipeBlock.EAST, false), false);
|
||||
|
||||
Selection largeCog = util.select.position(5, 0, 1);
|
||||
Selection kinetics = util.select.fromTo(5, 1, 0, 3, 1, 0);
|
||||
Selection tank = util.select.fromTo(4, 1, 2, 4, 2, 2);
|
||||
Selection tank2 = util.select.fromTo(0, 1, 3, 0, 2, 3);
|
||||
|
||||
Selection strayPipes = util.select.fromTo(2, 1, 2, 2, 2, 2)
|
||||
.add(util.select.fromTo(1, 2, 2, 1, 3, 2));
|
||||
|
||||
scene.world.showSection(tank, Direction.DOWN);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(tank2, Direction.DOWN);
|
||||
FluidStack content = new FluidStack(Fluids.LAVA, 10000);
|
||||
scene.world.modifyTileEntity(util.grid.at(4, 1, 2), FluidTankTileEntity.class, te -> te.getTankInventory()
|
||||
.fill(content, FluidAction.EXECUTE));
|
||||
scene.idle(10);
|
||||
|
||||
for (int i = 4; i >= 1; i--) {
|
||||
scene.world.showSection(util.select.position(i, 1, 1), i == 4 ? Direction.SOUTH : Direction.EAST);
|
||||
scene.idle(3);
|
||||
}
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("Fluid Pipes can connect two or more fluid sources and targets")
|
||||
.attachKeyFrame()
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.topOf(1, 1, 1));
|
||||
|
||||
for (int i = 2; i <= 3; i++) {
|
||||
scene.world.showSection(util.select.position(1, 1, i), Direction.NORTH);
|
||||
scene.idle(3);
|
||||
}
|
||||
|
||||
scene.idle(60);
|
||||
|
||||
scene.overlay.showControls(new InputWindowElement(util.vector.centerOf(2, 1, 1), Pointing.DOWN).rightClick()
|
||||
.withWrench(), 40);
|
||||
scene.idle(7);
|
||||
scene.world.restoreBlocks(util.select.position(2, 1, 1));
|
||||
scene.overlay.showText(70)
|
||||
.attachKeyFrame()
|
||||
.pointAt(util.vector.centerOf(2, 1, 1))
|
||||
.placeNearTarget()
|
||||
.text("Using a wrench, a straight pipe segment can be given a window");
|
||||
scene.idle(40);
|
||||
|
||||
scene.overlay.showControls(new InputWindowElement(util.vector.centerOf(1, 1, 2), Pointing.DOWN).rightClick()
|
||||
.withWrench(), 10);
|
||||
scene.idle(7);
|
||||
scene.world.restoreBlocks(util.select.position(1, 1, 2));
|
||||
scene.idle(40);
|
||||
|
||||
Vector3d center = util.vector.centerOf(2, 1, 2);
|
||||
AxisAlignedBB bb = new AxisAlignedBB(center, center).grow(1 / 6f);
|
||||
AxisAlignedBB bb1 = bb.offset(-0.5, 0, 0);
|
||||
AxisAlignedBB bb2 = bb.offset(0, 0, -0.5);
|
||||
|
||||
scene.world.showSection(strayPipes, Direction.DOWN);
|
||||
scene.idle(10);
|
||||
scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb1, bb, 1);
|
||||
scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb2, bb, 1);
|
||||
scene.idle(1);
|
||||
scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb1, bb1, 50);
|
||||
scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb2, bb2, 50);
|
||||
scene.idle(10);
|
||||
scene.overlay.showText(55)
|
||||
.attachKeyFrame()
|
||||
.pointAt(util.vector.centerOf(2, 1, 2))
|
||||
.placeNearTarget()
|
||||
.colored(PonderPalette.RED)
|
||||
.text("Windowed pipes will not connect to any other adjacent pipe segments");
|
||||
scene.idle(60);
|
||||
scene.world.hideSection(strayPipes, Direction.UP);
|
||||
scene.idle(10);
|
||||
|
||||
BlockPos pumpPos = util.grid.at(3, 1, 1);
|
||||
scene.world.setBlock(pumpPos, AllBlocks.MECHANICAL_PUMP.getDefaultState()
|
||||
.with(PumpBlock.FACING, Direction.WEST), true);
|
||||
scene.idle(10);
|
||||
scene.world.showSection(largeCog, Direction.UP);
|
||||
scene.world.showSection(kinetics, Direction.SOUTH);
|
||||
scene.idle(10);
|
||||
scene.world.setKineticSpeed(util.select.position(pumpPos), 32);
|
||||
scene.world.propagatePipeChange(pumpPos);
|
||||
|
||||
scene.overlay.showText(70)
|
||||
.attachKeyFrame()
|
||||
.pointAt(util.vector.topOf(pumpPos))
|
||||
.placeNearTarget()
|
||||
.text("Powered by Mechanical Pumps, the Pipes can transport Fluids");
|
||||
scene.idle(85);
|
||||
scene.overlay.showSelectionWithText(tank, 40)
|
||||
.colored(PonderPalette.RED)
|
||||
.placeNearTarget()
|
||||
.text("No fluid is being extracted at first");
|
||||
scene.idle(90);
|
||||
|
||||
scene.overlay.showOutline(PonderPalette.GREEN, new Object(), tank, 100);
|
||||
scene.idle(5);
|
||||
scene.overlay.showOutline(PonderPalette.GREEN, new Object(), tank2, 100);
|
||||
scene.idle(5);
|
||||
scene.overlay.showText(100)
|
||||
.attachKeyFrame()
|
||||
.independent()
|
||||
.text("Once the flow connects them, the endpoints gradually transfer their contents");
|
||||
scene.overlay.showLine(PonderPalette.GREEN, util.vector.blockSurface(util.grid.at(4, 2, 2), Direction.WEST),
|
||||
util.vector.blockSurface(util.grid.at(0, 2, 3), Direction.EAST), 80);
|
||||
|
||||
scene.world.multiplyKineticSpeed(util.select.everywhere(), 2);
|
||||
scene.world.propagatePipeChange(pumpPos);
|
||||
scene.effects.rotationSpeedIndicator(pumpPos);
|
||||
|
||||
scene.idle(120);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("Thus, the Pipe blocks themselves never 'physically' contain any fluid")
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.topOf(1, 1, 1));
|
||||
scene.idle(50);
|
||||
}
|
||||
|
||||
public static void interaction(SceneBuilder scene, SceneBuildingUtil util) {
|
||||
scene.title("fluid_pipe_interaction", "Draining and Filling fluid containers");
|
||||
scene.configureBasePlate(0, 0, 5);
|
||||
scene.world.showSection(util.select.layer(0), Direction.UP);
|
||||
scene.configureBasePlate(0, 1, 5);
|
||||
scene.showBasePlate();
|
||||
scene.idle(5);
|
||||
scene.world.showSection(util.select.layersFrom(1), Direction.DOWN);
|
||||
|
||||
/*
|
||||
* Endpoints of a pipe network can interact with a variety of blocks
|
||||
*
|
||||
* Any block with fluid storage capabities can be filled or drained
|
||||
*
|
||||
* Source blocks right in front of an open end can be picked up...
|
||||
*
|
||||
* ...while spilling into empty spaces can create fluid sources
|
||||
*
|
||||
* Pipes can also extract fluids from a handful of blocks directly
|
||||
*/
|
||||
|
||||
BlockPos pumpPos = util.grid.at(2, 1, 4);
|
||||
Selection largeCog = util.select.position(5, 0, 4);
|
||||
Selection kinetics = util.select.fromTo(5, 1, 5, 2, 1, 5);
|
||||
Selection pipes = util.select.fromTo(1, 1, 4, 3, 1, 3)
|
||||
.add(util.select.position(3, 1, 2));
|
||||
Selection tank = util.select.fromTo(4, 1, 3, 4, 2, 3);
|
||||
Selection drain = util.select.position(1, 1, 2);
|
||||
Selection basin = util.select.position(3, 1, 1);
|
||||
|
||||
Selection waterSourceS = util.select.position(1, 1, 1);
|
||||
Selection waterTargetS = util.select.position(4, 1, 1);
|
||||
Selection waterTarget2S = util.select.fromTo(4, 0, 0, 4, 1, 0);
|
||||
|
||||
scene.world.setKineticSpeed(util.select.position(pumpPos), 0);
|
||||
|
||||
scene.world.showSection(pipes, Direction.DOWN);
|
||||
scene.idle(10);
|
||||
scene.world.showSection(basin, Direction.SOUTH);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(drain, Direction.SOUTH);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(tank, Direction.WEST);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("Endpoints of a pipe network can interact with a variety of blocks")
|
||||
.attachKeyFrame()
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 3), Direction.NORTH));
|
||||
scene.idle(60);
|
||||
scene.world.showSection(largeCog, Direction.UP);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(kinetics, Direction.NORTH);
|
||||
scene.idle(10);
|
||||
scene.world.setKineticSpeed(util.select.position(pumpPos), 64);
|
||||
BlockPos drainPos = util.grid.at(1, 1, 2);
|
||||
scene.world.modifyTileEntity(drainPos, ItemDrainTileEntity.class,
|
||||
te -> te.getBehaviour(SmartFluidTankBehaviour.TYPE)
|
||||
.allowInsertion()
|
||||
.getPrimaryHandler()
|
||||
.fill(new FluidStack(Fluids.WATER, 1500), FluidAction.EXECUTE));
|
||||
|
||||
scene.idle(50);
|
||||
scene.overlay.showOutline(PonderPalette.MEDIUM, new Object(), drain, 40);
|
||||
scene.idle(5);
|
||||
scene.overlay.showOutline(PonderPalette.MEDIUM, new Object(), tank, 40);
|
||||
scene.idle(5);
|
||||
scene.overlay.showOutline(PonderPalette.MEDIUM, new Object(), basin, 40);
|
||||
scene.idle(5);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("Any block with fluid storage capabilities can be filled or drained")
|
||||
.attachKeyFrame()
|
||||
.colored(PonderPalette.MEDIUM)
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.blockSurface(drainPos, Direction.UP));
|
||||
scene.idle(100);
|
||||
|
||||
scene.world.hideSection(drain, Direction.NORTH);
|
||||
scene.idle(5);
|
||||
scene.world.hideSection(tank, Direction.EAST);
|
||||
scene.idle(5);
|
||||
scene.world.setBlock(drainPos, Blocks.AIR.getDefaultState(), false);
|
||||
scene.world.propagatePipeChange(pumpPos);
|
||||
scene.world.hideSection(basin, Direction.NORTH);
|
||||
scene.idle(5);
|
||||
scene.world.setBlock(util.grid.at(3, 1, 1), Blocks.AIR.getDefaultState(), false);
|
||||
scene.idle(5);
|
||||
scene.world.setBlock(util.grid.at(3, 1, 3), AllBlocks.GLASS_FLUID_PIPE.getDefaultState()
|
||||
.with(AxisPipeBlock.AXIS, Axis.Z), false);
|
||||
scene.idle(10);
|
||||
scene.world.multiplyKineticSpeed(util.select.everywhere(), 2);
|
||||
scene.world.propagatePipeChange(pumpPos);
|
||||
ElementLink<WorldSectionElement> water = scene.world.showIndependentSection(waterSourceS, Direction.DOWN);
|
||||
scene.world.moveSection(water, util.vector.of(0, 0, 1), 0);
|
||||
scene.idle(10);
|
||||
scene.world.setBlock(drainPos, Blocks.WATER.getDefaultState(), false);
|
||||
scene.idle(20);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("Source blocks right in front of an open end can be picked up...")
|
||||
.attachKeyFrame()
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.blockSurface(drainPos, Direction.SOUTH));
|
||||
|
||||
scene.idle(40);
|
||||
scene.world.setBlock(drainPos.north(), Blocks.AIR.getDefaultState(), false);
|
||||
scene.idle(40);
|
||||
ElementLink<WorldSectionElement> target = scene.world.showIndependentSection(waterTargetS, Direction.UP);
|
||||
scene.world.moveSection(target, util.vector.of(-1, 0, 0), 0);
|
||||
scene.idle(5);
|
||||
scene.world.showSectionAndMerge(waterTarget2S, Direction.UP, target);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("...while spilling into empty spaces can create fluid sources")
|
||||
.attachKeyFrame()
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 2), Direction.NORTH));
|
||||
|
||||
scene.idle(80);
|
||||
scene.world.hideIndependentSection(target, Direction.DOWN);
|
||||
scene.idle(5);
|
||||
scene.world.setBlock(drainPos, Blocks.BEE_NEST.getDefaultState()
|
||||
.with(BeehiveBlock.HONEY_LEVEL, 5), false);
|
||||
scene.world.showSection(drain, Direction.DOWN);
|
||||
scene.world.setBlock(util.grid.at(3, 1, 2), AllBlocks.FLUID_TANK.getDefaultState(), false);
|
||||
scene.world.propagatePipeChange(pumpPos);
|
||||
scene.idle(15);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.text("Pipes can also extract fluids from a handful of other blocks directly")
|
||||
.attachKeyFrame()
|
||||
.placeNearTarget()
|
||||
.pointAt(util.vector.topOf(drainPos));
|
||||
|
||||
scene.idle(60);
|
||||
scene.world.setBlock(drainPos, Blocks.BEE_NEST.getDefaultState()
|
||||
.with(BeehiveBlock.HONEY_LEVEL, 0), false);
|
||||
}
|
||||
|
||||
public static void encasing(SceneBuilder scene, SceneBuildingUtil util) {
|
||||
scene.title("encased_fluid_pipe", "Encasing Fluid Pipes");
|
||||
scene.configureBasePlate(0, 0, 5);
|
||||
scene.world.showSection(util.select.layer(0), Direction.UP);
|
||||
scene.showBasePlate();
|
||||
scene.idle(5);
|
||||
scene.world.showSection(util.select.layersFrom(1), Direction.DOWN);
|
||||
|
||||
/*
|
||||
* Copper Casing can be used to decorate Fluid Pipes
|
||||
*
|
||||
* Aside from being conceiled, encased pipes are locked into their connectivity state
|
||||
*
|
||||
* Adding and Removing Pipes around it will no longer affect its shape
|
||||
*/
|
||||
scene.world.showSection(util.select.position(2, 0, 5), Direction.UP);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(util.select.layer(1), Direction.DOWN);
|
||||
scene.idle(15);
|
||||
|
||||
BlockState copperEncased = AllBlocks.ENCASED_FLUID_PIPE.getDefaultState()
|
||||
.with(FluidPipeBlock.SOUTH, true)
|
||||
.with(FluidPipeBlock.WEST, true);
|
||||
ItemStack casingItem = AllBlocks.COPPER_CASING.asStack();
|
||||
|
||||
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(3, 1, 1), Pointing.DOWN).rightClick()
|
||||
.withItem(casingItem), 60);
|
||||
scene.idle(7);
|
||||
scene.world.setBlock(util.grid.at(3, 1, 1), copperEncased, true);
|
||||
scene.idle(10);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.placeNearTarget()
|
||||
.text("Copper Casing can be used to decorate Fluid Pipes")
|
||||
.attachKeyFrame()
|
||||
.pointAt(util.vector.topOf(3, 1, 1));
|
||||
|
||||
scene.idle(70);
|
||||
scene.world.destroyBlock(util.grid.at(2, 1, 1));
|
||||
scene.world.modifyBlock(util.grid.at(1, 1, 1), s -> s.with(FluidPipeBlock.EAST, false)
|
||||
.with(FluidPipeBlock.NORTH, true), false);
|
||||
scene.idle(5);
|
||||
|
||||
scene.overlay.showLine(PonderPalette.RED, util.vector.of(1.5, 1.75, 1), util.vector.of(1.5, 1.75, 2), 80);
|
||||
scene.idle(5);
|
||||
scene.addKeyframe();
|
||||
scene.overlay.showLine(PonderPalette.GREEN, util.vector.of(3.5, 2, 1.5), util.vector.of(3.5, 2, 2), 80);
|
||||
scene.overlay.showLine(PonderPalette.GREEN, util.vector.of(3, 2, 1.5), util.vector.of(3.5, 2, 1.5), 80);
|
||||
|
||||
scene.idle(25);
|
||||
scene.overlay.showText(60)
|
||||
.placeNearTarget()
|
||||
.text("Aside from being conceiled, Encased Pipes are locked into their connectivity state")
|
||||
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 1), Direction.WEST));
|
||||
|
||||
scene.idle(70);
|
||||
BlockState defaultState = AllBlocks.FLUID_PIPE.getDefaultState();
|
||||
for (BooleanProperty booleanProperty : FluidPipeBlock.FACING_TO_PROPERTY_MAP.values())
|
||||
defaultState = defaultState.with(booleanProperty, false);
|
||||
|
||||
scene.world.setBlock(util.grid.at(3, 2, 1), defaultState.with(FluidPipeBlock.EAST, true)
|
||||
.with(FluidPipeBlock.WEST, true), false);
|
||||
scene.world.setBlock(util.grid.at(1, 2, 1), defaultState.with(FluidPipeBlock.UP, true)
|
||||
.with(FluidPipeBlock.DOWN, true), false);
|
||||
scene.world.showSection(util.select.layer(2), Direction.DOWN);
|
||||
scene.idle(10);
|
||||
scene.world.modifyBlock(util.grid.at(1, 1, 1), s -> s.with(FluidPipeBlock.UP, true)
|
||||
.with(FluidPipeBlock.NORTH, false), false);
|
||||
scene.idle(20);
|
||||
|
||||
scene.overlay.showText(60)
|
||||
.placeNearTarget()
|
||||
.colored(PonderPalette.RED)
|
||||
.text("It will no longer react to any neighbouring blocks being added or removed")
|
||||
.attachKeyFrame()
|
||||
.pointAt(util.vector.centerOf(3, 2, 1));
|
||||
scene.idle(20);
|
||||
}
|
||||
|
||||
public static void valve(SceneBuilder scene, SceneBuildingUtil util) {
|
||||
|
@ -79,11 +367,12 @@ public class PipeScenes {
|
|||
scene.world.showSection(util.select.layer(0), Direction.UP);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(util.select.layersFrom(1), Direction.DOWN);
|
||||
|
||||
|
||||
/*
|
||||
* Valve pipes propagate flows in a straight line
|
||||
*
|
||||
* When given Rotational Force in the closing direction, the valve will stop the fluid flow
|
||||
* When given Rotational Force in the closing direction, the valve will stop the
|
||||
* fluid flow
|
||||
*
|
||||
* It can be re-opened by reversing the input rotation
|
||||
*/
|
||||
|
@ -95,17 +384,21 @@ public class PipeScenes {
|
|||
scene.world.showSection(util.select.layer(0), Direction.UP);
|
||||
scene.idle(5);
|
||||
scene.world.showSection(util.select.layersFrom(1), Direction.DOWN);
|
||||
|
||||
|
||||
/*
|
||||
* Smart pipes propagate flows in a straight line
|
||||
*
|
||||
* When placed directly at the source, they can specify the type of fluid to extract
|
||||
* When placed directly at the source, they can specify the type of fluid to
|
||||
* extract
|
||||
*
|
||||
* Simply Right-Click their filter slot with any item containing the desired fluid
|
||||
* Simply Right-Click their filter slot with any item containing the desired
|
||||
* fluid
|
||||
*
|
||||
* When placed further down a pipe network, smart pipes will only let matching fluids continue past
|
||||
* When placed further down a pipe network, smart pipes will only let matching
|
||||
* fluids continue past
|
||||
*
|
||||
* In this configuration, their filter has no impact on whether a fluid can enter the pipe network
|
||||
* In this configuration, their filter has no impact on whether a fluid can
|
||||
* enter the pipe network
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ public class WorldSectionElement extends AnimatedSceneElement {
|
|||
public static final Compartment<Pair<Integer, Integer>> DOC_WORLD_SECTION = new Compartment<>();
|
||||
|
||||
List<TileEntity> renderedTileEntities;
|
||||
List<TileEntity> tickableTileEntities;
|
||||
Selection section;
|
||||
boolean redraw;
|
||||
|
||||
|
@ -256,7 +257,9 @@ public class WorldSectionElement extends AnimatedSceneElement {
|
|||
loadTEsIfMissing(scene.getWorld());
|
||||
renderedTileEntities.removeIf(te -> scene.getWorld()
|
||||
.getTileEntity(te.getPos()) != te);
|
||||
renderedTileEntities.forEach(te -> {
|
||||
tickableTileEntities.removeIf(te -> scene.getWorld()
|
||||
.getTileEntity(te.getPos()) != te);
|
||||
tickableTileEntities.forEach(te -> {
|
||||
if (te instanceof ITickableTileEntity)
|
||||
((ITickableTileEntity) te).tick();
|
||||
});
|
||||
|
@ -264,19 +267,23 @@ public class WorldSectionElement extends AnimatedSceneElement {
|
|||
|
||||
@Override
|
||||
public void whileSkipping(PonderScene scene) {
|
||||
if (redraw)
|
||||
if (redraw) {
|
||||
renderedTileEntities = null;
|
||||
tickableTileEntities = null;
|
||||
}
|
||||
redraw = false;
|
||||
}
|
||||
|
||||
protected void loadTEsIfMissing(PonderWorld world) {
|
||||
if (renderedTileEntities != null)
|
||||
return;
|
||||
tickableTileEntities = new ArrayList<>();
|
||||
renderedTileEntities = new ArrayList<>();
|
||||
section.forEach(pos -> {
|
||||
TileEntity tileEntity = world.getTileEntity(pos);
|
||||
if (tileEntity == null)
|
||||
return;
|
||||
tickableTileEntities.add(tileEntity);
|
||||
renderedTileEntities.add(tileEntity);
|
||||
tileEntity.updateContainingBlockInfo();
|
||||
});
|
||||
|
@ -294,8 +301,10 @@ public class WorldSectionElement extends AnimatedSceneElement {
|
|||
int light = -1;
|
||||
if (fade != 1)
|
||||
light = (int) (MathHelper.lerp(fade, 5, 14));
|
||||
if (redraw)
|
||||
if (redraw) {
|
||||
renderedTileEntities = null;
|
||||
tickableTileEntities = null;
|
||||
}
|
||||
transformMS(ms, pt);
|
||||
world.pushFakeLight(light);
|
||||
renderTileEntities(world, ms, buffer, pt);
|
||||
|
@ -352,7 +361,7 @@ public class WorldSectionElement extends AnimatedSceneElement {
|
|||
if (selectedBlock == null)
|
||||
return;
|
||||
BlockState blockState = world.getBlockState(selectedBlock);
|
||||
if (blockState.isAir(world, selectedBlock))
|
||||
if (blockState.isAir())
|
||||
return;
|
||||
VoxelShape shape =
|
||||
blockState.getShape(world, selectedBlock, ISelectionContext.forEntity(Minecraft.getInstance().player));
|
||||
|
|
|
@ -102,7 +102,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
|||
|
||||
if (syncCooldown > 0) {
|
||||
syncCooldown--;
|
||||
if (syncCooldown == 0 && queuedSync)
|
||||
if (syncCooldown == 0 && queuedSync)
|
||||
updateFluids();
|
||||
}
|
||||
|
||||
|
@ -203,7 +203,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
|||
return 0;
|
||||
return super.fill(resource, action);
|
||||
}
|
||||
|
||||
|
||||
public int forceFill(FluidStack resource, FluidAction action) {
|
||||
return super.fill(resource, action);
|
||||
}
|
||||
|
@ -244,6 +244,9 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
|||
fluidLevel.chase(tank.getFluidAmount() / (float) tank.getCapacity(), .25, Chaser.EXP);
|
||||
if (!getWorld().isRemote)
|
||||
sendDataLazily();
|
||||
if (tileEntity.isVirtual() && !tank.getFluid()
|
||||
.isEmpty())
|
||||
renderedFluid = tank.getFluid();
|
||||
}
|
||||
|
||||
public FluidStack getRenderedFluid() {
|
||||
|
@ -272,7 +275,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
|||
.isEmpty())
|
||||
renderedFluid = tank.getFluid();
|
||||
}
|
||||
|
||||
|
||||
public boolean isEmpty(float partialTicks) {
|
||||
FluidStack renderedFluid = getRenderedFluid();
|
||||
if (renderedFluid.isEmpty())
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.simibubi.create.foundation.utility;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.text.IFormattableTextComponent;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
@ -14,23 +16,27 @@ import net.minecraftforge.fml.common.thread.EffectiveSide;
|
|||
public class Debug {
|
||||
|
||||
@Deprecated
|
||||
public static void debugChat(ITextComponent message) {
|
||||
public static void debugChat(String message) {
|
||||
if (Minecraft.getInstance().player != null)
|
||||
Minecraft.getInstance().player.sendStatusMessage(message, false);
|
||||
Minecraft.getInstance().player.sendStatusMessage(new StringTextComponent(message), false);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void debugChatAndShowStack(ITextComponent message, int depth) {
|
||||
public static void debugChatAndShowStack(String message, int depth) {
|
||||
if (Minecraft.getInstance().player != null)
|
||||
Minecraft.getInstance().player.sendStatusMessage(message.copy()
|
||||
.append("@")
|
||||
Minecraft.getInstance().player.sendStatusMessage(new StringTextComponent(message).append("@")
|
||||
.append(debugStack(depth)), false);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void debugMessage(ITextComponent message) {
|
||||
public static void debugMessage(String message) {
|
||||
if (Minecraft.getInstance().player != null)
|
||||
Minecraft.getInstance().player.sendStatusMessage(message, true);
|
||||
Minecraft.getInstance().player.sendStatusMessage(new StringTextComponent(message), true);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void log(String message) {
|
||||
Create.LOGGER.info(message);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
|
|
BIN
src/main/resources/ponder/debug/scene_10.nbt
Normal file
BIN
src/main/resources/ponder/debug/scene_10.nbt
Normal file
Binary file not shown.
BIN
src/main/resources/ponder/fluid_pipe/encasing.nbt
Normal file
BIN
src/main/resources/ponder/fluid_pipe/encasing.nbt
Normal file
Binary file not shown.
BIN
src/main/resources/ponder/fluid_pipe/flow.nbt
Normal file
BIN
src/main/resources/ponder/fluid_pipe/flow.nbt
Normal file
Binary file not shown.
BIN
src/main/resources/ponder/fluid_pipe/interaction.nbt
Normal file
BIN
src/main/resources/ponder/fluid_pipe/interaction.nbt
Normal file
Binary file not shown.
Loading…
Reference in a new issue