mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-01-15 08:47:36 +01:00
All your basin are output to us
- Added useful goggle information to chutes - (0.3.0) Chutes can no longer carry a fan-like air stream - Fixed chutes overwriting contained items when picking them up from below - Basins can now push outputs to any open inventory - Basin output can now be controlled using a wrench
This commit is contained in:
parent
d5ddb476c5
commit
b2e74463e3
18 changed files with 301 additions and 137 deletions
|
@ -394,16 +394,16 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
|
||||||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||||
67f9a92292948241e01ce6043445b2b3ddcf5350 assets/create/lang/en_ud.json
|
67f9a92292948241e01ce6043445b2b3ddcf5350 assets/create/lang/en_ud.json
|
||||||
ea9f7788b7cae3ddd4ba1ae74c54f558d6b3f584 assets/create/lang/en_us.json
|
79560607a2c0adb5aee4e55dc5b1976136968b72 assets/create/lang/en_us.json
|
||||||
d2741d202f1b76c0c57fbd25d5f35cfab258edb0 assets/create/lang/unfinished/de_de.json
|
cd2dd93ca311499263387c5780ad08bc2351bb35 assets/create/lang/unfinished/de_de.json
|
||||||
ce08c4a4163e667a5c20dfd241cb56b0ff5d064e assets/create/lang/unfinished/fr_fr.json
|
e4a404357a223f97225651bdc35ef903f72abad4 assets/create/lang/unfinished/fr_fr.json
|
||||||
6fe663867f28389fdac5ac75a12089ca7279a0cb assets/create/lang/unfinished/it_it.json
|
45b3eb5e4b3ad1dab08f5eeb87ffabe67fb42c34 assets/create/lang/unfinished/it_it.json
|
||||||
28b1bbb303a20f43266ae089b5d8b920523ee854 assets/create/lang/unfinished/ja_jp.json
|
1b6513cb8880f8b02180c89857789851426e0888 assets/create/lang/unfinished/ja_jp.json
|
||||||
cfc50d41b77b5dfeb49da61b95496a65b3d71169 assets/create/lang/unfinished/ko_kr.json
|
a1ca7668181dc77f04e637cc709cde8015246b10 assets/create/lang/unfinished/ko_kr.json
|
||||||
9f9e817483a92c960db5a6cdd30e0c9e0ac0b2f3 assets/create/lang/unfinished/nl_nl.json
|
490f27bd5fe2c421f0d8e8b1dbd939f36a6ea147 assets/create/lang/unfinished/nl_nl.json
|
||||||
6d638fa512c863203ff7207c9a68782ba4fd9997 assets/create/lang/unfinished/pt_br.json
|
f885cbe3cdf420406bd9baa3ee06b2eaf44ee195 assets/create/lang/unfinished/pt_br.json
|
||||||
0dc96a32325dc79e7f0cf980a7011475aa22ecc3 assets/create/lang/unfinished/ru_ru.json
|
91a06ec754fb97031f70b09253f1ce7a12b7aadf assets/create/lang/unfinished/ru_ru.json
|
||||||
311937a993d6c186ba4c433cd7befca8e4da6d89 assets/create/lang/unfinished/zh_cn.json
|
413c285cacf4484d1ff5f2b6b70a8d23595333e4 assets/create/lang/unfinished/zh_cn.json
|
||||||
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
|
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json
|
||||||
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
|
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json
|
||||||
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json
|
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json
|
||||||
|
|
|
@ -974,6 +974,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "Randomize",
|
"create.tunnel.selection_mode.randomize": "Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 1043",
|
"_": "Missing Localizations: 1051",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 672",
|
"_": "Missing Localizations: 680",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 656",
|
"_": "Missing Localizations: 664",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 655",
|
"_": "Missing Localizations: 663",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 656",
|
"_": "Missing Localizations: 664",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 984",
|
"_": "Missing Localizations: 992",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 1050",
|
"_": "Missing Localizations: 1058",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 325",
|
"_": "Missing Localizations: 333",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_": "Missing Localizations: 338",
|
"_": "Missing Localizations: 346",
|
||||||
|
|
||||||
"_": "->------------------------] Game Elements [------------------------<-",
|
"_": "->------------------------] Game Elements [------------------------<-",
|
||||||
|
|
||||||
|
@ -975,6 +975,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
"create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "UNLOCALIZED: Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "UNLOCALIZED: Horizontal Funnels",
|
||||||
|
|
|
@ -142,7 +142,7 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer<ItemDrainTileEnti
|
||||||
.getValue(partialTicks);
|
.getValue(partialTicks);
|
||||||
|
|
||||||
if (!fluidStack.isEmpty() && level != 0) {
|
if (!fluidStack.isEmpty() && level != 0) {
|
||||||
float yMin = 4f / 16f;
|
float yMin = 5f / 16f;
|
||||||
float min = 2f / 16f;
|
float min = 2f / 16f;
|
||||||
float max = min + (12 / 16f);
|
float max = min + (12 / 16f);
|
||||||
float yOffset = (8 / 16f) * level;
|
float yOffset = (8 / 16f) * level;
|
||||||
|
|
|
@ -10,15 +10,14 @@ import com.simibubi.create.foundation.block.ITE;
|
||||||
import com.simibubi.create.foundation.fluid.FluidHelper;
|
import com.simibubi.create.foundation.fluid.FluidHelper;
|
||||||
import com.simibubi.create.foundation.item.ItemHelper;
|
import com.simibubi.create.foundation.item.ItemHelper;
|
||||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour;
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.item.ItemEntity;
|
import net.minecraft.entity.item.ItemEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.BlockItemUseContext;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.ItemUseContext;
|
import net.minecraft.item.ItemUseContext;
|
||||||
import net.minecraft.state.DirectionProperty;
|
import net.minecraft.state.DirectionProperty;
|
||||||
|
@ -73,7 +72,9 @@ public class BasinBlock extends Block implements ITE<BasinTileEntity>, IWrenchab
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResultType onWrenched(BlockState state, ItemUseContext context) {
|
public ActionResultType onWrenched(BlockState state, ItemUseContext context) {
|
||||||
return ActionResultType.FAIL;
|
if (!context.getWorld().isRemote)
|
||||||
|
withTileEntityDo(context.getWorld(), context.getPos(), bte -> bte.onWrenched(context.getFace()));
|
||||||
|
return ActionResultType.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -142,11 +143,6 @@ public class BasinBlock extends Block implements ITE<BasinTileEntity>, IWrenchab
|
||||||
return AllShapes.BASIN_BLOCK_SHAPE;
|
return AllShapes.BASIN_BLOCK_SHAPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) {
|
|
||||||
updateDiagonalNeighbours(state, world, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VoxelShape getCollisionShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext ctx) {
|
public VoxelShape getCollisionShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext ctx) {
|
||||||
if (ctx.getEntity() instanceof ItemEntity)
|
if (ctx.getEntity() instanceof ItemEntity)
|
||||||
|
@ -156,7 +152,6 @@ public class BasinBlock extends Block implements ITE<BasinTileEntity>, IWrenchab
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
|
public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
|
||||||
updateDiagonalNeighbours(state, worldIn, pos);
|
|
||||||
if (!state.hasTileEntity() || state.getBlock() == newState.getBlock())
|
if (!state.hasTileEntity() || state.getBlock() == newState.getBlock())
|
||||||
return;
|
return;
|
||||||
TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE);
|
TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE);
|
||||||
|
@ -186,35 +181,14 @@ public class BasinBlock extends Block implements ITE<BasinTileEntity>, IWrenchab
|
||||||
return BasinTileEntity.class;
|
return BasinTileEntity.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static boolean canOutputTo(IBlockReader world, BlockPos basinPos, Direction direction) {
|
||||||
public BlockState getStateForPlacement(BlockItemUseContext ctx) {
|
BlockPos offset = basinPos.down()
|
||||||
BlockState state = super.getStateForPlacement(ctx);
|
.offset(direction);
|
||||||
World world = ctx.getWorld();
|
DirectBeltInputBehaviour directBeltInputBehaviour =
|
||||||
BlockPos pos = ctx.getPos();
|
TileEntityBehaviour.get(world, offset, DirectBeltInputBehaviour.TYPE);
|
||||||
return updateDiagonalState(state, world, pos);
|
if (directBeltInputBehaviour != null)
|
||||||
}
|
return directBeltInputBehaviour.canInsertFromSide(direction);
|
||||||
|
return false;
|
||||||
protected void updateDiagonalNeighbours(BlockState state, World world, BlockPos pos) {
|
|
||||||
for (Direction direction : Iterate.horizontalDirections) {
|
|
||||||
BlockPos toUpdate = pos.up()
|
|
||||||
.offset(direction);
|
|
||||||
BlockState stateToUpdate = world.getBlockState(toUpdate);
|
|
||||||
BlockState updated = updateDiagonalState(stateToUpdate, world, toUpdate);
|
|
||||||
if (stateToUpdate != updated && !world.isRemote)
|
|
||||||
world.setBlockState(toUpdate, updated);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BlockState updateDiagonalState(BlockState state, IBlockReader world, BlockPos pos) {
|
|
||||||
if (!(state.getBlock() instanceof BasinBlock))
|
|
||||||
return state;
|
|
||||||
for (Direction direction : Iterate.horizontalDirections) {
|
|
||||||
BlockState diagonaloutputBasin = world.getBlockState(pos.down()
|
|
||||||
.offset(direction));
|
|
||||||
if (diagonaloutputBasin.getBlock() instanceof BasinBlock)
|
|
||||||
return state.with(FACING, direction);
|
|
||||||
}
|
|
||||||
return state.with(FACING, Direction.DOWN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,8 +107,17 @@ public class BasinRenderer extends SmartTileEntityRenderer<BasinTileEntity> {
|
||||||
.add(directionVec.scale(.55)
|
.add(directionVec.scale(.55)
|
||||||
.subtract(0, 1 / 2f, 0));
|
.subtract(0, 1 / 2f, 0));
|
||||||
|
|
||||||
|
boolean outToBasin = basin.getWorld()
|
||||||
|
.getBlockState(basin.getPos()
|
||||||
|
.offset(direction))
|
||||||
|
.getBlock() instanceof BasinBlock;
|
||||||
|
|
||||||
for (IntAttached<ItemStack> intAttached : basin.visualizedOutputItems) {
|
for (IntAttached<ItemStack> intAttached : basin.visualizedOutputItems) {
|
||||||
float progress = 1 - (intAttached.getFirst() - partialTicks) / BasinTileEntity.OUTPUT_ANIMATION_TIME;
|
float progress = 1 - (intAttached.getFirst() - partialTicks) / BasinTileEntity.OUTPUT_ANIMATION_TIME;
|
||||||
|
|
||||||
|
if (!outToBasin && progress > .35f)
|
||||||
|
continue;
|
||||||
|
|
||||||
ms.push();
|
ms.push();
|
||||||
MatrixStacker.of(ms)
|
MatrixStacker.of(ms)
|
||||||
.translate(outVec)
|
.translate(outVec)
|
||||||
|
|
|
@ -36,6 +36,8 @@ import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
|
import net.minecraft.nbt.ListNBT;
|
||||||
|
import net.minecraft.nbt.StringNBT;
|
||||||
import net.minecraft.particles.IParticleData;
|
import net.minecraft.particles.IParticleData;
|
||||||
import net.minecraft.tileentity.ITickableTileEntity;
|
import net.minecraft.tileentity.ITickableTileEntity;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -79,6 +81,9 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
protected LazyOptional<IItemHandlerModifiable> itemCapability;
|
protected LazyOptional<IItemHandlerModifiable> itemCapability;
|
||||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||||
|
|
||||||
|
List<Direction> disabledSpoutputs;
|
||||||
|
Direction preferredSpoutput;
|
||||||
|
|
||||||
public static final int OUTPUT_ANIMATION_TIME = 10;
|
public static final int OUTPUT_ANIMATION_TIME = 10;
|
||||||
List<IntAttached<ItemStack>> visualizedOutputItems;
|
List<IntAttached<ItemStack>> visualizedOutputItems;
|
||||||
List<IntAttached<FluidStack>> visualizedOutputFluids;
|
List<IntAttached<FluidStack>> visualizedOutputFluids;
|
||||||
|
@ -100,6 +105,8 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
tanks = Couple.create(inputTank, outputTank);
|
tanks = Couple.create(inputTank, outputTank);
|
||||||
visualizedOutputItems = Collections.synchronizedList(new ArrayList<>());
|
visualizedOutputItems = Collections.synchronizedList(new ArrayList<>());
|
||||||
visualizedOutputFluids = Collections.synchronizedList(new ArrayList<>());
|
visualizedOutputFluids = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
disabledSpoutputs = new ArrayList<>();
|
||||||
|
preferredSpoutput = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -129,6 +136,13 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
inputInventory.deserializeNBT(compound.getCompound("InputItems"));
|
inputInventory.deserializeNBT(compound.getCompound("InputItems"));
|
||||||
outputInventory.deserializeNBT(compound.getCompound("OutputItems"));
|
outputInventory.deserializeNBT(compound.getCompound("OutputItems"));
|
||||||
|
|
||||||
|
preferredSpoutput = null;
|
||||||
|
if (compound.contains("PreferredSpoutput"))
|
||||||
|
preferredSpoutput = NBTHelper.readEnum(compound, "PreferredSpoutput", Direction.class);
|
||||||
|
disabledSpoutputs.clear();
|
||||||
|
ListNBT disabledList = compound.getList("DisabledSpoutput", NBT.TAG_STRING);
|
||||||
|
disabledList.forEach(d -> disabledSpoutputs.add(Direction.valueOf(((StringNBT) d).getString())));
|
||||||
|
|
||||||
if (!clientPacket)
|
if (!clientPacket)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -145,6 +159,12 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
compound.put("InputItems", inputInventory.serializeNBT());
|
compound.put("InputItems", inputInventory.serializeNBT());
|
||||||
compound.put("OutputItems", outputInventory.serializeNBT());
|
compound.put("OutputItems", outputInventory.serializeNBT());
|
||||||
|
|
||||||
|
if (preferredSpoutput != null)
|
||||||
|
NBTHelper.writeEnum(compound, "PreferredSpoutput", preferredSpoutput);
|
||||||
|
ListNBT disabledList = new ListNBT();
|
||||||
|
disabledSpoutputs.forEach(d -> disabledList.add(StringNBT.of(d.name())));
|
||||||
|
compound.put("DisabledSpoutput", disabledList);
|
||||||
|
|
||||||
if (!clientPacket)
|
if (!clientPacket)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -186,8 +206,10 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
@Override
|
@Override
|
||||||
public void lazyTick() {
|
public void lazyTick() {
|
||||||
super.lazyTick();
|
super.lazyTick();
|
||||||
|
updateSpoutput();
|
||||||
if (!world.isRemote)
|
if (!world.isRemote)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TileEntity tileEntity = world.getTileEntity(pos.up(2));
|
TileEntity tileEntity = world.getTileEntity(pos.up(2));
|
||||||
if (!(tileEntity instanceof MechanicalMixerTileEntity)) {
|
if (!(tileEntity instanceof MechanicalMixerTileEntity)) {
|
||||||
setAreFluidsMoving(false);
|
setAreFluidsMoving(false);
|
||||||
|
@ -197,6 +219,45 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
setAreFluidsMoving(mixer.running && mixer.runningTicks <= 20);
|
setAreFluidsMoving(mixer.running && mixer.runningTicks <= 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onWrenched(Direction face) {
|
||||||
|
BlockState blockState = getBlockState();
|
||||||
|
Direction currentFacing = blockState.get(BasinBlock.FACING);
|
||||||
|
|
||||||
|
disabledSpoutputs.remove(face);
|
||||||
|
if (currentFacing == face) {
|
||||||
|
if (preferredSpoutput == face)
|
||||||
|
preferredSpoutput = null;
|
||||||
|
disabledSpoutputs.add(face);
|
||||||
|
} else
|
||||||
|
preferredSpoutput = face;
|
||||||
|
|
||||||
|
updateSpoutput();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateSpoutput() {
|
||||||
|
if (world.isRemote)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BlockState blockState = getBlockState();
|
||||||
|
Direction currentFacing = blockState.get(BasinBlock.FACING);
|
||||||
|
|
||||||
|
if (currentFacing != Direction.DOWN)
|
||||||
|
notifyChangeOfContents();
|
||||||
|
|
||||||
|
Direction newFacing = Direction.DOWN;
|
||||||
|
for (Direction test : Iterate.horizontalDirections) {
|
||||||
|
boolean canOutputTo = BasinBlock.canOutputTo(world, pos, test);
|
||||||
|
if (canOutputTo && !disabledSpoutputs.contains(test))
|
||||||
|
newFacing = test;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preferredSpoutput != null && BasinBlock.canOutputTo(world, pos, preferredSpoutput))
|
||||||
|
newFacing = preferredSpoutput;
|
||||||
|
|
||||||
|
if (newFacing != currentFacing)
|
||||||
|
world.setBlockState(pos, blockState.with(BasinBlock.FACING, newFacing));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
super.tick();
|
super.tick();
|
||||||
|
@ -309,15 +370,15 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
// Output basin, try moving items to it
|
// Output basin, try moving items to it
|
||||||
TileEntity te = world.getTileEntity(pos.down()
|
TileEntity te = world.getTileEntity(pos.down()
|
||||||
.offset(direction));
|
.offset(direction));
|
||||||
if (!(te instanceof BasinTileEntity))
|
if (te == null)
|
||||||
return false;
|
return false;
|
||||||
targetInv = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
|
targetInv = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite())
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
targetTank = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
targetTank = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, direction.getOpposite())
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetInv == null)
|
if (targetInv == null && !outputItems.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
for (ItemStack itemStack : outputItems)
|
for (ItemStack itemStack : outputItems)
|
||||||
if (!ItemHandlerHelper.insertItemStacked(targetInv, itemStack.copy(), simulate)
|
if (!ItemHandlerHelper.insertItemStacked(targetInv, itemStack.copy(), simulate)
|
||||||
|
@ -326,14 +387,21 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt
|
||||||
else if (!simulate)
|
else if (!simulate)
|
||||||
visualizedOutputItems.add(IntAttached.withZero(itemStack));
|
visualizedOutputItems.add(IntAttached.withZero(itemStack));
|
||||||
|
|
||||||
|
if (outputFluids.isEmpty())
|
||||||
|
return true;
|
||||||
if (targetTank == null)
|
if (targetTank == null)
|
||||||
return false;
|
return false;
|
||||||
for (FluidStack fluidStack : outputFluids)
|
|
||||||
if (targetTank.fill(fluidStack.copy(), simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE) != fluidStack
|
for (FluidStack fluidStack : outputFluids) {
|
||||||
.getAmount())
|
FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE;
|
||||||
|
int fill = targetTank instanceof SmartFluidTankBehaviour.InternalFluidHandler
|
||||||
|
? ((SmartFluidTankBehaviour.InternalFluidHandler) targetTank).forceFill(fluidStack.copy(), action)
|
||||||
|
: targetTank.fill(fluidStack.copy(), action);
|
||||||
|
if (fill != fluidStack.getAmount())
|
||||||
return false;
|
return false;
|
||||||
else if (!simulate)
|
else if (!simulate)
|
||||||
visualizedOutputFluids.add(IntAttached.withZero(fluidStack));
|
visualizedOutputFluids.add(IntAttached.withZero(fluidStack));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@ import com.simibubi.create.Create;
|
||||||
import com.simibubi.create.content.contraptions.components.fan.AirCurrent;
|
import com.simibubi.create.content.contraptions.components.fan.AirCurrent;
|
||||||
import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock;
|
import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock;
|
||||||
import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity;
|
import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity;
|
||||||
import com.simibubi.create.content.contraptions.components.fan.IAirCurrentSource;
|
|
||||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
||||||
import com.simibubi.create.content.contraptions.particle.AirParticleData;
|
import com.simibubi.create.content.contraptions.particle.AirParticleData;
|
||||||
import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape;
|
import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape;
|
||||||
|
@ -28,6 +27,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemS
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
||||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
import com.simibubi.create.foundation.utility.Lang;
|
||||||
import com.simibubi.create.foundation.utility.VecHelper;
|
import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
|
|
||||||
import mcp.MethodsReturnNonnullByDefault;
|
import mcp.MethodsReturnNonnullByDefault;
|
||||||
|
@ -47,7 +47,6 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.common.util.LazyOptional;
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
import net.minecraftforge.items.CapabilityItemHandler;
|
||||||
|
@ -56,9 +55,13 @@ import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInformation, IAirCurrentSource {
|
/*
|
||||||
|
* Commented Code: Chutes create air streams and act similarly to encased fans
|
||||||
|
* (Unfinished)
|
||||||
|
*/
|
||||||
|
public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInformation { // , IAirCurrentSource {
|
||||||
|
|
||||||
public AirCurrent airCurrent;
|
// public AirCurrent airCurrent;
|
||||||
|
|
||||||
float pull;
|
float pull;
|
||||||
float push;
|
float push;
|
||||||
|
@ -70,11 +73,11 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
boolean canPickUpItems;
|
boolean canPickUpItems;
|
||||||
|
|
||||||
float bottomPullDistance;
|
float bottomPullDistance;
|
||||||
|
float beltBelowOffset;
|
||||||
|
TransportedItemStackHandlerBehaviour beltBelow;
|
||||||
|
boolean updateAirFlow;
|
||||||
int airCurrentUpdateCooldown;
|
int airCurrentUpdateCooldown;
|
||||||
int entitySearchCooldown;
|
int entitySearchCooldown;
|
||||||
boolean updateAirFlow;
|
|
||||||
TransportedItemStackHandlerBehaviour beltBelow;
|
|
||||||
float beltBelowOffset;
|
|
||||||
|
|
||||||
LazyOptional<IItemHandler> capAbove;
|
LazyOptional<IItemHandler> capAbove;
|
||||||
LazyOptional<IItemHandler> capBelow;
|
LazyOptional<IItemHandler> capBelow;
|
||||||
|
@ -89,12 +92,10 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
capAbove = LazyOptional.empty();
|
capAbove = LazyOptional.empty();
|
||||||
capBelow = LazyOptional.empty();
|
capBelow = LazyOptional.empty();
|
||||||
bottomPullDistance = 0;
|
bottomPullDistance = 0;
|
||||||
airCurrent = new AirCurrent(this);
|
// airCurrent = new AirCurrent(this);
|
||||||
updateAirFlow = true;
|
updateAirFlow = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
|
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
|
||||||
behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen((d) -> canDirectlyInsertCached()));
|
behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen((d) -> canDirectlyInsertCached()));
|
||||||
|
@ -177,7 +178,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
|
|
||||||
private void updateAirFlow(float itemSpeed) {
|
private void updateAirFlow(float itemSpeed) {
|
||||||
updateAirFlow = false;
|
updateAirFlow = false;
|
||||||
airCurrent.rebuild();
|
// airCurrent.rebuild();
|
||||||
if (itemSpeed > 0 && world != null && !world.isRemote) {
|
if (itemSpeed > 0 && world != null && !world.isRemote) {
|
||||||
float speed = pull - push;
|
float speed = pull - push;
|
||||||
beltBelow = null;
|
beltBelow = null;
|
||||||
|
@ -213,16 +214,16 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
}
|
}
|
||||||
|
|
||||||
private void findEntities(float itemSpeed) {
|
private void findEntities(float itemSpeed) {
|
||||||
if (getSpeed() != 0)
|
// if (getSpeed() != 0)
|
||||||
airCurrent.findEntities();
|
// airCurrent.findEntities();
|
||||||
if (bottomPullDistance <= 0 && !getItem().isEmpty() || itemSpeed <= 0 || world == null || world.isRemote)
|
if (bottomPullDistance <= 0 && !getItem().isEmpty() || itemSpeed <= 0 || world == null || world.isRemote)
|
||||||
return;
|
return;
|
||||||
Vec3d center = VecHelper.getCenterOf(pos);
|
Vec3d center = VecHelper.getCenterOf(pos);
|
||||||
AxisAlignedBB searchArea =
|
AxisAlignedBB searchArea =
|
||||||
new AxisAlignedBB(center.add(0, -bottomPullDistance - 0.5, 0), center.add(0, -0.5, 0)).grow(.45f);
|
new AxisAlignedBB(center.add(0, -bottomPullDistance - 0.5, 0), center.add(0, -0.5, 0)).grow(.45f);
|
||||||
for (ItemEntity itemEntity : world.getEntitiesWithinAABB(ItemEntity.class, searchArea)) {
|
for (ItemEntity itemEntity : world.getEntitiesWithinAABB(ItemEntity.class, searchArea)) {
|
||||||
setItem(itemEntity.getItem()
|
setItem(itemEntity.getItem()
|
||||||
.copy(),
|
.copy(),
|
||||||
(float) (itemEntity.getBoundingBox()
|
(float) (itemEntity.getBoundingBox()
|
||||||
.getCenter().y - pos.getY()));
|
.getCenter().y - pos.getY()));
|
||||||
itemEntity.remove();
|
itemEntity.remove();
|
||||||
|
@ -254,14 +255,14 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
updateAirFlow(itemSpeed);
|
updateAirFlow(itemSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entitySearchCooldown-- <= 0) {
|
if (entitySearchCooldown-- <= 0 && item.isEmpty()) {
|
||||||
entitySearchCooldown = 5;
|
entitySearchCooldown = 5;
|
||||||
findEntities(itemSpeed);
|
findEntities(itemSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
extractFromBelt(itemSpeed);
|
extractFromBelt(itemSpeed);
|
||||||
if (getSpeed() != 0)
|
// if (getSpeed() != 0)
|
||||||
airCurrent.tick();
|
// airCurrent.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void blockBelowChanged() {
|
public void blockBelowChanged() {
|
||||||
|
@ -319,16 +320,14 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
if (!capAbove.isPresent())
|
if (!capAbove.isPresent())
|
||||||
capAbove = grabCapability(Direction.UP);
|
capAbove = grabCapability(Direction.UP);
|
||||||
if (capAbove.isPresent())
|
if (capAbove.isPresent())
|
||||||
item =
|
item = ItemHelper.extract(capAbove.orElse(null), stack -> true, ExtractionCountMode.UPTO, 16, false);
|
||||||
ItemHelper.extract(capAbove.orElse(null), stack -> true, ExtractionCountMode.UPTO, 16, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleInputFromBelow() {
|
private void handleInputFromBelow() {
|
||||||
if (!capBelow.isPresent())
|
if (!capBelow.isPresent())
|
||||||
capBelow = grabCapability(Direction.DOWN);
|
capBelow = grabCapability(Direction.DOWN);
|
||||||
if (capBelow.isPresent())
|
if (capBelow.isPresent())
|
||||||
item =
|
item = ItemHelper.extract(capBelow.orElse(null), stack -> true, ExtractionCountMode.UPTO, 16, false);
|
||||||
ItemHelper.extract(capBelow.orElse(null), stack -> true, ExtractionCountMode.UPTO, 16, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean handleDownwardOutput(boolean simulate) {
|
private boolean handleDownwardOutput(boolean simulate) {
|
||||||
|
@ -505,9 +504,11 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
pull = compound.getFloat("Pull");
|
pull = compound.getFloat("Pull");
|
||||||
push = compound.getFloat("Push");
|
push = compound.getFloat("Push");
|
||||||
bottomPullDistance = compound.getFloat("BottomAirFlowDistance");
|
bottomPullDistance = compound.getFloat("BottomAirFlowDistance");
|
||||||
|
|
||||||
super.read(compound, clientPacket);
|
super.read(compound, clientPacket);
|
||||||
if (clientPacket)
|
|
||||||
airCurrent.rebuild();
|
// if (clientPacket)
|
||||||
|
// airCurrent.rebuild();
|
||||||
|
|
||||||
if (hasWorld() && world != null && world.isRemote && !previousItem.equals(item, false) && !item.isEmpty()) {
|
if (hasWorld() && world != null && world.isRemote && !previousItem.equals(item, false) && !item.isEmpty()) {
|
||||||
if (world.rand.nextInt(3) != 0)
|
if (world.rand.nextInt(3) != 0)
|
||||||
|
@ -667,9 +668,18 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addToGoggleTooltip(List<String> tooltip, boolean isPlayerSneaking) {
|
public boolean addToGoggleTooltip(List<String> tooltip, boolean isPlayerSneaking) {
|
||||||
tooltip.add(spacing + TextFormatting.GOLD + "Pull: " + TextFormatting.WHITE + pull);
|
boolean downward = getItemMotion() < 0;
|
||||||
tooltip.add(spacing + TextFormatting.GOLD + "Push: " + TextFormatting.WHITE + push);
|
tooltip.add(spacing + Lang.translate("tooltip.chute.header"));
|
||||||
tooltip.add(TextFormatting.YELLOW + "-> Item Motion: " + TextFormatting.WHITE + getItemMotion());
|
if (pull == 0 && push == 0)
|
||||||
|
tooltip.add(spacing + TextFormatting.GRAY + Lang.translate("tooltip.chute.no_fans_attached"));
|
||||||
|
if (pull != 0)
|
||||||
|
tooltip.add(spacing + TextFormatting.GRAY
|
||||||
|
+ Lang.translate("tooltip.chute.fans_" + (pull > 0 ? "pull_up" : "push_down")));
|
||||||
|
if (push != 0)
|
||||||
|
tooltip.add(spacing + TextFormatting.GRAY
|
||||||
|
+ Lang.translate("tooltip.chute.fans_" + (push > 0 ? "push_up" : "pull_down")));
|
||||||
|
tooltip.add(spacing + TextFormatting.YELLOW + "-> "
|
||||||
|
+ Lang.translate("tooltip.chute.items_move_" + (downward ? "down" : "up")));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -684,47 +694,47 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
@Nullable
|
// @Nullable
|
||||||
public AirCurrent getAirCurrent() {
|
// public AirCurrent getAirCurrent() {
|
||||||
return airCurrent;
|
// return airCurrent;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Nullable
|
// @Nullable
|
||||||
@Override
|
// @Override
|
||||||
public World getAirCurrentWorld() {
|
// public World getAirCurrentWorld() {
|
||||||
return world;
|
// return world;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public BlockPos getAirCurrentPos() {
|
// public BlockPos getAirCurrentPos() {
|
||||||
return pos;
|
// return pos;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public float getSpeed() {
|
// public float getSpeed() {
|
||||||
if (getBlockState().get(ChuteBlock.SHAPE) == Shape.NORMAL && getBlockState().get(ChuteBlock.FACING) != Direction.DOWN)
|
// if (getBlockState().get(ChuteBlock.SHAPE) == Shape.NORMAL && getBlockState().get(ChuteBlock.FACING) != Direction.DOWN)
|
||||||
return 0;
|
// return 0;
|
||||||
return pull + push;
|
// return pull + push;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
@Nullable
|
// @Nullable
|
||||||
public Direction getAirFlowDirection() {
|
// public Direction getAirFlowDirection() {
|
||||||
float speed = getSpeed();
|
// float speed = getSpeed();
|
||||||
if (speed == 0)
|
// if (speed == 0)
|
||||||
return null;
|
// return null;
|
||||||
return speed > 0 ? Direction.UP : Direction.DOWN;
|
// return speed > 0 ? Direction.UP : Direction.DOWN;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public boolean isSourceRemoved() {
|
// public boolean isSourceRemoved() {
|
||||||
return removed;
|
// return removed;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Direction getAirflowOriginSide() {
|
// public Direction getAirflowOriginSide() {
|
||||||
return world != null && !(world.getTileEntity(pos.down()) instanceof IAirCurrentSource)
|
// return world != null && !(world.getTileEntity(pos.down()) instanceof IAirCurrentSource)
|
||||||
&& getBlockState().get(ChuteBlock.FACING) == Direction.DOWN ? Direction.DOWN : Direction.UP;
|
// && getBlockState().get(ChuteBlock.FACING) == Direction.DOWN ? Direction.DOWN : Direction.UP;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,7 +188,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
class InternalFluidHandler extends CombinedTankWrapper {
|
public class InternalFluidHandler extends CombinedTankWrapper {
|
||||||
|
|
||||||
public InternalFluidHandler(IFluidHandler[] handlers, boolean enforceVariety) {
|
public InternalFluidHandler(IFluidHandler[] handlers, boolean enforceVariety) {
|
||||||
super(handlers);
|
super(handlers);
|
||||||
|
@ -203,6 +203,10 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
||||||
return super.fill(resource, action);
|
return super.fill(resource, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int forceFill(FluidStack resource, FluidAction action) {
|
||||||
|
return super.fill(resource, action);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FluidStack drain(FluidStack resource, FluidAction action) {
|
public FluidStack drain(FluidStack resource, FluidAction action) {
|
||||||
if (!extractionAllowed)
|
if (!extractionAllowed)
|
||||||
|
|
|
@ -438,6 +438,15 @@
|
||||||
"create.tunnel.selection_mode.randomize": "Randomize",
|
"create.tunnel.selection_mode.randomize": "Randomize",
|
||||||
"create.tunnel.selection_mode.synchronize": "Synchronize Inputs",
|
"create.tunnel.selection_mode.synchronize": "Synchronize Inputs",
|
||||||
|
|
||||||
|
"create.tooltip.chute.header": "Chute Information",
|
||||||
|
"create.tooltip.chute.items_move_down": "Items move Downward",
|
||||||
|
"create.tooltip.chute.items_move_up": "Items move Upward",
|
||||||
|
"create.tooltip.chute.no_fans_attached": "No attached fans",
|
||||||
|
"create.tooltip.chute.fans_push_up": "Fans push from Below",
|
||||||
|
"create.tooltip.chute.fans_push_down": "Fans push from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_up": "Fans pull from Above",
|
||||||
|
"create.tooltip.chute.fans_pull_down": "Fans pull from Below",
|
||||||
|
|
||||||
"create.hint.mechanical_arm_no_targets.title": "No Targets",
|
"create.hint.mechanical_arm_no_targets.title": "No Targets",
|
||||||
"create.hint.mechanical_arm_no_targets": "It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
"create.hint.mechanical_arm_no_targets": "It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.",
|
||||||
"create.hint.horizontal_funnel.title": "Horizontal Funnels",
|
"create.hint.horizontal_funnel.title": "Horizontal Funnels",
|
||||||
|
|
Loading…
Reference in a new issue