From 9362374b1eb1f2ced0f43cd6dca1393ca2aa67f7 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 7 Dec 2021 02:35:38 +0100 Subject: [PATCH] Vault Virtual - Double chests no longer split when moved on a contraption - Changed the way contraption storage interacts with known multi-block item storage (band-aid solution) - Changed a few blocks' sound types - Fixed in-world icons not rendering - Added Ponder Scenes for the Item Vault - Added crafting recipe for Item Vaults - Changed crafting recipe for Fluid Tanks - Fixed ponder tracking items in inactive inventory screens - Removed unreachable Advancements --- src/generated/resources/.cache/cache | 43 ++-- .../resources/assets/create/lang/en_us.json | 19 +- .../assets/create/lang/unfinished/de_de.json | 21 +- .../assets/create/lang/unfinished/es_cl.json | 21 +- .../assets/create/lang/unfinished/es_es.json | 21 +- .../assets/create/lang/unfinished/fr_fr.json | 21 +- .../assets/create/lang/unfinished/it_it.json | 21 +- .../assets/create/lang/unfinished/ja_jp.json | 21 +- .../assets/create/lang/unfinished/ko_kr.json | 21 +- .../assets/create/lang/unfinished/nl_nl.json | 21 +- .../assets/create/lang/unfinished/pl_pl.json | 21 +- .../assets/create/lang/unfinished/pt_br.json | 21 +- .../assets/create/lang/unfinished/ru_ru.json | 21 +- .../assets/create/lang/unfinished/zh_cn.json | 21 +- .../assets/create/lang/unfinished/zh_tw.json | 21 +- .../create/advancements/chromatic_age.json | 52 ---- .../advancements/chromatic_compound.json | 37 --- .../create/advancements/chromatic_eob.json | 52 ---- .../crafting/kinetics/fluid_tank.json | 4 +- .../crafting/kinetics/item_vault.json | 32 +++ .../create/advancements/refined_radiance.json | 37 --- .../create/advancements/shadow_steel.json | 37 --- .../create/advancements/wand_of_symmetry.json | 2 +- .../recipes/crafting/kinetics/fluid_tank.json | 16 +- .../recipes/crafting/kinetics/item_vault.json | 19 ++ .../java/com/simibubi/create/AllBlocks.java | 50 ++-- .../com/simibubi/create/AllTileEntities.java | 6 +- .../BlockMovementChecks.java | 8 +- .../structureMovement/Contraption.java | 20 +- .../structureMovement/MountedStorage.java | 52 +++- .../fluids/pipes/BracketBlockItem.java | 11 +- .../fluids/tank/FluidTankTileEntity.java | 7 +- .../{VaultBlock.java => ItemVaultBlock.java} | 24 +- ...haviour.java => ItemVaultCTBehaviour.java} | 12 +- ...java => ItemVaultConnectivityHandler.java} | 84 +++---- .../{VaultItem.java => ItemVaultItem.java} | 16 +- ...leEntity.java => ItemVaultTileEntity.java} | 55 ++-- .../advancement/AllAdvancements.java | 25 +- .../create/foundation/config/CLogistics.java | 2 +- .../foundation/data/BuilderTransformers.java | 2 +- .../foundation/data/SharedProperties.java | 4 + .../data/recipe/StandardRecipeGen.java | 21 +- .../create/foundation/gui/AllIcons.java | 8 +- .../ponder/PonderTooltipHandler.java | 16 +- .../create/foundation/ponder/PonderWorld.java | 19 +- .../ponder/content/ItemVaultScenes.java | 238 ++++++++++++++++++ .../ponder/content/PonderIndex.java | 36 +-- .../ponder/content/fluid/FluidTankScenes.java | 1 + .../ponder/ui/NavigatableSimiScreen.java | 3 + .../tileEntity/IMultiTileContainer.java | 12 + .../create/lang/default/advancements.json | 9 - .../assets/create/ponder/item_vault/sizes.nbt | Bin 0 -> 1134 bytes .../create/ponder/item_vault/storage.nbt | Bin 0 -> 1217 bytes 53 files changed, 779 insertions(+), 585 deletions(-) delete mode 100644 src/generated/resources/data/create/advancements/chromatic_age.json delete mode 100644 src/generated/resources/data/create/advancements/chromatic_compound.json delete mode 100644 src/generated/resources/data/create/advancements/chromatic_eob.json create mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json delete mode 100644 src/generated/resources/data/create/advancements/refined_radiance.json delete mode 100644 src/generated/resources/data/create/advancements/shadow_steel.json create mode 100644 src/generated/resources/data/create/recipes/crafting/kinetics/item_vault.json rename src/main/java/com/simibubi/create/content/logistics/block/vault/{VaultBlock.java => ItemVaultBlock.java} (88%) rename src/main/java/com/simibubi/create/content/logistics/block/vault/{VaultCTBehaviour.java => ItemVaultCTBehaviour.java} (84%) rename src/main/java/com/simibubi/create/content/logistics/block/vault/{VaultConnectivityHandler.java => ItemVaultConnectivityHandler.java} (70%) rename src/main/java/com/simibubi/create/content/logistics/block/vault/{VaultItem.java => ItemVaultItem.java} (88%) rename src/main/java/com/simibubi/create/content/logistics/block/vault/{VaultTileEntity.java => ItemVaultTileEntity.java} (81%) create mode 100644 src/main/java/com/simibubi/create/foundation/ponder/content/ItemVaultScenes.java create mode 100644 src/main/java/com/simibubi/create/foundation/tileEntity/IMultiTileContainer.java create mode 100644 src/main/resources/assets/create/ponder/item_vault/sizes.nbt create mode 100644 src/main/resources/assets/create/ponder/item_vault/storage.nbt diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index ca23ee384..e341666ad 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -531,20 +531,20 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 64a8442735a333c7444cac12cfb22c454ca06b6b assets/create/lang/en_ud.json -d55b3065c12ede60d54b8e306a9bba4f4e834da7 assets/create/lang/en_us.json -e933c3b22a1f7827b7e677b5c35db329322a027f assets/create/lang/unfinished/de_de.json -47b6a70be75560f4b11e51d3e9323418fa470ad6 assets/create/lang/unfinished/es_cl.json -c6379e293e835b0fa563ad3b2aaa10a664cab25e assets/create/lang/unfinished/es_es.json -840b1b5e3654f30b618ba8ce47af0a80a5152454 assets/create/lang/unfinished/fr_fr.json -5e9efb7f3bfa3d5139fbd435a54e6adcea1d9703 assets/create/lang/unfinished/it_it.json -d2e1e80d157228f7fb213d3c2c954794857c5343 assets/create/lang/unfinished/ja_jp.json -dd3f49b0ccd45d2b722e0d317681878b34e4409d assets/create/lang/unfinished/ko_kr.json -0fc3b0582a47c6a1d9525f2e8b11b2a6ff04eb7c assets/create/lang/unfinished/nl_nl.json -51cc98f752fcf0df71762c1dd119e0b30fdf3af6 assets/create/lang/unfinished/pl_pl.json -2bac31d64b08d5a581daae5befc6503fa638d075 assets/create/lang/unfinished/pt_br.json -8925ca5a897dc87b28a3e6c679d5a26b554bf8f8 assets/create/lang/unfinished/ru_ru.json -be1f4cd6c5db0aa8056793930319a7e48bdd549c assets/create/lang/unfinished/zh_cn.json -c65b6367315ee06afc45deda461d15bf0272065b assets/create/lang/unfinished/zh_tw.json +b984531bff326c47aa13a4aee8e230b03d97eb6e assets/create/lang/en_us.json +367a1c79a27c9d0496457a164f1d192eeabd5fa4 assets/create/lang/unfinished/de_de.json +842b0aaf8ad5a404a128fb29f312da8b6b6a61b7 assets/create/lang/unfinished/es_cl.json +7c42d400daae6a49b30de6180dc467cb42afe602 assets/create/lang/unfinished/es_es.json +322d3a2b9303659ffd0633afe067e6f753d58d84 assets/create/lang/unfinished/fr_fr.json +e85c66d2cbbc2db9b2f5504d44f345c5d4be47cb assets/create/lang/unfinished/it_it.json +f1176ef353e193be026d3c3581a9ed5f40576e6f assets/create/lang/unfinished/ja_jp.json +0e042c6fa4e1ed497c3eeee4203e41f4b9d644cf assets/create/lang/unfinished/ko_kr.json +26c92f47ceacbc236bb2ef1a60837a361d39c07c assets/create/lang/unfinished/nl_nl.json +20dc5fd426c579319c1c5f8d8a0b961867dae295 assets/create/lang/unfinished/pl_pl.json +890c8c28f57270f5b8ff871d9b0d5a8c68c71cbd assets/create/lang/unfinished/pt_br.json +dbb9348844951afa663d750b87f333f095007bec assets/create/lang/unfinished/ru_ru.json +60c5ddb490b9293b42647595f95e06ebbcf48c20 assets/create/lang/unfinished/zh_cn.json +d5ebaf58f6356272d311d8e12bf4ecd218d7d29a 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 @@ -2125,7 +2125,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json 5049f72c327a88f175f6f9425909e098fc711100 assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json 81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json @@ -2141,9 +2141,6 @@ b243e73ea26c5c8c8c57570d7d91a50d035653a4 data/create/advancements/arm_many_targe 88adc39840259e79e46c4f33abb8eeaeb41dcdc8 data/create/advancements/chained_item_drain.json 759688aa3c8085841e47f7174b3894607a0e2ad4 data/create/advancements/chocolate.json 0c84fe24f49330a7491016235afd8fad02b560fe data/create/advancements/chocolate_wheel.json -5b6fbcb6595267f5acd658eb9c1d6fb226e76e6f data/create/advancements/chromatic_age.json -e0001634bbcabe55959365ca5efa86b05efb3214 data/create/advancements/chromatic_compound.json -6ef2f15e92f5335efe59a26260c53155c604fc35 data/create/advancements/chromatic_eob.json f37551a788dfb3ff3d65db97a03c0420edf2c041 data/create/advancements/chute.json 0ffacd497176afdb26670783b65d383ac6236c19 data/create/advancements/clockwork_bearing.json e754b950e25a5a5a19554a918760521794fc21f8 data/create/advancements/clockwork_component_eob.json @@ -2325,7 +2322,7 @@ cd1a6ea80663ec9251bb13e27d90e6ccdd10ce3e data/create/advancements/recipes/create 3a9aef30af8d9694548da236fe3129c16dba4883 data/create/advancements/recipes/create.base/crafting/kinetics/encased_fan.json 0669da1ba8a761589d14c9b172abd65f8a995bad data/create/advancements/recipes/create.base/crafting/kinetics/filter.json 8d4b4ebfe4b7b70dcb34f1b79eda3aee4f5b7abb data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json -c227f65c7ef64f7244030354c9a7e87527998531 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json +450a84018a6df61921e2c7eac507928e42d82b93 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json 5b68a2e467e01d2255c448691ec5b4be20ac35c2 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json 4049cbeed4452bf6fe7608e06f4a4c90f58d6da0 data/create/advancements/recipes/create.base/crafting/kinetics/gantry_carriage.json 10529af8626e0d60d041aaebeadd4ac6a22cf061 data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json @@ -2342,6 +2339,7 @@ c023b9221d7983487d21e5ecc7d92246cfc7e791 data/create/advancements/recipes/create f2dadb365c75dd2604ee96e0217cd8024d0d137d data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json f4e8fd79cb27e0677460f5c260b106338f2a48cc data/create/advancements/recipes/create.base/crafting/kinetics/hose_pulley.json a9f2c8a0b0b322741575ef833a461006ef2f0421 data/create/advancements/recipes/create.base/crafting/kinetics/item_drain.json +2ccfaf572456e8642a0070ea6928a082f98c63af data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json 73433a5cd400ed392796a4e543f15c42dd499fe8 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json eb007bb079bbe6b6aaad2ca90f5af84261e3f8ea data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json 571da50fbf5f2fcd3363b3dab91e7233e0ebffa0 data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json @@ -3258,10 +3256,8 @@ d7b126eef46e9179c10d19d247f58e74f61818bc data/create/advancements/recipes/misc/s 2599cc5ed09e70881aca4bb1550d21b4f65a9608 data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json a1afb005cc23607cb4d84d42664b4bc28eef9ead data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json c1434c26c854d6b723c4f4d0fbb051268043da07 data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json -aca270ea8db5e00ba17c1c8fa46ee2445c2bc961 data/create/advancements/refined_radiance.json 67edd7bd314a85a1fddc2aa9f6b2207879aa5c3e data/create/advancements/reinforced.json 9654f4952c39175825a3deb2d9bb56d525f0539a data/create/advancements/root.json -1ab3abcd219b9efb225588f4c797c775e96e07ff data/create/advancements/shadow_steel.json 6c1a67e193a4c5af356b31a1d5b5e9d3faeca87e data/create/advancements/shifting_gears.json 65132cb27041c848230781cca8020a2e5ae4365e data/create/advancements/speed_controller.json a203d509a6038f0bad707e232a425388e62e1ae1 data/create/advancements/speedometer.json @@ -3271,7 +3267,7 @@ b69d174d7a5e9eab8ca013b66bc9d02244d7f9a3 data/create/advancements/spout.json 0efdaf483d84791044f085f79197b6bab3e15872 data/create/advancements/stressometer.json 1aceaa6e47709aa03f3d4f606fa5dcaacc899835 data/create/advancements/tunnel.json 4fef92dce84fa1a075db31fb33081f5fb8ec7e9e data/create/advancements/upward_chute.json -36f61712fafb6956c6e2289d61bd7eb8f7c97a29 data/create/advancements/wand_of_symmetry.json +0b65ff92a7a48ba9f4c21f725831206313b37dba data/create/advancements/wand_of_symmetry.json 2c278dc6e6e4c12c0cfce22b5192844586a2d5c1 data/create/advancements/water_wheel.json d6b94fd499cb4fb0ae587b0e9e7088832f67fe01 data/create/advancements/windmill.json ef4fa382442aacbda1ca8b762bd51ff80b708a93 data/create/advancements/wrench.json @@ -3935,7 +3931,7 @@ ad1c3ce1e98b8483512bdd754f2e5930c7b3ae85 data/create/recipes/crafting/kinetics/d b07496e4ba5bc56a2c5a395b612c68ba21328867 data/create/recipes/crafting/kinetics/encased_fan.json 0dd0cc11eaa6789fc612af3231ed247893852178 data/create/recipes/crafting/kinetics/filter.json 371a80e2a93d9fb68b892db5685aaeea55f34a11 data/create/recipes/crafting/kinetics/fluid_pipe.json -86ad4d2820e8e2b01de8d977af7796119dfb7430 data/create/recipes/crafting/kinetics/fluid_tank.json +284e8554d7285989a1684a5e14c72063d152cc9e data/create/recipes/crafting/kinetics/fluid_tank.json 3dad2a849796df268cd3a06ed37376f2cc529957 data/create/recipes/crafting/kinetics/fluid_valve.json 84153bd478c0e63a04c77579d6595043f604b7ab data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json 9e75756423b7f9372a2330a7140f80b1b87bd30e data/create/recipes/crafting/kinetics/gantry_carriage.json @@ -3953,6 +3949,7 @@ b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/g 9f08bdaeec88e04a43c2dc103869f9648deee079 data/create/recipes/crafting/kinetics/hand_crank.json d10639b0c3999481531fe0a9383a1bb4af60225e data/create/recipes/crafting/kinetics/hose_pulley.json f4fbb11ef55f3431bd387f3f6f258513bfbc8011 data/create/recipes/crafting/kinetics/item_drain.json +8f7110447f039f80a6f5b1d854bc760c3d77da82 data/create/recipes/crafting/kinetics/item_vault.json 237541c1c318b8426734c1c43be31fbd01413d39 data/create/recipes/crafting/kinetics/large_cogwheel.json 0397b107ab380cd23390c96f298971a70e9bceef data/create/recipes/crafting/kinetics/light_blue_seat.json aa06f0594e1b2d31aa41bace309ed95a16529498 data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 9f92beb43..aa455f4a5 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -771,14 +771,6 @@ "advancement.create.crushing_wheel.desc": "Create some Crushing Wheels to break down more materials more effectively.", "advancement.create.blaze_cake": "Sugar Rush", "advancement.create.blaze_cake.desc": "Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "Void Returner", - "advancement.create.shadow_steel.desc": "Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "Bright and Inspiring", - "advancement.create.refined_radiance.desc": "Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "The Chromatic Age", - "advancement.create.chromatic_age.desc": "Create casing blocks of the light and dark.", "advancement.create.wand_of_symmetry": "Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", "advancement.create.extendo_grip": "Boioioing!", @@ -2053,6 +2045,17 @@ "create.ponder.item_drain.text_4": "...they roll across, emptying out their contained fluid", "create.ponder.item_drain.text_5": "Pipe Networks can now pull the fluid from the drains' internal buffer", + "create.ponder.item_vault_sizes.header": "Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "...and take contents from this container", + "create.ponder.large_cogwheel.header": "Relaying rotational force using Large Cogwheels", "create.ponder.large_cogwheel.text_1": "Large cogwheels can connect to each other at right angles", "create.ponder.large_cogwheel.text_2": "It will help relaying conveyed speed to other axes of rotation", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index bf5bd563f..cbf1b849d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1318", + "_": "Missing Localizations: 1319", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", "advancement.create.extendo_grip": "Boioioing!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index afa126de3..06c6235ba 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 321", + "_": "Missing Localizations: 330", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "Crea ruedas trituradoras para descomponer los materiales de manera más efectiva.", "advancement.create.blaze_cake": "Rush de Azúcar", "advancement.create.blaze_cake.desc": "Preparale a tu Quemador Blaze un pastel especial.", - "advancement.create.chromatic_compound": "Minerales Misteriosos", - "advancement.create.chromatic_compound.desc": "Crea una barra de Compuesto Cromático.", - "advancement.create.shadow_steel": "Retorno Vacío", - "advancement.create.shadow_steel.desc": "Crea Acero Sombrío, una barra de nada.", - "advancement.create.refined_radiance": "Brillante e Inspirador", - "advancement.create.refined_radiance.desc": "Crea Radiancia Refinada, una poderosa sustancia cromática.", - "advancement.create.chromatic_age": "La Edad Cromática", - "advancement.create.chromatic_age.desc": "Crea bloques de cubierta de la luz y de la oscuridad.", "advancement.create.wand_of_symmetry": "Espejos Radiantes", "advancement.create.wand_of_symmetry.desc": "Crea la Vara de Simetría.", "advancement.create.extendo_grip": "¡Boioioing!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...ruedan, vaciando su líquido contenido", "create.ponder.item_drain.text_5": "Las redes de tuberías ahora pueden extraer el fluido del búfer interno de los Drenajes.", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "Transmitiendo la fuerza rotacional mediante engranajes grandes", "create.ponder.large_cogwheel.text_1": "Los engranajes grandes se pueden conectar entre sí en ángulo recto", "create.ponder.large_cogwheel.text_2": "Te ayudará a transmitir la velocidad transportada a otros ejes de rotación", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 433ee54fc..9dcca1b36 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 321", + "_": "Missing Localizations: 330", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "Crea algunas ruedas de trituración para descomponer más materiales de forma más eficaz.", "advancement.create.blaze_cake": "Fiebre del azúcar", "advancement.create.blaze_cake.desc": "Hornea en tu quemador de blaze un pastel especial.", - "advancement.create.chromatic_compound": "Minerales misteriosos", - "advancement.create.chromatic_compound.desc": "Crea una barra de compuesto cromático.", - "advancement.create.shadow_steel": "Retorno del vacío", - "advancement.create.shadow_steel.desc": "Crea acero sombrío, una barra de metal de la nada.", - "advancement.create.refined_radiance": "Brillante e inspirador", - "advancement.create.refined_radiance.desc": "Crea un resplandor refinado, una poderosa sustancia cromática.", - "advancement.create.chromatic_age": "La edad cromática", - "advancement.create.chromatic_age.desc": "Crear bloques de revestimiento de la luz y la oscuridad.", "advancement.create.wand_of_symmetry": "Espejos radiantes", "advancement.create.wand_of_symmetry.desc": "Crear un bastón de simetría.", "advancement.create.extendo_grip": "¡Boioioing!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...ruedan a través, vaciando su líquido contenido", "create.ponder.item_drain.text_5": "Las redes de tuberías pueden ahora extraer el fluido del buffer interno de los desagües", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "Transmitir fuerza rotacional mediante engranajes grandes", "create.ponder.large_cogwheel.text_1": "Los engranajes grandes pueden conectarse entre sí en ángulo recto", "create.ponder.large_cogwheel.text_2": "Ayudarán a transmitir la velocidad transportada a otros ejes de rotación.", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index fee475148..581d9a163 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1580", + "_": "Missing Localizations: 1581", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index db253466b..ea99d5cc5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1261", + "_": "Missing Localizations: 1270", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "Crea delle ruote di frantumazione per frantumare i materiali.", "advancement.create.blaze_cake": "Sugar Rush", "advancement.create.blaze_cake.desc": "Dai una torta di blaze al tuo inceneritore.", - "advancement.create.chromatic_compound": "Minerali bipolari", - "advancement.create.chromatic_compound.desc": "Crea una barra di composto cromatico.", - "advancement.create.shadow_steel": "Il ritorno del Vuoto", - "advancement.create.shadow_steel.desc": "Crea l'acciaio oscuro, una barra di metallo composta dalla non-esistenza.", - "advancement.create.refined_radiance": "Illumina e ispira", - "advancement.create.refined_radiance.desc": "Crea la radiance raffinata, una sostanza cromatica potente.", - "advancement.create.chromatic_age": "L'era cromatica", - "advancement.create.chromatic_age.desc": "Crea involucri di luce e d'ombra.", "advancement.create.wand_of_symmetry": "Perfettamente simmetrico", "advancement.create.wand_of_symmetry.desc": "Crea un'asta di simmetria.", "advancement.create.extendo_grip": "BOIOIOING", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 3962ed078..62620b1d6 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 321", + "_": "Missing Localizations: 330", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", "advancement.create.blaze_cake": "シュガー・ラッシュ", "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.chromatic_compound": "二極性化合物", - "advancement.create.chromatic_compound.desc": "色彩の化合物を作る", - "advancement.create.shadow_steel": "奈落からの帰還", - "advancement.create.shadow_steel.desc": "究極の虚無、「シャドウスチール」を作る", - "advancement.create.refined_radiance": "光輝の吹入", - "advancement.create.refined_radiance.desc": "究極の色彩、「高貴な光輝」を作る", - "advancement.create.chromatic_age": "色彩の時代", - "advancement.create.chromatic_age.desc": "光と闇のケーシングを作る", "advancement.create.wand_of_symmetry": "輝く鏡", "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", "advancement.create.extendo_grip": "ビヨヨーン!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...中に詰まった液体を出しながら横に転がっていきます", "create.ponder.item_drain.text_5": "液体ネットワークで、排液口から液体を取り出せます", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 9ca50bd2c..288ff3eab 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 321", + "_": "Missing Localizations: 330", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", "advancement.create.blaze_cake": "폭주", "advancement.create.blaze_cake.desc": "블레이즈 버너에게 줄 특별한 케이크를 만드세요.", - "advancement.create.chromatic_compound": "양극성 재료", - "advancement.create.chromatic_compound.desc": "색채 혼합물를 만드세요.", - "advancement.create.shadow_steel": "공허에서의 복귀", - "advancement.create.shadow_steel.desc": "무의 금속, 그림자 강철을 생성하세요.", - "advancement.create.refined_radiance": "빛으로부터의 자극", - "advancement.create.refined_radiance.desc": "강력한 색채 물질, 정제된 빛을 생성하세요.", - "advancement.create.chromatic_age": "양극 시대", - "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", "advancement.create.wand_of_symmetry": "빛나는 건축", "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", "advancement.create.extendo_grip": "띠요옹!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...아이템은 굴라가며 담긴 액체를 비웁니다.", "create.ponder.item_drain.text_5": "배수구 탱크에 있는 액체는 파이프로 옮길 수 있습니다.", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "큰 톱니바퀴로 동력 전달하기", "create.ponder.large_cogwheel.text_1": "큰 톱니바퀴는 수직으로 서로 맞물립니다.", "create.ponder.large_cogwheel.text_2": "이는 다른 축으로 동력을 전달하는데 도움이 됩니다.", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 5906902b2..41ccfd642 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1933", + "_": "Missing Localizations: 1934", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index fe60c48a4..7ba861df3 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 360", + "_": "Missing Localizations: 369", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "Wytwórz parę kół kruszących, aby kruszyły więcej materiałów w krótszym czasie.", "advancement.create.blaze_cake": "Przypływ energii", "advancement.create.blaze_cake.desc": "Upiecz dla swojego palnika pyszne ciasto.", - "advancement.create.chromatic_compound": "Minerały dwubiegunowe", - "advancement.create.chromatic_compound.desc": "Wytwórz sztabkę związku chromatycznego.", - "advancement.create.shadow_steel": "Dar otchłani", - "advancement.create.shadow_steel.desc": "Uzyskaj mroczną stal, sztabkę pełną nicości.", - "advancement.create.refined_radiance": "Czysty blask", - "advancement.create.refined_radiance.desc": "Uzyskaj świetlisty materiał, silną substancję chromatyczną.", - "advancement.create.chromatic_age": "Epoka kolorów", - "advancement.create.chromatic_age.desc": "Wytwórz jasną i mroczną obudowę.", "advancement.create.wand_of_symmetry": "Symetria.", "advancement.create.wand_of_symmetry.desc": "Zdobądź różdżkę symetrii.", "advancement.create.extendo_grip": "Dalej dalej ręce Gadżeta!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...są opróżniane i przesuwane na drugą stronę", "create.ponder.item_drain.text_5": "Systemy rur mogą wyciągać zawartą w odpływie ciecz", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "Przekazywanie siły obrotowej z użyciem dużych kół zębatych", "create.ponder.large_cogwheel.text_1": "Duże koła zębate mogą się łączyć ze sobą pod kątem prostym", "create.ponder.large_cogwheel.text_2": "Pomogą one w przekazywaniu siły obrotowej na inne osie obrotu", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index f4f61ee54..b0084498d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1669", + "_": "Missing Localizations: 1670", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid", "create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index df01538ed..fc951a2ba 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 365", + "_": "Missing Localizations: 374", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "Создайте несколько дробящих колес, чтобы более эффективно разрушать больше материалов.", "advancement.create.blaze_cake": "Сахарная лихорадка", "advancement.create.blaze_cake.desc": "Испеките особый торт для вашей Горелки Всполоха.", - "advancement.create.chromatic_compound": "Биполярные минералы", - "advancement.create.chromatic_compound.desc": "Создайте хроматический компаунд", - "advancement.create.shadow_steel": "Возвращение пустоты", - "advancement.create.shadow_steel.desc": "Создайте призрачную сталь, металлический слиток небытия.", - "advancement.create.refined_radiance": "Яркий и вдохновляющий", - "advancement.create.refined_radiance.desc": "Создайте изысканное сияние, мощное хроматическое вещество.", - "advancement.create.chromatic_age": "Хроматический век", - "advancement.create.chromatic_age.desc": "Создайте блоки корпуса из света и тьмы.", "advancement.create.wand_of_symmetry": "Сияющие зеркала", "advancement.create.wand_of_symmetry.desc": "Создайте жезл симметрии.", "advancement.create.extendo_grip": "Бойоиоинг!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...они переворачиваются, выливая содержащуюся в них жидкость", "create.ponder.item_drain.text_5": "Сети труб теперь могут вытягивать жидкость из внутреннего хранилища осушителей", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "Передаче силы вращения при помощи Больших шестерней", "create.ponder.large_cogwheel.text_1": "Большие шестерни могут соединяться между собой под прямым углом", "create.ponder.large_cogwheel.text_2": "Это поможет передавать скорость на другие оси вращения", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index aa618f271..3e1f9c608 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 321", + "_": "Missing Localizations: 330", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", "advancement.create.blaze_cake": "糖份超标", "advancement.create.blaze_cake.desc": "给烈焰人燃烧室烤一份特别蛋糕。", - "advancement.create.chromatic_compound": "两极材料", - "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", - "advancement.create.shadow_steel": "虚空归来者", - "advancement.create.shadow_steel.desc": "制作一些暗影钢", - "advancement.create.refined_radiance": "明亮而启灵", - "advancement.create.refined_radiance.desc": "制作一个光辉石", - "advancement.create.chromatic_age": "异彩时代", - "advancement.create.chromatic_age.desc": "创造出光与影的机壳。", "advancement.create.wand_of_symmetry": "简单的镜面几何学", "advancement.create.wand_of_symmetry.desc": "制作一个对称之杖", "advancement.create.extendo_grip": "biu biu biu!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...物品将会经过分液池顶部,并在此过程中将其包含的液体排入分液池内", "create.ponder.item_drain.text_5": "流体管道可以从分液池中抽取液体", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", "create.ponder.large_cogwheel.text_2": "可以利用大齿轮变更旋转轴向", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index ebae41aaf..ed72f6072 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 379", + "_": "Missing Localizations: 388", "_": "->------------------------] Game Elements [------------------------<-", @@ -772,14 +772,6 @@ "advancement.create.crushing_wheel.desc": "製作一對能更快粉碎物品的粉碎輪", "advancement.create.blaze_cake": "糖份超標", "advancement.create.blaze_cake.desc": "幫烈焰使者動力爐烤一份特別的蛋糕。", - "advancement.create.chromatic_compound": "兩極材料", - "advancement.create.chromatic_compound.desc": "製作一個異彩化合物", - "advancement.create.shadow_steel": "自虛空的歸來的寶石", - "advancement.create.shadow_steel.desc": "製作暗影鋼", - "advancement.create.refined_radiance": "閃耀著純白的聖光", - "advancement.create.refined_radiance.desc": "製作光輝石", - "advancement.create.chromatic_age": "繽紛時代", - "advancement.create.chromatic_age.desc": "創造出光與影的機殼。", "advancement.create.wand_of_symmetry": "簡單的鏡面幾何學", "advancement.create.wand_of_symmetry.desc": "製作一個對稱杖", "advancement.create.extendo_grip": "piu piu piu!", @@ -2054,6 +2046,17 @@ "create.ponder.item_drain.text_4": "...... 他會從上方滑過,並清空裡面的液體", "create.ponder.item_drain.text_5": "現在液體網路可以抽取分液池中的液體了", + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.large_cogwheel.header": "使用大齒輪傳遞動能", "create.ponder.large_cogwheel.text_1": "大齒輪可以以特定的角度相互連接", "create.ponder.large_cogwheel.text_2": "可以利用大齒輪變更旋轉軸向", diff --git a/src/generated/resources/data/create/advancements/chromatic_age.json b/src/generated/resources/data/create/advancements/chromatic_age.json deleted file mode 100644 index 47cf8fbe5..000000000 --- a/src/generated/resources/data/create/advancements/chromatic_age.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "parent": "create:chromatic_compound", - "display": { - "icon": { - "item": "create:refined_radiance_casing" - }, - "title": { - "translate": "advancement.create.chromatic_age" - }, - "description": { - "translate": "advancement.create.chromatic_age.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:shadow_steel_casing" - ] - } - ] - } - }, - "1": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:refined_radiance_casing" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chromatic_compound.json b/src/generated/resources/data/create/advancements/chromatic_compound.json deleted file mode 100644 index 9f2acee60..000000000 --- a/src/generated/resources/data/create/advancements/chromatic_compound.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:blaze_cake", - "display": { - "icon": { - "item": "create:chromatic_compound" - }, - "title": { - "translate": "advancement.create.chromatic_compound" - }, - "description": { - "translate": "advancement.create.chromatic_compound.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:chromatic_compound" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chromatic_eob.json b/src/generated/resources/data/create/advancements/chromatic_eob.json deleted file mode 100644 index 160a7e452..000000000 --- a/src/generated/resources/data/create/advancements/chromatic_eob.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "parent": "create:chromatic_age", - "display": { - "icon": { - "item": "minecraft:oak_sapling" - }, - "title": { - "translate": "advancement.create.eob" - }, - "description": { - "translate": "advancement.create.eob.desc" - }, - "frame": "challenge", - "show_toast": false, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:shadow_steel_casing" - ] - } - ] - } - }, - "1": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:refined_radiance_casing" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json index 525defdac..c0396112c 100644 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json @@ -11,9 +11,7 @@ "conditions": { "items": [ { - "items": [ - "create:copper_casing" - ] + "tag": "forge:barrels/wooden" } ] } diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json new file mode 100644 index 000000000..e87fc7bb9 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/item_vault" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:barrels/wooden" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/item_vault" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/refined_radiance.json b/src/generated/resources/data/create/advancements/refined_radiance.json deleted file mode 100644 index 8422ab91a..000000000 --- a/src/generated/resources/data/create/advancements/refined_radiance.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:chromatic_compound", - "display": { - "icon": { - "item": "create:refined_radiance" - }, - "title": { - "translate": "advancement.create.refined_radiance" - }, - "description": { - "translate": "advancement.create.refined_radiance.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:refined_radiance" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/shadow_steel.json b/src/generated/resources/data/create/advancements/shadow_steel.json deleted file mode 100644 index ce7182a1b..000000000 --- a/src/generated/resources/data/create/advancements/shadow_steel.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:chromatic_compound", - "display": { - "icon": { - "item": "create:shadow_steel" - }, - "title": { - "translate": "advancement.create.shadow_steel" - }, - "description": { - "translate": "advancement.create.shadow_steel.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "create:shadow_steel" - ] - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/wand_of_symmetry.json b/src/generated/resources/data/create/advancements/wand_of_symmetry.json index 311560cb6..3889d50ac 100644 --- a/src/generated/resources/data/create/advancements/wand_of_symmetry.json +++ b/src/generated/resources/data/create/advancements/wand_of_symmetry.json @@ -1,5 +1,5 @@ { - "parent": "create:refined_radiance", + "parent": "create:precision_mechanism", "display": { "icon": { "item": "create:wand_of_symmetry" diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json index d100d7ce8..68961233c 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json @@ -1,23 +1,19 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - " B ", - "SCS", - " B " + "B", + "C", + "B" ], "key": { "B": { - "item": "create:copper_casing" - }, - "S": { - "tag": "forge:nuggets/copper" + "tag": "forge:plates/copper" }, "C": { - "tag": "forge:glass" + "tag": "forge:barrels/wooden" } }, "result": { - "item": "create:fluid_tank", - "count": 2 + "item": "create:fluid_tank" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/item_vault.json b/src/generated/resources/data/create/recipes/crafting/kinetics/item_vault.json new file mode 100644 index 000000000..0387290a2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/item_vault.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "B", + "C", + "B" + ], + "key": { + "B": { + "tag": "forge:plates/iron" + }, + "C": { + "tag": "forge:barrels/wooden" + } + }, + "result": { + "item": "create:item_vault" + } +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index a4086e35b..5259b4c70 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -157,9 +157,9 @@ import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkGenerator; import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchBlock; -import com.simibubi.create.content.logistics.block.vault.VaultBlock; -import com.simibubi.create.content.logistics.block.vault.VaultCTBehaviour; -import com.simibubi.create.content.logistics.block.vault.VaultItem; +import com.simibubi.create.content.logistics.block.vault.ItemVaultBlock; +import com.simibubi.create.content.logistics.block.vault.ItemVaultCTBehaviour; +import com.simibubi.create.content.logistics.block.vault.ItemVaultItem; import com.simibubi.create.content.logistics.item.LecternControllerBlock; import com.simibubi.create.content.schematics.block.SchematicTableBlock; import com.simibubi.create.content.schematics.block.SchematicannonBlock; @@ -637,6 +637,7 @@ public class AllBlocks { public static final BlockEntry WOODEN_BRACKET = REGISTRATE.block("wooden_bracket", BracketBlock::new) .blockstate(new BracketGenerator("wooden")::generate) + .properties(p -> p.sound(SoundType.SCAFFOLDING)) .transform(axeOrPickaxe()) .item(BracketBlockItem::new) .transform(BracketGenerator.itemModel("wooden")) @@ -644,6 +645,7 @@ public class AllBlocks { public static final BlockEntry METAL_BRACKET = REGISTRATE.block("metal_bracket", BracketBlock::new) .blockstate(new BracketGenerator("metal")::generate) + .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) .item(BracketBlockItem::new) .transform(BracketGenerator.itemModel("metal")) @@ -652,7 +654,7 @@ public class AllBlocks { // Fluids public static final BlockEntry FLUID_PIPE = REGISTRATE.block("fluid_pipe", FluidPipeBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.pipe()) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) @@ -662,7 +664,7 @@ public class AllBlocks { public static final BlockEntry ENCASED_FLUID_PIPE = REGISTRATE.block("encased_fluid_pipe", EncasedPipeBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .properties(BlockBehaviour.Properties::noOcclusion) .transform(axeOrPickaxe()) .blockstate(BlockStateGen.encasedPipe()) @@ -675,7 +677,7 @@ public class AllBlocks { public static final BlockEntry GLASS_FLUID_PIPE = REGISTRATE.block("glass_fluid_pipe", GlassFluidPipeBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .addLayer(() -> RenderType::cutoutMipped) .transform(pickaxeOnly()) .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, s -> p.models() @@ -686,7 +688,7 @@ public class AllBlocks { .register(); public static final BlockEntry MECHANICAL_PUMP = REGISTRATE.block("mechanical_pump", PumpBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) @@ -697,7 +699,7 @@ public class AllBlocks { public static final BlockEntry SMART_FLUID_PIPE = REGISTRATE.block("smart_fluid_pipe", SmartFluidPipeBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(new SmartFluidPipeGenerator()::generate) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) @@ -706,7 +708,7 @@ public class AllBlocks { .register(); public static final BlockEntry FLUID_VALVE = REGISTRATE.block("fluid_valve", FluidValveBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", @@ -736,7 +738,7 @@ public class AllBlocks { }); public static final BlockEntry FLUID_TANK = REGISTRATE.block("fluid_tank", FluidTankBlock::regular) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .properties(BlockBehaviour.Properties::noOcclusion) .transform(pickaxeOnly()) .blockstate(new FluidTankGenerator()::generate) @@ -749,7 +751,7 @@ public class AllBlocks { public static final BlockEntry CREATIVE_FLUID_TANK = REGISTRATE.block("creative_fluid_tank", FluidTankBlock::creative) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .properties(BlockBehaviour.Properties::noOcclusion) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) @@ -766,7 +768,7 @@ public class AllBlocks { .register(); public static final BlockEntry HOSE_PULLEY = REGISTRATE.block("hose_pulley", HosePulleyBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .transform(BlockStressDefaults.setImpact(4.0)) @@ -775,7 +777,7 @@ public class AllBlocks { .register(); public static final BlockEntry ITEM_DRAIN = REGISTRATE.block("item_drain", ItemDrainBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p))) @@ -783,7 +785,7 @@ public class AllBlocks { .register(); public static final BlockEntry SPOUT = REGISTRATE.block("spout", SpoutBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .addLayer(() -> RenderType::cutoutMipped) @@ -793,7 +795,7 @@ public class AllBlocks { public static final BlockEntry PORTABLE_FLUID_INTERFACE = REGISTRATE.block("portable_fluid_interface", PortableStorageInterfaceBlock::forFluids) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .transform(axeOrPickaxe()) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement())) @@ -820,6 +822,7 @@ public class AllBlocks { public static final BlockEntry PISTON_EXTENSION_POLE = REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new) .initialProperties(() -> Blocks.PISTON_HEAD) + .properties(p -> p.sound(SoundType.SCAFFOLDING)) .transform(axeOrPickaxe()) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) .simpleItem() @@ -1104,7 +1107,8 @@ public class AllBlocks { public static final BlockEntry SAIL_FRAME = REGISTRATE.block("sail_frame", p -> SailBlock.frame(p)) .initialProperties(SharedProperties::wooden) - .properties(BlockBehaviour.Properties::noOcclusion) + .properties(p -> p.sound(SoundType.SCAFFOLDING) + .noOcclusion()) .transform(axeOnly()) .blockstate(BlockStateGen.directionalBlockProvider(false)) .tag(AllBlockTags.WINDMILL_SAILS.tag) @@ -1115,7 +1119,8 @@ public class AllBlocks { public static final BlockEntry SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) .initialProperties(SharedProperties::wooden) - .properties(BlockBehaviour.Properties::noOcclusion) + .properties(p -> p.sound(SoundType.SCAFFOLDING) + .noOcclusion()) .transform(axeOnly()) .blockstate(BlockStateGen.directionalBlockProvider(false)) .tag(AllBlockTags.WINDMILL_SAILS.tag) @@ -1150,6 +1155,7 @@ public class AllBlocks { public static final BlockEntry COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new) .transform(BuilderTransformers.casing(AllSpriteShifts.COPPER_CASING)) + .properties(p -> p.sound(SoundType.COPPER)) .register(); public static final BlockEntry SHADOW_STEEL_CASING = @@ -1241,7 +1247,7 @@ public class AllBlocks { .transform(customItemModel()) .register(); - public static final BlockEntry ITEM_VAULT = REGISTRATE.block("item_vault", VaultBlock::new) + public static final BlockEntry ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new) .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK) .explosionResistance(1200)) @@ -1249,10 +1255,10 @@ public class AllBlocks { .blockstate((c, p) -> p.getVariantBuilder(c.get()) .forAllStates(s -> ConfiguredModel.builder() .modelFile(AssetLookup.standardModel(c, p)) - .rotationY(s.getValue(VaultBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) + .rotationY(s.getValue(ItemVaultBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) .build())) - .onRegister(connectedTextures(new VaultCTBehaviour())) - .item(VaultItem::new) + .onRegister(connectedTextures(new ItemVaultCTBehaviour())) + .item(ItemVaultItem::new) .build() .register(); @@ -1436,7 +1442,7 @@ public class AllBlocks { public static final BlockEntry COPPER_BACKTANK = REGISTRATE.block("copper_backtank", CopperBacktankBlock::new) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SharedProperties::copperMetal) .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index f2c165594..3102668dc 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -163,7 +163,7 @@ import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkTileEntity; import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchTileEntity; -import com.simibubi.create.content.logistics.block.vault.VaultTileEntity; +import com.simibubi.create.content.logistics.block.vault.ItemVaultTileEntity; import com.simibubi.create.content.logistics.item.LecternControllerRenderer; import com.simibubi.create.content.logistics.item.LecternControllerTileEntity; import com.simibubi.create.content.schematics.block.SchematicTableTileEntity; @@ -408,8 +408,8 @@ public class AllTileEntities { .renderer(() -> ArmRenderer::new) .register(); - public static final TileEntityEntry ITEM_VAULT = Create.registrate() - .tileEntity("item_vault", VaultTileEntity::new) + public static final TileEntityEntry ITEM_VAULT = Create.registrate() + .tileEntity("item_vault", ItemVaultTileEntity::new) .validBlocks(AllBlocks.ITEM_VAULT) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java index d970a152d..53b24cac8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java @@ -29,8 +29,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pul import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankConnectivityHandler; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; -import com.simibubi.create.content.logistics.block.vault.VaultBlock; -import com.simibubi.create.content.logistics.block.vault.VaultConnectivityHandler; +import com.simibubi.create.content.logistics.block.vault.ItemVaultBlock; +import com.simibubi.create.content.logistics.block.vault.ItemVaultConnectivityHandler; import com.simibubi.create.foundation.config.ContraptionMovementSetting; import net.minecraft.core.BlockPos; @@ -333,8 +333,8 @@ public class BlockMovementChecks { .getAxis(); if (state.getBlock() instanceof FluidTankBlock) return FluidTankConnectivityHandler.isConnected(world, pos, pos.relative(direction)); - if (state.getBlock() instanceof VaultBlock) - return VaultConnectivityHandler.isConnected(world, pos, pos.relative(direction)); + if (state.getBlock() instanceof ItemVaultBlock) + return ItemVaultConnectivityHandler.isConnected(world, pos, pos.relative(direction)); if (AllBlocks.STICKER.has(state) && state.getValue(StickerBlock.EXTENDED)) { return direction == state.getValue(StickerBlock.FACING) && !isNotSupportive(world.getBlockState(pos.relative(direction)), direction.getOpposite()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index 3891ccca8..bc36650a7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -57,9 +57,10 @@ import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateTileEntity; import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; -import com.simibubi.create.content.logistics.block.vault.VaultTileEntity; +import com.simibubi.create.content.logistics.block.vault.ItemVaultTileEntity; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.CombinedTankWrapper; +import com.simibubi.create.foundation.tileEntity.IMultiTileContainer; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.BlockFace; import com.simibubi.create.foundation.utility.ICoordinate; @@ -337,6 +338,15 @@ public abstract class Contraption { frontier.add(attached); } + // Double Chest halves stick together + if (state.hasProperty(ChestBlock.TYPE) && state.hasProperty(ChestBlock.FACING) + && state.getValue(ChestBlock.TYPE) != ChestType.SINGLE) { + Direction offset = ChestBlock.getConnectedDirection(state); + BlockPos attached = pos.relative(offset); + if (!visited.contains(attached)) + frontier.add(attached); + } + // Bearings potentially create stabilized sub-contraptions if (AllBlocks.MECHANICAL_BEARING.has(state)) moveBearing(pos, frontier, visited, state); @@ -593,8 +603,6 @@ public abstract class Contraption { protected Pair capture(Level world, BlockPos pos) { BlockState blockstate = world.getBlockState(pos); - if (blockstate.getBlock() instanceof ChestBlock) - blockstate = blockstate.setValue(ChestBlock.TYPE, ChestType.SINGLE); if (AllBlocks.REDSTONE_CONTACT.has(blockstate)) blockstate = blockstate.setValue(RedstoneContactBlock.POWERED, true); if (blockstate.getBlock() instanceof ButtonBlock) { @@ -647,7 +655,7 @@ public abstract class Contraption { nbt.remove("y"); nbt.remove("z"); - if ((tileentity instanceof FluidTankTileEntity || tileentity instanceof VaultTileEntity) + if ((tileentity instanceof FluidTankTileEntity || tileentity instanceof ItemVaultTileEntity) && nbt.contains("Controller")) nbt.put("Controller", NbtUtils.writeBlockPos(toLocalPos(NbtUtils.readBlockPos(nbt.getCompound("Controller"))))); @@ -1066,8 +1074,8 @@ public abstract class Contraption { tag.remove("InitialOffset"); } - if (tileEntity instanceof FluidTankTileEntity && tag.contains("LastKnownPos")) - tag.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below())); + if (tileEntity instanceof IMultiTileContainer && tag.contains("LastKnownPos")) + tag.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); tileEntity.load(tag); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java index b18b6dfa4..6627cee39 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java @@ -4,17 +4,17 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; import com.simibubi.create.content.contraptions.processing.ProcessingInventory; import com.simibubi.create.content.logistics.block.inventories.BottomlessItemHandler; +import com.simibubi.create.content.logistics.block.vault.ItemVaultTileEntity; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.ContainerHelper; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.ChestBlock; import net.minecraft.world.level.block.entity.BarrelBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.ChestBlockEntity; import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity; -import net.minecraft.world.level.block.state.properties.ChestType; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; @@ -32,7 +32,7 @@ public class MountedStorage { public static boolean canUseAsStorage(BlockEntity te) { if (te == null) return false; - + if (te instanceof MechanicalCrafterTileEntity) return false; @@ -44,6 +44,8 @@ public class MountedStorage { return true; if (te instanceof BarrelBlockEntity) return true; + if (te instanceof ItemVaultTileEntity) + return true; LazyOptional capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); IItemHandler handler = capability.orElse(null); @@ -60,13 +62,18 @@ public class MountedStorage { if (te == null) return; - // Split double chests - if (te.getType() == BlockEntityType.CHEST || te.getType() == BlockEntityType.TRAPPED_CHEST) { - if (te.getBlockState() - .getValue(ChestBlock.TYPE) != ChestType.SINGLE) - te.getLevel() - .setBlockAndUpdate(te.getBlockPos(), te.getBlockState() - .setValue(ChestBlock.TYPE, ChestType.SINGLE)); + if (te instanceof ChestBlockEntity) { + CompoundTag tag = te.save(new CompoundTag()); + if (tag.contains("LootTable", 8)) + return; + + handler = new ItemStackHandler(((ChestBlockEntity) te).getContainerSize()); + NonNullList items = NonNullList.withSize(handler.getSlots(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(tag, items); + for (int i = 0; i < items.size(); i++) + handler.setStackInSlot(i, items.get(i)); + valid = true; + return; } IItemHandler teHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) @@ -74,6 +81,13 @@ public class MountedStorage { if (teHandler == dummyHandler) return; + // multiblock vaults need to provide individual invs + if (te instanceof ItemVaultTileEntity) { + handler = ((ItemVaultTileEntity) te).getInventoryOfBlock(); + valid = true; + return; + } + // te uses ItemStackHandler if (teHandler instanceof ItemStackHandler) { handler = (ItemStackHandler) teHandler; @@ -99,7 +113,23 @@ public class MountedStorage { // FIXME: More dynamic mounted storage in .4 if (handler instanceof BottomlessItemHandler) return; + + if (te instanceof ChestBlockEntity) { + CompoundTag tag = te.save(new CompoundTag()); + tag.remove("Items"); + NonNullList items = NonNullList.withSize(handler.getSlots(), ItemStack.EMPTY); + for (int i = 0; i < items.size(); i++) + items.set(i, handler.getStackInSlot(i)); + ContainerHelper.saveAllItems(tag, items); + te.load(tag); + return; + } + if (te instanceof ItemVaultTileEntity) { + ((ItemVaultTileEntity) te).applyInventoryToBlock(handler); + return; + } + LazyOptional capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); IItemHandler teHandler = capability.orElse(null); if (!(teHandler instanceof IItemHandlerModifiable)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java index 2fc07a8e5..d4c650d4c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -48,7 +49,15 @@ public class BracketBlockItem extends BlockItem { return InteractionResult.SUCCESS; BlockState bracket = behaviour.getBracket(); - behaviour.applyBracket(suitableBracket.get()); + BlockState newBracket = suitableBracket.get(); + + if (bracket == newBracket) + return InteractionResult.SUCCESS; + + world.playSound(null, pos, newBracket + .getSoundType() + .getPlaceSound(), SoundSource.BLOCKS, 0.75f, 1); + behaviour.applyBracket(newBracket); if (!world.isClientSide && player != null) behaviour.triggerAdvancements(world, player, state); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java index 15179e99b..48b75f0b2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock.Shape import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.SmartFluidTank; +import com.simibubi.create.foundation.tileEntity.IMultiTileContainer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.animation.InterpolatedChasingValue; @@ -36,7 +37,7 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.FluidTank; -public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleInformation { +public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleInformation, IMultiTileContainer { private static final int MAX_SIZE = 3; @@ -106,10 +107,12 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI fluidLevel.tick(); } + @Override public BlockPos getLastKnownPos() { return lastKnownPos; } + @Override public boolean isController() { return controller == null || worldPosition.getX() == controller.getX() && worldPosition.getY() == controller.getY() && worldPosition.getZ() == controller.getZ(); @@ -277,6 +280,7 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI } } + @Override public void setController(BlockPos controller) { if (level.isClientSide && !isVirtual()) return; @@ -295,6 +299,7 @@ public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleI oldCap.invalidate(); } + @Override public BlockPos getController() { return isController() ? worldPosition : controller; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultBlock.java similarity index 88% rename from src/main/java/com/simibubi/create/content/logistics/block/vault/VaultBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultBlock.java index 6c262ee3d..e8fb413b8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultBlock.java @@ -33,12 +33,12 @@ import net.minecraft.world.level.block.state.properties.Property; import net.minecraftforge.common.util.ForgeSoundType; import net.minecraftforge.items.CapabilityItemHandler; -public class VaultBlock extends Block implements IWrenchable, ITE { +public class ItemVaultBlock extends Block implements IWrenchable, ITE { public static final Property HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS; public static final BooleanProperty LARGE = BooleanProperty.create("large"); - public VaultBlock(Properties p_i48440_1_) { + public ItemVaultBlock(Properties p_i48440_1_) { super(p_i48440_1_); registerDefaultState(defaultBlockState().setValue(LARGE, false)); } @@ -73,7 +73,7 @@ public class VaultBlock extends Block implements IWrenchable, ITE getTileEntityType() { + public BlockEntityType getTileEntityType() { return AllTileEntities.ITEM_VAULT.get(); } @Override - public Class getTileEntityClass() { - return VaultTileEntity.class; + public Class getTileEntityClass() { + return ItemVaultTileEntity.class; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultCTBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultCTBehaviour.java similarity index 84% rename from src/main/java/com/simibubi/create/content/logistics/block/vault/VaultCTBehaviour.java rename to src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultCTBehaviour.java index 61bcd4941..6d3a7832c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultCTBehaviour.java @@ -11,12 +11,12 @@ import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -public class VaultCTBehaviour extends ConnectedTextureBehaviour { +public class ItemVaultCTBehaviour extends ConnectedTextureBehaviour { @Override public CTSpriteShiftEntry get(BlockState state, Direction direction) { - Axis vaultBlockAxis = VaultBlock.getVaultBlockAxis(state); - boolean small = !VaultBlock.isLarge(state); + Axis vaultBlockAxis = ItemVaultBlock.getVaultBlockAxis(state); + boolean small = !ItemVaultBlock.isLarge(state); if (vaultBlockAxis == null) return null; @@ -32,7 +32,7 @@ public class VaultCTBehaviour extends ConnectedTextureBehaviour { @Override protected Direction getUpDirection(BlockAndTintGetter reader, BlockPos pos, BlockState state, Direction face) { - Axis vaultBlockAxis = VaultBlock.getVaultBlockAxis(state); + Axis vaultBlockAxis = ItemVaultBlock.getVaultBlockAxis(state); boolean alongX = vaultBlockAxis == Axis.X; if (face.getAxis() .isVertical() && alongX) @@ -45,7 +45,7 @@ public class VaultCTBehaviour extends ConnectedTextureBehaviour { @Override protected Direction getRightDirection(BlockAndTintGetter reader, BlockPos pos, BlockState state, Direction face) { - Axis vaultBlockAxis = VaultBlock.getVaultBlockAxis(state); + Axis vaultBlockAxis = ItemVaultBlock.getVaultBlockAxis(state); if (face.getAxis() .isVertical() && vaultBlockAxis == Axis.X) return super.getRightDirection(reader, pos, state, face).getClockWise(); @@ -62,7 +62,7 @@ public class VaultCTBehaviour extends ConnectedTextureBehaviour { @Override public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos, BlockPos otherPos, Direction face) { - return state == other && VaultConnectivityHandler.isConnected(reader, pos, otherPos); + return state == other && ItemVaultConnectivityHandler.isConnected(reader, pos, otherPos); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultConnectivityHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultConnectivityHandler.java similarity index 70% rename from src/main/java/com/simibubi/create/content/logistics/block/vault/VaultConnectivityHandler.java rename to src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultConnectivityHandler.java index 9a673537d..6b6207203 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultConnectivityHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultConnectivityHandler.java @@ -26,22 +26,22 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public class VaultConnectivityHandler { +public class ItemVaultConnectivityHandler { - public static void formVaults(VaultTileEntity te) { + public static void formVaults(ItemVaultTileEntity te) { VaultSearchCache cache = new VaultSearchCache(); - List frontier = new ArrayList<>(); + List frontier = new ArrayList<>(); frontier.add(te); formVaults(te.getType(), te.getLevel(), cache, frontier); } private static void formVaults(BlockEntityType type, BlockGetter world, VaultSearchCache cache, - List frontier) { - PriorityQueue> creationQueue = makeCreationQueue(); + List frontier) { + PriorityQueue> creationQueue = makeCreationQueue(); Set visited = new HashSet<>(); int minY = Integer.MAX_VALUE; - for (VaultTileEntity fluidTankTileEntity : frontier) { + for (ItemVaultTileEntity fluidTankTileEntity : frontier) { BlockPos pos = fluidTankTileEntity.getBlockPos(); minY = Math.min(pos.getY(), minY); } @@ -49,7 +49,7 @@ public class VaultConnectivityHandler { minY -= 3; while (!frontier.isEmpty()) { - VaultTileEntity tank = frontier.remove(0); + ItemVaultTileEntity tank = frontier.remove(0); BlockPos tankPos = tank.getBlockPos(); if (visited.contains(tankPos)) continue; @@ -68,7 +68,7 @@ public class VaultConnectivityHandler { continue; if (visited.contains(next)) continue; - VaultTileEntity nextTank = vaultAt(type, world, next); + ItemVaultTileEntity nextTank = vaultAt(type, world, next); if (nextTank == null) continue; if (nextTank.isRemoved()) @@ -80,8 +80,8 @@ public class VaultConnectivityHandler { visited.clear(); while (!creationQueue.isEmpty()) { - Pair next = creationQueue.poll(); - VaultTileEntity toCreate = next.getValue(); + Pair next = creationQueue.poll(); + ItemVaultTileEntity toCreate = next.getValue(); if (visited.contains(toCreate.getBlockPos())) continue; visited.add(toCreate.getBlockPos()); @@ -90,11 +90,11 @@ public class VaultConnectivityHandler { } - public static void splitVault(VaultTileEntity te) { + public static void splitVault(ItemVaultTileEntity te) { splitVaultAndInvalidate(te, null, false); } - private static int tryToFormNewVault(VaultTileEntity te, VaultSearchCache cache, boolean simulate) { + private static int tryToFormNewVault(ItemVaultTileEntity te, VaultSearchCache cache, boolean simulate) { int bestWidth = 1; int bestAmount = -1; @@ -120,9 +120,9 @@ public class VaultConnectivityHandler { te.length = bestAmount / bestWidth / bestWidth; BlockState state = te.getBlockState(); - if (VaultBlock.isVault(state)) + if (ItemVaultBlock.isVault(state)) te.getLevel() - .setBlock(te.getBlockPos(), state.setValue(VaultBlock.LARGE, te.radius > 2), 22); + .setBlock(te.getBlockPos(), state.setValue(ItemVaultBlock.LARGE, te.radius > 2), 22); te.itemCapability.invalidate(); te.setChanged(); @@ -131,34 +131,34 @@ public class VaultConnectivityHandler { return bestAmount; } - private static int tryToFormNewVaultOfRadius(VaultTileEntity te, int width, VaultSearchCache cache, + private static int tryToFormNewVaultOfRadius(ItemVaultTileEntity te, int width, VaultSearchCache cache, boolean simulate) { int amount = 0; int height = 0; BlockEntityType type = te.getType(); Level world = te.getLevel(); BlockPos origin = te.getBlockPos(); - boolean alongZ = VaultBlock.getVaultBlockAxis(te.getBlockState()) == Axis.Z; + boolean alongZ = ItemVaultBlock.getVaultBlockAxis(te.getBlockState()) == Axis.Z; Search: - for (int yOffset = 0; yOffset < VaultTileEntity.getMaxLength(width); yOffset++) { + for (int yOffset = 0; yOffset < ItemVaultTileEntity.getMaxLength(width); yOffset++) { for (int xOffset = 0; xOffset < width; xOffset++) { for (int zOffset = 0; zOffset < width; zOffset++) { BlockPos pos = alongZ ? origin.offset(xOffset, zOffset, yOffset) : origin.offset(yOffset, xOffset, zOffset); - Optional tank = cache.getOrCache(type, world, pos); + Optional tank = cache.getOrCache(type, world, pos); if (!tank.isPresent()) break Search; - VaultTileEntity controller = tank.get(); + ItemVaultTileEntity controller = tank.get(); int otherWidth = controller.radius; if (otherWidth > width) break Search; - if (otherWidth == width && controller.length == VaultTileEntity.getMaxLength(width)) + if (otherWidth == width && controller.length == ItemVaultTileEntity.getMaxLength(width)) break Search; - if ((VaultBlock.getVaultBlockAxis(controller.getBlockState()) == Axis.Z) != alongZ) + if ((ItemVaultBlock.getVaultBlockAxis(controller.getBlockState()) == Axis.Z) != alongZ) break Search; BlockPos controllerPos = controller.getBlockPos(); @@ -192,7 +192,7 @@ public class VaultConnectivityHandler { for (int zOffset = 0; zOffset < width; zOffset++) { BlockPos pos = alongZ ? origin.offset(xOffset, zOffset, yOffset) : origin.offset(yOffset, xOffset, zOffset); - VaultTileEntity tank = vaultAt(type, world, pos); + ItemVaultTileEntity tank = vaultAt(type, world, pos); if (tank == te) continue; @@ -202,9 +202,9 @@ public class VaultConnectivityHandler { cache.put(pos, te); BlockState state = world.getBlockState(pos); - if (!VaultBlock.isVault(state)) + if (!ItemVaultBlock.isVault(state)) continue; - state = state.setValue(VaultBlock.LARGE, width > 2); + state = state.setValue(ItemVaultBlock.LARGE, width > 2); world.setBlock(pos, state, 22); } } @@ -213,7 +213,7 @@ public class VaultConnectivityHandler { return amount; } - private static void splitVaultAndInvalidate(VaultTileEntity te, @Nullable VaultSearchCache cache, + private static void splitVaultAndInvalidate(ItemVaultTileEntity te, @Nullable VaultSearchCache cache, boolean tryReconnect) { // tryReconnect helps whenever only few tanks have been removed @@ -224,13 +224,13 @@ public class VaultConnectivityHandler { int height = te.length; int width = te.radius; BlockState state = te.getBlockState(); - boolean alongZ = VaultBlock.getVaultBlockAxis(state) == Axis.Z; + boolean alongZ = ItemVaultBlock.getVaultBlockAxis(state) == Axis.Z; if (width == 1 && height == 1) return; Level world = te.getLevel(); BlockPos origin = te.getBlockPos(); - List frontier = new ArrayList<>(); + List frontier = new ArrayList<>(); for (int yOffset = 0; yOffset < height; yOffset++) { for (int xOffset = 0; xOffset < width; xOffset++) { @@ -238,7 +238,7 @@ public class VaultConnectivityHandler { BlockPos pos = alongZ ? origin.offset(xOffset, zOffset, yOffset) : origin.offset(yOffset, xOffset, zOffset); - VaultTileEntity tankAt = vaultAt(te.getType(), world, pos); + ItemVaultTileEntity tankAt = vaultAt(te.getType(), world, pos); if (tankAt == null) continue; if (!tankAt.getController() @@ -262,31 +262,31 @@ public class VaultConnectivityHandler { formVaults(te.getType(), world, cache == null ? new VaultSearchCache() : cache, frontier); } - private static PriorityQueue> makeCreationQueue() { - return new PriorityQueue<>(new Comparator>() { + private static PriorityQueue> makeCreationQueue() { + return new PriorityQueue<>(new Comparator>() { @Override - public int compare(Pair o1, Pair o2) { + public int compare(Pair o1, Pair o2) { return o2.getKey() - o1.getKey(); } }); } @Nullable - public static VaultTileEntity vaultAt(BlockEntityType type, BlockGetter world, BlockPos pos) { + public static ItemVaultTileEntity vaultAt(BlockEntityType type, BlockGetter world, BlockPos pos) { BlockEntity te = world.getBlockEntity(pos); - if (te instanceof VaultTileEntity && te.getType() == type) - return (VaultTileEntity) te; + if (te instanceof ItemVaultTileEntity && te.getType() == type) + return (ItemVaultTileEntity) te; return null; } private static class VaultSearchCache { - Map> controllerMap; + Map> controllerMap; public VaultSearchCache() { controllerMap = new HashMap<>(); } - void put(BlockPos pos, VaultTileEntity target) { + void put(BlockPos pos, ItemVaultTileEntity target) { controllerMap.put(pos, Optional.of(target)); } @@ -298,15 +298,15 @@ public class VaultConnectivityHandler { return controllerMap.containsKey(pos); } - Optional getOrCache(BlockEntityType type, BlockGetter world, BlockPos pos) { + Optional getOrCache(BlockEntityType type, BlockGetter world, BlockPos pos) { if (hasVisited(pos)) return controllerMap.get(pos); - VaultTileEntity tankAt = vaultAt(type, world, pos); + ItemVaultTileEntity tankAt = vaultAt(type, world, pos); if (tankAt == null) { putEmpty(pos); return Optional.empty(); } - VaultTileEntity controller = tankAt.getControllerTE(); + ItemVaultTileEntity controller = tankAt.getControllerTE(); if (controller == null) { putEmpty(pos); return Optional.empty(); @@ -320,10 +320,10 @@ public class VaultConnectivityHandler { public static boolean isConnected(BlockGetter world, BlockPos tankPos, BlockPos otherTankPos) { BlockEntity te1 = world.getBlockEntity(tankPos); BlockEntity te2 = world.getBlockEntity(otherTankPos); - if (!(te1 instanceof VaultTileEntity) || !(te2 instanceof VaultTileEntity)) + if (!(te1 instanceof ItemVaultTileEntity) || !(te2 instanceof ItemVaultTileEntity)) return false; - return ((VaultTileEntity) te1).getController() - .equals(((VaultTileEntity) te2).getController()); + return ((ItemVaultTileEntity) te1).getController() + .equals(((ItemVaultTileEntity) te2).getController()); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultItem.java b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultItem.java similarity index 88% rename from src/main/java/com/simibubi/create/content/logistics/block/vault/VaultItem.java rename to src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultItem.java index ae602deca..8ac2cc341 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultItem.java @@ -18,9 +18,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -public class VaultItem extends BlockItem { +public class ItemVaultItem extends BlockItem { - public VaultItem(Block p_i48527_1_, Properties p_i48527_2_) { + public ItemVaultItem(Block p_i48527_1_, Properties p_i48527_2_) { super(p_i48527_1_, p_i48527_2_); } @@ -62,12 +62,12 @@ public class VaultItem extends BlockItem { BlockPos placedOnPos = pos.relative(face.getOpposite()); BlockState placedOnState = world.getBlockState(placedOnPos); - if (!VaultBlock.isVault(placedOnState)) + if (!ItemVaultBlock.isVault(placedOnState)) return; - VaultTileEntity tankAt = VaultConnectivityHandler.vaultAt(AllTileEntities.ITEM_VAULT.get(), world, placedOnPos); + ItemVaultTileEntity tankAt = ItemVaultConnectivityHandler.vaultAt(AllTileEntities.ITEM_VAULT.get(), world, placedOnPos); if (tankAt == null) return; - VaultTileEntity controllerTE = tankAt.getControllerTE(); + ItemVaultTileEntity controllerTE = tankAt.getControllerTE(); if (controllerTE == null) return; @@ -76,7 +76,7 @@ public class VaultItem extends BlockItem { return; int tanksToPlace = 0; - Axis vaultBlockAxis = VaultBlock.getVaultBlockAxis(placedOnState); + Axis vaultBlockAxis = ItemVaultBlock.getVaultBlockAxis(placedOnState); if (vaultBlockAxis == null) return; if (face.getAxis() != vaultBlockAxis) @@ -96,7 +96,7 @@ public class VaultItem extends BlockItem { BlockPos offsetPos = vaultBlockAxis == Axis.X ? startPos.offset(0, xOffset, zOffset) : startPos.offset(xOffset, zOffset, 0); BlockState blockState = world.getBlockState(offsetPos); - if (VaultBlock.isVault(blockState)) + if (ItemVaultBlock.isVault(blockState)) continue; if (!blockState.getMaterial() .isReplaceable()) @@ -113,7 +113,7 @@ public class VaultItem extends BlockItem { BlockPos offsetPos = vaultBlockAxis == Axis.X ? startPos.offset(0, xOffset, zOffset) : startPos.offset(xOffset, zOffset, 0); BlockState blockState = world.getBlockState(offsetPos); - if (VaultBlock.isVault(blockState)) + if (ItemVaultBlock.isVault(blockState)) continue; BlockPlaceContext context = BlockPlaceContext.at(ctx, offsetPos, face); player.getPersistentData() diff --git a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultTileEntity.java similarity index 81% rename from src/main/java/com/simibubi/create/content/logistics/block/vault/VaultTileEntity.java rename to src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultTileEntity.java index 59fb23e0d..7465bd214 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/vault/VaultTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/vault/ItemVaultTileEntity.java @@ -4,6 +4,7 @@ import java.util.List; import com.simibubi.create.AllTileEntities; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.tileEntity.IMultiTileContainer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -12,6 +13,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -23,7 +25,7 @@ import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; -public class VaultTileEntity extends SmartTileEntity { +public class ItemVaultTileEntity extends SmartTileEntity implements IMultiTileContainer { protected LazyOptional itemCapability; @@ -35,7 +37,7 @@ public class VaultTileEntity extends SmartTileEntity { protected int length; protected Axis axis; - public VaultTileEntity(BlockEntityType tileEntityTypeIn, BlockPos pos, BlockState state) { + public ItemVaultTileEntity(BlockEntityType tileEntityTypeIn, BlockPos pos, BlockState state) { super(tileEntityTypeIn, pos, state); inventory = new ItemStackHandler(AllConfigs.SERVER.logistics.vaultCapacity.get()) { @@ -60,11 +62,11 @@ public class VaultTileEntity extends SmartTileEntity { return; if (!isController()) return; - VaultConnectivityHandler.formVaults(this); + ItemVaultConnectivityHandler.formVaults(this); } protected void updateComparators() { - VaultTileEntity controllerTE = getControllerTE(); + ItemVaultTileEntity controllerTE = getControllerTE(); if (controllerTE == null) return; @@ -92,23 +94,29 @@ public class VaultTileEntity extends SmartTileEntity { if (updateConnectivity) updateConnectivity(); } + + @Override + public BlockPos getLastKnownPos() { + return lastKnownPos; + } + @Override public boolean isController() { return controller == null || worldPosition.getX() == controller.getX() && worldPosition.getY() == controller.getY() && worldPosition.getZ() == controller.getZ(); } - + private void onPositionChanged() { removeController(true); lastKnownPos = worldPosition; } - public VaultTileEntity getControllerTE() { + public ItemVaultTileEntity getControllerTE() { if (isController()) return this; BlockEntity tileEntity = level.getBlockEntity(controller); - if (tileEntity instanceof VaultTileEntity) - return (VaultTileEntity) tileEntity; + if (tileEntity instanceof ItemVaultTileEntity) + return (ItemVaultTileEntity) tileEntity; return null; } @@ -121,8 +129,8 @@ public class VaultTileEntity extends SmartTileEntity { length = 1; BlockState state = getBlockState(); - if (VaultBlock.isVault(state)) { - state = state.setValue(VaultBlock.LARGE, false); + if (ItemVaultBlock.isVault(state)) { + state = state.setValue(ItemVaultBlock.LARGE, false); getLevel().setBlock(worldPosition, state, 22); } @@ -131,8 +139,9 @@ public class VaultTileEntity extends SmartTileEntity { sendData(); } + @Override public void setController(BlockPos controller) { - if (level.isClientSide()) + if (level.isClientSide && !isVirtual()) return; if (controller.equals(this.controller)) return; @@ -142,10 +151,11 @@ public class VaultTileEntity extends SmartTileEntity { sendData(); } + @Override public BlockPos getController() { return isController() ? worldPosition : controller; } - + @Override protected void fromTag(CompoundTag compound, boolean clientPacket) { super.fromTag(compound, clientPacket); @@ -194,8 +204,19 @@ public class VaultTileEntity extends SmartTileEntity { super.write(compound, clientPacket); - if (!clientPacket) + if (!clientPacket) { + compound.putString("StorageType", "CombinedInv"); compound.put("Inventory", inventory.serializeNBT()); + } + } + + public ItemStackHandler getInventoryOfBlock() { + return inventory; + } + + public void applyInventoryToBlock(ItemStackHandler handler) { + for (int i = 0; i < inventory.getSlots(); i++) + inventory.setStackInSlot(i, i < handler.getSlots() ? handler.getStackInSlot(i) : ItemStack.EMPTY); } @Override @@ -211,7 +232,7 @@ public class VaultTileEntity extends SmartTileEntity { if (itemCapability.isPresent()) return; if (!isController()) { - VaultTileEntity controllerTE = getControllerTE(); + ItemVaultTileEntity controllerTE = getControllerTE(); if (controllerTE == null) return; controllerTE.initCapability(); @@ -219,15 +240,15 @@ public class VaultTileEntity extends SmartTileEntity { return; } - boolean alongZ = VaultBlock.getVaultBlockAxis(getBlockState()) == Axis.Z; + boolean alongZ = ItemVaultBlock.getVaultBlockAxis(getBlockState()) == Axis.Z; IItemHandlerModifiable[] invs = new IItemHandlerModifiable[length * radius * radius]; for (int yOffset = 0; yOffset < length; yOffset++) { for (int xOffset = 0; xOffset < radius; xOffset++) { for (int zOffset = 0; zOffset < radius; zOffset++) { BlockPos vaultPos = alongZ ? worldPosition.offset(xOffset, zOffset, yOffset) : worldPosition.offset(yOffset, xOffset, zOffset); - VaultTileEntity vaultAt = - VaultConnectivityHandler.vaultAt(AllTileEntities.ITEM_VAULT.get(), level, vaultPos); + ItemVaultTileEntity vaultAt = + ItemVaultConnectivityHandler.vaultAt(AllTileEntities.ITEM_VAULT.get(), level, vaultPos); invs[yOffset * radius * radius + xOffset * radius + zOffset] = vaultAt != null ? vaultAt.inventory : new ItemStackHandler(); } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index fa698c95c..a2c901d35 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -405,31 +405,8 @@ public class AllAdvancements implements DataProvider { itemAdvancement("blaze_cake", AllItems.BLAZE_CAKE, TaskType.NORMAL).parent(crushing_wheel) .save(t, id + ":blaze_cake"); - Advancement chromatic_compound = - itemAdvancement("chromatic_compound", AllItems.CHROMATIC_COMPOUND, TaskType.NORMAL).parent(blaze_cake) - .save(t, id + ":chromatic_compound"); - - Advancement shadow_steel = - itemAdvancement("shadow_steel", AllItems.SHADOW_STEEL, TaskType.GOAL).parent(chromatic_compound) - .save(t, id + ":shadow_steel"); - - Advancement refined_radiance = - itemAdvancement("refined_radiance", AllItems.REFINED_RADIANCE, TaskType.GOAL).parent(chromatic_compound) - .save(t, id + ":refined_radiance"); - - Advancement chromatic_age = advancement("chromatic_age", AllBlocks.REFINED_RADIANCE_CASING.get(), TaskType.GOAL) - .parent(chromatic_compound) - .addCriterion("0", itemGathered(AllBlocks.SHADOW_STEEL_CASING.get())) - .addCriterion("1", itemGathered(AllBlocks.REFINED_RADIANCE_CASING.get())) - .save(t, id + ":chromatic_age"); - - Advancement chromatic_eob = deadEnd().parent(chromatic_age) - .addCriterion("0", itemGathered(AllBlocks.SHADOW_STEEL_CASING.get())) - .addCriterion("1", itemGathered(AllBlocks.REFINED_RADIANCE_CASING.get())) - .save(t, id + ":chromatic_eob"); - Advancement symmetry_wand = - itemAdvancement("wand_of_symmetry", AllItems.WAND_OF_SYMMETRY, TaskType.NORMAL).parent(refined_radiance) + itemAdvancement("wand_of_symmetry", AllItems.WAND_OF_SYMMETRY, TaskType.NORMAL).parent(clockwork_component) .save(t, id + ":wand_of_symmetry"); } diff --git a/src/main/java/com/simibubi/create/foundation/config/CLogistics.java b/src/main/java/com/simibubi/create/foundation/config/CLogistics.java index 17ef5f196..2ea464037 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CLogistics.java +++ b/src/main/java/com/simibubi/create/foundation/config/CLogistics.java @@ -7,7 +7,7 @@ public class CLogistics extends ConfigBase { public final ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout); public final ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange); public final ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange); - public final ConfigInt vaultCapacity = i(27, 1, "vaultCapacity", Comments.vaultCapacity); + public final ConfigInt vaultCapacity = i(20, 1, "vaultCapacity", Comments.vaultCapacity); @Override public String getName() { diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 766a8c9c7..8b4b649c3 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -123,7 +123,7 @@ public class BuilderTransformers { public static NonNullUnaryOperator> valveHandle( @Nullable DyeColor color) { - return b -> b.initialProperties(SharedProperties::softMetal) + return b -> b.initialProperties(SharedProperties::copperMetal) .blockstate((c, p) -> { String variant = color == null ? "copper" : color.getSerializedName(); p.directionalBlock(c.get(), p.models() diff --git a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java index ca34abc7a..d9f654be1 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java +++ b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java @@ -19,6 +19,10 @@ public class SharedProperties { public static Block softMetal() { return Blocks.GOLD_BLOCK; } + + public static Block copperMetal() { + return Blocks.COPPER_BLOCK; + } public static Block wooden() { return Blocks.STRIPPED_SPRUCE_WOOD; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index 16c497c2b..e0fb811bf 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -536,14 +536,19 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("P") .pattern("S")), - FLUID_TANK = create(AllBlocks.FLUID_TANK).returns(2) - .unlockedBy(I::copperCasing) - .viaShaped(b -> b.define('B', I.copperCasing()) - .define('S', I.copperNugget()) - .define('C', Tags.Items.GLASS) - .pattern(" B ") - .pattern("SCS") - .pattern(" B ")), + FLUID_TANK = create(AllBlocks.FLUID_TANK).unlockedByTag(() -> Tags.Items.BARRELS_WOODEN) + .viaShaped(b -> b.define('B', I.copperSheet()) + .define('C', Tags.Items.BARRELS_WOODEN) + .pattern("B") + .pattern("C") + .pattern("B")), + + ITEM_VAULT = create(AllBlocks.ITEM_VAULT).unlockedByTag(() -> Tags.Items.BARRELS_WOODEN) + .viaShaped(b -> b.define('B', I.ironSheet()) + .define('C', Tags.Items.BARRELS_WOODEN) + .pattern("B") + .pattern("C") + .pattern("B")), DEPLOYER = create(AllBlocks.DEPLOYER).unlockedBy(I::electronTube) .viaShaped(b -> b.define('I', AllItems.BRASS_HAND.get()) diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java index e29562c4a..b740e3cd0 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java @@ -196,10 +196,10 @@ public class AllIcons implements ScreenElement { Vec3 vec3 = new Vec3(1, 1, 0); Vec3 vec4 = new Vec3(1, 0, 0); - float u1 = iconX / ICON_ATLAS_SIZE; - float u2 = (iconX + 16) / ICON_ATLAS_SIZE; - float v1 = iconY / ICON_ATLAS_SIZE; - float v2 = (iconY + 16) / ICON_ATLAS_SIZE; + float u1 = iconX * 1f / ICON_ATLAS_SIZE; + float u2 = (iconX + 16) * 1f / ICON_ATLAS_SIZE; + float v1 = iconY * 1f / ICON_ATLAS_SIZE; + float v2 = (iconY + 16) * 1f / ICON_ATLAS_SIZE; vertex(builder, matrix, vec1, rgb, u1, v1, light); vertex(builder, matrix, vec2, rgb, u1, v2, light); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java index fd62d19ab..f76e99ec9 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java @@ -24,6 +24,8 @@ import net.minecraftforge.client.event.RenderTooltipEvent; public class PonderTooltipHandler { + public static boolean enable = true; + static LerpedFloat holdWProgress = LerpedFloat.linear() .startWithValue(0); static ItemStack hoveredStack = ItemStack.EMPTY; @@ -40,14 +42,15 @@ public class PonderTooltipHandler { public static void deferredTick() { deferTick = false; + Minecraft instance = Minecraft.getInstance(); + Screen currentScreen = instance.screen; + if (hoveredStack.isEmpty() || trackingStack.isEmpty()) { trackingStack = ItemStack.EMPTY; holdWProgress.startWithValue(0); return; } - Minecraft instance = Minecraft.getInstance(); - Screen currentScreen = instance.screen; float value = holdWProgress.getValue(); int keyCode = ponderKeybind().getKey() .getValue(); @@ -70,6 +73,9 @@ public class PonderTooltipHandler { } public static void addToTooltip(List toolTip, ItemStack stack) { + if (!enable) + return; + updateHovered(stack); if (deferTick) @@ -92,11 +98,13 @@ public class PonderTooltipHandler { protected static void updateHovered(ItemStack stack) { Minecraft instance = Minecraft.getInstance(); Screen currentScreen = instance.screen; + boolean inPonderUI = currentScreen instanceof PonderUI; + ItemStack prevStack = trackingStack; hoveredStack = ItemStack.EMPTY; subject = false; - if (currentScreen instanceof PonderUI) { + if (inPonderUI) { PonderUI ponderUI = (PonderUI) currentScreen; if (stack.sameItem(ponderUI.getSubject())) subject = true; @@ -108,7 +116,7 @@ public class PonderTooltipHandler { .getRegistryName())) return; - if (prevStack.isEmpty() || !prevStack.sameItem(stack)) + if (prevStack.isEmpty() || !prevStack.sameItem(stack)) holdWProgress.startWithValue(0); hoveredStack = stack; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java index 4f69e1f7d..5ebc3043f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java @@ -9,12 +9,12 @@ import java.util.Map; import javax.annotation.Nullable; import com.mojang.blaze3d.vertex.PoseStack; -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; import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; +import com.simibubi.create.foundation.tileEntity.IMultiTileContainer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; @@ -259,6 +259,7 @@ public class PonderWorld extends SchematicWorld { public void fixControllerTileEntities() { for (BlockEntity tileEntity : tileEntities.values()) { + if (tileEntity instanceof BeltTileEntity) { BeltTileEntity beltTileEntity = (BeltTileEntity) tileEntity; if (!beltTileEntity.isController()) @@ -272,20 +273,22 @@ public class PonderWorld extends SchematicWorld { belt2.setController(controllerPos); } } - if (tileEntity instanceof FluidTankTileEntity) { - FluidTankTileEntity fluidTankTileEntity = (FluidTankTileEntity) tileEntity; - BlockPos lastKnown = fluidTankTileEntity.getLastKnownPos(); - BlockPos current = fluidTankTileEntity.getBlockPos(); + + if (tileEntity instanceof IMultiTileContainer) { + IMultiTileContainer multiTile = (IMultiTileContainer) tileEntity; + BlockPos lastKnown = multiTile.getLastKnownPos(); + BlockPos current = tileEntity.getBlockPos(); if (lastKnown == null || current == null) continue; - if (fluidTankTileEntity.isController()) + if (multiTile.isController()) continue; if (!lastKnown.equals(current)) { - BlockPos newControllerPos = fluidTankTileEntity.getController() + BlockPos newControllerPos = multiTile.getController() .offset(current.subtract(lastKnown)); - fluidTankTileEntity.setController(newControllerPos); + multiTile.setController(newControllerPos); } } + } } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ItemVaultScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ItemVaultScenes.java new file mode 100644 index 000000000..2f8bb4988 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ItemVaultScenes.java @@ -0,0 +1,238 @@ +package com.simibubi.create.foundation.ponder.content; + +import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.ponder.ElementLink; +import com.simibubi.create.foundation.ponder.PonderPalette; +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.element.InputWindowElement; +import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Pointing; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.phys.Vec3; + +public class ItemVaultScenes { + + public static void storage(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("item_vault_storage", "Storing Items in Vaults"); + scene.configureBasePlate(0, 0, 5); + scene.showBasePlate(); + scene.idle(5); + + Selection chests = util.select.fromTo(4, 3, 2, 3, 4, 3); + Selection largeCog = util.select.position(3, 0, 5); + Selection belt1 = util.select.fromTo(0, 2, 3, 2, 1, 5); + Selection gearbox = util.select.position(2, 1, 2); + Selection belt2 = util.select.fromTo(0, 1, 1, 2, 2, 1); + Selection vault = util.select.fromTo(3, 2, 3, 4, 1, 1); + + scene.world.showSection(vault, Direction.NORTH); + scene.idle(5); + ElementLink chestLink = scene.world.showIndependentSection(chests, Direction.NORTH); + scene.world.moveSection(chestLink, util.vector.of(-3, -2, 0), 0); + scene.idle(10); + + scene.overlay.showOutline(PonderPalette.GREEN, "chestOutline", util.select.fromTo(1, 1, 2, 0, 2, 3), 40); + scene.idle(10); + scene.overlay.showLine(PonderPalette.GREEN, util.vector.of(2, 1, 2), util.vector.of(3, 1, 1), 30); + scene.overlay.showLine(PonderPalette.GREEN, util.vector.of(2, 3, 2), util.vector.of(3, 3, 1), 30); + scene.overlay.showLine(PonderPalette.GREEN, util.vector.of(2, 3, 4), util.vector.of(3, 3, 4), 30); + scene.overlay.showOutline(PonderPalette.GREEN, "vaultOutline", vault, 40); + scene.idle(10); + + BlockPos frontVault = util.grid.at(3, 2, 1); + scene.overlay.showText(60) + .text("Item Vaults can be used to store large amounts of items") + .attachKeyFrame() + .placeNearTarget() + .pointAt(util.vector.blockSurface(frontVault, Direction.NORTH)); + scene.idle(70); + + scene.world.hideIndependentSection(chestLink, Direction.DOWN); + scene.idle(15); + + ItemStack hand = AllItems.BRASS_HAND.asStack(); + scene.overlay + .showControls(new InputWindowElement(util.vector.blockSurface(frontVault, Direction.NORTH), Pointing.RIGHT) + .showing(AllIcons.I_MTD_CLOSE) + .withItem(hand), 40); + scene.idle(7); + + scene.overlay.showText(60) + .text("However, contents cannot be added or taken manually") + .attachKeyFrame() + .colored(PonderPalette.RED) + .placeNearTarget() + .pointAt(util.vector.blockSurface(frontVault, Direction.WEST)); + scene.idle(70); + + scene.world.showSection(largeCog, Direction.UP); + scene.idle(5); + scene.world.showSection(belt1, Direction.EAST); + scene.idle(20); + + scene.overlay.showText(80) + .text("Any components for item transfer can both insert...") + .attachKeyFrame() + .colored(PonderPalette.GREEN) + .placeNearTarget() + .pointAt(util.vector.topOf(2, 2, 3)); + + ItemStack[] junk = + { new ItemStack(Items.APPLE), new ItemStack(Items.GOLD_INGOT, 8), new ItemStack(Items.TUFF, 32) }; + for (int i = 0; i < junk.length + 2; i++) { + scene.idle(4); + + if (i > 1) { + scene.world.removeItemsFromBelt(util.grid.at(2, 1, 3)); + scene.world.flapFunnel(util.grid.at(2, 2, 3), false); + } + + scene.idle(5); + if (i < junk.length) + scene.world.createItemOnBeltLike(util.grid.at(0, 1, 3), Direction.SOUTH, junk[i]); + scene.idle(9); + } + + scene.world.showSection(gearbox, Direction.SOUTH); + scene.idle(5); + scene.world.showSection(belt2, Direction.EAST); + scene.idle(15); + + scene.overlay.showText(80) + .text("...and take contents from this container") + .colored(PonderPalette.GREEN) + .placeNearTarget() + .pointAt(util.vector.topOf(2, 1, 1)); + + for (int i = 0; i < junk.length; i++) { + scene.world.createItemOnBeltLike(util.grid.at(2, 1, 1), Direction.EAST, junk[i]); + scene.idle(18); + } + + } + + public static void sizes(SceneBuilder scene, SceneBuildingUtil util) { + scene.title("item_vault_sizes", "Dimensions of an Item Vault"); + scene.configureBasePlate(0, 0, 6); + scene.scaleSceneView(0.9f); + scene.showBasePlate(); + scene.idle(5); + + Selection single = util.select.position(2, 4, 2); + Selection single2 = util.select.fromTo(2, 4, 3, 3, 5, 3); + Selection single3 = util.select.fromTo(2, 4, 4, 4, 6, 4); + + ElementLink s1 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s1, util.vector.of(0, -3, 0), 0); + scene.idle(10); + + scene.overlay.showText(60) + .text("Item Vaults can be combined to increase the total capacity") + .attachKeyFrame() + .placeNearTarget() + .pointAt(util.vector.topOf(2, 1, 2)); + scene.idle(40); + + ElementLink s2 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s2, util.vector.of(1, -3, 0), 0); + scene.idle(5); + ElementLink s3 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s3, util.vector.of(1, -2, 0), 0); + scene.idle(5); + ElementLink s4 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s4, util.vector.of(0, -2, 0), 0); + scene.idle(10); + + scene.world.moveSection(s1, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s2, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s3, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s4, util.vector.of(0, -100, 0), 0); + + ElementLink d = scene.world.showIndependentSectionImmediately(single2); + scene.world.moveSection(d, util.vector.of(0, -3, -1), 0); + scene.effects.indicateSuccess(util.grid.at(2, 1, 2)); + scene.effects.indicateSuccess(util.grid.at(2, 2, 2)); + scene.effects.indicateSuccess(util.grid.at(3, 2, 2)); + scene.effects.indicateSuccess(util.grid.at(3, 1, 2)); + scene.world.hideIndependentSection(s1, Direction.DOWN); + scene.world.hideIndependentSection(s2, Direction.DOWN); + scene.world.hideIndependentSection(s3, Direction.DOWN); + scene.world.hideIndependentSection(s4, Direction.DOWN); + scene.idle(25); + + scene.overlay.showText(60) + .text("Their base square can be up to 3 blocks wide...") + .attachKeyFrame() + .placeNearTarget() + .pointAt(util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.NORTH)); + scene.idle(40); + + s1 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s1, util.vector.of(2, -3, 0), 0); + scene.idle(3); + s2 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s2, util.vector.of(2, -2, 0), 0); + scene.idle(3); + s3 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s3, util.vector.of(2, -1, 0), 0); + scene.idle(3); + s4 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s4, util.vector.of(1, -1, 0), 0); + scene.idle(3); + ElementLink s5 = scene.world.showIndependentSection(single, Direction.DOWN); + scene.world.moveSection(s5, util.vector.of(0, -1, 0), 0); + scene.idle(10); + + scene.world.moveSection(d, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s1, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s2, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s3, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s4, util.vector.of(0, -100, 0), 0); + scene.world.moveSection(s5, util.vector.of(0, -100, 0), 0); + + ElementLink t = scene.world.showIndependentSectionImmediately(single3); + scene.world.moveSection(t, util.vector.of(0, -3, -2), 0); + + for (int i = 1; i < 4; i++) + for (int j = 2; j < 5; j++) + scene.effects.indicateSuccess(util.grid.at(j, i, 2)); + + scene.world.hideIndependentSection(d, Direction.DOWN); + scene.world.hideIndependentSection(s1, Direction.DOWN); + scene.world.hideIndependentSection(s2, Direction.DOWN); + scene.world.hideIndependentSection(s3, Direction.DOWN); + scene.world.hideIndependentSection(s4, Direction.DOWN); + scene.world.hideIndependentSection(s5, Direction.DOWN); + scene.idle(25); + + scene.world.hideIndependentSection(t, Direction.DOWN); + scene.idle(15); + + Selection full1 = util.select.fromTo(2, 1, 0, 4, 1, 0); + Selection full2 = util.select.fromTo(0, 1, 1, 3, 2, 2); + Selection full3 = util.select.fromTo(1, 1, 5, 5, 3, 3); + + scene.world.showSection(full3, Direction.WEST); + scene.idle(5); + scene.world.showSection(full2, Direction.EAST); + scene.idle(5); + scene.world.showSection(full1, Direction.WEST); + scene.idle(10); + + Vec3 blockSurface = util.vector.blockSurface(util.grid.at(1, 3, 3), Direction.NORTH); + scene.overlay.showText(60) + .text("...and grow in length up to 3x their diameter") + .attachKeyFrame() + .placeNearTarget() + .pointAt(blockSurface); + scene.idle(40); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java index 78b62f490..419c543c1 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java @@ -58,8 +58,7 @@ public class PonderIndex { .addStoryBoard("gearbox", KineticsScenes::gearbox, PonderTag.KINETIC_RELAYS); HELPER.addStoryBoard(AllBlocks.CLUTCH, "clutch", KineticsScenes::clutch, PonderTag.KINETIC_RELAYS); - HELPER.addStoryBoard(AllBlocks.GEARSHIFT, "gearshift", KineticsScenes::gearshift, - PonderTag.KINETIC_RELAYS); + HELPER.addStoryBoard(AllBlocks.GEARSHIFT, "gearshift", KineticsScenes::gearshift, PonderTag.KINETIC_RELAYS); HELPER.forComponents(AllBlocks.SEQUENCED_GEARSHIFT) .addStoryBoard("sequenced_gearshift", KineticsScenes::sequencedGearshift); @@ -70,24 +69,23 @@ public class PonderIndex { .addStoryBoard("fan/source", FanScenes::source, PonderTag.KINETIC_SOURCES); HELPER.addStoryBoard(AllBlocks.CREATIVE_MOTOR, "creative_motor", KineticsScenes::creativeMotor, - PonderTag.KINETIC_SOURCES); + PonderTag.KINETIC_SOURCES); HELPER.addStoryBoard(AllBlocks.WATER_WHEEL, "water_wheel", KineticsScenes::waterWheel, - PonderTag.KINETIC_SOURCES); - HELPER.addStoryBoard(AllBlocks.HAND_CRANK, "hand_crank", KineticsScenes::handCrank, - PonderTag.KINETIC_SOURCES); + PonderTag.KINETIC_SOURCES); + HELPER.addStoryBoard(AllBlocks.HAND_CRANK, "hand_crank", KineticsScenes::handCrank, PonderTag.KINETIC_SOURCES); HELPER.addStoryBoard(AllBlocks.COPPER_VALVE_HANDLE, "valve_handle", KineticsScenes::valveHandle, - PonderTag.KINETIC_SOURCES); + PonderTag.KINETIC_SOURCES); HELPER.forComponents(AllBlocks.DYED_VALVE_HANDLES.toArray()) - .addStoryBoard("valve_handle", KineticsScenes::valveHandle); + .addStoryBoard("valve_handle", KineticsScenes::valveHandle); - HELPER.addStoryBoard(AllBlocks.ENCASED_CHAIN_DRIVE, "chain_drive/relay", - ChainDriveScenes::chainDriveAsRelay, PonderTag.KINETIC_RELAYS); + HELPER.addStoryBoard(AllBlocks.ENCASED_CHAIN_DRIVE, "chain_drive/relay", ChainDriveScenes::chainDriveAsRelay, + PonderTag.KINETIC_RELAYS); HELPER.forComponents(AllBlocks.ENCASED_CHAIN_DRIVE, AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) - .addStoryBoard("chain_drive/gearshift", ChainDriveScenes::adjustableChainGearshift); + .addStoryBoard("chain_drive/gearshift", ChainDriveScenes::adjustableChainGearshift); HELPER.forComponents(AllBlocks.FURNACE_ENGINE) - .addStoryBoard("furnace_engine", KineticsScenes::furnaceEngine); + .addStoryBoard("furnace_engine", KineticsScenes::furnaceEngine); HELPER.forComponents(AllBlocks.FLYWHEEL) .addStoryBoard("furnace_engine", KineticsScenes::flywheel); HELPER.forComponents(AllBlocks.ROTATION_SPEED_CONTROLLER) @@ -108,8 +106,7 @@ public class PonderIndex { .addStoryBoard("basin", ProcessingScenes::basin) .addStoryBoard("mechanical_mixer/mixing", ProcessingScenes::mixing) .addStoryBoard("mechanical_press/compacting", ProcessingScenes::compacting); - HELPER.addStoryBoard(AllItems.EMPTY_BLAZE_BURNER, "empty_blaze_burner", - ProcessingScenes::emptyBlazeBurner); + HELPER.addStoryBoard(AllItems.EMPTY_BLAZE_BURNER, "empty_blaze_burner", ProcessingScenes::emptyBlazeBurner); HELPER.addStoryBoard(AllBlocks.BLAZE_BURNER, "blaze_burner", ProcessingScenes::blazeBurner); HELPER.addStoryBoard(AllBlocks.DEPOT, "depot", BeltScenes::depot); HELPER.forComponents(AllBlocks.WEIGHTED_EJECTOR) @@ -124,6 +121,11 @@ public class PonderIndex { HELPER.forComponents(AllBlocks.MECHANICAL_CRAFTER, AllItems.CRAFTER_SLOT_COVER) .addStoryBoard("mechanical_crafter/covers", CrafterScenes::covers); + // Vaults + HELPER.forComponents(AllBlocks.ITEM_VAULT) + .addStoryBoard("item_vault/storage", ItemVaultScenes::storage, PonderTag.LOGISTICS) + .addStoryBoard("item_vault/sizes", ItemVaultScenes::sizes); + // Chutes HELPER.forComponents(AllBlocks.CHUTE) .addStoryBoard("chute/downward", ChuteScenes::downward, PonderTag.LOGISTICS) @@ -265,7 +267,8 @@ public class PonderIndex { .addStoryBoard("fluid_tank/storage", FluidTankScenes::storage, PonderTag.FLUIDS) .addStoryBoard("fluid_tank/sizes", FluidTankScenes::sizes); HELPER.forComponents(AllBlocks.CREATIVE_FLUID_TANK) - .addStoryBoard("fluid_tank/storage_creative", FluidTankScenes::creative, PonderTag.FLUIDS, PonderTag.CREATIVE) + .addStoryBoard("fluid_tank/storage_creative", FluidTankScenes::creative, PonderTag.FLUIDS, + PonderTag.CREATIVE) .addStoryBoard("fluid_tank/sizes_creative", FluidTankScenes::sizes); HELPER.forComponents(AllBlocks.HOSE_PULLEY) .addStoryBoard("hose_pulley/intro", HosePulleyScenes::intro, PonderTag.FLUIDS, PonderTag.KINETIC_APPLIANCES) @@ -300,7 +303,7 @@ public class PonderIndex { if (REGISTER_DEBUG_SCENES) DebugScenes.registerAll(); } - + public static boolean editingModeActive() { return AllConfigs.CLIENT.editingMode.get(); } @@ -388,6 +391,7 @@ public class PonderIndex { .add(AllItems.ATTRIBUTE_FILTER) .add(AllBlocks.CHUTE) .add(AllBlocks.SMART_CHUTE) + .add(AllBlocks.ITEM_VAULT) .add(AllBlocks.DEPOT) .add(AllBlocks.WEIGHTED_EJECTOR) .add(AllBlocks.MECHANICAL_ARM) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java index e7d46d6a6..aca6c625e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/fluid/FluidTankScenes.java @@ -219,6 +219,7 @@ public class FluidTankScenes { public static void sizes(SceneBuilder scene, SceneBuildingUtil util) { scene.title("fluid_tank_sizes", "Dimensions of a Fluid tank"); scene.configureBasePlate(0, 0, 6); + scene.scaleSceneView(0.9f); scene.showBasePlate(); scene.idle(5); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java index ffd33428a..fd58721bb 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java @@ -16,6 +16,7 @@ import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.PonderLocalization; +import com.simibubi.create.foundation.ponder.PonderTooltipHandler; import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -141,7 +142,9 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { UIRenderHelper.framebuffer.clear(Minecraft.ON_OSX); ms.translate(0, 0, -1000); UIRenderHelper.framebuffer.bindWrite(true); + PonderTooltipHandler.enable = false; lastScreen.render(ms, mouseX, mouseY, partialTicks); + PonderTooltipHandler.enable = true; ms.popPose(); ms.pushPose(); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/IMultiTileContainer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/IMultiTileContainer.java new file mode 100644 index 000000000..77a1161e8 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/IMultiTileContainer.java @@ -0,0 +1,12 @@ +package com.simibubi.create.foundation.tileEntity; + +import net.minecraft.core.BlockPos; + +public interface IMultiTileContainer { + + public BlockPos getController(); + public boolean isController(); + public void setController(BlockPos pos); + public BlockPos getLastKnownPos(); + +} diff --git a/src/main/resources/assets/create/lang/default/advancements.json b/src/main/resources/assets/create/lang/default/advancements.json index 1f35ae1b2..6e86889c9 100644 --- a/src/main/resources/assets/create/lang/default/advancements.json +++ b/src/main/resources/assets/create/lang/default/advancements.json @@ -144,15 +144,6 @@ "advancement.create.blaze_cake": "Sugar Rush", "advancement.create.blaze_cake.desc": "Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "Mysterious Minerals", - "advancement.create.chromatic_compound.desc": "Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "Void Returner", - "advancement.create.shadow_steel.desc": "Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "Bright and Inspiring", - "advancement.create.refined_radiance.desc": "Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "The Chromatic Age", - "advancement.create.chromatic_age.desc": "Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "Radiant Mirrors", "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", "advancement.create.extendo_grip": "Boioioing!", diff --git a/src/main/resources/assets/create/ponder/item_vault/sizes.nbt b/src/main/resources/assets/create/ponder/item_vault/sizes.nbt new file mode 100644 index 0000000000000000000000000000000000000000..aa9fb67745fdb11c796fcfe6bb04eaebf510a5db GIT binary patch literal 1134 zcmb2|=3oGW|7Yh!``>mDX}P|A0!y4$=-vbRn$!1P5Dy6n%?jOG>&Pb7A(fLd`?de8 z^>22i^4y(p)skzQe0F6g>tmIs!k~i|kqL8N zFs`dK4SW!>0$DI(fq0fv)k3u;NL1-AE)21yOnU=_FL9eHB2n7HFIs0!h+Dz=5>D;^ zDm8n_jr?P2spjive|N2ntjQ_w+_&rh-h$itdB2b4?%)0P!e5>GtW#R{+vcx7zb5jY zp8t3CR@*z8dP2rGwjM1k{={zi_sOQ6e@inSom^O177$r};;Uz}|98DlpI2HxIq~-C zq+M&)y+3u`P3?A}>DRX>&$-1v*}G&TSE7j1jQUlN-)_oSRb;jG>YeLpf(s&ez632k zd70TYtF=bKsFmSL{KAbT*HX%#PqBHnhVjr}2G0PZ?DFE#+LNX+is@bCvq(XWq(g-(}6Eu&LUT;bnFH z5-x;C6*t{ro3Jk&D2GCONpWqo5~)$x6u>ZH-$f58E{03yQl8F?4!_)#Gc_1I?q{g* zwyvvQm6trR&1rd1K189uJ4oU8ryd}M`(#!=4cht?7@(&aJ?J|zv$z7!AbWx4pthmKMb@_Wor3ttSlV+-&N~NrTCp^PR5J5Q#PvE zU09rYea($-hLfUEPuaY#I#|3DTmCeOWs?=#HVaXv33ehLqObI3z6wwX<#6~Fpuh@N z679F3jE}eKtYXjt7v3$Wc&FHLm>7Ad|GZ+>o4dav#lYlc`=2Yb!k53Z;a~MSy7T zZ@GluRoMKe*v(`1tD1$3dxCdFei3P6R!RFAd+$knPN@H>LrZ`7f97888~>i$je!9G DNIVqk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/ponder/item_vault/storage.nbt b/src/main/resources/assets/create/ponder/item_vault/storage.nbt new file mode 100644 index 0000000000000000000000000000000000000000..3ef4818a6768ec0cbe1d5727e189cbd3ab9100a1 GIT binary patch literal 1217 zcmV;y1U~y8iwFP!00000|IJzLa^f}=y+*bHlWek`er&rhvd#3zZfQHsbSImcY&&iL zPz4L{#8@6#ge1TAdHNWAvR;E_jIk9NNET)ohj8!FJxAwCvhe`AU?;%?BLI-To$T#) zp~E5>$bcn~zPjLEhkSUGc=+LmE|8cfDk*;va1u!+%QC8BtU`=c6Vo!lAqF_M2FI$X zxs0P?ECZaD0S+<1u{Ag?1D#cjPG=RP(^tA?%gV(?D>f#vf3nu4W+}O}M z_wiqE0seX8K&MY*It=9fubMIgfmHml9a&)ywp{W})=JTaBA3^(s^9`%EbdI^gzc z5=3LLFFsuST$c8mjf9#xE_%)`Y4hK6Xw%!bHl(RGq)r>6(dJov)2Y?QdLrL!CRFS# zW#2fT!#Cc(wRzMxn+Y}A5REp5zOi=Frd_KIJdFL{Coz+3h~ z_{gq{6-hSDR_%(TK-prhp~aT;US#yfjEZZ1_xMCM71-78JBmPYuWoPGBfI&)*|!fG z_lT|a0T}s!Z0!THV@SDXr?DMuBRdq2Q=KQ^Q9e#J=Ru5k6pvHgjE4tD?`a}`i}*ac zOjFh>DlQ|vD|7-Kvyb;NgI=FcuaS+97Flz8;fS}C;AJL3fOZ+&(pl=)m9bXgueFxS zSLp%;uMvfojzWE@o2|8}%`SvmTN5IONr)H|`mTw|o}ZB2*m7k;2WB}%$lP*eLI-9! zMX1Vh1de_QLdnFtDW63W7AdD61&xvs6MfD@AE^SU4fQyydo+t87UBxM%+9`?BFCYi zBY8#xVS&?6F)MG)TBUk=Sv_k+mZ&Ey)Zv6BvIecV`y72ncCGAP?1$q6sE1V4qhCSK z4s*dF6#|=W31^47;N-KkHK7Ara1^2Dd)$Fq&TeeEGNA*roFdeGk2_GyDMD42Yrd!C zCN7}8*cq)@+sW2w_FikV_gY&%69u%>ozci%(CmuZUha%W*3i1pj%moGWa%$|Uv$8} zpi>5~R#@{1cEe!EBkT=KQW0OSA`Z*+%HY~r3y(#EWva;EqxPC_j`Uew9!10dB`xpKPXhXsTp&