From cb2db9bc50ea95d7f2a5c53f5010253d41c3690a Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 13 Nov 2020 19:44:57 -0500 Subject: [PATCH] Finished implementation of Incense Altar and associated blocks. Also added the recipe for the Ritual Tinkerer, as well as the finalized book entry for the Incense Altar. --- src/generated/resources/.cache/cache | 59 ++++- .../blockstates/obsidianbrickpath.json | 7 + .../blockstates/obsidiantilepath.json | 7 + .../blockstates/stonebrickpath.json | 7 + .../bloodmagic/blockstates/stonetilepath.json | 7 + .../bloodmagic/blockstates/woodbrickpath.json | 7 + .../bloodmagic/blockstates/woodtilepath.json | 7 + .../blockstates/wornstonebrickpath.json | 7 + .../blockstates/wornstonetilepath.json | 7 + .../assets/bloodmagic/lang/en_us.json | 22 ++ .../models/block/obsidianbrickpath.json | 6 + .../models/block/obsidiantilepath.json | 6 + .../models/block/stonebrickpath.json | 6 + .../models/block/stonetilepath.json | 6 + .../models/block/woodbrickpath.json | 6 + .../bloodmagic/models/block/woodtilepath.json | 6 + .../models/block/wornstonebrickpath.json | 6 + .../models/block/wornstonetilepath.json | 6 + .../models/item/obsidianbrickpath.json | 3 + .../models/item/obsidiantilepath.json | 3 + .../bloodmagic/models/item/reagentsight.json | 6 + .../models/item/sacrificialdagger.json | 16 +- .../bloodmagic/models/item/seersigil.json | 6 + .../models/item/stonebrickpath.json | 3 + .../bloodmagic/models/item/stonetilepath.json | 3 + .../item/variants/sacrificialdagger.json | 6 + .../sacrificialdagger_ceremonial.json | 6 + .../bloodmagic/models/item/woodbrickpath.json | 3 + .../bloodmagic/models/item/woodtilepath.json | 3 + .../models/item/wornstonebrickpath.json | 3 + .../models/item/wornstonetilepath.json | 3 + .../recipes/bloodmagictab/incense_altar.json | 32 +++ .../bloodmagictab/path/path_stone.json | 32 +++ .../bloodmagictab/path/path_stonetile.json | 32 +++ .../recipes/bloodmagictab/path/path_wood.json | 32 +++ .../bloodmagictab/path/path_woodtile.json | 32 +++ .../bloodmagictab/path/path_wornstone.json | 32 +++ .../path/path_wornstonetile.json | 32 +++ .../loot_tables/blocks/incensealtar.json | 19 ++ .../loot_tables/blocks/obsidianbrickpath.json | 19 ++ .../loot_tables/blocks/obsidiantilepath.json | 19 ++ .../loot_tables/blocks/stonebrickpath.json | 19 ++ .../loot_tables/blocks/stonetilepath.json | 19 ++ .../loot_tables/blocks/woodbrickpath.json | 19 ++ .../loot_tables/blocks/woodtilepath.json | 19 ++ .../blocks/wornstonebrickpath.json | 19 ++ .../loot_tables/blocks/wornstonetilepath.json | 19 ++ .../recipes/altar/weakbloodorb.json | 2 +- .../bloodmagic/recipes/array/seersigil.json | 13 ++ .../bloodmagic/recipes/incense_altar.json | 26 +++ .../bloodmagic/recipes/path/path_stone.json | 25 +++ .../recipes/path/path_stonetile.json | 21 ++ .../bloodmagic/recipes/path/path_wood.json | 25 +++ .../recipes/path/path_woodtile.json | 21 ++ .../recipes/path/path_wornstone.json | 25 +++ .../recipes/path/path_wornstonetile.json | 21 ++ .../recipes/soulforge/reagent_sight.json | 20 ++ .../java/wayoftime/bloodmagic/BloodMagic.java | 5 + .../bloodmagic/altar/BloodAltar.java | 10 +- .../bloodmagic/api/IBloodMagicAPI.java | 16 +- .../api/IBloodMagicValueManager.java | 45 ++++ .../bloodmagic/api/impl/BloodMagicAPI.java | 17 +- .../api/impl/BloodMagicCorePlugin.java | 17 ++ .../api/impl/BloodMagicValueManager.java | 76 +++++++ .../bloodmagic/client/ClientEvents.java | 19 ++ .../wayoftime/bloodmagic/client/Sprite.java | 57 +++++ .../bloodmagic/client/hud/Elements.java | 75 +++++++ .../element/ElementDivinedInformation.java | 76 +++++++ .../hud/element/ElementTileInformation.java | 71 ++++++ .../common/block/BlockIncenseAltar.java | 77 +++++++ .../bloodmagic/common/block/BlockPath.java | 24 ++ .../common/block/BloodMagicBlocks.java | 12 + .../common/data/GeneratorBaseRecipes.java | 12 + .../common/data/GeneratorItemModels.java | 11 + .../common/data/GeneratorLanguage.java | 26 +++ .../common/data/GeneratorLootTable.java | 1 + .../common/item/BloodMagicItems.java | 12 + .../common/item/ItemSacrificialDagger.java | 16 +- .../common/item/sigil/ItemSigilBase.java | 3 +- .../item/sigil/ItemSigilDivination.java | 33 +-- .../common/item/soul/ItemSoulGem.java | 6 +- .../recipe/AlchemyArrayRecipeProvider.java | 1 + .../recipe/BloodAltarRecipeProvider.java | 2 +- .../recipe/TartaricForgeRecipeProvider.java | 1 + .../incense/EnumTranquilityType.java | 12 + .../bloodmagic/incense/IIncensePath.java | 15 ++ .../incense/ITranquilityHandler.java | 11 + .../incense/IncenseAltarComponent.java | 60 +++++ .../incense/IncenseAltarHandler.java | 114 ++++++++++ .../incense/IncenseTranquilityRegistry.java | 33 +++ .../bloodmagic/incense/TranquilityStack.java | 13 ++ .../registry/ModTranquilityHandlers.java | 31 +++ .../bloodmagic/tile/TileIncenseAltar.java | 206 ++++++++++++++++++ .../bloodmagic/util/helper/IncenseHelper.java | 55 +++++ .../util/helper/PlayerSacrificeHelper.java | 43 ++-- .../bloodmagic/blockstates/incensealtar.json | 7 + .../images/entries/utility/incense_altar.png | Bin 0 -> 56128 bytes .../images/entries/utility/incense_altar1.png | Bin 0 -> 67307 bytes .../images/entries/utility/incense_altar2.png | Bin 0 -> 21663 bytes .../images/entries/utility/incense_altar3.png | Bin 0 -> 86535 bytes .../models/block/blockincensealtar.json | 7 - .../models/block/blockincensealtar.obj | 2 +- .../bloodmagic/models/block/incensealtar.json | 10 + .../bloodmagic/models/item/incensealtar.json | 3 + ...r.png => sacrificialdagger_ceremonial.png} | Bin .../guide/en_us/categories/utility.json | 6 + .../guide/en_us/entries/altar/bloodaltar.json | 3 +- .../en_us/entries/utility/incense_altar.json | 83 +++++++ 108 files changed, 2197 insertions(+), 81 deletions(-) create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/reagentsight.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/seersigil.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json create mode 100644 src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json create mode 100644 src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json create mode 100644 src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/array/seersigil.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/incense_altar.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/path/path_stone.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/path/path_wood.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/soulforge/reagent_sight.json create mode 100644 src/main/java/wayoftime/bloodmagic/api/IBloodMagicValueManager.java create mode 100644 src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicValueManager.java create mode 100644 src/main/java/wayoftime/bloodmagic/client/Sprite.java create mode 100644 src/main/java/wayoftime/bloodmagic/client/hud/element/ElementDivinedInformation.java create mode 100644 src/main/java/wayoftime/bloodmagic/client/hud/element/ElementTileInformation.java create mode 100644 src/main/java/wayoftime/bloodmagic/common/block/BlockIncenseAltar.java create mode 100644 src/main/java/wayoftime/bloodmagic/common/block/BlockPath.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/EnumTranquilityType.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/IIncensePath.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/ITranquilityHandler.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/IncenseAltarComponent.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/IncenseAltarHandler.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/IncenseTranquilityRegistry.java create mode 100644 src/main/java/wayoftime/bloodmagic/incense/TranquilityStack.java create mode 100644 src/main/java/wayoftime/bloodmagic/registry/ModTranquilityHandlers.java create mode 100644 src/main/java/wayoftime/bloodmagic/tile/TileIncenseAltar.java create mode 100644 src/main/java/wayoftime/bloodmagic/util/helper/IncenseHelper.java create mode 100644 src/main/resources/assets/bloodmagic/blockstates/incensealtar.json create mode 100644 src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar.png create mode 100644 src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar1.png create mode 100644 src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar2.png create mode 100644 src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar3.png delete mode 100644 src/main/resources/assets/bloodmagic/models/block/blockincensealtar.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/incensealtar.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/incensealtar.json rename src/main/resources/assets/bloodmagic/textures/item/{ceremonialdagger.png => sacrificialdagger_ceremonial.png} (100%) create mode 100644 src/main/resources/data/bloodmagic/patchouli_books/guide/en_us/categories/utility.json create mode 100644 src/main/resources/data/bloodmagic/patchouli_books/guide/en_us/entries/utility/incense_altar.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 8d2df077..e4d171a6 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -16,6 +16,8 @@ e780d6d9e891082dc6ce83fde1697ce36281a02a assets/bloodmagic/blockstates/fireritua f78ce2be09ab794bf5f5679414eee0dc85cf4fb1 assets/bloodmagic/blockstates/largebloodstonebrick.json 002795212cc7bf2cad2a91f873d85e2204c6367d assets/bloodmagic/blockstates/lightritualstone.json e1a98bd53fca155e4bbb03c1e548341af0f84bd7 assets/bloodmagic/blockstates/masterritualstone.json +95a0c9a84139cf92c2689e53408b51619db126a1 assets/bloodmagic/blockstates/obsidianbrickpath.json +8b0ea137c63cf3a658a03eee58ca4b2c3d996f87 assets/bloodmagic/blockstates/obsidiantilepath.json 372ecd737f7082a4c2c70e46745f893b1179f885 assets/bloodmagic/blockstates/orbcapacityrune.json a2eaa9166258d7179d9e5099200f777bb9edf613 assets/bloodmagic/blockstates/rawdemoncrystal.json 90daa355e528ab8a6582f796951201882f3c56da assets/bloodmagic/blockstates/ritualstone.json @@ -23,9 +25,15 @@ a2eaa9166258d7179d9e5099200f777bb9edf613 assets/bloodmagic/blockstates/rawdemonc b03040d7a168653bf8df3600033b8fde2383db30 assets/bloodmagic/blockstates/selfsacrificerune.json 487ffdc02ab7b65aafcb932e3b5cf6ea0500b21d assets/bloodmagic/blockstates/speedrune.json f1ca47098385a955155cab9c2a97219e02d390a0 assets/bloodmagic/blockstates/steadfastdemoncrystal.json +297bc2425f7b07b1a9dd3f7f6649c44f88dbac29 assets/bloodmagic/blockstates/stonebrickpath.json +e3256db10fc8a8ab540f6ac8d27e0f47861e817a assets/bloodmagic/blockstates/stonetilepath.json 48ed6b25a5d8d8074c38d772fdc27c1753d42c36 assets/bloodmagic/blockstates/vengefuldemoncrystal.json e6d9cf699667aaa47efff37b2b033895dee29c15 assets/bloodmagic/blockstates/waterritualstone.json -69f7dee8ac7105339c604bc9b211386200165a2a assets/bloodmagic/lang/en_us.json +74c889434f46e060e8f185e8ef674312eb2f1192 assets/bloodmagic/blockstates/woodbrickpath.json +42f26f715bddd16c069f9b51e3767b36477c8908 assets/bloodmagic/blockstates/woodtilepath.json +3c6ce233dae6c1307d9016406c324bbe844b4e1e assets/bloodmagic/blockstates/wornstonebrickpath.json +d59655f12d1724b73b77c373fb6864fcff69db12 assets/bloodmagic/blockstates/wornstonetilepath.json +59b1ed6c18916f66576dd584ca3d1a203aa6fd87 assets/bloodmagic/lang/en_us.json 34445195b9f2459475cde53454bc8e37d32865d7 assets/bloodmagic/models/block/accelerationrune.json bcdbccc49d4509571be6988762ab87126275a4c8 assets/bloodmagic/models/block/airritualstone.json adf6c0b1e25451609486dc8c8cfbd9cf0f8c67f4 assets/bloodmagic/models/block/alchemicalreactionchamber.json @@ -77,12 +85,20 @@ c30064f4aa09c42d23e94d118ae5b148eadb3a6c assets/bloodmagic/models/block/earthrit d6bf1482345199e7d056a60865024ea5d480b986 assets/bloodmagic/models/block/largebloodstonebrick.json 2e1a81c758bfeec2aee807b48239f23241302268 assets/bloodmagic/models/block/lightritualstone.json eab1713a8879decb2ae05258a6bcfa9da78ec67b assets/bloodmagic/models/block/masterritualstone.json +1e354903812e9cf8e2fea26b908430d7e1cf20a9 assets/bloodmagic/models/block/obsidianbrickpath.json +71893b8b185c2b0f64f21b7dc6c4f2850f936206 assets/bloodmagic/models/block/obsidiantilepath.json c3a813b735cd229f8597e41d04465926b2e65fe1 assets/bloodmagic/models/block/orbcapacityrune.json 9b2bf2a44b788cbaecbe63a3e085e8de76672e1b assets/bloodmagic/models/block/ritualstone.json a8a1d06fcc2f8395530c72d2846133fff37d5537 assets/bloodmagic/models/block/sacrificerune.json 791c9f2e27215ff0a45eed7efe385276bfc09aed assets/bloodmagic/models/block/selfsacrificerune.json 65fe5e01ed2660e45a5c329ff2389a87e4d791ec assets/bloodmagic/models/block/speedrune.json +c5d2b0e33500a5c51046cd606e0d1272ec0dddd6 assets/bloodmagic/models/block/stonebrickpath.json +359e28e79778961f57c6369b5d1b68218972fccb assets/bloodmagic/models/block/stonetilepath.json 6041f2e47f5437d90a58586e42d18dadc42df439 assets/bloodmagic/models/block/waterritualstone.json +d77cdb168a084aeb962be6ad7b4f41b181837be6 assets/bloodmagic/models/block/woodbrickpath.json +e54a4f2b3cd405c69782662b1b0d57e24f7c2524 assets/bloodmagic/models/block/woodtilepath.json +ee59117289640eaebf7a9d7f629dd584ac3ed50f assets/bloodmagic/models/block/wornstonebrickpath.json +bee51abed529a89ad088b2cb89a4c1d0de541bf1 assets/bloodmagic/models/block/wornstonetilepath.json 9462d62d9bc9408359d30728de8651dc104aacf1 assets/bloodmagic/models/item/accelerationrune.json 1aad9b00930b996e3680223cfcb631db2d9cb5ce assets/bloodmagic/models/item/activationcrystalawakened.json 5b8a9b260de9e5eccac525b3fa665ae973f5d23f assets/bloodmagic/models/item/activationcrystalcreative.json @@ -144,6 +160,8 @@ ccbcba6e4a6450bb67f91ba17754d668ba64c0ac assets/bloodmagic/models/item/ironfragm 0a3566d3c86403f24c22977dd32ffaec727a9ad3 assets/bloodmagic/models/item/masterbloodorb.json 9e377ab2c131993f96ab6fb544bda4dbba0ab87e assets/bloodmagic/models/item/masterritualstone.json 7596826c5b40c2809eb0a42eb5f5f2089290e3e5 assets/bloodmagic/models/item/miningsigil.json +eaa0548775c3d5839b46d333af33f815dc6dd0fe assets/bloodmagic/models/item/obsidianbrickpath.json +cf066d15baae650a383240a91240abd335bbb0e3 assets/bloodmagic/models/item/obsidiantilepath.json ff9b802098659824626dc90dbb5a0d8960234228 assets/bloodmagic/models/item/orbcapacityrune.json aa3947434e24f4a4c4ae43428de3f2dd2ceb31a6 assets/bloodmagic/models/item/plantoil.json f267edf1b08e69d377290a549bd5ec4a12661d9e assets/bloodmagic/models/item/primitive_crystalline_resonator.json @@ -156,6 +174,7 @@ c0a7633527bdd25fc85e78fc4838733063726d88 assets/bloodmagic/models/item/reagentfa 4ff6b8f6943d96a0f292ff4e0b0973edff550229 assets/bloodmagic/models/item/reagentgrowth.json c82717c2706ec2ef1518f95c6aefdff9bdae09b8 assets/bloodmagic/models/item/reagentlava.json baafdb5915c5fbc99b84a54670ed64a6f26cb0fe assets/bloodmagic/models/item/reagentmagnetism.json +2023ecdc208cfca92053b5cc3bbb98e21f5e3e19 assets/bloodmagic/models/item/reagentsight.json 95b2925e96a7df71d72568e0ed7b03290293cbe7 assets/bloodmagic/models/item/reagentvoid.json fd1447d943ddc4540a51a72dcbb245d77d45da71 assets/bloodmagic/models/item/reagentwater.json 50bf796adbed412488df48ed9250fc9b0ecd851f assets/bloodmagic/models/item/reinforcedslate.json @@ -164,9 +183,10 @@ fd1447d943ddc4540a51a72dcbb245d77d45da71 assets/bloodmagic/models/item/reagentwa 2722891c9c40b124d85bf9ff8eb885e175f5e6ff assets/bloodmagic/models/item/ritualstone.json 094b2d159deb0996c655498cf89a20e1c06a4ab7 assets/bloodmagic/models/item/ritualtinkerer.json db73abb3bcb1731b6fc389e3577910b6aab87b10 assets/bloodmagic/models/item/sacrificerune.json -9403d6195d4d38d5876c2a42f4edfb9bdcd05210 assets/bloodmagic/models/item/sacrificialdagger.json +616afe16c430ce4732498f0b2d19509d3a545bcc assets/bloodmagic/models/item/sacrificialdagger.json b23b701e93011247714ebdaffd6d52e918ba3d8a assets/bloodmagic/models/item/saltpeter.json b8582a5cd6ca35279e9b35931f1c5ca089b094b8 assets/bloodmagic/models/item/sanguinereverter.json +b9fd6c60eba0186ba7ac156c4d126fcf74c21b84 assets/bloodmagic/models/item/seersigil.json cc71421e98ee7ee047a4cfbb6cb69529c2b02d4e assets/bloodmagic/models/item/selfsacrificerune.json ea5747638d0b5dcc03f008b202cc60a11e0827bb assets/bloodmagic/models/item/sigilofmagnetism.json db0f63198089161b8d4ecfb1ec8a45f7dc5ba83d assets/bloodmagic/models/item/soulaxe.json @@ -181,6 +201,8 @@ fe2b201007c974229509f6900c6eb8b03d158b0a assets/bloodmagic/models/item/soulsword 52d21027ac6fed000e77b5e8ad9102319b25cb33 assets/bloodmagic/models/item/speedrune.json 6e2b7581e06ee42915cc98ac10a6cb8e45512c70 assets/bloodmagic/models/item/steadfastcrystal.json 6968a3d0c3bbeac8ea4cb2c050e28506e8938851 assets/bloodmagic/models/item/steadfastdemoncrystal.json +29009ca92dc30e1ec4ae1d454cd3f8726d8edc3c assets/bloodmagic/models/item/stonebrickpath.json +2dc28b0e2b7ae7bb0bcf8c8e74b9ba7c800446ff assets/bloodmagic/models/item/stonetilepath.json 26cb0aae63ea4f27efd5337c90c580ddd7481b99 assets/bloodmagic/models/item/sulfur.json e8fe01c5cddc268538681889f3161472a8f1c8ad assets/bloodmagic/models/item/variants/growthsigil_activated.json 20c802279de4df496057795c2e891fa54a21376f assets/bloodmagic/models/item/variants/growthsigil_deactivated.json @@ -188,6 +210,8 @@ e8fe01c5cddc268538681889f3161472a8f1c8ad assets/bloodmagic/models/item/variants/ 11f5516cea8ac65bbb0f5958d6492170482ae8d8 assets/bloodmagic/models/item/variants/icesigil_deactivated.json be3772fd711ccf4a2adfad122a8b39e8a36e874a assets/bloodmagic/models/item/variants/miningsigil_activated.json 7dec45f3167426d975564692a80196cdb3f4bdb4 assets/bloodmagic/models/item/variants/miningsigil_deactivated.json +9403d6195d4d38d5876c2a42f4edfb9bdcd05210 assets/bloodmagic/models/item/variants/sacrificialdagger.json +89ea1f760bac680b1baa98536d6bc407e347676e assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json 79c61e61656a934397c92626809c1869b0617fc3 assets/bloodmagic/models/item/variants/sigilofmagnetism_activated.json 129ace1f4a25f22bd09215603248a25adcf234e0 assets/bloodmagic/models/item/variants/sigilofmagnetism_deactivated.json 81e1cb0664f53f30ad195fc4330786b71db9e20c assets/bloodmagic/models/item/variants/soulaxe.json @@ -243,6 +267,10 @@ a31019db55828cb937a071ac2f74b125a2d0c955 assets/bloodmagic/models/item/waterritu 7426fed5f833ce3d08602f727f1467dd3e107991 assets/bloodmagic/models/item/watersigil.json f72efc172699d43405019add97f455bd6b7f452b assets/bloodmagic/models/item/weakbloodorb.json 1efacee8dc0c3114567509ad247800cff59cb455 assets/bloodmagic/models/item/weakbloodshard.json +c0907e611e09ccc924452070519006add21f3d12 assets/bloodmagic/models/item/woodbrickpath.json +1de444baa270a146dcd33c784b08f75a3d745421 assets/bloodmagic/models/item/woodtilepath.json +c8ea88c439c91d0eeee3e6204a3c50f8cfd36758 assets/bloodmagic/models/item/wornstonebrickpath.json +2d9dab8ebc036473d82eb044eb7a7bba0d0937a4 assets/bloodmagic/models/item/wornstonetilepath.json 04faf23bcb783a306c3b7a8a375ac2bf87c1072b data/bloodmagic/advancements/recipes/bloodmagictab/alchemy_table.json e6a3ac3998653b10ee09780be9099a9d0c5b3917 data/bloodmagic/advancements/recipes/bloodmagictab/arc.json 828c0f89e747d48d37c6a86030a8ec59ca5c29cb data/bloodmagic/advancements/recipes/bloodmagictab/blood_altar.json @@ -257,8 +285,15 @@ e897d6f91e2a0bd12b0da0a50e5c897294989e7c data/bloodmagic/advancements/recipes/bl 263f7c251d2f163db5bd229f2ab8a222f23ae03a data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_self_sacrifice.json 7ca400d1141ff4be1b529cd060950b42cf3b9bfb data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_speed.json 764e54fdaa24f87cceb815990bbbd2e2cd87f205 data/bloodmagic/advancements/recipes/bloodmagictab/bloodstonebrick.json +a6f012d0584d36d9b7dd0ec4f9e4cbd2a3ff1146 data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json 4c24af93a64071aadc0308b27bcbc44572e5ccfc data/bloodmagic/advancements/recipes/bloodmagictab/largebloodstonebrick.json 344567e6f5671131addcfebbd92d18e5cbd66ef5 data/bloodmagic/advancements/recipes/bloodmagictab/lava_crystal.json +d8ca7255f72a2ab6915552cdeb682ecc6efde03a data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json +1b85f9d2b823aef941158276b6f46bd8279cd693 data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json +f17f721149daf9246788be3235e5a6472155215a data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json +147ba38e68ca50e503ecf1ea96e85ce62c2dd86d data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json +ea0b32b5595661f0d09f68a8a596577cc62ba0b1 data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json +0dc717f46c2c6f36b58114df2bf5c82aadb104d2 data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json 091fbd276c5ad173716e9e7474fa278e742a662f data/bloodmagic/advancements/recipes/bloodmagictab/primitive_furnace_cell.json 7cf09fef1a5bfc1401ecc34857bdf78c7282c12a data/bloodmagic/advancements/recipes/bloodmagictab/primitive_hydration_cell.json 01e90bb9c59d44a52777ecc0cf28754295fda675 data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_0.json @@ -290,9 +325,12 @@ a9fcfc656fab957328c10ee1d9d33807e697b7f7 data/bloodmagic/loot_tables/blocks/disl 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/duskritualstone.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/earthritualstone.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/fireritualstone.json +59dd54a876b7ccd0b6c90f409753c2af2d687f03 data/bloodmagic/loot_tables/blocks/incensealtar.json 462a82b07e7fe3e479a2c072c73507686c339346 data/bloodmagic/loot_tables/blocks/largebloodstonebrick.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/lightritualstone.json 72610188b4538d98ffcd015c2813d63d19889d5f data/bloodmagic/loot_tables/blocks/masterritualstone.json +3892d33bbef90db50034b1358d4a9ee8b731bc8d data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json +3576b2f9d92ab5bdc456cb904905fb5c969e55f3 data/bloodmagic/loot_tables/blocks/obsidiantilepath.json 95442c1bb740fab2eb8ee051f7184813f6023afa data/bloodmagic/loot_tables/blocks/orbcapacityrune.json 6c59e846922061c0f2249b0c73c3be89ec73ea31 data/bloodmagic/loot_tables/blocks/rawdemoncrystal.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/ritualstone.json @@ -301,8 +339,14 @@ e0239eff7762a414a4e4faa0158d844dffb8c1f6 data/bloodmagic/loot_tables/blocks/sacr f748a5ba8838b50de0502f132fe2a65f4726dae6 data/bloodmagic/loot_tables/blocks/soulforge.json 015e07226fd90935f7ec663f4bcf3873a57a82d1 data/bloodmagic/loot_tables/blocks/speedrune.json 128ec3ee93e927d457beeb8161e80706e9239760 data/bloodmagic/loot_tables/blocks/steadfastdemoncrystal.json +8849e41b699c2eb7c3712a8e862bd9dd309a5c31 data/bloodmagic/loot_tables/blocks/stonebrickpath.json +6149fd464bafaabf35ca431202680c84cf5441b1 data/bloodmagic/loot_tables/blocks/stonetilepath.json 33a22d9b198c93ed07ac69b7a594bb08db64b239 data/bloodmagic/loot_tables/blocks/vengefuldemoncrystal.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/waterritualstone.json +04c5bc02383ddff04588af3a048ee3973e69666f data/bloodmagic/loot_tables/blocks/woodbrickpath.json +2c471cedf5e3e39610821766609646698d2b47e3 data/bloodmagic/loot_tables/blocks/woodtilepath.json +9ab0aac56f75e7811f9641a6a20ff8d9dd78876a data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json +4a7395079f874ae08af94f64a8a00211a56e906a data/bloodmagic/loot_tables/blocks/wornstonetilepath.json 2df19ff659705a5408ce0819a947764673404388 data/bloodmagic/recipes/alchemy_table.json a343604b5a75e1b3810df97d024813fb041cffb6 data/bloodmagic/recipes/alchemytable/basic_cutting_fluid.json f86432e8fef0d6e140e27f575063704b7e843d75 data/bloodmagic/recipes/alchemytable/bread.json @@ -334,7 +378,7 @@ d79a96eb3eed597f1c18a8983764a6362a24748c data/bloodmagic/recipes/altar/dusk_tool 30d84c946ad9235f6e59f1046edbe8d44acc799e data/bloodmagic/recipes/altar/reinforcedslate.json 584d01dff4d64bb88bd3783751a29723700f1728 data/bloodmagic/recipes/altar/slate.json 926d4a0e165c87a15a609744d832d2f5f04a40d0 data/bloodmagic/recipes/altar/water_tool.json -7551501cf361667ec7454c307b9d2368536fbed6 data/bloodmagic/recipes/altar/weakbloodorb.json +dd59da50b674ec8f680e01a91261bf34091075cf data/bloodmagic/recipes/altar/weakbloodorb.json 5807b2515f4a2dc9855327940e6055f6947f0749 data/bloodmagic/recipes/arc.json f35bb47d609201f6568b598307ae9d157792fe3e data/bloodmagic/recipes/arc/clay_from_sand.json 6b8ba1822bac8a1af426a14f87d613dc89e3fca0 data/bloodmagic/recipes/arc/clay_from_terracotta.json @@ -363,6 +407,7 @@ d1ac23080f72f21adb5908befefe965ffb4efd4f data/bloodmagic/recipes/array/bloodligh f191a3c9982b827b0b2ba93164a81fc4f8cb0959 data/bloodmagic/recipes/array/growthsigil.json 78c880321f0bfad14239d4b9d2edae170a7fa86e data/bloodmagic/recipes/array/lavasigil.json 8b1007de1b7fca5d27b54d7c9839cde9e47ab1c0 data/bloodmagic/recipes/array/magnetismsigil.json +6fd91801759c6a7a018b9d18601fc3db4d3ee3b4 data/bloodmagic/recipes/array/seersigil.json cabe693e7c714203ad708a1068f302b3ee3120b0 data/bloodmagic/recipes/array/voidsigil.json 5e68d933fff631142a8dd819aee235d343d43cff data/bloodmagic/recipes/array/watersigil.json de8dbcf4d69bd3b47693c4631578a9b5c0e3f50c data/bloodmagic/recipes/blood_altar.json @@ -377,8 +422,15 @@ b63d77c3762f86d4a91f62e192c3e9b26e3b52ca data/bloodmagic/recipes/blood_rune_sacr 7c4e247c1df6ef594bbb2fc2196afb102f45982b data/bloodmagic/recipes/blood_rune_self_sacrifice.json e2bcf2a6f951fbcef45554ec90ba28d14e261d18 data/bloodmagic/recipes/blood_rune_speed.json eeb5e64b8bc90adc2554dde88b8792b92ad7c8cc data/bloodmagic/recipes/bloodstonebrick.json +9a5749465020b32b0147b3367784ce31a0d3b54b data/bloodmagic/recipes/incense_altar.json 63bca28ba5eebb9c488c819bcb117595eadb877d data/bloodmagic/recipes/largebloodstonebrick.json 9dedad36e9d2ab6688e069c2e6df3851c395b583 data/bloodmagic/recipes/lava_crystal.json +50d84717ac673875e4b52522b583f564a8a75e8e data/bloodmagic/recipes/path/path_stone.json +2756ff3f29e1231795671c94fdaf9e5abc65bbee data/bloodmagic/recipes/path/path_stonetile.json +dcb702aeb768bc0ff5d1f05c5ac95066c4082193 data/bloodmagic/recipes/path/path_wood.json +7491b9f62c29d2fde6ff1dbff09f16f458b9afe8 data/bloodmagic/recipes/path/path_woodtile.json +d85f637e3c87ba050c24581b8f4bef4176e1ba14 data/bloodmagic/recipes/path/path_wornstone.json +2ee3e7f073df764289939b8df814cc8f056eced0 data/bloodmagic/recipes/path/path_wornstonetile.json 0b1a11f0e1b6bc317e2dbf04560a81581623f41e data/bloodmagic/recipes/primitive_furnace_cell.json 7e1a70935e9b5ba6b345af6a7077287896ec6cfe data/bloodmagic/recipes/primitive_hydration_cell.json bfd7925ad30534463d7daf0f7dce03cf1502cbcf data/bloodmagic/recipes/ritual_diviner_0.json @@ -407,6 +459,7 @@ cba99433d18bd61a0a7c2f5ef9f97cad91028f16 data/bloodmagic/recipes/soulforge/reage ae3a6a760e9f793d5a62e2f0f6c45219b0017816 data/bloodmagic/recipes/soulforge/reagent_growth.json 1c391181ea77f5ed01f7226e0782b3b45162ab3c data/bloodmagic/recipes/soulforge/reagent_lava.json e517023dc3e32929344ff5415397fc833bfbc29a data/bloodmagic/recipes/soulforge/reagent_magnetism.json +c65a8b31432ec36e9de9de1447e357387de2195c data/bloodmagic/recipes/soulforge/reagent_sight.json c0e75e0e12290d191245c5b0b5b13bc739d2ff44 data/bloodmagic/recipes/soulforge/reagent_void.json a222d09abf1ea61feb684f2ac23d011c2034f526 data/bloodmagic/recipes/soulforge/reagent_water.json 4a4340f334c51beaacb77fd201298ad94b71e79c data/bloodmagic/recipes/soulforge/sanguine_reverter.json diff --git a/src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json new file mode 100644 index 00000000..38e7c85f --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/obsidianbrickpath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json new file mode 100644 index 00000000..185a1d06 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/obsidiantilepath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json new file mode 100644 index 00000000..dd693c22 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/stonebrickpath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json new file mode 100644 index 00000000..e3f65a05 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/stonetilepath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json new file mode 100644 index 00000000..5b1d7ce2 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/woodbrickpath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json new file mode 100644 index 00000000..6439e3bc --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/woodtilepath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json new file mode 100644 index 00000000..4c9539bf --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/wornstonebrickpath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json new file mode 100644 index 00000000..db7e680a --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/wornstonetilepath" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/lang/en_us.json b/src/generated/resources/assets/bloodmagic/lang/en_us.json index 9c870d10..b980958e 100644 --- a/src/generated/resources/assets/bloodmagic/lang/en_us.json +++ b/src/generated/resources/assets/bloodmagic/lang/en_us.json @@ -17,9 +17,12 @@ "block.bloodmagic.duskritualstone": "Dusk Ritual Stone", "block.bloodmagic.earthritualstone": "Earth Ritual Stone", "block.bloodmagic.fireritualstone": "Fire Ritual Stone", + "block.bloodmagic.incensealtar": "Incense Altar", "block.bloodmagic.largebloodstonebrick": "Large Bloodstone Brick", "block.bloodmagic.lightritualstone": "Dawn Ritual Stone", "block.bloodmagic.masterritualstone": "Master Ritual Stone", + "block.bloodmagic.obsidianbrickpath": "Obsidian Path", + "block.bloodmagic.obsidiantilepath": "Tiled Obsidian Path", "block.bloodmagic.orbcapacityrune": "Rune of the Orb", "block.bloodmagic.rawdemoncrystal": "Raw Crystal Cluster", "block.bloodmagic.ritualstone": "Ritual Stone", @@ -28,8 +31,14 @@ "block.bloodmagic.soulforge": "Hellfire Forge", "block.bloodmagic.speedrune": "Speed Rune", "block.bloodmagic.steadfastdemoncrystal": "Steadfast Crystal Cluster", + "block.bloodmagic.stonebrickpath": "Stone Path", + "block.bloodmagic.stonetilepath": "Tiled Stone Path", "block.bloodmagic.vengefuldemoncrystal": "Vengeful Crystal Cluster", "block.bloodmagic.waterritualstone": "Water Ritual Stone", + "block.bloodmagic.woodbrickpath": "Wooden Path", + "block.bloodmagic.woodtilepath": "Tiled Wooden Path", + "block.bloodmagic.wornstonebrickpath": "Worn Stone Path", + "block.bloodmagic.wornstonetilepath": "Tiled Worn Stone Path", "chat.bloodmagic.damageSource": "%s's soul became too weak", "chat.bloodmagic.ritual.activate": "A rush of energy flows through the ritual!", "chat.bloodmagic.ritual.notValid": "You feel that these runes are not configured correctly...", @@ -38,6 +47,7 @@ "gui.bloodmagic.empty": "Empty", "guide.bloodmagic.landing_text": "\"It is my dear hope that by holding this tome in your hands, I may impart the knowledge of the lost art that is Blood Magic\"$(br)$(o)- Magus Arcana$()", "guide.bloodmagic.name": "Sanguine Scientiem", + "hud.bloodmagic.inactive": "Inactive", "item.bloodmagic.activationcrystalawakened": "Awakened Activation Crystal", "item.bloodmagic.activationcrystalcreative": "Creative Activation Crystal", "item.bloodmagic.activationcrystalweak": "Weak Activation Crystal", @@ -92,6 +102,7 @@ "item.bloodmagic.reagentgrowth": "Growth Reagent", "item.bloodmagic.reagentlava": "Lava Reagent", "item.bloodmagic.reagentmagnetism": "Magnetism Reagent", + "item.bloodmagic.reagentsight": "Sight Reagent", "item.bloodmagic.reagentvoid": "Void Reagent", "item.bloodmagic.reagentwater": "Water Reagent", "item.bloodmagic.reinforcedslate": "Reinforced Slate", @@ -101,6 +112,7 @@ "item.bloodmagic.sacrificialdagger": "Sacrificial Knife", "item.bloodmagic.saltpeter": "Saltpeter", "item.bloodmagic.sanguinereverter": "Sanguine Reverter", + "item.bloodmagic.seersigil": "Seer's Sigil", "item.bloodmagic.sigilofmagnetism": "Sigil of Magnetism", "item.bloodmagic.soulaxe": "Sentient Axe", "item.bloodmagic.soulgemcommon": "Common Tartaric Gem", @@ -347,6 +359,16 @@ "tooltip.bloodmagic.sigil.greengrove.desc": "Environmentally friendly", "tooltip.bloodmagic.sigil.lava.desc": "HOT! DO NOT EAT", "tooltip.bloodmagic.sigil.magnetism.desc": "I have a very magnetic personality", + "tooltip.bloodmagic.sigil.seer.currentAltarCapacity": "Current Capacity: %d LP", + "tooltip.bloodmagic.sigil.seer.currentAltarConsumptionRate": "Consumption Rate: %d LP", + "tooltip.bloodmagic.sigil.seer.currentAltarProgress": "Current Progress: %d LP/ %s LP", + "tooltip.bloodmagic.sigil.seer.currentAltarProgress.percent": "Current Progress: %s", + "tooltip.bloodmagic.sigil.seer.currentAltarTier": "Current Tier: %d", + "tooltip.bloodmagic.sigil.seer.currentBonus": "Current Bonus: +%d%%", + "tooltip.bloodmagic.sigil.seer.currentCharge": "Current Charge: %d", + "tooltip.bloodmagic.sigil.seer.currentEssence": "Current Essence: %d LP", + "tooltip.bloodmagic.sigil.seer.currentTranquility": "Current Tranquility: %d", + "tooltip.bloodmagic.sigil.seer.desc": "When seeing all is not enough", "tooltip.bloodmagic.sigil.void.desc": "Better than a Swiffer\u00AE!", "tooltip.bloodmagic.sigil.water.desc": "Infinite water, anyone?", "tooltip.bloodmagic.slate.desc": "Infused stone inside of a Blood Altar", diff --git a/src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json new file mode 100644 index 00000000..77f2ba8e --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/obsidianbrickpath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json b/src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json new file mode 100644 index 00000000..40a85379 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/obsidiantilepath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json new file mode 100644 index 00000000..59ad054f --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/stonebrickpath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json b/src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json new file mode 100644 index 00000000..380149f4 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/stonetilepath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json new file mode 100644 index 00000000..32aa5bb7 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/woodbrickpath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json b/src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json new file mode 100644 index 00000000..b2a8fbe6 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/woodtilepath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json new file mode 100644 index 00000000..b4a3da7b --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/wornstonebrickpath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json b/src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json new file mode 100644 index 00000000..b1e91317 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "bloodmagic:block/wornstonetilepath" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json new file mode 100644 index 00000000..03c76b69 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/obsidianbrickpath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json b/src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json new file mode 100644 index 00000000..3db5658a --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/obsidiantilepath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentsight.json b/src/generated/resources/assets/bloodmagic/models/item/reagentsight.json new file mode 100644 index 00000000..8389e493 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/reagentsight.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/reagentsight" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json b/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json index 20e1c9f1..b516e95a 100644 --- a/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json +++ b/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json @@ -2,5 +2,19 @@ "parent": "minecraft:item/handheld", "textures": { "layer0": "bloodmagic:item/sacrificialdagger" - } + }, + "overrides": [ + { + "predicate": { + "bloodmagic:incense": 0.0 + }, + "model": "bloodmagic:item/variants/sacrificialdagger" + }, + { + "predicate": { + "bloodmagic:incense": 1.0 + }, + "model": "bloodmagic:item/variants/sacrificialdagger_ceremonial" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/seersigil.json b/src/generated/resources/assets/bloodmagic/models/item/seersigil.json new file mode 100644 index 00000000..f79756b2 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/seersigil.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/seersigil" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json new file mode 100644 index 00000000..f7f36e89 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/stonebrickpath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json b/src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json new file mode 100644 index 00000000..42594e88 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/stonetilepath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json new file mode 100644 index 00000000..20e1c9f1 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/sacrificialdagger" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json new file mode 100644 index 00000000..ba8ea9db --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/sacrificialdagger_ceremonial" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json new file mode 100644 index 00000000..d598f8f7 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/woodbrickpath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json b/src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json new file mode 100644 index 00000000..fd20da53 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/woodtilepath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json new file mode 100644 index 00000000..78f2ee16 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/wornstonebrickpath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json b/src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json new file mode 100644 index 00000000..7394723f --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json @@ -0,0 +1,3 @@ +{ + "parent": "bloodmagic:block/wornstonetilepath" +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json new file mode 100644 index 00000000..cc469b58 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:incense_altar" + ] + }, + "criteria": { + "has_weak_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:weakbloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:incense_altar" + } + } + }, + "requirements": [ + [ + "has_weak_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json new file mode 100644 index 00000000..c4388608 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:path/path_stone" + ] + }, + "criteria": { + "has_magician_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:magicianbloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:path/path_stone" + } + } + }, + "requirements": [ + [ + "has_magician_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json new file mode 100644 index 00000000..e89a4e06 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:path/path_stonetile" + ] + }, + "criteria": { + "has_magician_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:magicianbloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:path/path_stonetile" + } + } + }, + "requirements": [ + [ + "has_magician_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json new file mode 100644 index 00000000..dd6dc1ec --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:path/path_wood" + ] + }, + "criteria": { + "has_apprentice_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:apprenticebloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:path/path_wood" + } + } + }, + "requirements": [ + [ + "has_apprentice_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json new file mode 100644 index 00000000..1e7d7d71 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:path/path_woodtile" + ] + }, + "criteria": { + "has_apprentice_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:apprenticebloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:path/path_woodtile" + } + } + }, + "requirements": [ + [ + "has_apprentice_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json new file mode 100644 index 00000000..cde914c3 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:path/path_wornstone" + ] + }, + "criteria": { + "has_master_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:masterbloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:path/path_wornstone" + } + } + }, + "requirements": [ + [ + "has_master_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json new file mode 100644 index 00000000..658edfb7 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "bloodmagic:path/path_wornstonetile" + ] + }, + "criteria": { + "has_master_orb": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "bloodmagic:masterbloodorb" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "bloodmagic:path/path_wornstonetile" + } + } + }, + "requirements": [ + [ + "has_master_orb", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json new file mode 100644 index 00000000..b588d41d --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:incensealtar" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json new file mode 100644 index 00000000..6eb3eea4 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:obsidianbrickpath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json new file mode 100644 index 00000000..ee7bbbf2 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:obsidiantilepath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json new file mode 100644 index 00000000..3a9b4289 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:stonebrickpath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json new file mode 100644 index 00000000..7796876b --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:stonetilepath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json new file mode 100644 index 00000000..d4116d40 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:woodbrickpath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json new file mode 100644 index 00000000..fd8a04c6 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:woodtilepath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json new file mode 100644 index 00000000..d66e2617 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:wornstonebrickpath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json new file mode 100644 index 00000000..4de9ffb8 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:wornstonetilepath" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json b/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json index e489f7e0..16769109 100644 --- a/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json +++ b/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json @@ -8,6 +8,6 @@ }, "upgradeLevel": 0, "altarSyphon": 2000, - "consumptionRate": 2, + "consumptionRate": 5, "drainRate": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/array/seersigil.json b/src/generated/resources/data/bloodmagic/recipes/array/seersigil.json new file mode 100644 index 00000000..3441514b --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/array/seersigil.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:array", + "texture": "bloodmagic:textures/models/alchemyarrays/sightsigil.png", + "baseinput": { + "item": "bloodmagic:reagentsight" + }, + "addedinput": { + "item": "bloodmagic:reinforcedslate" + }, + "output": { + "item": "bloodmagic:seersigil" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/incense_altar.json b/src/generated/resources/data/bloodmagic/recipes/incense_altar.json new file mode 100644 index 00000000..95826002 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/incense_altar.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "s s", + "shs", + "coc" + ], + "key": { + "s": { + "tag": "forge:stone" + }, + "c": { + "tag": "forge:cobblestone" + }, + "h": { + "item": "minecraft:charcoal" + }, + "o": { + "type": "bloodmagic:bloodorb", + "orb_tier": 1 + } + }, + "result": { + "item": "bloodmagic:incensealtar" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_stone.json b/src/generated/resources/data/bloodmagic/recipes/path/path_stone.json new file mode 100644 index 00000000..3bcdf018 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/path/path_stone.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:stone" + }, + { + "tag": "forge:stone" + }, + { + "tag": "forge:stone" + }, + { + "tag": "forge:stone" + }, + { + "type": "bloodmagic:bloodorb", + "orb_tier": 3 + } + ], + "result": { + "item": "bloodmagic:stonebrickpath", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json b/src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json new file mode 100644 index 00000000..64521902 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "bloodmagic:stonebrickpath" + }, + { + "item": "bloodmagic:stonebrickpath" + }, + { + "item": "bloodmagic:stonebrickpath" + }, + { + "item": "bloodmagic:stonebrickpath" + } + ], + "result": { + "item": "bloodmagic:stonetilepath", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_wood.json b/src/generated/resources/data/bloodmagic/recipes/path/path_wood.json new file mode 100644 index 00000000..d04415bf --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/path/path_wood.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "minecraft:planks" + }, + { + "tag": "minecraft:planks" + }, + { + "tag": "minecraft:planks" + }, + { + "tag": "minecraft:planks" + }, + { + "type": "bloodmagic:bloodorb", + "orb_tier": 2 + } + ], + "result": { + "item": "bloodmagic:woodbrickpath", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json b/src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json new file mode 100644 index 00000000..2d0a2641 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "bloodmagic:woodbrickpath" + }, + { + "item": "bloodmagic:woodbrickpath" + }, + { + "item": "bloodmagic:woodbrickpath" + }, + { + "item": "bloodmagic:woodbrickpath" + } + ], + "result": { + "item": "bloodmagic:woodtilepath", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json new file mode 100644 index 00000000..6a43f7e0 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "bloodmagic:stonebrickpath" + }, + { + "item": "bloodmagic:stonebrickpath" + }, + { + "item": "bloodmagic:stonebrickpath" + }, + { + "item": "bloodmagic:stonebrickpath" + }, + { + "type": "bloodmagic:bloodorb", + "orb_tier": 4 + } + ], + "result": { + "item": "bloodmagic:wornstonebrickpath", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json new file mode 100644 index 00000000..1efd2976 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "bloodmagic:wornstonebrickpath" + }, + { + "item": "bloodmagic:wornstonebrickpath" + }, + { + "item": "bloodmagic:wornstonebrickpath" + }, + { + "item": "bloodmagic:wornstonebrickpath" + } + ], + "result": { + "item": "bloodmagic:wornstonetilepath", + "count": 4 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/reagent_sight.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/reagent_sight.json new file mode 100644 index 00000000..5d6931c8 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/reagent_sight.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "tag": "forge:dusts/glowstone" + }, + "input1": { + "tag": "forge:glass" + }, + "input2": { + "tag": "forge:glass" + }, + "input3": { + "item": "bloodmagic:divinationsigil" + }, + "output": { + "item": "bloodmagic:reagentsight" + }, + "minimumDrain": 64.0, + "drain": 0.0 +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/BloodMagic.java b/src/main/java/wayoftime/bloodmagic/BloodMagic.java index c25a03d4..b5cf2d93 100644 --- a/src/main/java/wayoftime/bloodmagic/BloodMagic.java +++ b/src/main/java/wayoftime/bloodmagic/BloodMagic.java @@ -51,6 +51,7 @@ import wayoftime.bloodmagic.core.recipe.IngredientBloodOrb; import wayoftime.bloodmagic.core.registry.OrbRegistry; import wayoftime.bloodmagic.network.BloodMagicPacketHandler; import wayoftime.bloodmagic.potion.BloodMagicPotions; +import wayoftime.bloodmagic.registry.ModTranquilityHandlers; import wayoftime.bloodmagic.ritual.RitualManager; import wayoftime.bloodmagic.tile.TileAlchemicalReactionChamber; import wayoftime.bloodmagic.tile.TileAlchemyArray; @@ -59,6 +60,7 @@ import wayoftime.bloodmagic.tile.TileAltar; import wayoftime.bloodmagic.tile.TileDemonCrucible; import wayoftime.bloodmagic.tile.TileDemonCrystal; import wayoftime.bloodmagic.tile.TileDemonCrystallizer; +import wayoftime.bloodmagic.tile.TileIncenseAltar; import wayoftime.bloodmagic.tile.TileMasterRitualStone; import wayoftime.bloodmagic.tile.TileSoulForge; import wayoftime.bloodmagic.util.handler.event.GenericHandler; @@ -122,6 +124,8 @@ public class BloodMagic ModLoadingContext context = ModLoadingContext.get(); context.registerConfig(ModConfig.Type.CLIENT, ConfigManager.CLIENT_SPEC); + + ModTranquilityHandlers.init(); } private void registerRecipes(RegistryEvent.Register> event) @@ -166,6 +170,7 @@ public class BloodMagic event.getRegistry().register(TileEntityType.Builder.create(TileDemonCrystal::new, BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get(), BloodMagicBlocks.CORROSIVE_CRYSTAL_BLOCK.get(), BloodMagicBlocks.DESTRUCTIVE_CRYSTAL_BLOCK.get(), BloodMagicBlocks.VENGEFUL_CRYSTAL_BLOCK.get(), BloodMagicBlocks.STEADFAST_CRYSTAL_BLOCK.get()).build(null).setRegistryName("demoncrystal")); event.getRegistry().register(TileEntityType.Builder.create(TileDemonCrucible::new, BloodMagicBlocks.DEMON_CRUCIBLE.get()).build(null).setRegistryName("demoncrucible")); event.getRegistry().register(TileEntityType.Builder.create(TileDemonCrystallizer::new, BloodMagicBlocks.DEMON_CRYSTALLIZER.get()).build(null).setRegistryName("demoncrystallizer")); + event.getRegistry().register(TileEntityType.Builder.create(TileIncenseAltar::new, BloodMagicBlocks.INCENSE_ALTAR.get()).build(null).setRegistryName("incensealtar")); } @SubscribeEvent diff --git a/src/main/java/wayoftime/bloodmagic/altar/BloodAltar.java b/src/main/java/wayoftime/bloodmagic/altar/BloodAltar.java index 4ad89bf5..4e4d25ec 100644 --- a/src/main/java/wayoftime/bloodmagic/altar/BloodAltar.java +++ b/src/main/java/wayoftime/bloodmagic/altar/BloodAltar.java @@ -276,11 +276,11 @@ public class BloodAltar// implements IFluidHandler if (internalCounter % this.getChargingFrequency() == 0 && !this.isActive) { -// int chargeInputted = Math.min(chargingRate, this.fluid.getAmount()); -// chargeInputted = Math.min(chargeInputted, maxCharge - totalCharge); -// totalCharge += chargeInputted; -// this.fluid.setAmount(this.fluid.getAmount() - chargeInputted); -// tileAltar.getWorld().notifyBlockUpdate(tileAltar.getPos(), tileAltar.getWorld().getBlockState(tileAltar.getPos()), tileAltar.getWorld().getBlockState(tileAltar.getPos()), 3); + int chargeInputted = Math.min(chargingRate, this.fluid.getAmount()); + chargeInputted = Math.min(chargeInputted, maxCharge - totalCharge); + totalCharge += chargeInputted; + this.fluid.setAmount(this.fluid.getAmount() - chargeInputted); + tileAltar.getWorld().notifyBlockUpdate(tileAltar.getPos(), tileAltar.getWorld().getBlockState(tileAltar.getPos()), tileAltar.getWorld().getBlockState(tileAltar.getPos()), 3); } if (internalCounter % 100 == 0 && (this.isActive || this.cooldownAfterCrafting <= 0)) diff --git a/src/main/java/wayoftime/bloodmagic/api/IBloodMagicAPI.java b/src/main/java/wayoftime/bloodmagic/api/IBloodMagicAPI.java index fb347b0e..d9ea2988 100644 --- a/src/main/java/wayoftime/bloodmagic/api/IBloodMagicAPI.java +++ b/src/main/java/wayoftime/bloodmagic/api/IBloodMagicAPI.java @@ -32,14 +32,14 @@ public interface IBloodMagicAPI */ @Nonnull IBloodMagicRecipeRegistrar getRecipeRegistrar(); -// -// /** -// * Retrieves the instance of the value manager. -// * -// * @return the active {@link IBloodMagicValueManager} instance -// */ -// @Nonnull -// IBloodMagicValueManager getValueManager(); + + /** + * Retrieves the instance of the value manager. + * + * @return the active {@link IBloodMagicValueManager} instance + */ + @Nonnull + IBloodMagicValueManager getValueManager(); /** * Registers an {@link IBlockState} as a given component for the Blood Altar. diff --git a/src/main/java/wayoftime/bloodmagic/api/IBloodMagicValueManager.java b/src/main/java/wayoftime/bloodmagic/api/IBloodMagicValueManager.java new file mode 100644 index 00000000..0658e253 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/api/IBloodMagicValueManager.java @@ -0,0 +1,45 @@ +package wayoftime.bloodmagic.api; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + +import net.minecraft.block.BlockState; +import net.minecraft.util.ResourceLocation; + +/** + * Allows value modification for various features of Blood Magic such as + * Sacrificial values. + */ +public interface IBloodMagicValueManager +{ + + /** + * Sets the amount of LP received per health point from sacrificing the given + * entity. By default, this is 25. Setting the value to 0 effectively disables + * sacrificing. + * + * @param entityId The registry name of the entity. + * @param value The amount of LP per health point to receive upon sacrifice. + */ + void setSacrificialValue(@Nonnull ResourceLocation entityId, @Nonnegative int value); + + /** + * Sets the Tranquility value of a given {@link IBlockState}. + *

+ * Valid tranquility types: + *

+ * + * @param state The {@link IBlockState} to set the value of. + * @param tranquilityType The type of Tranquility this block should provide. + * @param value The amount of tranquility this block should provide. + */ + void setTranquility(@Nonnull BlockState state, @Nonnull String tranquilityType, double value); +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicAPI.java b/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicAPI.java index b6119974..c792ad1f 100644 --- a/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicAPI.java +++ b/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicAPI.java @@ -19,14 +19,14 @@ public class BloodMagicAPI implements IBloodMagicAPI // private final BloodMagicBlacklist blacklist; private final BloodMagicRecipeRegistrar recipeRegistrar; -// private final BloodMagicValueManager valueManager; + private final BloodMagicValueManager valueManager; private final Multimap altarComponents; public BloodMagicAPI() { // this.blacklist = new BloodMagicBlacklist(); this.recipeRegistrar = new BloodMagicRecipeRegistrar(); -// this.valueManager = new BloodMagicValueManager(); + this.valueManager = new BloodMagicValueManager(); this.altarComponents = ArrayListMultimap.create(); } @@ -43,13 +43,14 @@ public class BloodMagicAPI implements IBloodMagicAPI { return recipeRegistrar; } + // -// @Nonnull -// @Override -// public BloodMagicValueManager getValueManager() -// { -// return valueManager; -// } + @Nonnull + @Override + public BloodMagicValueManager getValueManager() + { + return valueManager; + } @Override public void registerAltarComponent(@Nonnull BlockState state, @Nonnull String componentType) diff --git a/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicCorePlugin.java b/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicCorePlugin.java index 3565243a..36386d50 100644 --- a/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicCorePlugin.java +++ b/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicCorePlugin.java @@ -4,6 +4,8 @@ import net.minecraft.block.Blocks; import wayoftime.bloodmagic.altar.ComponentType; import wayoftime.bloodmagic.api.IBloodMagicAPI; import wayoftime.bloodmagic.common.block.BloodMagicBlocks; +import wayoftime.bloodmagic.incense.EnumTranquilityType; +import wayoftime.bloodmagic.incense.TranquilityStack; public class BloodMagicCorePlugin { @@ -11,6 +13,21 @@ public class BloodMagicCorePlugin public void register(IBloodMagicAPI apiInterface) { + BloodMagicAPI api = (BloodMagicAPI) apiInterface; + api.getValueManager().setTranquility(Blocks.LAVA, new TranquilityStack(EnumTranquilityType.LAVA, 1.2D)); +// api.getValueManager().setTranquility(Blocks.FLOWING_LAVA, new TranquilityStack(EnumTranquilityType.LAVA, 1.2D)); + api.getValueManager().setTranquility(Blocks.WATER, new TranquilityStack(EnumTranquilityType.WATER, 1.0D)); +// api.getValueManager().setTranquility(Blocks.water, new TranquilityStack(EnumTranquilityType.WATER, 1.0D)); + api.getValueManager().setTranquility(BloodMagicBlocks.LIFE_ESSENCE_BLOCK.get(), new TranquilityStack(EnumTranquilityType.WATER, 1.5D)); + api.getValueManager().setTranquility(Blocks.NETHERRACK, new TranquilityStack(EnumTranquilityType.FIRE, 0.5D)); + api.getValueManager().setTranquility(Blocks.DIRT, new TranquilityStack(EnumTranquilityType.EARTHEN, 0.25D)); + api.getValueManager().setTranquility(Blocks.FARMLAND, new TranquilityStack(EnumTranquilityType.EARTHEN, 1.0D)); + api.getValueManager().setTranquility(Blocks.POTATOES, new TranquilityStack(EnumTranquilityType.CROP, 1.0D)); + api.getValueManager().setTranquility(Blocks.CARROTS, new TranquilityStack(EnumTranquilityType.CROP, 1.0D)); + api.getValueManager().setTranquility(Blocks.WHEAT, new TranquilityStack(EnumTranquilityType.CROP, 1.0D)); + api.getValueManager().setTranquility(Blocks.NETHER_WART, new TranquilityStack(EnumTranquilityType.CROP, 1.0D)); + api.getValueManager().setTranquility(Blocks.BEETROOTS, new TranquilityStack(EnumTranquilityType.CROP, 1.0D)); + apiInterface.registerAltarComponent(Blocks.GLOWSTONE.getDefaultState(), ComponentType.GLOWSTONE.name()); apiInterface.registerAltarComponent(Blocks.SEA_LANTERN.getDefaultState(), ComponentType.GLOWSTONE.name()); apiInterface.registerAltarComponent(BloodMagicBlocks.BLOODSTONE.get().getDefaultState(), ComponentType.BLOODSTONE.name()); diff --git a/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicValueManager.java b/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicValueManager.java new file mode 100644 index 00000000..41e3f1b4 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/api/impl/BloodMagicValueManager.java @@ -0,0 +1,76 @@ +package wayoftime.bloodmagic.api.impl; + +import java.util.Map; + +import javax.annotation.Nonnull; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.ResourceLocation; +import wayoftime.bloodmagic.api.IBloodMagicValueManager; +import wayoftime.bloodmagic.incense.EnumTranquilityType; +import wayoftime.bloodmagic.incense.TranquilityStack; +import wayoftime.bloodmagic.util.BMLog; + +public class BloodMagicValueManager implements IBloodMagicValueManager +{ + + private final Map sacrificial; + private final Map tranquility; + + public BloodMagicValueManager() + { + this.sacrificial = Maps.newHashMap(); + this.tranquility = Maps.newHashMap(); + } + + @Override + public void setSacrificialValue(@Nonnull ResourceLocation entityId, int value) + { + BMLog.API_VERBOSE.info("Value Manager: Set sacrificial value of {} to {}.", entityId, value); + sacrificial.put(entityId, value); + } + + @Override + public void setTranquility(@Nonnull BlockState state, @Nonnull String tranquilityType, double value) + { + EnumTranquilityType tranquility = null; + for (EnumTranquilityType type : EnumTranquilityType.values()) + { + if (type.name().equalsIgnoreCase(tranquilityType)) + { + tranquility = type; + break; + } + } + + if (tranquility != null) + { + BMLog.API_VERBOSE.info("Value Manager: Set tranquility value of {} to {} @ {}", state, tranquilityType, value); + this.tranquility.put(state, new TranquilityStack(tranquility, value)); + } else + BMLog.API.warn("Invalid tranquility type: {}.", tranquilityType); + } + + public void setTranquility(Block block, TranquilityStack tranquilityStack) + { + for (BlockState state : block.getStateContainer().getValidStates()) + { + BMLog.API_VERBOSE.info("Value Manager: Set tranquility value of {} to {} @ {}", state, tranquilityStack.type, tranquilityStack.value); + tranquility.put(state, tranquilityStack); + } + } + + public Map getSacrificial() + { + return ImmutableMap.copyOf(sacrificial); + } + + public Map getTranquility() + { + return ImmutableMap.copyOf(tranquility); + } +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java b/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java index b4b33440..1c26f571 100644 --- a/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java +++ b/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java @@ -28,6 +28,7 @@ import wayoftime.bloodmagic.client.screens.ScreenAlchemyTable; import wayoftime.bloodmagic.client.screens.ScreenSoulForge; import wayoftime.bloodmagic.common.block.BloodMagicBlocks; import wayoftime.bloodmagic.common.item.BloodMagicItems; +import wayoftime.bloodmagic.common.item.ItemSacrificialDagger; import wayoftime.bloodmagic.common.item.sigil.ItemSigilToggleable; import wayoftime.bloodmagic.common.item.soul.ItemSentientSword; import wayoftime.bloodmagic.common.registries.BloodMagicEntityTypes; @@ -79,6 +80,7 @@ public class ClientEvents registerMultiWillTool(BloodMagicItems.LESSER_GEM.get()); registerMultiWillTool(BloodMagicItems.COMMON_GEM.get()); registerMultiWillTool(BloodMagicItems.GREATER_GEM.get()); + registerSacrificialKnife(BloodMagicItems.SACRIFICIAL_DAGGER.get()); ItemModelsProperties.registerProperty(BloodMagicItems.SENTIENT_SWORD.get(), BloodMagic.rl("active"), new IItemPropertyGetter() { @@ -129,4 +131,21 @@ public class ClientEvents } }); } + + public static void registerSacrificialKnife(Item item) + { + ItemModelsProperties.registerProperty(item, BloodMagic.rl("incense"), new IItemPropertyGetter() + { + @Override + public float call(ItemStack stack, ClientWorld world, LivingEntity entity) + { + Item item = stack.getItem(); + if (item instanceof ItemSacrificialDagger) + { + return ((ItemSacrificialDagger) item).canUseForSacrifice(stack) ? 1 : 0; + } + return 0; + } + }); + } } diff --git a/src/main/java/wayoftime/bloodmagic/client/Sprite.java b/src/main/java/wayoftime/bloodmagic/client/Sprite.java new file mode 100644 index 00000000..8b637fe1 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/client/Sprite.java @@ -0,0 +1,57 @@ +package wayoftime.bloodmagic.client; + +import com.mojang.blaze3d.matrix.MatrixStack; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.AbstractGui; +import net.minecraft.util.ResourceLocation; + +public class Sprite +{ + + private final ResourceLocation textureLocation; + private final int textureX; + private final int textureY; + private final int textureWidth; + private final int textureHeight; + + public Sprite(ResourceLocation textureLocation, int textureX, int textureY, int textureWidth, int textureHeight) + { + this.textureLocation = textureLocation; + this.textureX = textureX; + this.textureY = textureY; + this.textureWidth = textureWidth; + this.textureHeight = textureHeight; + } + + public ResourceLocation getTextureLocation() + { + return textureLocation; + } + + public int getTextureX() + { + return textureX; + } + + public int getTextureY() + { + return textureY; + } + + public int getTextureWidth() + { + return textureWidth; + } + + public int getTextureHeight() + { + return textureHeight; + } + + public void draw(MatrixStack matrixStack, int x, int y) + { + Minecraft.getInstance().getTextureManager().bindTexture(getTextureLocation()); + AbstractGui.blit(matrixStack, x, y, 0, getTextureX(), getTextureY(), getTextureWidth(), getTextureHeight(), 256, 256); + } +} diff --git a/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java b/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java index e1b771d0..7a4697fd 100644 --- a/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java +++ b/src/main/java/wayoftime/bloodmagic/client/hud/Elements.java @@ -1,15 +1,90 @@ package wayoftime.bloodmagic.client.hud; +import java.util.function.Consumer; +import java.util.function.Function; + +import org.apache.commons.lang3.tuple.Pair; + +import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.vector.Vector2f; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.ConfigManager; +import wayoftime.bloodmagic.client.Sprite; import wayoftime.bloodmagic.client.hud.element.ElementDemonAura; +import wayoftime.bloodmagic.client.hud.element.ElementDivinedInformation; +import wayoftime.bloodmagic.tile.TileAltar; +import wayoftime.bloodmagic.tile.TileIncenseAltar; +import wayoftime.bloodmagic.util.helper.NumeralHelper; public class Elements { public static void registerElements() { ElementRegistry.registerHandler(new ResourceLocation(BloodMagic.MODID, "demon_will_aura"), new ElementDemonAura(), new Vector2f(ConfigManager.CLIENT.demonWillGaugeX.get().floatValue(), ConfigManager.CLIENT.demonWillGaugeY.get().floatValue())); + + ElementRegistry.registerHandler(BloodMagic.rl("blood_altar"), new ElementDivinedInformation(2, true, TileAltar.class) + { + @Override + public void gatherInformation(Consumer>> information) + { + // Current tier + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 46, 16, 16), altar -> altar == null + ? "IV" + : NumeralHelper.toRoman(altar.getTier().toInt()))); + // Stored/Capacity + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 16, 46, 16, 16), altar -> String.format("%d/%d", altar == null + ? 0 + : altar.getCurrentBlood(), altar == null ? 10000 : altar.getCapacity()))); + } + }, new Vector2f(0.01F, 0.01F)); + + ElementRegistry.registerHandler(new ResourceLocation(BloodMagic.MODID, "blood_altar_adv"), new ElementDivinedInformation(5, false, TileAltar.class) + { + @Override + public void gatherInformation(Consumer>> information) + { + // Current tier + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 46, 16, 16), altar -> altar == null + ? "IV" + : NumeralHelper.toRoman(altar.getTier().toInt()))); + // Stored/Capacity + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 16, 46, 16, 16), altar -> String.format("%d/%d", altar == null + ? 0 + : altar.getCurrentBlood(), altar == null ? 10000 : altar.getCapacity()))); + // Crafting progress/Crafting requirement + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 32, 46, 16, 16), altar -> { + if (altar == null || !altar.isActive()) + return I18n.format("hud.bloodmagic.inactive"); + int progress = altar.getProgress(); + int totalLiquidRequired = altar.getLiquidRequired() * altar.getStackInSlot(0).getCount(); + return String.format("%d/%d", progress, totalLiquidRequired); + })); + // Consumption rate + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 48, 46, 16, 16), altar -> altar == null + ? "0" + : String.valueOf((int) (altar.getConsumptionRate() * (altar.getConsumptionMultiplier() + 1))))); + // Total charge + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 64, 46, 16, 16), altar -> altar == null + ? "0" + : String.valueOf(altar.getTotalCharge()))); + } + }, new Vector2f(0.01F, 0.01F)); + + ElementRegistry.registerHandler(new ResourceLocation(BloodMagic.MODID, "incense_altar"), new ElementDivinedInformation(2, true, TileIncenseAltar.class) + { + @Override + public void gatherInformation(Consumer>> information) + { + // Current tranquility + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 80, 46, 16, 16), incense -> incense == null + ? "0" + : String.valueOf((int) ((100D * (int) (100 * incense.tranquility)) / 100D)))); + // Sacrifice bonus + information.accept(Pair.of(new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 96, 46, 16, 16), incense -> incense == null + ? "0" + : String.valueOf((int) (100 * incense.incenseAddition)))); + } + }, new Vector2f(0.01F, 0.01F)); } } diff --git a/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementDivinedInformation.java b/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementDivinedInformation.java new file mode 100644 index 00000000..d068635b --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementDivinedInformation.java @@ -0,0 +1,76 @@ +package wayoftime.bloodmagic.client.hud.element; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Hand; +import wayoftime.bloodmagic.common.item.BloodMagicItems; + +public abstract class ElementDivinedInformation extends ElementTileInformation +{ + + private final boolean simple; + + public ElementDivinedInformation(int lines, boolean simple, Class tileClass) + { + super(100, lines, tileClass); + this.simple = simple; + } + + @Override + public boolean shouldRender(Minecraft minecraft) + { + PlayerEntity player = Minecraft.getInstance().player; + ItemStack sigilStack = player.getHeldItem(Hand.MAIN_HAND); + boolean flag = false; + if (simple) + { + if (sigilStack.getItem() == BloodMagicItems.DIVINATION_SIGIL.get() || sigilStack.getItem() == BloodMagicItems.SEER_SIGIL.get()) + flag = true; + else + flag = isFlagSigilHolding(sigilStack, true); + +// if (!flag) +// { +// sigilStack = player.getHeldItem(Hand.OFF_HAND); +// if (sigilStack.getItem() == RegistrarBloodMagicItems.SIGIL_DIVINATION || sigilStack.getItem() == RegistrarBloodMagicItems.SIGIL_SEER) +// flag = true; +// else +// flag = isFlagSigilHolding(sigilStack, true); +// } + + } else + { + if (sigilStack.getItem() == BloodMagicItems.SEER_SIGIL.get()) + flag = true; + else + flag = isFlagSigilHolding(sigilStack, false); +// +// if (!flag) +// { +// sigilStack = player.getHeldItem(Hand.OFF_HAND); +// if (sigilStack.getItem() == RegistrarBloodMagicItems.SIGIL_SEER) +// flag = true; +// else +// flag = isFlagSigilHolding(sigilStack, false); +// } + } + + return super.shouldRender(minecraft) && flag; + } + + private boolean isFlagSigilHolding(ItemStack sigilStack, boolean simple) + { +// if (sigilStack.getItem() instanceof ItemSigilHolding) +// { +// List internalInv = ItemSigilHolding.getInternalInventory(sigilStack); +// int currentSlot = ItemSigilHolding.getCurrentItemOrdinal(sigilStack); +// if (internalInv != null && !internalInv.get(currentSlot).isEmpty()) +// { +// return (internalInv.get(currentSlot).getItem() == RegistrarBloodMagicItems.SIGIL_SEER && !simple) || (internalInv.get(currentSlot).getItem() == RegistrarBloodMagicItems.SIGIL_DIVINATION && simple); +// } +// } + return false; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementTileInformation.java b/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementTileInformation.java new file mode 100644 index 00000000..5a5aa20f --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/client/hud/element/ElementTileInformation.java @@ -0,0 +1,71 @@ +package wayoftime.bloodmagic.client.hud.element; + +import java.awt.Color; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.Function; + +import org.apache.commons.lang3.tuple.Pair; + +import com.google.common.collect.Lists; +import com.mojang.blaze3d.matrix.MatrixStack; + +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.RayTraceResult; +import wayoftime.bloodmagic.client.Sprite; + +public abstract class ElementTileInformation extends HUDElement +{ + + protected final Class tileClass; + private final List>> information; + + public ElementTileInformation(int width, int lines, Class tileClass) + { + super(width, 18 * lines - 2); + + this.tileClass = tileClass; + this.information = Lists.newArrayList(); + gatherInformation(information::add); + } + + public abstract void gatherInformation(Consumer>> information); + + @SuppressWarnings("unchecked") + @Override + public void draw(MatrixStack matrixStack, float partialTicks, int drawX, int drawY) + { + RayTraceResult trace = Minecraft.getInstance().objectMouseOver; + if (trace == null || trace.getType() != RayTraceResult.Type.BLOCK) + return; + + T tile = (T) Minecraft.getInstance().world.getTileEntity(((BlockRayTraceResult) trace).getPos()); + + int yOffset = 0; + for (Pair> sprite : information) + { + sprite.getLeft().draw(matrixStack, drawX, drawY + yOffset); + int textY = drawY + yOffset + (sprite.getLeft().getTextureHeight() / 4); + Minecraft.getInstance().fontRenderer.drawStringWithShadow(matrixStack, (tile != null && tile.getClass() == tileClass) + ? sprite.getRight().apply(tile) + : "?", drawX + sprite.getLeft().getTextureWidth() + 2, textY, Color.WHITE.getRGB()); + yOffset += sprite.getLeft().getTextureHeight() + 2; + } + } + + @Override + public boolean shouldRender(Minecraft minecraft) + { + RayTraceResult trace = Minecraft.getInstance().objectMouseOver; + if (trace == null || trace.getType() != RayTraceResult.Type.BLOCK) + return false; + + TileEntity tile = Minecraft.getInstance().world.getTileEntity(((BlockRayTraceResult) trace).getPos()); + if (tile == null || !tileClass.isAssignableFrom(tile.getClass())) + return false; + + return true; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/common/block/BlockIncenseAltar.java b/src/main/java/wayoftime/bloodmagic/common/block/BlockIncenseAltar.java new file mode 100644 index 00000000..2d64b98c --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/common/block/BlockIncenseAltar.java @@ -0,0 +1,77 @@ +package wayoftime.bloodmagic.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.World; +import net.minecraftforge.common.ToolType; +import wayoftime.bloodmagic.tile.TileIncenseAltar; +import wayoftime.bloodmagic.tile.TileSoulForge; + +public class BlockIncenseAltar extends Block +{ + protected static final VoxelShape BODY = Block.makeCuboidShape(5, 0, 5, 12, 16, 12); + + public BlockIncenseAltar() + { + super(Properties.create(Material.IRON).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(0)); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) + { + return BODY; + } + + @Override + public void onPlayerDestroy(IWorld world, BlockPos blockPos, BlockState blockState) + { + TileSoulForge forge = (TileSoulForge) world.getTileEntity(blockPos); + if (forge != null) + forge.dropItems(); + + super.onPlayerDestroy(world, blockPos, blockState); + } + + @Override + public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) + { + if (!state.isIn(newState.getBlock())) + { + TileEntity tileentity = worldIn.getTileEntity(pos); + if (tileentity instanceof TileSoulForge) + { + ((TileSoulForge) tileentity).dropItems(); + worldIn.updateComparatorOutputLevel(pos, this); + } + + super.onReplaced(state, worldIn, pos, newState, isMoving); + } + } + + @Override + public boolean hasTileEntity(BlockState state) + { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) + { + return new TileIncenseAltar(); + } + + @Override + public BlockRenderType getRenderType(BlockState state) + { + return BlockRenderType.MODEL; + } + +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/common/block/BlockPath.java b/src/main/java/wayoftime/bloodmagic/common/block/BlockPath.java new file mode 100644 index 00000000..bc854616 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/common/block/BlockPath.java @@ -0,0 +1,24 @@ +package wayoftime.bloodmagic.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import wayoftime.bloodmagic.incense.IIncensePath; + +public class BlockPath extends Block implements IIncensePath +{ + protected final int pathLevel; + + public BlockPath(int pathLevel, Properties properties) + { + super(properties); + this.pathLevel = pathLevel; + } + + @Override + public int getLevelOfPath(World world, BlockPos pos, BlockState state) + { + return pathLevel; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java b/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java index 6b69e742..3f00677c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java +++ b/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java @@ -1,5 +1,6 @@ package wayoftime.bloodmagic.common.block; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.AbstractBlock.Properties; import net.minecraft.block.Block; import net.minecraft.block.FlowingFluidBlock; @@ -41,6 +42,7 @@ public class BloodMagicBlocks // public static final RegistryObject BLOODSTONE = BASICBLOCKS.register("ruby_block", BloodstoneBlock::new); public static final RegistryObject SOUL_FORGE = BLOCKS.register("soulforge", BlockSoulForge::new); + public static final RegistryObject INCENSE_ALTAR = BLOCKS.register("incensealtar", BlockIncenseAltar::new); public static final RegistryObject ALCHEMY_ARRAY = BLOCKS.register("alchemyarray", BlockAlchemyArray::new); public static final RegistryObject BLANK_RUNE = BASICBLOCKS.register("blankrune", () -> new BlockBloodRune(BloodRuneType.BLANK)); public static final RegistryObject SPEED_RUNE = BASICBLOCKS.register("speedrune", () -> new BlockBloodRune(BloodRuneType.SPEED)); @@ -81,6 +83,15 @@ public class BloodMagicBlocks public static final RegistryObject VENGEFUL_CRYSTAL_BLOCK = BLOCKS.register("vengefuldemoncrystal", () -> new BlockDemonCrystal(EnumDemonWillType.VENGEFUL)); public static final RegistryObject STEADFAST_CRYSTAL_BLOCK = BLOCKS.register("steadfastdemoncrystal", () -> new BlockDemonCrystal(EnumDemonWillType.STEADFAST)); + public static final RegistryObject WOOD_PATH = BASICBLOCKS.register("woodbrickpath", () -> new BlockPath(2, AbstractBlock.Properties.create(Material.WOOD).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.AXE).harvestLevel(0))); + public static final RegistryObject WOOD_TILE_PATH = BASICBLOCKS.register("woodtilepath", () -> new BlockPath(2, AbstractBlock.Properties.create(Material.WOOD).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.AXE).harvestLevel(0))); + public static final RegistryObject STONE_PATH = BASICBLOCKS.register("stonebrickpath", () -> new BlockPath(4, AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(0))); + public static final RegistryObject STONE_TILE_PATH = BASICBLOCKS.register("stonetilepath", () -> new BlockPath(4, AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(0))); + public static final RegistryObject WORN_STONE_PATH = BASICBLOCKS.register("wornstonebrickpath", () -> new BlockPath(6, AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(0))); + public static final RegistryObject WORN_STONE_TILE_PATH = BASICBLOCKS.register("wornstonetilepath", () -> new BlockPath(6, AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(0))); + public static final RegistryObject OBSIDIAN_PATH = BASICBLOCKS.register("obsidianbrickpath", () -> new BlockPath(8, AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(3))); + public static final RegistryObject OBSIDIAN_TILE_PATH = BASICBLOCKS.register("obsidiantilepath", () -> new BlockPath(8, AbstractBlock.Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(3))); + private static ForgeFlowingFluid.Properties makeProperties() { return new ForgeFlowingFluid.Properties(LIFE_ESSENCE_FLUID, LIFE_ESSENCE_FLUID_FLOWING, FluidAttributes.builder(FLUID_STILL, FLUID_FLOWING)).bucket(LIFE_ESSENCE_BUCKET).block(LIFE_ESSENCE_BLOCK); @@ -95,6 +106,7 @@ public class BloodMagicBlocks public static final RegistryObject> SOUL_FORGE_CONTAINER = CONTAINERS.register("soul_forge_container", () -> IForgeContainerType.create(ContainerSoulForge::new)); public static final RegistryObject> ARC_CONTAINER = CONTAINERS.register("arc_container", () -> IForgeContainerType.create(ContainerAlchemicalReactionChamber::new)); public static final RegistryObject> ALCHEMY_TABLE_CONTAINER = CONTAINERS.register("alchemy_table_container", () -> IForgeContainerType.create(ContainerAlchemyTable::new)); + // public static final RegistryObject BLOOD_STONE = registerNoItem("blood_stone", () -> new BloodstoneBlock()); // //// private static RegistryObject register(String name, Supplier sup, Function, Supplier> itemCreator) diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java index 91dc8af3..309c2572 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java @@ -46,6 +46,10 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.DUSK_RITUAL_DIVINER.get()).key('S', BloodMagicItems.DEMONIC_SLATE.get()).key('t', BloodMagicItems.DUSK_INSCRIPTION_TOOL.get()).key('d', BloodMagicItems.BASE_RITUAL_DIVINER.get()).patternLine(" S ").patternLine("tdt").patternLine(" S ").addCriterion("has_demon_slate", hasItem(BloodMagicItems.DEMONIC_SLATE.get())).build(consumer, BloodMagic.rl("ritual_diviner_1")); ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.BLOODSTONE_BRICK.get(), 4).key('s', BloodMagicBlocks.BLOODSTONE.get()).patternLine("ss").patternLine("ss").addCriterion("has_weak_shard", hasItem(BloodMagicItems.WEAK_BLOOD_SHARD.get())).build(consumer, BloodMagic.rl("bloodstonebrick")); ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.BLOODSTONE.get(), 8).addIngredient(Tags.Items.STONE).addIngredient(BloodMagicItems.WEAK_BLOOD_SHARD.get()).addCriterion("has_weak_shard", hasItem(BloodMagicItems.WEAK_BLOOD_SHARD.get())).build(consumer, BloodMagic.rl("largebloodstonebrick")); + + ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.WOOD_TILE_PATH.get(), 4).addIngredient(BloodMagicBlocks.WOOD_PATH.get()).addIngredient(BloodMagicBlocks.WOOD_PATH.get()).addIngredient(BloodMagicBlocks.WOOD_PATH.get()).addIngredient(BloodMagicBlocks.WOOD_PATH.get()).addCriterion("has_apprentice_orb", hasItem(BloodMagicItems.APPRENTICE_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_woodtile")); + ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.STONE_TILE_PATH.get(), 4).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addCriterion("has_magician_orb", hasItem(BloodMagicItems.MAGICIAN_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_stonetile")); + ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.WORN_STONE_TILE_PATH.get(), 4).addIngredient(BloodMagicBlocks.WORN_STONE_PATH.get()).addIngredient(BloodMagicBlocks.WORN_STONE_PATH.get()).addIngredient(BloodMagicBlocks.WORN_STONE_PATH.get()).addIngredient(BloodMagicBlocks.WORN_STONE_PATH.get()).addCriterion("has_master_orb", hasItem(BloodMagicItems.MASTER_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_wornstonetile")); } private void addVanillaSmithingRecipes(Consumer consumer) @@ -57,6 +61,8 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider private void addBloodOrbRecipes(Consumer consumer) { + ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.INCENSE_ALTAR.get()).key('s', Tags.Items.STONE).key('c', Tags.Items.COBBLESTONE).key('h', Items.CHARCOAL).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_WEAK.get())).patternLine("s s").patternLine("shs").patternLine("coc").addCriterion("has_weak_orb", hasItem(BloodMagicItems.WEAK_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("incense_altar")); + ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.BLANK_RUNE.get()).key('a', Tags.Items.STONE).key('s', Ingredient.fromItems(BloodMagicItems.SLATE.get())).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_WEAK.get())).patternLine("asa").patternLine("aoa").patternLine("aaa").addCriterion("has_weak_orb", hasItem(BloodMagicItems.WEAK_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("blood_rune_blank")); ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SPEED_RUNE.get()).key('a', Tags.Items.STONE).key('b', Ingredient.fromItems(BloodMagicItems.SLATE.get())).key('c', Ingredient.fromItems(Items.SUGAR)).key('d', BloodMagicBlocks.BLANK_RUNE.get()).patternLine("aba").patternLine("cdc").patternLine("aba").addCriterion("has_blank_rune", hasItem(BloodMagicItems.BLANK_RUNE_ITEM.get())).build(consumer, BloodMagic.rl("blood_rune_speed")); ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SACRIFICE_RUNE.get()).key('a', Tags.Items.STONE).key('b', BloodMagicItems.REINFORCED_SLATE.get()).key('c', Tags.Items.INGOTS_GOLD).key('d', BloodMagicBlocks.BLANK_RUNE.get()).key('e', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_APPRENTICE.get())).patternLine("aba").patternLine("cdc").patternLine("aea").addCriterion("has_apprentice_orb", hasItem(BloodMagicItems.APPRENTICE_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("blood_rune_sacrifice")); @@ -78,6 +84,12 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.LAVA_CRYSTAL.get()).key('a', Tags.Items.GLASS).key('b', Items.LAVA_BUCKET).key('c', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_WEAK.get())).key('d', Tags.Items.OBSIDIAN).key('e', Tags.Items.GEMS_DIAMOND).patternLine("aba").patternLine("bcb").patternLine("ded").addCriterion("has_weak_orb", hasItem(BloodMagicItems.WEAK_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("lava_crystal")); ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.PRIMITIVE_HYDRATION_CELL.get()).key('B', Items.WATER_BUCKET).key('c', Tags.Items.COBBLESTONE).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_MAGICIAN.get())).key('s', BloodMagicItems.SLATE.get()).patternLine("csc").patternLine("cBc").patternLine("coc").addCriterion("has_magician_orb", hasItem(BloodMagicItems.MAGICIAN_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("primitive_hydration_cell")); + + ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.WOOD_PATH.get(), 4).addIngredient(ItemTags.PLANKS).addIngredient(ItemTags.PLANKS).addIngredient(ItemTags.PLANKS).addIngredient(ItemTags.PLANKS).addIngredient(IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_APPRENTICE.get())).addCriterion("has_apprentice_orb", hasItem(BloodMagicItems.APPRENTICE_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_wood")); + ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.STONE_PATH.get(), 4).addIngredient(Tags.Items.STONE).addIngredient(Tags.Items.STONE).addIngredient(Tags.Items.STONE).addIngredient(Tags.Items.STONE).addIngredient(IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_MAGICIAN.get())).addCriterion("has_magician_orb", hasItem(BloodMagicItems.MAGICIAN_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_stone")); + ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.WORN_STONE_PATH.get(), 4).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_MASTER.get())).addCriterion("has_master_orb", hasItem(BloodMagicItems.MASTER_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_wornstone")); + + ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.RITUAL_READER.get()).key('s', BloodMagicItems.DEMONIC_SLATE.get()).key('g', Tags.Items.GLASS).key('i', Tags.Items.INGOTS_GOLD).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_MASTER.get())).patternLine("gog").patternLine("isi").patternLine(" s ").addCriterion("has_master_orb", hasItem(BloodMagicItems.MASTER_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("ritual_reader")); // ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SPEED_RUNE.get()).key('s', Items.GLASS).key('o', Ingredient.fromItems(Items.DIAMOND)).patternLine("sss").patternLine("sos").patternLine("sss").addCriterion("has_diamond", hasItem(Items.DIAMOND)).build(consumer, new ResourceLocation(BloodMagic.MODID, "speed_rune_from_standard")); // ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SPEED_RUNE.get()).key('s', Items.GLASS).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_WEAK.get())).patternLine("sss").patternLine("sos").patternLine("sss").addCriterion("has_diamond", hasItem(Items.DIAMOND)).build(consumer, new ResourceLocation(BloodMagic.MODID, "speed_rune_from_orb")); } diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java index ef2d5612..280b2432 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java @@ -63,6 +63,7 @@ public class GeneratorItemModels extends ItemModelProvider registerDemonTool(BloodMagicItems.SENTIENT_AXE.get()); registerDemonTool(BloodMagicItems.SENTIENT_PICKAXE.get()); registerDemonTool(BloodMagicItems.SENTIENT_SHOVEL.get()); + registerSacrificialKnife(BloodMagicItems.SACRIFICIAL_DAGGER.get()); } private void registerCustomBlockPath(Block block, String newPath) @@ -145,4 +146,14 @@ public class GeneratorItemModels extends ItemModelProvider } } + + private void registerSacrificialKnife(Item item) + { + String path = item.getRegistryName().getPath(); + ItemModelBuilder builder = getBuilder(path); + + ModelFile baseKnifeFile = singleTexture("item/variants/" + path, mcLoc("item/handheld"), "layer0", modLoc("item/" + path)); + ModelFile ceremonialKnifeFile = singleTexture("item/variants/" + path + "_ceremonial", mcLoc("item/handheld"), "layer0", modLoc("item/" + path + "_ceremonial")); + builder = builder.override().predicate(BloodMagic.rl("incense"), 0).model(baseKnifeFile).end().override().predicate(BloodMagic.rl("incense"), 1).model(ceremonialKnifeFile).end(); + } } diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java index 6c8546b0..492b17cc 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java @@ -16,6 +16,9 @@ public class GeneratorLanguage extends LanguageProvider @Override protected void addTranslations() { + // HUD + add("hud.bloodmagic.inactive", "Inactive"); + // Creative Tab add("itemGroup.bloodmagic.creativeTab", "Blood Magic"); @@ -45,6 +48,17 @@ public class GeneratorLanguage extends LanguageProvider // add("tooltip.bloodmagic.sigil.divination.currentInversion", "Current Inversion: %d"); add("tooltip.bloodmagic.sigil.divination.currentBonus", "Current Bonus: +%d%%"); + add("tooltip.bloodmagic.sigil.seer.desc", "When seeing all is not enough"); + add("tooltip.bloodmagic.sigil.seer.currentAltarProgress", "Current Progress: %d LP/ %s LP"); + add("tooltip.bloodmagic.sigil.seer.currentAltarProgress.percent", "Current Progress: %s"); + add("tooltip.bloodmagic.sigil.seer.currentAltarConsumptionRate", "Consumption Rate: %d LP"); + add("tooltip.bloodmagic.sigil.seer.currentAltarTier", "Current Tier: %d"); + add("tooltip.bloodmagic.sigil.seer.currentEssence", "Current Essence: %d LP"); + add("tooltip.bloodmagic.sigil.seer.currentAltarCapacity", "Current Capacity: %d LP"); + add("tooltip.bloodmagic.sigil.seer.currentCharge", "Current Charge: %d"); + add("tooltip.bloodmagic.sigil.seer.currentTranquility", "Current Tranquility: %d"); + add("tooltip.bloodmagic.sigil.seer.currentBonus", "Current Bonus: +%d%%"); + add("tooltip.bloodmagic.decoration.safe", "Safe for decoration"); add("tooltip.bloodmagic.decoration.notSafe", "Dangerous for decoration"); @@ -304,6 +318,7 @@ public class GeneratorLanguage extends LanguageProvider addBlock(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER, "Alchemical Reaction Chamber"); addBlock(BloodMagicBlocks.ALCHEMY_TABLE, "Alchemy Table"); + addBlock(BloodMagicBlocks.INCENSE_ALTAR, "Incense Altar"); addBlock(BloodMagicBlocks.BLOODSTONE, "Large Bloodstone Brick"); addBlock(BloodMagicBlocks.BLOODSTONE_BRICK, "Bloodstone Brick"); @@ -317,6 +332,15 @@ public class GeneratorLanguage extends LanguageProvider addBlock(BloodMagicBlocks.DEMON_CRUCIBLE, "Demon Crucible"); addBlock(BloodMagicBlocks.DEMON_CRYSTALLIZER, "Demon Crystallizer"); + addBlock(BloodMagicBlocks.WOOD_PATH, "Wooden Path"); + addBlock(BloodMagicBlocks.WOOD_TILE_PATH, "Tiled Wooden Path"); + addBlock(BloodMagicBlocks.STONE_PATH, "Stone Path"); + addBlock(BloodMagicBlocks.STONE_TILE_PATH, "Tiled Stone Path"); + addBlock(BloodMagicBlocks.WORN_STONE_PATH, "Worn Stone Path"); + addBlock(BloodMagicBlocks.WORN_STONE_TILE_PATH, "Tiled Worn Stone Path"); + addBlock(BloodMagicBlocks.OBSIDIAN_PATH, "Obsidian Path"); + addBlock(BloodMagicBlocks.OBSIDIAN_TILE_PATH, "Tiled Obsidian Path"); + // Item names addItem(BloodMagicItems.WEAK_BLOOD_ORB, "Weak Blood Orb"); addItem(BloodMagicItems.APPRENTICE_BLOOD_ORB, "Apprentice Blood Orb"); @@ -332,6 +356,7 @@ public class GeneratorLanguage extends LanguageProvider addItem(BloodMagicItems.ICE_SIGIL, "Sigil of the Frozen Lake"); addItem(BloodMagicItems.AIR_SIGIL, "Air Sigil"); addItem(BloodMagicItems.BLOOD_LIGHT_SIGIL, "Sigil of the Blood Lamp"); + addItem(BloodMagicItems.SEER_SIGIL, "Seer's Sigil"); addItem(BloodMagicBlocks.LIFE_ESSENCE_BUCKET, "Bucket of Life"); addItem(BloodMagicItems.ARCANE_ASHES, "Arcane Ashes"); @@ -353,6 +378,7 @@ public class GeneratorLanguage extends LanguageProvider addItem(BloodMagicItems.REAGENT_MAGNETISM, "Magnetism Reagent"); addItem(BloodMagicItems.REAGENT_AIR, "Air Reagent"); addItem(BloodMagicItems.REAGENT_BLOOD_LIGHT, "Blood Lamp Reagent"); + addItem(BloodMagicItems.REAGENT_SIGHT, "Sight Reagent"); addItem(BloodMagicItems.PETTY_GEM, "Petty Tartaric Gem"); addItem(BloodMagicItems.LESSER_GEM, "Lesser Tartaric Gem"); diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java index ecb2d715..4275e10b 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java @@ -75,6 +75,7 @@ public class GeneratorLootTable extends LootTableProvider registerDropSelfLootTable(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER.get()); registerDropSelfLootTable(BloodMagicBlocks.DEMON_CRUCIBLE.get()); registerDropSelfLootTable(BloodMagicBlocks.DEMON_CRYSTALLIZER.get()); + registerDropSelfLootTable(BloodMagicBlocks.INCENSE_ALTAR.get()); // registerNoDropLootTable(BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get()); registerDropCrystalsLootTable(BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get(), BloodMagicItems.RAW_CRYSTAL.get()); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java b/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java index ea23610a..4bccc371 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java @@ -78,6 +78,16 @@ public class BloodMagicItems public static final RegistryObject BLOOD_ALTAR_ITEM = ITEMS.register("altar", () -> new BlockItem(BloodMagicBlocks.BLOOD_ALTAR.get(), new Item.Properties().group(BloodMagic.TAB))); public static final RegistryObject ALCHEMY_TABLE_ITEM = ITEMS.register("alchemytable", () -> new ItemBlockAlchemyTable(BloodMagicBlocks.ALCHEMY_TABLE.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject INCENSE_ALTAR_ITEM = ITEMS.register("incensealtar", () -> new BlockItem(BloodMagicBlocks.INCENSE_ALTAR.get(), new Item.Properties().group(BloodMagic.TAB))); + + public static final RegistryObject WOOD_PATH_ITEM = ITEMS.register("woodbrickpath", () -> new BlockItem(BloodMagicBlocks.WOOD_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject WOOD_TILE_PATH_ITEM = ITEMS.register("woodtilepath", () -> new BlockItem(BloodMagicBlocks.WOOD_TILE_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject STONE_PATH_ITEM = ITEMS.register("stonebrickpath", () -> new BlockItem(BloodMagicBlocks.STONE_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject STONE_TILE_PATH_ITEM = ITEMS.register("stonetilepath", () -> new BlockItem(BloodMagicBlocks.STONE_TILE_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject WORN_STONE_PATH_ITEM = ITEMS.register("wornstonebrickpath", () -> new BlockItem(BloodMagicBlocks.WORN_STONE_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject WORN_STONE_TILE_PATH_ITEM = ITEMS.register("wornstonetilepath", () -> new BlockItem(BloodMagicBlocks.WORN_STONE_TILE_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject OBSIDIAN_PATH_ITEM = ITEMS.register("obsidianbrickpath", () -> new BlockItem(BloodMagicBlocks.OBSIDIAN_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject OBSIDIAN_TILE_PATH_ITEM = ITEMS.register("obsidiantilepath", () -> new BlockItem(BloodMagicBlocks.OBSIDIAN_TILE_PATH.get(), new Item.Properties().group(BloodMagic.TAB))); // TODO: Need to rework the above instantiations for the ItemBlocks so that it's // done with the Blocks. @@ -90,6 +100,7 @@ public class BloodMagicItems public static final RegistryObject MASTER_BLOOD_ORB = BASICITEMS.register("masterbloodorb", () -> new ItemBloodOrb(ORB_MASTER)); public static final RegistryObject DIVINATION_SIGIL = BASICITEMS.register("divinationsigil", () -> new ItemSigilDivination(true)); + public static final RegistryObject SEER_SIGIL = BASICITEMS.register("seersigil", () -> new ItemSigilDivination(false)); public static final RegistryObject SACRIFICIAL_DAGGER = BASICITEMS.register("sacrificialdagger", () -> new ItemSacrificialDagger()); public static final RegistryObject SLATE = BASICITEMS.register("blankslate", () -> new ItemBase()); public static final RegistryObject REINFORCED_SLATE = BASICITEMS.register("reinforcedslate", () -> new ItemBase()); @@ -136,6 +147,7 @@ public class BloodMagicItems public static final RegistryObject REAGENT_MAGNETISM = BASICITEMS.register("reagentmagnetism", () -> new ItemBase()); public static final RegistryObject REAGENT_AIR = BASICITEMS.register("reagentair", () -> new ItemBase()); public static final RegistryObject REAGENT_BLOOD_LIGHT = BASICITEMS.register("reagentbloodlight", () -> new ItemBase()); + public static final RegistryObject REAGENT_SIGHT = BASICITEMS.register("reagentsight", () -> new ItemBase()); // Tartaric Gems public static final RegistryObject PETTY_GEM = ITEMS.register("soulgempetty", () -> new ItemSoulGem("petty", 64)); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/ItemSacrificialDagger.java b/src/main/java/wayoftime/bloodmagic/common/item/ItemSacrificialDagger.java index 2889156d..e305c0fd 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/ItemSacrificialDagger.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/ItemSacrificialDagger.java @@ -25,6 +25,7 @@ import wayoftime.bloodmagic.ConfigHandler; import wayoftime.bloodmagic.event.SacrificeKnifeUsedEvent; import wayoftime.bloodmagic.util.Constants; import wayoftime.bloodmagic.util.DamageSourceBloodMagic; +import wayoftime.bloodmagic.util.helper.IncenseHelper; import wayoftime.bloodmagic.util.helper.NBTHelper; import wayoftime.bloodmagic.util.helper.PlayerHelper; import wayoftime.bloodmagic.util.helper.PlayerSacrificeHelper; @@ -52,7 +53,14 @@ public class ItemSacrificialDagger extends Item public void onPlayerStoppedUsing(ItemStack stack, World worldIn, LivingEntity entityLiving, int timeLeft) { if (entityLiving instanceof PlayerEntity && !entityLiving.getEntityWorld().isRemote) - PlayerSacrificeHelper.sacrificePlayerHealth((PlayerEntity) entityLiving); + if (PlayerSacrificeHelper.sacrificePlayerHealth((PlayerEntity) entityLiving)) + IncenseHelper.setHasMaxIncense(stack, (PlayerEntity) entityLiving, false); + } + + @Override + public boolean hasEffect(ItemStack stack) + { + return IncenseHelper.getHasMaxIncense(stack) || super.hasEffect(stack); } @Override @@ -114,13 +122,15 @@ public class ItemSacrificialDagger extends Item return super.onItemRightClick(world, player, hand); lpAdded = evt.lpAdded; + } else if (player.isSneaking()) + { + lpAdded = Integer.MAX_VALUE; } double posX = player.getPosX(); double posY = player.getPosY(); double posZ = player.getPosZ(); - world.playSound(player, posX, posY, posZ, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) - * 0.8F); + world.playSound(player, posX, posY, posZ, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); for (int l = 0; l < 8; ++l) world.addParticle(RedstoneParticleData.REDSTONE_DUST, posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), 0, 0, 0); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilBase.java b/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilBase.java index 11c77760..f7d8567c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilBase.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilBase.java @@ -6,6 +6,7 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; @@ -36,7 +37,7 @@ public class ItemSigilBase extends ItemSigil @OnlyIn(Dist.CLIENT) public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flag) { - tooltip.add(new TranslationTextComponent(tooltipBase + "desc")); + tooltip.add(new TranslationTextComponent(tooltipBase + "desc").mergeStyle(TextFormatting.ITALIC)); // if (TextHelper.canTranslate(tooltipBase + "desc")) // tooltip.addAll(Arrays.asList(WordUtils.wrap(TextHelper.localizeEffect(tooltipBase // + "desc"), 30, "/cut", false).split("/cut"))); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilDivination.java b/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilDivination.java index 90e242a5..2b995104 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilDivination.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/sigil/ItemSigilDivination.java @@ -20,6 +20,7 @@ import wayoftime.bloodmagic.altar.IBloodAltar; import wayoftime.bloodmagic.core.data.Binding; import wayoftime.bloodmagic.iface.IAltarReader; import wayoftime.bloodmagic.iface.ISigil; +import wayoftime.bloodmagic.tile.TileIncenseAltar; import wayoftime.bloodmagic.util.ChatUtil; import wayoftime.bloodmagic.util.helper.NetworkHelper; import wayoftime.bloodmagic.util.helper.NumeralHelper; @@ -27,10 +28,12 @@ import wayoftime.bloodmagic.util.helper.PlayerHelper; public class ItemSigilDivination extends ItemSigilBase implements IAltarReader { + private final boolean isSimple; public ItemSigilDivination(boolean simple) { super(simple ? "divination" : "seer"); + isSimple = simple; } @Override @@ -51,7 +54,7 @@ public class ItemSigilDivination extends ItemSigilBase implements IAltarReader super.onItemRightClick(world, player, hand); Binding binding = getBinding(stack); - if (binding != null) + if (isSimple && binding != null) { int currentEssence = NetworkHelper.getSoulNetwork(binding).getCurrentEssence(); List toSend = Lists.newArrayList(); @@ -73,18 +76,21 @@ public class ItemSigilDivination extends ItemSigilBase implements IAltarReader int currentEssence = altar.getCurrentBlood(); int capacity = altar.getCapacity(); altar.checkTier(); - ChatUtil.sendNoSpam(player, new TranslationTextComponent(tooltipBase - + "currentAltarTier", NumeralHelper.toRoman(tier)), new TranslationTextComponent(tooltipBase - + "currentEssence", currentEssence), new TranslationTextComponent(tooltipBase - + "currentAltarCapacity", capacity)); + if (isSimple) + { + ChatUtil.sendNoSpam(player, new TranslationTextComponent(tooltipBase + "currentAltarTier", NumeralHelper.toRoman(tier)), new TranslationTextComponent(tooltipBase + "currentEssence", currentEssence), new TranslationTextComponent(tooltipBase + "currentAltarCapacity", capacity)); + } else + { + ChatUtil.sendNoSpam(player, new TranslationTextComponent(tooltipBase + "currentAltarTier", NumeralHelper.toRoman(tier)), new TranslationTextComponent(tooltipBase + "currentEssence", currentEssence), new TranslationTextComponent(tooltipBase + "currentAltarCapacity", capacity)); + } + } else if (tile != null && tile instanceof TileIncenseAltar) + { + TileIncenseAltar altar = (TileIncenseAltar) tile; + altar.recheckConstruction(); + double tranquility = altar.tranquility; + ChatUtil.sendNoSpam(player, new TranslationTextComponent(tooltipBase + "currentTranquility", (int) ((100D * (int) (100 * tranquility)) / 100d)), new TranslationTextComponent(tooltipBase + "currentBonus", (int) (100 * altar.incenseAddition))); } -// else if (tile != null && tile instanceof TileIncenseAltar) -// { -// TileIncenseAltar altar = (TileIncenseAltar) tile; -// altar.recheckConstruction(); -// double tranquility = altar.tranquility; -// ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentTranquility", (int) ((100D * (int) (100 * tranquility)) / 100d)), new TextComponentTranslation(tooltipBase + "currentBonus", (int) (100 * altar.incenseAddition))); -// } else if (tile != null && tile instanceof TileInversionPillar) +// else if (tile != null && tile instanceof TileInversionPillar) // { // TileInversionPillar pillar = (TileInversionPillar) tile; // double inversion = pillar.getCurrentInversion(); @@ -98,8 +104,7 @@ public class ItemSigilDivination extends ItemSigilBase implements IAltarReader int currentEssence = NetworkHelper.getSoulNetwork(binding).getCurrentEssence(); List toSend = Lists.newArrayList(); if (!binding.getOwnerId().equals(player.getGameProfile().getId())) - toSend.add(new TranslationTextComponent(tooltipBase - + "otherNetwork", binding.getOwnerName())); + toSend.add(new TranslationTextComponent(tooltipBase + "otherNetwork", binding.getOwnerName())); toSend.add(new TranslationTextComponent(tooltipBase + "currentEssence", currentEssence)); ChatUtil.sendNoSpam(player, toSend.toArray(new ITextComponent[toSend.size()])); } diff --git a/src/main/java/wayoftime/bloodmagic/common/item/soul/ItemSoulGem.java b/src/main/java/wayoftime/bloodmagic/common/item/soul/ItemSoulGem.java index 9206dd15..6a21c8c0 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/soul/ItemSoulGem.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/soul/ItemSoulGem.java @@ -8,7 +8,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResultType; @@ -77,8 +76,6 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMultiWillTool if (!stack.hasTag()) return; - Items d; - EnumDemonWillType type = this.getCurrentType(stack); tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.soulGem." + name)); tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.will", ChatUtil.DECIMAL_FORMAT.format(getWill(type, stack)))); @@ -133,8 +130,7 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMultiWillTool if (soulsLeft < getMaxWill(thisType, soulGemStack)) { - double newSoulsLeft = Math.min(soulsLeft - + soul.getWill(thisType, soulStack), getMaxWill(thisType, soulGemStack)); + double newSoulsLeft = Math.min(soulsLeft + soul.getWill(thisType, soulStack), getMaxWill(thisType, soulGemStack)); soul.drainWill(thisType, soulStack, newSoulsLeft - soulsLeft); setWill(thisType, soulGemStack, newSoulsLeft); diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java index dfe9c6ec..de85c13d 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyArrayRecipeProvider.java @@ -28,6 +28,7 @@ public class AlchemyArrayRecipeProvider implements ISubRecipeProvider AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/magnetismsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_MAGNETISM.get()), Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get()), new ItemStack(BloodMagicItems.MAGNETISM_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "magnetismsigil")); AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/lightsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_BLOOD_LIGHT.get()), Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get()), new ItemStack(BloodMagicItems.BLOOD_LIGHT_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "bloodlightsigil")); AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/airsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_AIR.get()), Ingredient.fromItems(BloodMagicItems.REINFORCED_SLATE.get()), new ItemStack(BloodMagicItems.AIR_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "airsigil")); + AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/sightsigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_SIGHT.get()), Ingredient.fromItems(BloodMagicItems.REINFORCED_SLATE.get()), new ItemStack(BloodMagicItems.SEER_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "seersigil")); // AlchemyArrayRecipeBuilder.array(BloodMagic.rl("textures/models/alchemyarrays/fastminersigil.png"), Ingredient.fromItems(BloodMagicItems.REAGENT_FAST_MINER.get()), Ingredient.fromItems(BloodMagicItems.REINFORCED_SLATE.get()), new ItemStack(BloodMagicItems.FAST_MINER_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "frostsigil")); // BloodAltarRecipeBuilder.altar(Ingredient.fromTag(Tags.Items.GEMS_DIAMOND), new ItemStack(BloodMagicItems.WEAK_BLOOD_ORB.get()), AltarTier.ONE.ordinal(), 2000, 2, 1).build(consumer, new ResourceLocation(BloodMagic.MODID, basePath // + "weakbloodorb")); diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/BloodAltarRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/BloodAltarRecipeProvider.java index e607b80e..7588ab8f 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/BloodAltarRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/BloodAltarRecipeProvider.java @@ -23,7 +23,7 @@ public class BloodAltarRecipeProvider implements ISubRecipeProvider String basePath = "altar/"; // ONE - BloodAltarRecipeBuilder.altar(Ingredient.fromTag(Tags.Items.GEMS_DIAMOND), new ItemStack(BloodMagicItems.WEAK_BLOOD_ORB.get()), AltarTier.ONE.ordinal(), 2000, 2, 1).build(consumer, new ResourceLocation(BloodMagic.MODID, basePath + "weakbloodorb")); + BloodAltarRecipeBuilder.altar(Ingredient.fromTag(Tags.Items.GEMS_DIAMOND), new ItemStack(BloodMagicItems.WEAK_BLOOD_ORB.get()), AltarTier.ONE.ordinal(), 2000, 5, 1).build(consumer, new ResourceLocation(BloodMagic.MODID, basePath + "weakbloodorb")); BloodAltarRecipeBuilder.altar(Ingredient.fromTag(Tags.Items.STONE), new ItemStack(BloodMagicItems.SLATE.get()), AltarTier.ONE.ordinal(), 1000, 5, 5).build(consumer, new ResourceLocation(BloodMagic.MODID, basePath + "slate")); BloodAltarRecipeBuilder.altar(Ingredient.fromItems(Items.BUCKET), new ItemStack(BloodMagicBlocks.LIFE_ESSENCE_BUCKET.get()), AltarTier.ONE.ordinal(), 1000, 5, 0).build(consumer, BloodMagic.rl(basePath + "bucket_life")); diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java index fce5ea2e..6e1f4b6a 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java @@ -40,6 +40,7 @@ public class TartaricForgeRecipeProvider implements ISubRecipeProvider TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.REAGENT_MAGNETISM.get()), 600, 10, Ingredient.fromTag(Tags.Items.STRING), Ingredient.fromTag(Tags.Items.INGOTS_GOLD), Ingredient.fromTag(Tags.Items.INGOTS_GOLD), Ingredient.fromTag(Tags.Items.STORAGE_BLOCKS_IRON)).build(consumer, BloodMagic.rl(basePath + "reagent_magnetism")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.REAGENT_FAST_MINER.get()), 128, 20, Ingredient.fromItems(Items.IRON_PICKAXE), Ingredient.fromItems(Items.IRON_AXE), Ingredient.fromItems(Items.IRON_SHOVEL), Ingredient.fromTag(Tags.Items.GUNPOWDER)).build(consumer, BloodMagic.rl(basePath + "reagent_fastminer")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.REAGENT_BLOOD_LIGHT.get()), 300, 10, Ingredient.fromTag(Tags.Items.DUSTS_GLOWSTONE), Ingredient.fromItems(Items.TORCH), Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE), Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE)).build(consumer, BloodMagic.rl(basePath + "reagent_blood_light")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.REAGENT_SIGHT.get()), 64, 0, Ingredient.fromTag(Tags.Items.DUSTS_GLOWSTONE), Ingredient.fromTag(Tags.Items.GLASS), Ingredient.fromTag(Tags.Items.GLASS), Ingredient.fromItems(BloodMagicItems.DIVINATION_SIGIL.get())).build(consumer, BloodMagic.rl(basePath + "reagent_sight")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.DEMON_CRUCIBLE.get()), 400, 100, Ingredient.fromItems(Items.CAULDRON), Ingredient.fromTag(Tags.Items.STONE), Ingredient.fromTag(Tags.Items.GEMS_LAPIS), Ingredient.fromTag(Tags.Items.GEMS_DIAMOND)).build(consumer, BloodMagic.rl(basePath + "demon_crucible")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.DEMON_CRYSTALLIZER.get()), 500, 100, Ingredient.fromItems(BloodMagicBlocks.SOUL_FORGE.get()), Ingredient.fromTag(Tags.Items.STONE), Ingredient.fromTag(Tags.Items.GEMS_LAPIS), Ingredient.fromTag(Tags.Items.GLASS)).build(consumer, BloodMagic.rl(basePath + "demon_crystallizer")); diff --git a/src/main/java/wayoftime/bloodmagic/incense/EnumTranquilityType.java b/src/main/java/wayoftime/bloodmagic/incense/EnumTranquilityType.java new file mode 100644 index 00000000..0bdbe0ad --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/EnumTranquilityType.java @@ -0,0 +1,12 @@ +package wayoftime.bloodmagic.incense; + +public enum EnumTranquilityType +{ + PLANT(), + CROP(), + TREE(), + EARTHEN(), + WATER(), + FIRE(), + LAVA(),; +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/incense/IIncensePath.java b/src/main/java/wayoftime/bloodmagic/incense/IIncensePath.java new file mode 100644 index 00000000..ae5ef122 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/IIncensePath.java @@ -0,0 +1,15 @@ +package wayoftime.bloodmagic.incense; + +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public interface IIncensePath +{ + /** + * Goes from 0 to however far this path block can be from the altar while still + * functioning. 0 represents a block that can work when it is two blocks + * horizontally away from the altar. + */ + int getLevelOfPath(World world, BlockPos pos, BlockState state); +} diff --git a/src/main/java/wayoftime/bloodmagic/incense/ITranquilityHandler.java b/src/main/java/wayoftime/bloodmagic/incense/ITranquilityHandler.java new file mode 100644 index 00000000..557870e4 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/ITranquilityHandler.java @@ -0,0 +1,11 @@ +package wayoftime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public interface ITranquilityHandler +{ + TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, BlockState state); +} diff --git a/src/main/java/wayoftime/bloodmagic/incense/IncenseAltarComponent.java b/src/main/java/wayoftime/bloodmagic/incense/IncenseAltarComponent.java new file mode 100644 index 00000000..2bceb3f5 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/IncenseAltarComponent.java @@ -0,0 +1,60 @@ +package wayoftime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; + +public class IncenseAltarComponent +{ + public final BlockPos offsetPos; + public final Block block; + + public IncenseAltarComponent(BlockPos offsetPos, Block block) + { + this.offsetPos = offsetPos; + this.block = block; + } + + public boolean doesBlockMatch(Block block) + { + return this.block == block; + } + + /** + * Base rotation is north. + */ + public BlockPos getOffset(Direction rotation) + { + return new BlockPos(this.getX(rotation), offsetPos.getY(), this.getZ(rotation)); + } + + public int getX(Direction direction) + { + switch (direction) + { + case EAST: + return -this.offsetPos.getZ(); + case SOUTH: + return -this.offsetPos.getX(); + case WEST: + return this.offsetPos.getZ(); + default: + return this.offsetPos.getX(); + } + } + + public int getZ(Direction direction) + { + switch (direction) + { + case EAST: + return this.offsetPos.getX(); + case SOUTH: + return -this.offsetPos.getZ(); + case WEST: + return -this.offsetPos.getX(); + default: + return this.offsetPos.getZ(); + } + } +} diff --git a/src/main/java/wayoftime/bloodmagic/incense/IncenseAltarHandler.java b/src/main/java/wayoftime/bloodmagic/incense/IncenseAltarHandler.java new file mode 100644 index 00000000..eb68885f --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/IncenseAltarHandler.java @@ -0,0 +1,114 @@ +package wayoftime.bloodmagic.incense; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class IncenseAltarHandler +{ + public static Map> incenseComponentMap = new TreeMap<>(); + // Incense bonus maximum applied for the tier of blocks. + public static double[] incenseBonuses = new double[] { 0.2, 0.6, 1.2, 2, 3, 4.5 }; + public static double[] tranquilityRequired = new double[] { 0, 6, 14.14, 28, 44.09, 83.14 }; + public static int[] roadsRequired = new int[] { 0, 1, 4, 6, 8, 10, 12 }; // TODO: Change for when the roads are + // fully implemented + + public static void registerIncenseComponent(int altarLevel, IncenseAltarComponent component) + { + if (incenseComponentMap.containsKey(altarLevel)) + { + incenseComponentMap.get(altarLevel).add(component); + } else + { + List list = new ArrayList<>(); + list.add(component); + incenseComponentMap.put(altarLevel, list); + } + } + + public static void registerIncenseComponent(int altarLevel, BlockPos offsetPos, Block block, BlockState state) + { + registerIncenseComponent(altarLevel, new IncenseAltarComponent(offsetPos, block)); + } + + public static double getMaxIncenseBonusFromComponents(World world, BlockPos pos) + { + double accumulatedBonus = 0; + for (int i = 0; i < incenseBonuses.length; i++) + { + double previousBonus = (i <= 0 ? 0 : incenseBonuses[i - 1]); + double nextBonus = incenseBonuses[i]; + if (!incenseComponentMap.containsKey(i)) + { + accumulatedBonus += (nextBonus - previousBonus); + } else + { + boolean hasAllComponentsThisTier = true; + for (IncenseAltarComponent component : incenseComponentMap.get(i)) + { + BlockPos offsetPos = pos.add(component.getOffset(Direction.NORTH)); + BlockState state = world.getBlockState(offsetPos); + Block block = state.getBlock(); + if (component.doesBlockMatch(block)) + { + hasAllComponentsThisTier = false; + } else + { + accumulatedBonus += (nextBonus - previousBonus) / incenseComponentMap.get(i).size(); + } + } + + if (!hasAllComponentsThisTier) + { + break; + } + } + } + + return accumulatedBonus; + } + + public static double getMaxIncenseBonusFromRoads(int roads) + { + double previousBonus = 0; + for (int i = 0; i < incenseBonuses.length; i++) + { + if (roads >= roadsRequired[i]) + { + previousBonus = incenseBonuses[i]; + } else + { + return previousBonus; + } + } + + return previousBonus; + } + + public static double getIncenseBonusFromComponents(World world, BlockPos pos, double tranquility, int roads) + { + double maxBonus = Math.min(getMaxIncenseBonusFromComponents(world, pos), getMaxIncenseBonusFromRoads(roads)); + double possibleBonus = 0; + + for (int i = 0; i < incenseBonuses.length; i++) + { + if (tranquility >= tranquilityRequired[i]) + { + possibleBonus = incenseBonuses[i]; + } else if (i >= 1) + { + possibleBonus += (incenseBonuses[i] - possibleBonus) * (tranquility - tranquilityRequired[i - 1]) / (tranquilityRequired[i] - tranquilityRequired[i - 1]); + break; + } + } + + return Math.min(maxBonus, possibleBonus); + } +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/incense/IncenseTranquilityRegistry.java b/src/main/java/wayoftime/bloodmagic/incense/IncenseTranquilityRegistry.java new file mode 100644 index 00000000..86fe5f01 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/IncenseTranquilityRegistry.java @@ -0,0 +1,33 @@ +package wayoftime.bloodmagic.incense; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class IncenseTranquilityRegistry +{ + public static List handlerList = new ArrayList<>(); + + public static void registerTranquilityHandler(ITranquilityHandler handler) + { + handlerList.add(handler); + } + + public static TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, BlockState state) + { + for (ITranquilityHandler handler : handlerList) + { + TranquilityStack tranq = handler.getTranquilityOfBlock(world, pos, block, state); + if (tranq != null) + { + return tranq; + } + } + + return null; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/incense/TranquilityStack.java b/src/main/java/wayoftime/bloodmagic/incense/TranquilityStack.java new file mode 100644 index 00000000..2d066476 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/incense/TranquilityStack.java @@ -0,0 +1,13 @@ +package wayoftime.bloodmagic.incense; + +public class TranquilityStack +{ + public final EnumTranquilityType type; + public double value; + + public TranquilityStack(EnumTranquilityType type, double value) + { + this.type = type; + this.value = value; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/registry/ModTranquilityHandlers.java b/src/main/java/wayoftime/bloodmagic/registry/ModTranquilityHandlers.java new file mode 100644 index 00000000..b41925a3 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/registry/ModTranquilityHandlers.java @@ -0,0 +1,31 @@ +package wayoftime.bloodmagic.registry; + +import net.minecraft.block.FireBlock; +import net.minecraft.block.GrassBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.tags.BlockTags; +import wayoftime.bloodmagic.api.impl.BloodMagicAPI; +import wayoftime.bloodmagic.incense.EnumTranquilityType; +import wayoftime.bloodmagic.incense.IncenseTranquilityRegistry; +import wayoftime.bloodmagic.incense.TranquilityStack; + +public class ModTranquilityHandlers +{ + + public static void init() + { + IncenseTranquilityRegistry.registerTranquilityHandler((world, pos, block, state) -> block instanceof LeavesBlock + ? new TranquilityStack(EnumTranquilityType.PLANT, 1.0D) + : null); + IncenseTranquilityRegistry.registerTranquilityHandler((world, pos, block, state) -> block instanceof FireBlock + ? new TranquilityStack(EnumTranquilityType.FIRE, 1.0D) + : null); + IncenseTranquilityRegistry.registerTranquilityHandler((world, pos, block, state) -> block instanceof GrassBlock + ? new TranquilityStack(EnumTranquilityType.EARTHEN, 0.5D) + : null); + IncenseTranquilityRegistry.registerTranquilityHandler((world, pos, block, state) -> BlockTags.LOGS.contains(block) + ? new TranquilityStack(EnumTranquilityType.TREE, 1.0D) + : null); + IncenseTranquilityRegistry.registerTranquilityHandler((world, pos, block, state) -> BloodMagicAPI.INSTANCE.getValueManager().getTranquility().get(state)); + } +} diff --git a/src/main/java/wayoftime/bloodmagic/tile/TileIncenseAltar.java b/src/main/java/wayoftime/bloodmagic/tile/TileIncenseAltar.java new file mode 100644 index 00000000..6e8ed14e --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/tile/TileIncenseAltar.java @@ -0,0 +1,206 @@ +package wayoftime.bloodmagic.tile; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.registries.ObjectHolder; +import wayoftime.bloodmagic.incense.EnumTranquilityType; +import wayoftime.bloodmagic.incense.IIncensePath; +import wayoftime.bloodmagic.incense.IncenseAltarHandler; +import wayoftime.bloodmagic.incense.IncenseTranquilityRegistry; +import wayoftime.bloodmagic.incense.TranquilityStack; +import wayoftime.bloodmagic.ritual.AreaDescriptor; +import wayoftime.bloodmagic.util.helper.PlayerSacrificeHelper; + +public class TileIncenseAltar extends TileInventory implements ITickableTileEntity +{ + public static int maxCheckRange = 5; + public AreaDescriptor incenseArea = new AreaDescriptor.Rectangle(new BlockPos(-5, -5, -5), 11); + public Map tranquilityMap = new HashMap<>(); + + public double incenseAddition = 0; // Self-sacrifice is multiplied by 1 plus this value. + public double tranquility = 0; + public int roadDistance = 0; // Number of road blocks laid down + + @ObjectHolder("bloodmagic:incensealtar") + public static TileEntityType TYPE; + + public TileIncenseAltar(TileEntityType type) + { + super(type, 1, "incensealtar"); + } + + public TileIncenseAltar() + { + this(TYPE); + } + + @Override + public void tick() + { + AxisAlignedBB aabb = incenseArea.getAABB(getPos()); + List playerList = getWorld().getEntitiesWithinAABB(PlayerEntity.class, aabb); + if (playerList.isEmpty()) + { + return; + } + + if (getWorld().getGameTime() % 100 == 0) + { + recheckConstruction(); + } + + boolean hasPerformed = false; + + for (PlayerEntity player : playerList) + { + if (PlayerSacrificeHelper.incrementIncense(player, 0, incenseAddition, incenseAddition / 100)) + { + hasPerformed = true; + } + } + + if (hasPerformed) + { + if (getWorld().rand.nextInt(4) == 0 && getWorld() instanceof ServerWorld) + { + ServerWorld server = (ServerWorld) getWorld(); + server.spawnParticle(ParticleTypes.FLAME, pos.getX() + 0.5, pos.getY() + 1.2, pos.getZ() + 0.5, 1, 0.02, 0.03, 0.02, 0); + } + } + } + + @Override + public void deserialize(CompoundNBT tag) + { + super.deserialize(tag); + tranquility = tag.getDouble("tranquility"); + incenseAddition = tag.getDouble("incenseAddition"); + } + + @Override + public CompoundNBT serialize(CompoundNBT tag) + { + super.serialize(tag); + tag.putDouble("tranquility", tranquility); + tag.putDouble("incenseAddition", incenseAddition); + return tag; + } + + public void recheckConstruction() + { + // TODO: Check the physical construction of the incense altar to determine the + // maximum length. + int maxLength = 11; // Max length of the path. The path starts two blocks away from the center + // block. + int yOffset = 0; + + Map tranquilityMap = new HashMap<>(); + + for (int currentDistance = 2; currentDistance < currentDistance + maxLength; currentDistance++) + { + boolean canFormRoad = false; + + for (int i = -maxCheckRange + yOffset; i <= maxCheckRange + yOffset; i++) + { + BlockPos verticalPos = pos.add(0, i, 0); + + canFormRoad = true; + level: for (int index = 0; index < 4; index++) + { + Direction horizontalFacing = Direction.byHorizontalIndex(index); + BlockPos facingOffsetPos = verticalPos.offset(horizontalFacing, currentDistance); + for (int j = -1; j <= 1; j++) + { + BlockPos offsetPos = facingOffsetPos.offset(horizontalFacing.rotateY(), j); + BlockState state = getWorld().getBlockState(offsetPos); + Block block = state.getBlock(); + if (!(block instanceof IIncensePath && ((IIncensePath) block).getLevelOfPath(getWorld(), offsetPos, state) >= currentDistance - 2)) + { + canFormRoad = false; + break level; + } + } + } + + if (canFormRoad) + { + yOffset = i; + break; + } + } + + if (canFormRoad) + { + for (int i = -currentDistance; i <= currentDistance; i++) + { + for (int j = -currentDistance; j <= currentDistance; j++) + { + if (Math.abs(i) != currentDistance && Math.abs(j) != currentDistance) + { + continue; // TODO: Can make this just set j to currentDistance to speed it up. + } + + for (int y = yOffset; y <= 2 + yOffset; y++) + { + BlockPos offsetPos = pos.add(i, y, j); + BlockState state = getWorld().getBlockState(offsetPos); + Block block = state.getBlock(); + TranquilityStack stack = IncenseTranquilityRegistry.getTranquilityOfBlock(getWorld(), offsetPos, block, state); + if (stack != null) + { + if (!tranquilityMap.containsKey(stack.type)) + { + tranquilityMap.put(stack.type, stack.value); + } else + { + tranquilityMap.put(stack.type, tranquilityMap.get(stack.type) + stack.value); + } + } + } + } + } + } else + { + roadDistance = currentDistance - 2; + break; + } + } + + this.tranquilityMap = tranquilityMap; + + double totalTranquility = 0; + for (Entry entry : tranquilityMap.entrySet()) + { + totalTranquility += entry.getValue(); + } + + if (totalTranquility < 0) + { + return; + } + + double appliedTranquility = 0; + for (Entry entry : tranquilityMap.entrySet()) + { + appliedTranquility += Math.sqrt(entry.getValue()); + } + + double bonus = IncenseAltarHandler.getIncenseBonusFromComponents(getWorld(), pos, appliedTranquility, roadDistance); + incenseAddition = bonus; + this.tranquility = appliedTranquility; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/util/helper/IncenseHelper.java b/src/main/java/wayoftime/bloodmagic/util/helper/IncenseHelper.java new file mode 100644 index 00000000..4e071189 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/util/helper/IncenseHelper.java @@ -0,0 +1,55 @@ +package wayoftime.bloodmagic.util.helper; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import wayoftime.bloodmagic.util.Constants; + +public class IncenseHelper +{ + + public static double getCurrentIncense(PlayerEntity player) + { + CompoundNBT data = player.getPersistentData(); + if (data.contains(Constants.NBT.CURRENT_INCENSE)) + { + return data.getDouble(Constants.NBT.CURRENT_INCENSE); + } + + return 0; + } + + public static void setCurrentIncense(PlayerEntity player, double amount) + { + CompoundNBT data = player.getPersistentData(); + data.putDouble(Constants.NBT.CURRENT_INCENSE, amount); + } + + public static void setMaxIncense(PlayerEntity player, double amount) + { + CompoundNBT data = player.getPersistentData(); + data.putDouble(Constants.NBT.MAX_INCENSE, amount); + } + + public static double getMaxIncense(PlayerEntity player) + { + CompoundNBT data = player.getPersistentData(); + if (data.contains(Constants.NBT.MAX_INCENSE)) + { + return data.getDouble(Constants.NBT.MAX_INCENSE); + } + return 0; + } + + public static void setHasMaxIncense(ItemStack stack, PlayerEntity player, boolean isMax) + { + stack = NBTHelper.checkNBT(stack); + stack.getTag().putBoolean(Constants.NBT.HAS_MAX_INCENSE, isMax); + } + + public static boolean getHasMaxIncense(ItemStack stack) + { + stack = NBTHelper.checkNBT(stack); + return stack.getTag().getBoolean(Constants.NBT.HAS_MAX_INCENSE); + } +} diff --git a/src/main/java/wayoftime/bloodmagic/util/helper/PlayerSacrificeHelper.java b/src/main/java/wayoftime/bloodmagic/util/helper/PlayerSacrificeHelper.java index 54a0c5b2..0f247bbc 100644 --- a/src/main/java/wayoftime/bloodmagic/util/helper/PlayerSacrificeHelper.java +++ b/src/main/java/wayoftime/bloodmagic/util/helper/PlayerSacrificeHelper.java @@ -19,35 +19,35 @@ public class PlayerSacrificeHelper public static double getPlayerIncense(PlayerEntity player) { - return 0; -// return IncenseHelper.getCurrentIncense(player); +// return 0; + return IncenseHelper.getCurrentIncense(player); } public static void setPlayerIncense(PlayerEntity player, double amount) { -// IncenseHelper.setCurrentIncense(player, amount); + IncenseHelper.setCurrentIncense(player, amount); } public static boolean incrementIncense(PlayerEntity player, double min, double incenseAddition, double increment) { - return true; -// double amount = getPlayerIncense(player); -// if (amount < min || amount >= incenseAddition) -// { -// return false; -// } -// -// amount = amount + Math.min(increment, incenseAddition - amount); -// setPlayerIncense(player, amount); -// -// if (amount == incenseAddition) -// { -// IncenseHelper.setMaxIncense(player, incenseAddition); -// } -// // System.out.println("Amount of incense: " + amount + ", Increment: " + -// // increment); -// // return true; + double amount = getPlayerIncense(player); + if (amount < min || amount >= incenseAddition) + { + return false; + } + + amount = amount + Math.min(increment, incenseAddition - amount); + setPlayerIncense(player, amount); + + if (amount == incenseAddition) + { + IncenseHelper.setMaxIncense(player, incenseAddition); + } + // System.out.println("Amount of incense: " + amount + ", Increment: " + + // increment); + + return true; } /** @@ -74,8 +74,7 @@ public class PlayerSacrificeHelper if (health > maxHealth / 10.0) { float sacrificedHealth = health - maxHealth / 10.0f; - int lpAdded = (int) (sacrificedHealth * ConfigHandler.values.sacrificialDaggerConversion - * getModifier(amount)); + int lpAdded = (int) (sacrificedHealth * ConfigHandler.values.sacrificialDaggerConversion * getModifier(amount)); IBloodAltar altar = getAltar(player.getEntityWorld(), player.getPosition()); if (altar != null) diff --git a/src/main/resources/assets/bloodmagic/blockstates/incensealtar.json b/src/main/resources/assets/bloodmagic/blockstates/incensealtar.json new file mode 100644 index 00000000..a625a8b1 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/blockstates/incensealtar.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "bloodmagic:block/incensealtar" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar.png b/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar.png new file mode 100644 index 0000000000000000000000000000000000000000..617e26c0380ad477c8a5f87518737ce796ca928a GIT binary patch literal 56128 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
_@p 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar1.png b/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd47dfd4818bba8f2538e5494931992663e4ecc9 GIT binary patch literal 67307 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

3d7$bccv@T57^xr}Ui8Km5$Bt8S4_i9f9hg`y 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%0AD}8@enm&%7cD#S`FQ<{<2(jpkN2L>)V@~x z@7MFt^Lv)5Uft3Dfk)%(e-BQTEw;gGmcC0p727*sh^=T_YTEtvcZ}8g$VDqp2BZZ_ zwM}2Z`QuKv!q$+rg8e)*j_J*fUcMrE_LC1u54QJyD|#)LcX!fBL-BW|udhtF6tOx! zS$cOx!Kb7y%cn_G!Vf6cEvUQv!f9gm#-b((rrJXjmz*v>RWSFlm+IsS_WBP}4`v-- z`GTil*Sm7vS@U*@AHKVC&Wo>{x!wO9*6rZ2QaTgaH1AAti=f-G=|?jRWc_~Wa0o1Q zH@`D=|NNaYn|hV+I@GcKmY3VQT2WT8$DzYm z&z#z_V6ku5GKc&B?v|f25%IN?U_O7dBU?7pc-~9tMNz9i7hcorelMM?X%<~+w&fVh z^BMk=&rQy;+aGXx_rJ|^wOng|9FFe!uD(P3A)n5i!t}zANBsnUzN_k<(|Gx|yG&h8 z1EXLQ(`l!($5$@dx!1Y=YM|^c`48Xf>$nd*__RGdr;U^6{dbodLpD$wx?5i_~{UHi4Div zdgPy~O8-3iaj*04+%4Pce@x$gVy4N*?ehbdE6b_-$oJjq5<0nI8F2EB)86vW&*ptS z>k6xq{E{bXg-WGQ)tsmG$}DrCo=og{>0RImBS5>SSb;pev>o zpn6t2VeQlD_Zb*I|K~jsYSkxrjp>i@#NsB_e2K;qhNA&)M_0QzPnf^=A&>fbMzuiB zOy8-sM_5e6u3fmU&c>g+=zc5D6U74tr?>8ZV{m`&2c}sJ*=sf)lNu#Z!{Fn8(|`Pl WKUtP%tdz8700K`}KbLh*2~7Y42ZW0N literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar2.png b/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4ae8cfcc25f9fe5fca21989cd3ee9f3364a482 GIT binary patch literal 21663 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 h2K;|r6VcnCAGId)D@%R7$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar3.png b/src/main/resources/assets/bloodmagic/images/entries/utility/incense_altar3.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cb90626d2cfed10321d4650243240f8decb41f GIT binary patch literal 86535 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

G4) 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 z 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