diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index f646645e..630579f2 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -48,10 +48,10 @@ org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=1 org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=0 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=17 org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 @@ -73,7 +73,7 @@ org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=next_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line @@ -337,9 +337,9 @@ org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=true org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_if_empty org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_preserve org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index ff054672..1216243f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -25,7 +25,7 @@ b03040d7a168653bf8df3600033b8fde2383db30 assets/bloodmagic/blockstates/selfsacri f1ca47098385a955155cab9c2a97219e02d390a0 assets/bloodmagic/blockstates/steadfastdemoncrystal.json 48ed6b25a5d8d8074c38d772fdc27c1753d42c36 assets/bloodmagic/blockstates/vengefuldemoncrystal.json e6d9cf699667aaa47efff37b2b033895dee29c15 assets/bloodmagic/blockstates/waterritualstone.json -3ce8493bdefc034104e5a1496f24f5463cb15c4c assets/bloodmagic/lang/en_us.json +082f32e7c041f42f5043c7b860eaf410b9bea287 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 @@ -109,6 +109,7 @@ c795d1b7aa99ce27da63868f81bac615cf199c66 assets/bloodmagic/models/item/bloodston 738eb84b10400c04e0c7a5a253e55c109c233ec8 assets/bloodmagic/models/item/coalsand.json 9301a2fc234f064caf7e13afabb9343540d3412f assets/bloodmagic/models/item/corrosivecrystal.json e8bdf0e3f557bb09c665312df380672e676f4382 assets/bloodmagic/models/item/corrosivedemoncrystal.json +5ffcaf5c5378e51d9474b4e75fb3a9cae946a492 assets/bloodmagic/models/item/crystalline_resonator.json f404148f9df3a61da3c18175885ffa56b2a85a6a assets/bloodmagic/models/item/daggerofsacrifice.json 6b89387f771da9535a0234f1a267af1b6853724d assets/bloodmagic/models/item/defaultcrystal.json 9671199681493a396e07d7bcab20137c22d981d5 assets/bloodmagic/models/item/demonslate.json @@ -125,10 +126,14 @@ f4531e22aa1db1cff324db5ccb344d3b9fa85c8d assets/bloodmagic/models/item/divinatio c36bde4f98c0aeb3bf0f369ad3bc067e5f0dc916 assets/bloodmagic/models/item/fireritualstone.json b5708a8cc7259fd36ffeabd155ea085b9fdef0fd assets/bloodmagic/models/item/firescribetool.json 537a52d7b59dc996ea23f24d86a4add87c61c6a0 assets/bloodmagic/models/item/furnacecell_primitive.json +e58ab37eb5c43fdf2f088250a68ad358c764cbaa assets/bloodmagic/models/item/goldfragment.json +15dd3953b62bb2553d81ceeb021f7660d5ac6d84 assets/bloodmagic/models/item/goldgravel.json ce2465efcc0c17583c8b3c7251a6cecefdce1970 assets/bloodmagic/models/item/goldsand.json 44663089f348642bcca1c5020b5081c3ab172f92 assets/bloodmagic/models/item/growthsigil.json f68825f667ca73b4373fd5068a47f0d1ca9b2aad assets/bloodmagic/models/item/icesigil.json 109b5485c25d978af55b46682d5bfa7008909458 assets/bloodmagic/models/item/infusedslate.json +ccbcba6e4a6450bb67f91ba17754d668ba64c0ac assets/bloodmagic/models/item/ironfragment.json +8d24cd26bf78c9076c1ed764bdca9f7bbbcaf8f9 assets/bloodmagic/models/item/irongravel.json 36cde62c239e351b9c32958135e893829d1d3925 assets/bloodmagic/models/item/ironsand.json 9b9fc4a11a187257d30334cd3faa949790b6ca29 assets/bloodmagic/models/item/largebloodstonebrick.json 413fa378c40dec89cb765a7d5c8bfc9cdef1d828 assets/bloodmagic/models/item/lavacrystal.json @@ -140,6 +145,7 @@ f68825f667ca73b4373fd5068a47f0d1ca9b2aad assets/bloodmagic/models/item/icesigil. 7596826c5b40c2809eb0a42eb5f5f2089290e3e5 assets/bloodmagic/models/item/miningsigil.json ff9b802098659824626dc90dbb5a0d8960234228 assets/bloodmagic/models/item/orbcapacityrune.json aa3947434e24f4a4c4ae43428de3f2dd2ceb31a6 assets/bloodmagic/models/item/plantoil.json +f267edf1b08e69d377290a549bd5ec4a12661d9e assets/bloodmagic/models/item/primitive_crystalline_resonator.json 51720bf25f152c38056c81cebf79ca97b78dbb48 assets/bloodmagic/models/item/primitive_explosive_cell.json aa8684bdce288295cfbb41248ff7f008f98b5e7b assets/bloodmagic/models/item/primitive_hydration_cell.json 63fe86d0faf9aa03a513221a6a12828a886b1301 assets/bloodmagic/models/item/rawdemoncrystal.json @@ -162,6 +168,7 @@ b8582a5cd6ca35279e9b35931f1c5ca089b094b8 assets/bloodmagic/models/item/sanguiner cc71421e98ee7ee047a4cfbb6cb69529c2b02d4e assets/bloodmagic/models/item/selfsacrificerune.json ea5747638d0b5dcc03f008b202cc60a11e0827bb assets/bloodmagic/models/item/sigilofmagnetism.json 9ec68a2dcf04b987c3c5d5c6c52195e3deccacbb assets/bloodmagic/models/item/soulgemcommon.json +6501bb4b72457e8107bec818f26de6178b655203 assets/bloodmagic/models/item/soulgemgreater.json ad010d9680cd748bd04c8fc36262c236f7d90105 assets/bloodmagic/models/item/soulgemlesser.json b49e7f34913e32ccb68eeb6f6c196ff6b209f482 assets/bloodmagic/models/item/soulgempetty.json f8db155d49b0f2c37504bac46a8974d4bf90db3e assets/bloodmagic/models/item/soulsnare.json @@ -183,6 +190,11 @@ cddaa2be8db3aff90933fb772b92cab735ebf11e assets/bloodmagic/models/item/variants/ 3ca3c4251a8907c1c47caf49e53a711265e0e92c assets/bloodmagic/models/item/variants/soulgemcommon_destructive.json 3ad2785d3e893943ea769c7e39d69cedd71e556a assets/bloodmagic/models/item/variants/soulgemcommon_steadfast.json 016ccdfb8a6e0101975e64f9f548e6a93d32f53c assets/bloodmagic/models/item/variants/soulgemcommon_vengeful.json +daef17113abd2003f745e069c1ccecc911445919 assets/bloodmagic/models/item/variants/soulgemgreater.json +73926de465b378adad07303f02a01c41c2f3656e assets/bloodmagic/models/item/variants/soulgemgreater_corrosive.json +1807f9b243e98c9ea43ac230ae211a324c82db79 assets/bloodmagic/models/item/variants/soulgemgreater_destructive.json +07c68e7574ef7d4db2e011e23c3bc20ad258daea assets/bloodmagic/models/item/variants/soulgemgreater_steadfast.json +3691ec7d9fedd3694feb1d6d387a9420e87ff8ce assets/bloodmagic/models/item/variants/soulgemgreater_vengeful.json 2b2322dfd3f7e28ea5d0ad2d9df2223d7ee47f00 assets/bloodmagic/models/item/variants/soulgemlesser.json 8eaab2fddfe201dc83d2d2ffd65e1537a3e5a388 assets/bloodmagic/models/item/variants/soulgemlesser_corrosive.json 24608fc7a19e41d71ec84a80c18ceccbc869cd79 assets/bloodmagic/models/item/variants/soulgemlesser_destructive.json @@ -248,7 +260,8 @@ f1a8e3131d85077665563372cad868534a72fb31 data/bloodmagic/loot_tables/blocks/bloo f0827ad5bf71c06a71f50aeb0298c04d0cb1a1d9 data/bloodmagic/loot_tables/blocks/bloodstonebrick.json 779b809a2a51e6dab46f9e6799249f2f14653ebb data/bloodmagic/loot_tables/blocks/chargingrune.json 56643f0e11eaac974a1a95decf31681b7d3ced81 data/bloodmagic/loot_tables/blocks/corrosivedemoncrystal.json -205f5899101262f31f5c1a88bb7d954918d08d04 data/bloodmagic/loot_tables/blocks/demoncrucible.json +4c9ed83e7e7215f995df35054e96d2f4e5027016 data/bloodmagic/loot_tables/blocks/demoncrucible.json +c590b923d28b3d7916932dfcb05091df815f71dd data/bloodmagic/loot_tables/blocks/demoncrystallizer.json 9b606397733431055d56b886945365aeb62243b0 data/bloodmagic/loot_tables/blocks/destructivedemoncrystal.json a9fcfc656fab957328c10ee1d9d33807e697b7f7 data/bloodmagic/loot_tables/blocks/dislocationrune.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/duskritualstone.json @@ -268,6 +281,7 @@ b91f5b06e826205b3da972ef1f12dc37670412ac data/bloodmagic/loot_tables/blocks/stea 530c9c82fc508125223cedccbdacf623d1d3a1ff data/bloodmagic/loot_tables/blocks/vengefuldemoncrystal.json 26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/waterritualstone.json 2df19ff659705a5408ce0819a947764673404388 data/bloodmagic/recipes/alchemy_table.json +a343604b5a75e1b3810df97d024813fb041cffb6 data/bloodmagic/recipes/alchemytable/basic_cutting_fluid.json f86432e8fef0d6e140e27f575063704b7e843d75 data/bloodmagic/recipes/alchemytable/bread.json e50009fa724173c2dcb4fab49b4f029039f69bf8 data/bloodmagic/recipes/alchemytable/clay_from_sand.json 96cc66cdb9c5f786eaa899e1fbdd38144e44a0fe data/bloodmagic/recipes/alchemytable/explosive_powder.json @@ -297,9 +311,19 @@ d79a96eb3eed597f1c18a8983764a6362a24748c data/bloodmagic/recipes/altar/dusk_tool 5807b2515f4a2dc9855327940e6055f6947f0749 data/bloodmagic/recipes/arc.json f35bb47d609201f6568b598307ae9d157792fe3e data/bloodmagic/recipes/arc/clay_from_sand.json 6b8ba1822bac8a1af426a14f87d613dc89e3fca0 data/bloodmagic/recipes/arc/clay_from_terracotta.json +5206a65f02d3bea5c23164325eb23ce8e928102f data/bloodmagic/recipes/arc/dustsfrom_gravel_gold.json +5af6c601a7be4c0fc4811befa59324c1a2cdb758 data/bloodmagic/recipes/arc/dustsfrom_gravel_iron.json +b5d3a7ee94494665a9e69519da43a0d4056deb76 data/bloodmagic/recipes/arc/dustsfrom_ingot_gold.json +a31e17fb2da1259fb186cfd07c9cd500e6354518 data/bloodmagic/recipes/arc/dustsfrom_ingot_iron.json +e0846e670dc94334ba695d2a1182527a5016cd31 data/bloodmagic/recipes/arc/dustsfrom_ore_gold.json +855c963531471cedd2f5f067801b96c0bd6a0c56 data/bloodmagic/recipes/arc/dustsfrom_ore_iron.json +517a3b7a6bbfc486777f509c2d9af6490ff722c9 data/bloodmagic/recipes/arc/fragmentsgold.json +d8b9e64d14e67299aa08888246cdead76ebd91ce data/bloodmagic/recipes/arc/fragmentsiron.json +098e95b47496c2479645be1e6a86dbbc11716214 data/bloodmagic/recipes/arc/gravelsgold.json +1096172e2dca5071c07b9684db3736862fa4d0d9 data/bloodmagic/recipes/arc/gravelsiron.json 2eb26a1af68ed7a5fdb6ac9d4bbc7557729c56cd data/bloodmagic/recipes/arc/netherrack_to_sulfer.json -f3d4fd692c6ce6b6a22b5fc94524b5b72090ff85 data/bloodmagic/recipes/arc/ore/dustgold.json -4dc91e8c26b360bb78974a173ada3f20dfee1dac data/bloodmagic/recipes/arc/ore/dustiron.json +0a6a8034c55d093fed458759bbc85e5893712d35 data/bloodmagic/recipes/arc/ore/dustgold.json +b2760564e300976d88a3938bc0e9e2d2defa0841 data/bloodmagic/recipes/arc/ore/dustiron.json 249229687c1b41a4191c455278624b642b501b4e data/bloodmagic/recipes/arc/reversion/apprentice_blood_orb.json a2b7d868ac099dd6fb29fa54892aad90e29d028d data/bloodmagic/recipes/arc/reversion/magician_blood_orb.json a7f51456052d0fd317164d400cdd595ae2687df8 data/bloodmagic/recipes/arc/reversion/master_blood_orb.json @@ -338,8 +362,15 @@ d699e777c72a5f61c4e6cdfea8705628e1c2b855 data/bloodmagic/recipes/soul_forge.json 2455bf8c205c7244fef2b7d7afeef060e30520b7 data/bloodmagic/recipes/soul_snare.json f4763a58a8f471ec1aaa997cbd36eac8c7d51a12 data/bloodmagic/recipes/soulforge/arcaneashes.json 8b64af8453c60b6b1ae55bd0dd1a68fe95e8ba19 data/bloodmagic/recipes/soulforge/commontartaricgem.json +659db62f8fb71c792b00d6409b1c9a2f1ca96048 data/bloodmagic/recipes/soulforge/corrosive_crystal_block.json +2c90f1da43a79e61d2b6b09c012d08f53b133264 data/bloodmagic/recipes/soulforge/demon_crucible.json +bc4ad3b44720a3f7363ef53027b4aae35622e7c1 data/bloodmagic/recipes/soulforge/demon_crystallizer.json +759279a190f3bc74e162dedf0f5d311267e06fbc data/bloodmagic/recipes/soulforge/destructive_crystal_block.json +0b82d2354aaa635b4fe5514e4815298ee0dedf80 data/bloodmagic/recipes/soulforge/greatertartaricgem.json d46b61779b3c8382862d4e66c3909a1241ecca18 data/bloodmagic/recipes/soulforge/lessertartaricgem.json d6e06747c75fc06e708a15358911f1c63eee86b1 data/bloodmagic/recipes/soulforge/pettytartaricgem.json +2468dd785e301732b1be8108caa468bdd5008e46 data/bloodmagic/recipes/soulforge/primitive_crystalline_resonator.json +535a9ec33a425bde205dffc3254635741d1c82d6 data/bloodmagic/recipes/soulforge/raw_crystal_block.json 42f6af3a4c723c6a6b2a6e1d680a875e15664e4f data/bloodmagic/recipes/soulforge/reagent_air.json 6b59a7e95e596997b7bbb894b6fbaf5015b213b5 data/bloodmagic/recipes/soulforge/reagent_fastminer.json ae3a6a760e9f793d5a62e2f0f6c45219b0017816 data/bloodmagic/recipes/soulforge/reagent_growth.json @@ -349,15 +380,25 @@ c0e75e0e12290d191245c5b0b5b13bc739d2ff44 data/bloodmagic/recipes/soulforge/reage a222d09abf1ea61feb684f2ac23d011c2034f526 data/bloodmagic/recipes/soulforge/reagent_water.json 4a4340f334c51beaacb77fd201298ad94b71e79c data/bloodmagic/recipes/soulforge/sanguine_reverter.json 7e281841a2953c1284d332c2bbf75097f8128241 data/bloodmagic/recipes/soulforge/sentientsword.json +c4102a1573e632d0b9f894353b0d522a51a7c65e data/bloodmagic/recipes/soulforge/steadfast_crystal_block.json +3aa852edda803a2225ebe53d2daa55bd46b0a1b9 data/bloodmagic/recipes/soulforge/vengeful_crystal_block.json d7d993bb729284a5201c164ea81fbe1d8e4e4750 data/bloodmagic/recipes/weak_activation_crystal.json +cf63fdccec992f2cb36c72843791623463cecc44 data/bloodmagic/tags/items/arc/cuttingfluid.json 54a0fcc973590c80a4d3cd6b82f5602ba7208438 data/bloodmagic/tags/items/arc/explosive.json 331b978ba851ae3c48390c5d992bcd5f28ac644d data/bloodmagic/tags/items/arc/furnace.json a62b82e1f59284d230b4b983ffa4a4cecb288c0e data/bloodmagic/tags/items/arc/hydrate.json +9689738644fcfa3a80effc6ee150b67c67e8b8f4 data/bloodmagic/tags/items/arc/resonator.json 65326040c8974fcfcc8711d29040b4297ff55ec1 data/bloodmagic/tags/items/arc/reverter.json 14fb88c612622be110e273818eee9512cd285d56 data/bloodmagic/tags/items/arc/sieve.json -9a3b79a6c6ac1a4277778393141567e595f43417 data/bloodmagic/tags/items/arc/tool.json +bcd2befe59cbb4931c8c9bed183d19b2a469e506 data/bloodmagic/tags/items/arc/tool.json +2bdc1397bd092d373f785f08a2befdce8c1c1e2e data/bloodmagic/tags/items/crystals/demon.json +dc8d6f8f8d128499f3d2632ef1bc353cc49d1ddb data/bloodmagic/tags/items/fragments/gold.json +a60c7b779168689387a03f00002bfd8380d919e5 data/bloodmagic/tags/items/fragments/iron.json +af9b1a9ba1b16a85e3e1cf84b99e4cc9e12f9886 data/bloodmagic/tags/items/gravels/gold.json +19547e1b8859f1e2f1ae858e74b4456fc20be53f data/bloodmagic/tags/items/gravels/iron.json 4f8f46a7e30fe81d36790d3ffed37efef7c87d06 data/forge/tags/items/dusts/coal.json 82f2679934e550a1188658350e52cfac7c450c4d data/forge/tags/items/dusts/gold.json 625a1e6a3b635b2ac5176a49afbae9b476de4f71 data/forge/tags/items/dusts/iron.json 9380fe45b06787ba776af4a7d542a047c1441031 data/forge/tags/items/dusts/saltpeter.json 5c709b6444acb94ca784c33618547ba535e15db2 data/forge/tags/items/dusts/sulfur.json +74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/forge/tags/items/ores/iron.json diff --git a/src/generated/resources/assets/bloodmagic/lang/en_us.json b/src/generated/resources/assets/bloodmagic/lang/en_us.json index 0cd63b0c..8f63c537 100644 --- a/src/generated/resources/assets/bloodmagic/lang/en_us.json +++ b/src/generated/resources/assets/bloodmagic/lang/en_us.json @@ -9,6 +9,10 @@ "block.bloodmagic.blankrune": "Blank Rune", "block.bloodmagic.bloodstonebrick": "Bloodstone Brick", "block.bloodmagic.chargingrune": "Charging Rune", + "block.bloodmagic.corrosivedemoncrystal": "Corrosive Crystal Cluster", + "block.bloodmagic.demoncrucible": "Demon Crucible", + "block.bloodmagic.demoncrystallizer": "Demon Crystallizer", + "block.bloodmagic.destructivedemoncrystal": "Destructive Crystal Cluster", "block.bloodmagic.dislocationrune": "DisplacementRune", "block.bloodmagic.duskritualstone": "Dusk Ritual Stone", "block.bloodmagic.earthritualstone": "Earth Ritual Stone", @@ -17,11 +21,14 @@ "block.bloodmagic.lightritualstone": "Dawn Ritual Stone", "block.bloodmagic.masterritualstone": "Master Ritual Stone", "block.bloodmagic.orbcapacityrune": "Rune of the Orb", + "block.bloodmagic.rawdemoncrystal": "Raw Crystal Cluster", "block.bloodmagic.ritualstone": "Ritual Stone", "block.bloodmagic.sacrificerune": "Rune of Sacrifice", "block.bloodmagic.selfsacrificerune": "Rune of Self Sacrifice", "block.bloodmagic.soulforge": "Hellfire Forge", "block.bloodmagic.speedrune": "Speed Rune", + "block.bloodmagic.steadfastdemoncrystal": "Steadfast Crystal Cluster", + "block.bloodmagic.vengefuldemoncrystal": "Vengeful Crystal Cluster", "block.bloodmagic.waterritualstone": "Water Ritual Stone", "chat.bloodmagic.damageSource": "%s's soul became too weak", "chat.bloodmagic.ritual.activate": "A rush of energy flows through the ritual!", @@ -43,25 +50,39 @@ "item.bloodmagic.basemonstersoul_destructive": "Demon Will", "item.bloodmagic.basemonstersoul_steadfast": "Demon Will", "item.bloodmagic.basemonstersoul_vengeful": "Demon Will", + "item.bloodmagic.basiccuttingfluid": "Basic Cutting Fluid", "item.bloodmagic.blankslate": "Blank Slate", "item.bloodmagic.bloodlightsigil": "Sigil of the Blood Lamp", + "item.bloodmagic.coalsand": "Coal Sand", + "item.bloodmagic.crystalline_resonator": "Crystalline Resonator", "item.bloodmagic.daggerofsacrifice": "Dagger of Sacrifice", "item.bloodmagic.demonslate": "Demonic Slate", "item.bloodmagic.divinationsigil": "Divination Sigil", "item.bloodmagic.duskscribetool": "Inscription Tool: Dusk", "item.bloodmagic.earthscribetool": "Inscription Tool: Earth", "item.bloodmagic.etherealslate": "Ethereal Slate", + "item.bloodmagic.explosivepowder": "Explosive Powder", "item.bloodmagic.firescribetool": "Inscription Tool: Fire", "item.bloodmagic.furnacecell_primitive": "Primitive Fuel Cell", + "item.bloodmagic.goldfragment": "Gold Ore Fragment", + "item.bloodmagic.goldgravel": "Gold Gravel", + "item.bloodmagic.goldsand": "Gold Sand", "item.bloodmagic.growthsigil": "Sigil of the Green Grove", "item.bloodmagic.icesigil": "Sigil of the Frozen Lake", "item.bloodmagic.infusedslate": "Imbued Slate", + "item.bloodmagic.ironfragment": "Iron Ore Fragment", + "item.bloodmagic.irongravel": "Iron Gravel", + "item.bloodmagic.ironsand": "Iron Sand", "item.bloodmagic.lavacrystal": "Lava Crystal", "item.bloodmagic.lavasigil": "Lava Sigil", "item.bloodmagic.life_essence_bucket": "Bucket of Life", "item.bloodmagic.magicianbloodorb": "Magician Blood Orb", "item.bloodmagic.masterbloodorb": "Master Blood Orb", "item.bloodmagic.miningsigil": "Sigil of the Fast Miner", + "item.bloodmagic.plantoil": "Plant Oil", + "item.bloodmagic.primitive_crystalline_resonator": "Primitive Resonator", + "item.bloodmagic.primitive_explosive_cell": "Primitive Explosive Cell", + "item.bloodmagic.primitive_hydration_cell": "Primitive Hydration Cell", "item.bloodmagic.reagentair": "Air Reagent", "item.bloodmagic.reagentbloodlight": "Blood Lamp Reagent", "item.bloodmagic.reagentfastminer": "Mining Reagent", @@ -74,13 +95,16 @@ "item.bloodmagic.ritualdiviner": "Ritual Diviner", "item.bloodmagic.ritualdivinerdusk": "Ritual Diviner [Dusk]", "item.bloodmagic.sacrificialdagger": "Sacrificial Knife", + "item.bloodmagic.saltpeter": "Saltpeter", "item.bloodmagic.sanguinereverter": "Sanguine Reverter", "item.bloodmagic.sigilofmagnetism": "Sigil of Magnetism", "item.bloodmagic.soulgemcommon": "Common Tartaric Gem", + "item.bloodmagic.soulgemgreater": "Greater Tartaric Gem", "item.bloodmagic.soulgemlesser": "Lesser Tartaric Gem", "item.bloodmagic.soulgempetty": "Petty Tartaric Gem", "item.bloodmagic.soulsnare": "Soul Snare", "item.bloodmagic.soulsword": "Sentient Sword", + "item.bloodmagic.sulfur": "Sulfur", "item.bloodmagic.voidsigil": "Void Sigil", "item.bloodmagic.waterscribetool": "Inscription Tool: Water", "item.bloodmagic.watersigil": "Water Sigil", @@ -134,6 +158,8 @@ "tooltip.bloodmagic.activationcrystal.creative": "Creative Only - Activates any ritual", "tooltip.bloodmagic.activationcrystal.weak": "Activates low-level rituals", "tooltip.bloodmagic.arcaneAshes": "Ashes used to draw an alchemy circle", + "tooltip.bloodmagic.arctool.additionaldrops": "Increases chance of additional outputs by: x%s", + "tooltip.bloodmagic.arctool.uses": "Uses remaining: %s", "tooltip.bloodmagic.config.disabled": "Currently disabled in the Config", "tooltip.bloodmagic.currentBaseType.corrosive": "Corrosive", "tooltip.bloodmagic.currentBaseType.default": "Raw", diff --git a/src/generated/resources/assets/bloodmagic/models/item/crystalline_resonator.json b/src/generated/resources/assets/bloodmagic/models/item/crystalline_resonator.json new file mode 100644 index 00000000..b07b4e20 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/crystalline_resonator.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/crystalline_resonator" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/goldfragment.json b/src/generated/resources/assets/bloodmagic/models/item/goldfragment.json new file mode 100644 index 00000000..2e5cce62 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/goldfragment.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/goldfragment" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/goldgravel.json b/src/generated/resources/assets/bloodmagic/models/item/goldgravel.json new file mode 100644 index 00000000..28c8d189 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/goldgravel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/goldgravel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/ironfragment.json b/src/generated/resources/assets/bloodmagic/models/item/ironfragment.json new file mode 100644 index 00000000..10175c39 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/ironfragment.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/ironfragment" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/irongravel.json b/src/generated/resources/assets/bloodmagic/models/item/irongravel.json new file mode 100644 index 00000000..d5760bb2 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/irongravel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/irongravel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/primitive_crystalline_resonator.json b/src/generated/resources/assets/bloodmagic/models/item/primitive_crystalline_resonator.json new file mode 100644 index 00000000..84032032 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/primitive_crystalline_resonator.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/primitive_crystalline_resonator" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulgemgreater.json b/src/generated/resources/assets/bloodmagic/models/item/soulgemgreater.json new file mode 100644 index 00000000..8c237764 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/soulgemgreater.json @@ -0,0 +1,34 @@ +{ + "overrides": [ + { + "predicate": { + "bloodmagic:type": 0.0 + }, + "model": "bloodmagic:item/variants/soulgemgreater" + }, + { + "predicate": { + "bloodmagic:type": 1.0 + }, + "model": "bloodmagic:item/variants/soulgemgreater_corrosive" + }, + { + "predicate": { + "bloodmagic:type": 2.0 + }, + "model": "bloodmagic:item/variants/soulgemgreater_destructive" + }, + { + "predicate": { + "bloodmagic:type": 3.0 + }, + "model": "bloodmagic:item/variants/soulgemgreater_vengeful" + }, + { + "predicate": { + "bloodmagic:type": 4.0 + }, + "model": "bloodmagic:item/variants/soulgemgreater_steadfast" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater.json new file mode 100644 index 00000000..00ffd7ea --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/soulgemgreater" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_corrosive.json new file mode 100644 index 00000000..bdbcf609 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_corrosive.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/soulgemgreater_corrosive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_destructive.json new file mode 100644 index 00000000..285cff8e --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_destructive.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/soulgemgreater_destructive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_steadfast.json new file mode 100644 index 00000000..beb0d2a7 --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_steadfast.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/soulgemgreater_steadfast" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_vengeful.json new file mode 100644 index 00000000..2808693f --- /dev/null +++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemgreater_vengeful.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "bloodmagic:item/soulgemgreater_vengeful" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrucible.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrucible.json index 78793172..3e3a8d39 100644 --- a/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrucible.json +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrucible.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "minecraft:air" + "name": "bloodmagic:demoncrucible" } ], "conditions": [ diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrystallizer.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrystallizer.json new file mode 100644 index 00000000..55cce224 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrystallizer.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "bloodmagic:demoncrystallizer" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/basic_cutting_fluid.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/basic_cutting_fluid.json new file mode 100644 index 00000000..bf555741 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/basic_cutting_fluid.json @@ -0,0 +1,30 @@ +{ + "type": "bloodmagic:alchemytable", + "input": [ + { + "item": "bloodmagic:plantoil" + }, + { + "tag": "forge:dusts/redstone" + }, + { + "tag": "forge:gunpowder" + }, + { + "item": "minecraft:sugar" + }, + { + "tag": "forge:dusts/coal" + }, + { + "item": "minecraft:potion" + } + ], + "output": { + "item": "bloodmagic:basiccuttingfluid", + "nbt": "{Damage:0}" + }, + "syphon": 1000, + "ticks": 200, + "upgradeLevel": 1 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_gold.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_gold.json new file mode 100644 index 00000000..c77dec87 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_gold.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "bloodmagic:gravels/gold" + }, + "tool": { + "tag": "bloodmagic:arc/cuttingfluid" + }, + "output": { + "item": "bloodmagic:goldsand" + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_iron.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_iron.json new file mode 100644 index 00000000..f2b834b7 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_iron.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "bloodmagic:gravels/iron" + }, + "tool": { + "tag": "bloodmagic:arc/cuttingfluid" + }, + "output": { + "item": "bloodmagic:ironsand" + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_gold.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_gold.json new file mode 100644 index 00000000..c1cdecc1 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_gold.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "forge:ingots/gold" + }, + "tool": { + "tag": "bloodmagic:arc/explosive" + }, + "output": { + "item": "bloodmagic:goldsand" + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_iron.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_iron.json new file mode 100644 index 00000000..7c4e0afd --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_iron.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "forge:ingots/iron" + }, + "tool": { + "tag": "bloodmagic:arc/explosive" + }, + "output": { + "item": "bloodmagic:ironsand" + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_gold.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_gold.json new file mode 100644 index 00000000..8aa0031c --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_gold.json @@ -0,0 +1,14 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "forge:ores/gold" + }, + "tool": { + "tag": "bloodmagic:arc/cuttingfluid" + }, + "output": { + "item": "bloodmagic:goldsand", + "count": 2 + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_iron.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_iron.json new file mode 100644 index 00000000..6afdf627 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_iron.json @@ -0,0 +1,14 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "forge:ores/iron" + }, + "tool": { + "tag": "bloodmagic:arc/cuttingfluid" + }, + "output": { + "item": "bloodmagic:ironsand", + "count": 2 + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsgold.json b/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsgold.json new file mode 100644 index 00000000..74ed09a7 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsgold.json @@ -0,0 +1,14 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "forge:ores/gold" + }, + "tool": { + "tag": "bloodmagic:arc/explosive" + }, + "output": { + "item": "bloodmagic:goldfragment", + "count": 3 + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsiron.json b/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsiron.json new file mode 100644 index 00000000..bdd4aad2 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsiron.json @@ -0,0 +1,14 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "forge:ores/iron" + }, + "tool": { + "tag": "bloodmagic:arc/explosive" + }, + "output": { + "item": "bloodmagic:ironfragment", + "count": 3 + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/gravelsgold.json b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsgold.json new file mode 100644 index 00000000..1fc1e247 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsgold.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "bloodmagic:fragments/gold" + }, + "tool": { + "tag": "bloodmagic:arc/resonator" + }, + "output": { + "item": "bloodmagic:goldgravel" + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/gravelsiron.json b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsiron.json new file mode 100644 index 00000000..09129f05 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsiron.json @@ -0,0 +1,13 @@ +{ + "type": "bloodmagic:arc", + "input": { + "tag": "bloodmagic:fragments/iron" + }, + "tool": { + "tag": "bloodmagic:arc/resonator" + }, + "output": { + "item": "bloodmagic:irongravel" + }, + "consumeingredient": false +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustgold.json b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustgold.json index 5af4fcf3..284985ab 100644 --- a/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustgold.json +++ b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustgold.json @@ -4,7 +4,7 @@ "item": "minecraft:gold_ore" }, "tool": { - "tag": "bloodmagic:arc/explosive" + "tag": "bloodmagic:arc/cuttingfluid" }, "output": { "item": "bloodmagic:goldsand", diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustiron.json b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustiron.json index 33c69195..185879fb 100644 --- a/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustiron.json +++ b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustiron.json @@ -4,7 +4,7 @@ "item": "minecraft:iron_ore" }, "tool": { - "tag": "bloodmagic:arc/explosive" + "tag": "bloodmagic:arc/cuttingfluid" }, "output": { "item": "bloodmagic:ironsand", diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/corrosive_crystal_block.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/corrosive_crystal_block.json new file mode 100644 index 00000000..11d80db6 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/corrosive_crystal_block.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:corrosivecrystal" + }, + "input1": { + "item": "bloodmagic:corrosivecrystal" + }, + "input2": { + "item": "bloodmagic:corrosivecrystal" + }, + "input3": { + "item": "bloodmagic:corrosivecrystal" + }, + "output": { + "item": "bloodmagic:corrosivedemoncrystal" + }, + "minimumDrain": 1200.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/demon_crucible.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/demon_crucible.json new file mode 100644 index 00000000..57f6fe29 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/demon_crucible.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "minecraft:cauldron" + }, + "input1": { + "tag": "forge:stone" + }, + "input2": { + "tag": "forge:gems/lapis" + }, + "input3": { + "tag": "forge:gems/diamond" + }, + "output": { + "item": "bloodmagic:demoncrucible" + }, + "minimumDrain": 400.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/demon_crystallizer.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/demon_crystallizer.json new file mode 100644 index 00000000..1283b4e1 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/demon_crystallizer.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:soulforge" + }, + "input1": { + "tag": "forge:stone" + }, + "input2": { + "tag": "forge:gems/lapis" + }, + "input3": { + "tag": "forge:glass" + }, + "output": { + "item": "bloodmagic:demoncrystallizer" + }, + "minimumDrain": 500.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/destructive_crystal_block.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/destructive_crystal_block.json new file mode 100644 index 00000000..6423e1a6 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/destructive_crystal_block.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:destructivecrystal" + }, + "input1": { + "item": "bloodmagic:destructivecrystal" + }, + "input2": { + "item": "bloodmagic:destructivecrystal" + }, + "input3": { + "item": "bloodmagic:destructivecrystal" + }, + "output": { + "item": "bloodmagic:destructivedemoncrystal" + }, + "minimumDrain": 1200.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/greatertartaricgem.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/greatertartaricgem.json new file mode 100644 index 00000000..a46a9f6d --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/greatertartaricgem.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:soulgemcommon" + }, + "input1": { + "item": "bloodmagic:demonslate" + }, + "input2": { + "item": "bloodmagic:weakbloodshard" + }, + "input3": { + "tag": "bloodmagic:crystals/demon" + }, + "output": { + "item": "bloodmagic:soulgemgreater" + }, + "minimumDrain": 1000.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/primitive_crystalline_resonator.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/primitive_crystalline_resonator.json new file mode 100644 index 00000000..833978f6 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/primitive_crystalline_resonator.json @@ -0,0 +1,21 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "tag": "forge:stone" + }, + "input1": { + "tag": "forge:ingots" + }, + "input2": { + "item": "bloodmagic:defaultcrystal" + }, + "input3": { + "item": "bloodmagic:defaultcrystal" + }, + "output": { + "item": "bloodmagic:primitive_crystalline_resonator", + "nbt": "{Damage:0}" + }, + "minimumDrain": 1200.0, + "drain": 200.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/raw_crystal_block.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/raw_crystal_block.json new file mode 100644 index 00000000..6d9a3a3b --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/raw_crystal_block.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:defaultcrystal" + }, + "input1": { + "item": "bloodmagic:defaultcrystal" + }, + "input2": { + "item": "bloodmagic:defaultcrystal" + }, + "input3": { + "item": "bloodmagic:defaultcrystal" + }, + "output": { + "item": "bloodmagic:rawdemoncrystal" + }, + "minimumDrain": 1200.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/steadfast_crystal_block.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/steadfast_crystal_block.json new file mode 100644 index 00000000..90efc02e --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/steadfast_crystal_block.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:steadfastcrystal" + }, + "input1": { + "item": "bloodmagic:steadfastcrystal" + }, + "input2": { + "item": "bloodmagic:steadfastcrystal" + }, + "input3": { + "item": "bloodmagic:steadfastcrystal" + }, + "output": { + "item": "bloodmagic:steadfastdemoncrystal" + }, + "minimumDrain": 1200.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/vengeful_crystal_block.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/vengeful_crystal_block.json new file mode 100644 index 00000000..96fed3ca --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/vengeful_crystal_block.json @@ -0,0 +1,20 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "item": "bloodmagic:vengefulcrystal" + }, + "input1": { + "item": "bloodmagic:vengefulcrystal" + }, + "input2": { + "item": "bloodmagic:vengefulcrystal" + }, + "input3": { + "item": "bloodmagic:vengefulcrystal" + }, + "output": { + "item": "bloodmagic:vengefuldemoncrystal" + }, + "minimumDrain": 1200.0, + "drain": 100.0 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/arc/cuttingfluid.json b/src/generated/resources/data/bloodmagic/tags/items/arc/cuttingfluid.json new file mode 100644 index 00000000..c111d035 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/arc/cuttingfluid.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "bloodmagic:basiccuttingfluid" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/arc/resonator.json b/src/generated/resources/data/bloodmagic/tags/items/arc/resonator.json new file mode 100644 index 00000000..5ed4cd52 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/arc/resonator.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "bloodmagic:primitive_crystalline_resonator", + "bloodmagic:crystalline_resonator" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/arc/tool.json b/src/generated/resources/data/bloodmagic/tags/items/arc/tool.json index db159215..46ccea84 100644 --- a/src/generated/resources/data/bloodmagic/tags/items/arc/tool.json +++ b/src/generated/resources/data/bloodmagic/tags/items/arc/tool.json @@ -5,6 +5,8 @@ "#bloodmagic:arc/reverter", "#bloodmagic:arc/sieve", "#bloodmagic:arc/explosive", - "#bloodmagic:arc/hydrate" + "#bloodmagic:arc/hydrate", + "#bloodmagic:arc/resonator", + "#bloodmagic:arc/cuttingfluid" ] } \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/crystals/demon.json b/src/generated/resources/data/bloodmagic/tags/items/crystals/demon.json new file mode 100644 index 00000000..0ad4148e --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/crystals/demon.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "bloodmagic:defaultcrystal", + "bloodmagic:corrosivecrystal", + "bloodmagic:destructivecrystal", + "bloodmagic:vengefulcrystal", + "bloodmagic:steadfastcrystal" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/fragments/gold.json b/src/generated/resources/data/bloodmagic/tags/items/fragments/gold.json new file mode 100644 index 00000000..be036261 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/fragments/gold.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "bloodmagic:goldfragment" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/fragments/iron.json b/src/generated/resources/data/bloodmagic/tags/items/fragments/iron.json new file mode 100644 index 00000000..9bc54fba --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/fragments/iron.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "bloodmagic:ironfragment" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/gravels/gold.json b/src/generated/resources/data/bloodmagic/tags/items/gravels/gold.json new file mode 100644 index 00000000..8c75a5af --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/gravels/gold.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "bloodmagic:goldgravel" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/tags/items/gravels/iron.json b/src/generated/resources/data/bloodmagic/tags/items/gravels/iron.json new file mode 100644 index 00000000..5c317952 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/tags/items/gravels/iron.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "bloodmagic:irongravel" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ores/iron.json b/src/generated/resources/data/forge/tags/items/ores/iron.json new file mode 100644 index 00000000..5e8aecc9 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/ores/iron.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} \ 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 819dec73..46ec548b 100644 --- a/src/main/java/wayoftime/bloodmagic/BloodMagic.java +++ b/src/main/java/wayoftime/bloodmagic/BloodMagic.java @@ -55,6 +55,7 @@ import wayoftime.bloodmagic.tile.TileAlchemyTable; import wayoftime.bloodmagic.tile.TileAltar; import wayoftime.bloodmagic.tile.TileDemonCrucible; import wayoftime.bloodmagic.tile.TileDemonCrystal; +import wayoftime.bloodmagic.tile.TileDemonCrystallizer; import wayoftime.bloodmagic.tile.TileMasterRitualStone; import wayoftime.bloodmagic.tile.TileSoulForge; import wayoftime.bloodmagic.util.handler.event.GenericHandler; @@ -158,6 +159,7 @@ public class BloodMagic event.getRegistry().register(TileEntityType.Builder.create(TileAlchemyTable::new, BloodMagicBlocks.ALCHEMY_TABLE.get()).build(null).setRegistryName("alchemytable")); 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")); } @SubscribeEvent diff --git a/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java b/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java index 171f0cf9..53d4dd9d 100644 --- a/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java +++ b/src/main/java/wayoftime/bloodmagic/client/ClientEvents.java @@ -75,6 +75,7 @@ public class ClientEvents registerMultiWillTool(BloodMagicItems.PETTY_GEM.get()); registerMultiWillTool(BloodMagicItems.LESSER_GEM.get()); registerMultiWillTool(BloodMagicItems.COMMON_GEM.get()); + registerMultiWillTool(BloodMagicItems.GREATER_GEM.get()); ItemModelsProperties.registerProperty(BloodMagicItems.SENTIENT_SWORD.get(), BloodMagic.rl("active"), new IItemPropertyGetter() { diff --git a/src/main/java/wayoftime/bloodmagic/common/block/BlockDemonCrystallizer.java b/src/main/java/wayoftime/bloodmagic/common/block/BlockDemonCrystallizer.java new file mode 100644 index 00000000..a7178f08 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/common/block/BlockDemonCrystallizer.java @@ -0,0 +1,47 @@ +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.minecraftforge.common.ToolType; +import wayoftime.bloodmagic.tile.TileDemonCrystallizer; + +public class BlockDemonCrystallizer extends Block +{ + protected static final VoxelShape BODY = Block.makeCuboidShape(2, 2, 2, 14, 16, 14); + + public BlockDemonCrystallizer() + { + super(Properties.create(Material.IRON).hardnessAndResistance(2.0F, 5.0F).harvestTool(ToolType.PICKAXE).harvestLevel(1)); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) + { + return BODY; + } + + @Override + public boolean hasTileEntity(BlockState state) + { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) + { + return new TileDemonCrystallizer(); + } + + @Override + public BlockRenderType getRenderType(BlockState state) + { + return BlockRenderType.MODEL; + } +} diff --git a/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java b/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java index 1bbd16a4..6b69e742 100644 --- a/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java +++ b/src/main/java/wayoftime/bloodmagic/common/block/BloodMagicBlocks.java @@ -73,6 +73,7 @@ public class BloodMagicBlocks public static final RegistryObject ALCHEMY_TABLE = BLOCKS.register("alchemytable", () -> new BlockAlchemyTable()); public static final RegistryObject DEMON_CRUCIBLE = BLOCKS.register("demoncrucible", () -> new BlockDemonCrucible()); + public static final RegistryObject DEMON_CRYSTALLIZER = BLOCKS.register("demoncrystallizer", () -> new BlockDemonCrystallizer()); public static final RegistryObject RAW_CRYSTAL_BLOCK = BLOCKS.register("rawdemoncrystal", () -> new BlockDemonCrystal(EnumDemonWillType.DEFAULT)); public static final RegistryObject CORROSIVE_CRYSTAL_BLOCK = BLOCKS.register("corrosivedemoncrystal", () -> new BlockDemonCrystal(EnumDemonWillType.CORROSIVE)); diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java index 4ae8d704..8ed2efbc 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorBaseRecipes.java @@ -36,6 +36,8 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider private void addVanillaRecipes(Consumer consumer) { +// ConditionalRecipe.builder().addRecipe(ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.SACRIFICIAL_DAGGER.get()).key('g', Tags.Items.GLASS).key('G', Tags.Items.INGOTS_GOLD).key('i', Tags.Items.INGOTS_IRON).patternLine("ggg").patternLine(" Gg").patternLine("i g").addCriterion("has_glass", hasItem(Items.GLASS))::build); + ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.SACRIFICIAL_DAGGER.get()).key('g', Tags.Items.GLASS).key('G', Tags.Items.INGOTS_GOLD).key('i', Tags.Items.INGOTS_IRON).patternLine("ggg").patternLine(" Gg").patternLine("i g").addCriterion("has_glass", hasItem(Items.GLASS)).build(consumer, BloodMagic.rl("sacrificial_dagger")); ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.BLOOD_ALTAR.get()).key('a', Tags.Items.STONE).key('b', Items.FURNACE).key('c', Tags.Items.INGOTS_GOLD).key('d', BloodMagicItems.MONSTER_SOUL_RAW.get()).patternLine("a a").patternLine("aba").patternLine("cdc").addCriterion("has_will", hasItem(BloodMagicItems.MONSTER_SOUL_RAW.get())).build(consumer, BloodMagic.rl("blood_altar")); ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SOUL_FORGE.get()).key('s', Tags.Items.STONE).key('g', Tags.Items.INGOTS_GOLD).key('i', Tags.Items.INGOTS_IRON).key('o', Tags.Items.STORAGE_BLOCKS_IRON).patternLine("i i").patternLine("sgs").patternLine("sos").addCriterion("has_gold", hasItem(Items.GOLD_INGOT)).build(consumer, BloodMagic.rl("soul_forge")); diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java index 8884af71..026a575f 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemModels.java @@ -58,6 +58,7 @@ public class GeneratorItemModels extends ItemModelProvider registerDemonWillVariantItem(BloodMagicItems.PETTY_GEM.get()); registerDemonWillVariantItem(BloodMagicItems.LESSER_GEM.get()); registerDemonWillVariantItem(BloodMagicItems.COMMON_GEM.get()); + registerDemonWillVariantItem(BloodMagicItems.GREATER_GEM.get()); registerDemonSword(BloodMagicItems.SENTIENT_SWORD.get()); } diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemTags.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemTags.java index 4550529f..7eeae0be 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemTags.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorItemTags.java @@ -23,15 +23,19 @@ public class GeneratorItemTags extends ItemTagsProvider @Override public void registerTags() { + registerOres(); + registerDusts(); + registerFragments(); + registerGravels(); + registerFurnaceCells(); registerReverters(); registerSieves(); registerExplosives(); registerHydration(); + registerResonators(); + registerCuttingFluids(); - this.getOrCreateBuilder(BloodMagicTags.DUST_IRON).add(BloodMagicItems.IRON_SAND.get()); - this.getOrCreateBuilder(BloodMagicTags.DUST_GOLD).add(BloodMagicItems.GOLD_SAND.get()); - this.getOrCreateBuilder(BloodMagicTags.DUST_COAL).add(BloodMagicItems.COAL_SAND.get()); this.getOrCreateBuilder(BloodMagicTags.DUST_SULFUR).add(BloodMagicItems.SULFUR.get()); this.getOrCreateBuilder(BloodMagicTags.DUST_SALTPETER).add(BloodMagicItems.SALTPETER.get()); this.getOrCreateBuilder(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_FURNACE); @@ -39,12 +43,48 @@ public class GeneratorItemTags extends ItemTagsProvider this.getOrCreateBuilder(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_SIEVE); this.getOrCreateBuilder(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE); this.getOrCreateBuilder(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_HYDRATE); + this.getOrCreateBuilder(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_RESONATOR); + this.getOrCreateBuilder(BloodMagicTags.ARC_TOOL).addTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID); + + this.getOrCreateBuilder(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.RAW_CRYSTAL.get()); + this.getOrCreateBuilder(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.CORROSIVE_CRYSTAL.get()); + this.getOrCreateBuilder(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()); + this.getOrCreateBuilder(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.VENGEFUL_CRYSTAL.get()); + this.getOrCreateBuilder(BloodMagicTags.CRYSTAL_DEMON).add(BloodMagicItems.STEADFAST_CRYSTAL.get()); // this.getOrCreateBuilder(GOORESISTANT).addTag(BlockTags.DOORS); // this.getOrCreateBuilder(GOORESISTANT).addTag(BlockTags.BEDS); // this.getOrCreateBuilder(GOORESISTANT).add(Blocks.PISTON, Blocks.PISTON_HEAD, Blocks.STICKY_PISTON, Blocks.MOVING_PISTON); } + private void registerOres() + { + getOrCreateBuilder(BloodMagicTags.ORE_COPPER); + getOrCreateBuilder(BloodMagicTags.ORE_LEAD); + getOrCreateBuilder(BloodMagicTags.ORE_OSMIUM); + getOrCreateBuilder(BloodMagicTags.ORE_SILVER); + getOrCreateBuilder(BloodMagicTags.ORE_TIN); + } + + private void registerDusts() + { + getOrCreateBuilder(BloodMagicTags.DUST_IRON).add(BloodMagicItems.IRON_SAND.get()); + getOrCreateBuilder(BloodMagicTags.DUST_GOLD).add(BloodMagicItems.GOLD_SAND.get()); + getOrCreateBuilder(BloodMagicTags.DUST_COAL).add(BloodMagicItems.COAL_SAND.get()); + } + + private void registerFragments() + { + getOrCreateBuilder(BloodMagicTags.FRAGMENT_IRON).add(BloodMagicItems.IRON_FRAGMENT.get()); + getOrCreateBuilder(BloodMagicTags.FRAGMENT_GOLD).add(BloodMagicItems.GOLD_FRAGMENT.get()); + } + + private void registerGravels() + { + getOrCreateBuilder(BloodMagicTags.GRAVEL_IRON).add(BloodMagicItems.IRON_GRAVEL.get()); + getOrCreateBuilder(BloodMagicTags.GRAVEL_GOLD).add(BloodMagicItems.GOLD_GRAVEL.get()); + } + private void registerFurnaceCells() { this.registerTool(BloodMagicItems.PRIMITIVE_FURNACE_CELL.get(), BloodMagicTags.ARC_TOOL_FURNACE); @@ -72,6 +112,17 @@ public class GeneratorItemTags extends ItemTagsProvider this.registerTool(BloodMagicItems.PRIMITIVE_HYDRATION_CELL.get(), BloodMagicTags.ARC_TOOL_HYDRATE); } + private void registerResonators() + { + this.registerTool(BloodMagicItems.PRIMITIVE_CRYSTALLINE_RESONATOR.get(), BloodMagicTags.ARC_TOOL_RESONATOR); + this.registerTool(BloodMagicItems.CRYSTALLINE_RESONATOR.get(), BloodMagicTags.ARC_TOOL_RESONATOR); + } + + private void registerCuttingFluids() + { + this.registerTool(BloodMagicItems.BASIC_CUTTING_FLUID.get(), BloodMagicTags.ARC_TOOL_CUTTINGFLUID); + } + public void registerTool(Item item, INamedTag tag) { this.getOrCreateBuilder(tag).add(item); diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java index 700d6064..13523381 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java @@ -90,6 +90,9 @@ public class GeneratorLanguage extends LanguageProvider add("tooltip.bloodmagic.activationcrystal.awakened", "Activates more powerful rituals"); add("tooltip.bloodmagic.activationcrystal.creative", "Creative Only - Activates any ritual"); + add("tooltip.bloodmagic.arctool.additionaldrops", "Increases chance of additional outputs by: x%s"); + add("tooltip.bloodmagic.arctool.uses", "Uses remaining: %s"); + add("itemGroup.bloodmagictab", "Blood Magic"); // Ritual info @@ -169,6 +172,15 @@ public class GeneratorLanguage extends LanguageProvider addBlock(BloodMagicBlocks.BLOODSTONE, "Large Bloodstone Brick"); addBlock(BloodMagicBlocks.BLOODSTONE_BRICK, "Bloodstone Brick"); + addBlock(BloodMagicBlocks.RAW_CRYSTAL_BLOCK, "Raw Crystal Cluster"); + addBlock(BloodMagicBlocks.CORROSIVE_CRYSTAL_BLOCK, "Corrosive Crystal Cluster"); + addBlock(BloodMagicBlocks.DESTRUCTIVE_CRYSTAL_BLOCK, "Destructive Crystal Cluster"); + addBlock(BloodMagicBlocks.VENGEFUL_CRYSTAL_BLOCK, "Vengeful Crystal Cluster"); + addBlock(BloodMagicBlocks.STEADFAST_CRYSTAL_BLOCK, "Steadfast Crystal Cluster"); + + addBlock(BloodMagicBlocks.DEMON_CRUCIBLE, "Demon Crucible"); + addBlock(BloodMagicBlocks.DEMON_CRYSTALLIZER, "Demon Crystallizer"); + // Item names addItem(BloodMagicItems.WEAK_BLOOD_ORB, "Weak Blood Orb"); addItem(BloodMagicItems.APPRENTICE_BLOOD_ORB, "Apprentice Blood Orb"); @@ -209,6 +221,7 @@ public class GeneratorLanguage extends LanguageProvider addItem(BloodMagicItems.PETTY_GEM, "Petty Tartaric Gem"); addItem(BloodMagicItems.LESSER_GEM, "Lesser Tartaric Gem"); addItem(BloodMagicItems.COMMON_GEM, "Common Tartaric Gem"); + addItem(BloodMagicItems.GREATER_GEM, "Greater Tartaric Gem"); addItem(BloodMagicItems.MONSTER_SOUL_RAW, "Demon Will"); addItem(BloodMagicItems.MONSTER_SOUL_CORROSIVE, "Demon Will"); addItem(BloodMagicItems.MONSTER_SOUL_DESTRUCTIVE, "Demon Will"); @@ -234,6 +247,33 @@ public class GeneratorLanguage extends LanguageProvider addItem(BloodMagicItems.SANGUINE_REVERTER, "Sanguine Reverter"); addItem(BloodMagicItems.PRIMITIVE_FURNACE_CELL, "Primitive Fuel Cell"); + addItem(BloodMagicItems.PRIMITIVE_CRYSTALLINE_RESONATOR, "Primitive Resonator"); + addItem(BloodMagicItems.CRYSTALLINE_RESONATOR, "Crystalline Resonator"); + + addItem(BloodMagicItems.PRIMITIVE_HYDRATION_CELL, "Primitive Hydration Cell"); + addItem(BloodMagicItems.PRIMITIVE_EXPLOSIVE_CELL, "Primitive Explosive Cell"); + addItem(BloodMagicItems.EXPLOSIVE_POWDER, "Explosive Powder"); + + addItem(BloodMagicItems.BASIC_CUTTING_FLUID, "Basic Cutting Fluid"); + + // Alchemy Items + addItem(BloodMagicItems.PLANT_OIL, "Plant Oil"); + + // Sands + addItem(BloodMagicItems.COAL_SAND, "Coal Sand"); + addItem(BloodMagicItems.IRON_SAND, "Iron Sand"); + addItem(BloodMagicItems.GOLD_SAND, "Gold Sand"); + addItem(BloodMagicItems.SULFUR, "Sulfur"); + addItem(BloodMagicItems.SALTPETER, "Saltpeter"); + + // Fragments + addItem(BloodMagicItems.IRON_FRAGMENT, "Iron Ore Fragment"); + addItem(BloodMagicItems.GOLD_FRAGMENT, "Gold Ore Fragment"); + + // Gravels + addItem(BloodMagicItems.IRON_GRAVEL, "Iron Gravel"); + addItem(BloodMagicItems.GOLD_GRAVEL, "Gold Gravel"); + // addItem(BloodMagicItems , ""); // JEI diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java index b1f496b1..7d2b12c2 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLootTable.java @@ -73,6 +73,7 @@ public class GeneratorLootTable extends LootTableProvider registerDropSelfLootTable(BloodMagicBlocks.ALCHEMY_TABLE.get()); registerDropSelfLootTable(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER.get()); registerDropSelfLootTable(BloodMagicBlocks.DEMON_CRUCIBLE.get()); + registerDropSelfLootTable(BloodMagicBlocks.DEMON_CRYSTALLIZER.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 54c0fd6b..d21368be 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/BloodMagicItems.java @@ -66,6 +66,7 @@ public class BloodMagicItems public static final RegistryObject DAWN_RITUAL_STONE_ITEM = ITEMS.register("lightritualstone", () -> new BlockItem(BloodMagicBlocks.DAWN_RITUAL_STONE.get(), new Item.Properties().group(BloodMagic.TAB))); public static final RegistryObject ALCHEMICAL_REACTION_CHAMBER_ITEM = ITEMS.register("alchemicalreactionchamber", () -> new BlockItem(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER.get(), new Item.Properties().group(BloodMagic.TAB))); public static final RegistryObject DEMON_CRUCIBLE_ITEM = ITEMS.register("demoncrucible", () -> new BlockItem(BloodMagicBlocks.DEMON_CRUCIBLE.get(), new Item.Properties().group(BloodMagic.TAB))); + public static final RegistryObject DEMON_CRYSTALLIZER_ITEM = ITEMS.register("demoncrystallizer", () -> new BlockItem(BloodMagicBlocks.DEMON_CRYSTALLIZER.get(), new Item.Properties().group(BloodMagic.TAB))); public static final RegistryObject BLOODSTONE_ITEM = ITEMS.register("largebloodstonebrick", () -> new BlockItem(BloodMagicBlocks.BLOODSTONE.get(), new Item.Properties().group(BloodMagic.TAB))); public static final RegistryObject BLOODSTONE_BRICK_ITEM = ITEMS.register("bloodstonebrick", () -> new BlockItem(BloodMagicBlocks.BLOODSTONE_BRICK.get(), new Item.Properties().group(BloodMagic.TAB))); @@ -135,6 +136,7 @@ public class BloodMagicItems public static final RegistryObject PETTY_GEM = ITEMS.register("soulgempetty", () -> new ItemSoulGem("petty", 64)); public static final RegistryObject LESSER_GEM = ITEMS.register("soulgemlesser", () -> new ItemSoulGem("lesser", 256)); public static final RegistryObject COMMON_GEM = ITEMS.register("soulgemcommon", () -> new ItemSoulGem("common", 1024)); + public static final RegistryObject GREATER_GEM = ITEMS.register("soulgemgreater", () -> new ItemSoulGem("greater", 4096)); public static final RegistryObject MONSTER_SOUL_RAW = BASICITEMS.register("basemonstersoul", () -> new ItemMonsterSoul(EnumDemonWillType.DEFAULT)); public static final RegistryObject MONSTER_SOUL_CORROSIVE = BASICITEMS.register("basemonstersoul_corrosive", () -> new ItemMonsterSoul(EnumDemonWillType.CORROSIVE)); @@ -162,16 +164,28 @@ public class BloodMagicItems public static final RegistryObject PRIMITIVE_FURNACE_CELL = BASICITEMS.register("furnacecell_primitive", () -> new ItemARCToolBase(128, 1.25)); public static final RegistryObject PRIMITIVE_EXPLOSIVE_CELL = BASICITEMS.register("primitive_explosive_cell", () -> new ItemARCToolBase(256, 1.25)); public static final RegistryObject PRIMITIVE_HYDRATION_CELL = BASICITEMS.register("primitive_hydration_cell", () -> new ItemARCToolBase(128, 1.25)); + public static final RegistryObject PRIMITIVE_CRYSTALLINE_RESONATOR = BASICITEMS.register("primitive_crystalline_resonator", () -> new ItemARCToolBase(128, 1.25)); + public static final RegistryObject CRYSTALLINE_RESONATOR = BASICITEMS.register("crystalline_resonator", () -> new ItemARCToolBase(512, 2, 2)); // Alchemy Table items - public static final RegistryObject BASIC_CUTTING_FLUID = BASICITEMS.register("basiccuttingfluid", () -> new ItemARCToolBase(16, 1)); + public static final RegistryObject BASIC_CUTTING_FLUID = BASICITEMS.register("basiccuttingfluid", () -> new ItemARCToolBase(64, 1)); public static final RegistryObject EXPLOSIVE_POWDER = BASICITEMS.register("explosivepowder", () -> new ItemARCToolBase(64, 1)); - public static final RegistryObject IRON_SAND = BASICITEMS.register("ironsand", () -> new ItemBase()); - public static final RegistryObject GOLD_SAND = BASICITEMS.register("goldsand", () -> new ItemBase()); - public static final RegistryObject COAL_SAND = BASICITEMS.register("coalsand", () -> new ItemBase()); - public static final RegistryObject SULFUR = BASICITEMS.register("sulfur", () -> new ItemBase()); public static final RegistryObject SALTPETER = BASICITEMS.register("saltpeter", () -> new ItemBase()); public static final RegistryObject PLANT_OIL = BASICITEMS.register("plantoil", () -> new ItemBase()); + + // Fragments + public static final RegistryObject IRON_FRAGMENT = BASICITEMS.register("ironfragment", () -> new ItemBase()); + public static final RegistryObject GOLD_FRAGMENT = BASICITEMS.register("goldfragment", () -> new ItemBase()); + + // Gravels + public static final RegistryObject IRON_GRAVEL = BASICITEMS.register("irongravel", () -> new ItemBase()); + public static final RegistryObject GOLD_GRAVEL = BASICITEMS.register("goldgravel", () -> new ItemBase()); + + // Sands + public static final RegistryObject IRON_SAND = BASICITEMS.register("ironsand", () -> new ItemBase()); + public static final RegistryObject GOLD_SAND = BASICITEMS.register("goldsand", () -> new ItemBase()); + public static final RegistryObject COAL_SAND = BASICITEMS.register("coalsand", () -> new ItemBase()); + } diff --git a/src/main/java/wayoftime/bloodmagic/common/item/IARCTool.java b/src/main/java/wayoftime/bloodmagic/common/item/IARCTool.java index 333d0cc8..1770a005 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/IARCTool.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/IARCTool.java @@ -8,4 +8,9 @@ public interface IARCTool { return 1; } + + default double getAdditionalOutputChanceMultiplier(ItemStack stack) + { + return 1; + } } diff --git a/src/main/java/wayoftime/bloodmagic/common/item/arc/ItemARCToolBase.java b/src/main/java/wayoftime/bloodmagic/common/item/arc/ItemARCToolBase.java index d50262dc..a0fd9865 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/arc/ItemARCToolBase.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/arc/ItemARCToolBase.java @@ -1,18 +1,46 @@ package wayoftime.bloodmagic.common.item.arc; +import java.util.List; + +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.TranslationTextComponent; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.item.IARCTool; +import wayoftime.bloodmagic.util.ChatUtil; public class ItemARCToolBase extends Item implements IARCTool { private final double craftingMultiplier; + private final double additionalOutputChance; public ItemARCToolBase(int maxDamage, double craftingMultiplier) + { + this(maxDamage, craftingMultiplier, 1); + } + + public ItemARCToolBase(int maxDamage, double craftingMultiplier, double additionalOutputChance) { super(new Item.Properties().maxStackSize(1).group(BloodMagic.TAB).maxDamage(maxDamage)); this.craftingMultiplier = craftingMultiplier; + this.additionalOutputChance = additionalOutputChance; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flag) + { + tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.arctool.uses", stack.getMaxDamage() - stack.getDamage())); + + if (getAdditionalOutputChanceMultiplier(stack) != 1) + tooltip.add(new TranslationTextComponent("tooltip.bloodmagic.arctool.additionaldrops", ChatUtil.DECIMAL_FORMAT.format(getAdditionalOutputChanceMultiplier(stack)))); + + super.addInformation(stack, world, tooltip, flag); } @Override @@ -20,4 +48,10 @@ public class ItemARCToolBase extends Item implements IARCTool { return craftingMultiplier; } + + @Override + public double getAdditionalOutputChanceMultiplier(ItemStack stack) + { + return additionalOutputChance; + } } diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/ARCRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/ARCRecipeProvider.java index fe2007f2..1b12f481 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/ARCRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/ARCRecipeProvider.java @@ -5,10 +5,15 @@ import java.util.function.Consumer; import net.minecraft.block.Blocks; import net.minecraft.data.IFinishedRecipe; import net.minecraft.fluid.Fluids; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; +import net.minecraft.tags.ITag; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.crafting.conditions.ICondition; +import net.minecraftforge.common.crafting.conditions.NotCondition; +import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; import net.minecraftforge.fluids.FluidStack; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.api.event.recipes.FluidStackIngredient; @@ -28,13 +33,54 @@ public class ARCRecipeProvider implements ISubRecipeProvider // ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.NETHERRACK), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_REVERTER), FluidStackIngredient.from(Fluids.LAVA, 1000), new ItemStack(BloodMagicBlocks.BLOOD_ALTAR.get()), new FluidStack(Fluids.WATER, 100)).addRandomOutput(new ItemStack(BloodMagicItems.SLATE.get()), 0.2).addRandomOutput(new ItemStack(BloodMagicItems.REINFORCED_SLATE.get()), 0.1).addRandomOutput(new ItemStack(BloodMagicItems.IMBUED_SLATE.get()), 0.001).build(consumer, BloodMagic.rl(basePath + "test4")); ARCRecipeBuilder.arc(Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get()), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_REVERTER), null, new ItemStack(BloodMagicItems.WEAK_BLOOD_SHARD.get()), null).addRandomOutput(new ItemStack(BloodMagicItems.WEAK_BLOOD_SHARD.get()), 0.2).build(consumer, BloodMagic.rl(basePath + "weakbloodshard")); - ARCRecipeBuilder.arc(Ingredient.fromItems(Items.IRON_ORE), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.IRON_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "ore/dustiron")); - ARCRecipeBuilder.arc(Ingredient.fromItems(Items.GOLD_ORE), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.GOLD_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "ore/dustgold")); + ARCRecipeBuilder.arc(Ingredient.fromItems(Items.IRON_ORE), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.IRON_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "ore/dustiron")); + ARCRecipeBuilder.arc(Ingredient.fromItems(Items.GOLD_ORE), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.GOLD_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "ore/dustgold")); ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.NETHERRACK), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.SULFUR.get()), new FluidStack(Fluids.LAVA, 5)).build(consumer, BloodMagic.rl(basePath + "netherrack_to_sulfer")); ARCRecipeBuilder.arc(Ingredient.fromItems(Items.TERRACOTTA), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_HYDRATE), FluidStackIngredient.from(Fluids.WATER, 200), new ItemStack(Blocks.CLAY), null).build(consumer, BloodMagic.rl(basePath + "clay_from_terracotta")); ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.SAND), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_HYDRATE), FluidStackIngredient.from(Fluids.WATER, 200), new ItemStack(Items.CLAY_BALL), null).addRandomOutput(new ItemStack(Items.CLAY_BALL), 0.5).build(consumer, BloodMagic.rl(basePath + "clay_from_sand")); +// ConditionalRecipe.builder().addCondition(new TagEmptyCondition(Tags.Items.ORES_IRON.getName())); + addReversionRecipes(consumer); + addSandRecipes(consumer); + addFragmentRecipes(consumer); + addGravelRecipes(consumer); + } + + private ICondition getTagCondition(ITag.INamedTag tag) + { + return new NotCondition(new TagEmptyCondition(tag.getName())); + } + + private void addSandRecipes(Consumer consumer) + { + String basePath = "arc/dusts"; + + // Ore to dust + ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.IRON_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "from_ore_iron")); + ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.GOLD_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "from_ore_gold")); + + // Ingot to dust + ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.INGOTS_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.IRON_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_ingot_iron")); + ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.INGOTS_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.GOLD_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_ingot_gold")); + + // Gravel to dust + ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.GRAVEL_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.IRON_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_gravel_iron")); + ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.GRAVEL_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.GOLD_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_gravel_gold")); + } + + private void addFragmentRecipes(Consumer consumer) + { + String basePath = "arc/fragments"; + ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.IRON_FRAGMENT.get(), 3), null).build(consumer, BloodMagic.rl(basePath + "iron")); + ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.GOLD_FRAGMENT.get(), 3), null).build(consumer, BloodMagic.rl(basePath + "gold")); + } + + private void addGravelRecipes(Consumer consumer) + { + String basePath = "arc/gravels"; + ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.IRON_GRAVEL.get()), null).build(consumer, BloodMagic.rl(basePath + "iron")); + ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.GOLD_GRAVEL.get()), null).build(consumer, BloodMagic.rl(basePath + "gold")); } private void addReversionRecipes(Consumer consumer) diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java index 9e3488f2..e1f2e72b 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java @@ -7,6 +7,8 @@ import net.minecraft.data.IFinishedRecipe; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; +import net.minecraft.potion.PotionUtils; +import net.minecraft.potion.Potions; import net.minecraft.tags.ItemTags; import net.minecraftforge.common.Tags; import wayoftime.bloodmagic.BloodMagic; @@ -33,6 +35,8 @@ public class AlchemyTableRecipeProvider implements ISubRecipeProvider AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.PLANT_OIL.get()), 100, 100, 1).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_POTATO)).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_POTATO)).addIngredient(Ingredient.fromItems(Items.BONE_MEAL)).build(consumer, BloodMagic.rl(basePath + "plantoil_from_taters")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.PLANT_OIL.get()), 100, 100, 1).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_WHEAT)).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_WHEAT)).addIngredient(Ingredient.fromItems(Items.BONE_MEAL)).build(consumer, BloodMagic.rl(basePath + "plantoil_from_wheat")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.PLANT_OIL.get()), 100, 100, 1).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_BEETROOT)).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_BEETROOT)).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_BEETROOT)).addIngredient(Ingredient.fromItems(Items.BONE_MEAL)).build(consumer, BloodMagic.rl(basePath + "plantoil_from_beets")); + + AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.BASIC_CUTTING_FLUID.get()), 1000, 200, 1).addIngredient(Ingredient.fromItems(BloodMagicItems.PLANT_OIL.get())).addIngredient(Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE)).addIngredient(Ingredient.fromTag(Tags.Items.GUNPOWDER)).addIngredient(Ingredient.fromItems(Items.SUGAR)).addIngredient(Ingredient.fromTag(BloodMagicTags.DUST_COAL)).addIngredient(Ingredient.fromStacks(PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), Potions.WATER))).build(consumer, BloodMagic.rl(basePath + "basic_cutting_fluid")); } } diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java index e14f9bfb..00c642c4 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java @@ -9,8 +9,10 @@ import net.minecraft.item.crafting.Ingredient; import net.minecraft.tags.ItemTags; import net.minecraftforge.common.Tags; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.common.block.BloodMagicBlocks; import wayoftime.bloodmagic.common.data.recipe.builder.TartaricForgeRecipeBuilder; import wayoftime.bloodmagic.common.item.BloodMagicItems; +import wayoftime.bloodmagic.common.tags.BloodMagicTags; public class TartaricForgeRecipeProvider implements ISubRecipeProvider { @@ -22,6 +24,8 @@ public class TartaricForgeRecipeProvider implements ISubRecipeProvider TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.PETTY_GEM.get()), 1, 1, Ingredient.fromTag(Tags.Items.DUSTS_REDSTONE), Ingredient.fromTag(Tags.Items.INGOTS_GOLD), Ingredient.fromTag(Tags.Items.GLASS), Ingredient.fromTag(Tags.Items.GEMS_LAPIS)).build(consumer, BloodMagic.rl(basePath + "pettytartaricgem")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.LESSER_GEM.get()), 60, 20, Ingredient.fromItems(BloodMagicItems.PETTY_GEM.get()), Ingredient.fromTag(Tags.Items.GEMS_DIAMOND), Ingredient.fromTag(Tags.Items.STORAGE_BLOCKS_REDSTONE), Ingredient.fromTag(Tags.Items.STORAGE_BLOCKS_LAPIS)).build(consumer, BloodMagic.rl(basePath + "lessertartaricgem")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.COMMON_GEM.get()), 240, 50, Ingredient.fromItems(BloodMagicItems.LESSER_GEM.get()), Ingredient.fromTag(Tags.Items.GEMS_DIAMOND), Ingredient.fromTag(Tags.Items.STORAGE_BLOCKS_GOLD), Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get())).build(consumer, BloodMagic.rl(basePath + "commontartaricgem")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.GREATER_GEM.get()), 1000, 100, Ingredient.fromItems(BloodMagicItems.COMMON_GEM.get()), Ingredient.fromItems(BloodMagicItems.DEMONIC_SLATE.get()), Ingredient.fromItems(BloodMagicItems.WEAK_BLOOD_SHARD.get()), Ingredient.fromTag(BloodMagicTags.CRYSTAL_DEMON)).build(consumer, BloodMagic.rl(basePath + "greatertartaricgem")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.SENTIENT_SWORD.get()), 0, 0, Ingredient.fromItems(BloodMagicItems.PETTY_GEM.get()), Ingredient.fromItems(Items.IRON_SWORD)).build(consumer, BloodMagic.rl(basePath + "sentientsword")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.REAGENT_AIR.get()), 128, 20, Ingredient.fromItems(Items.GHAST_TEAR), Ingredient.fromTag(Tags.Items.FEATHERS), Ingredient.fromTag(Tags.Items.FEATHERS)).build(consumer, BloodMagic.rl(basePath + "reagent_air")); @@ -33,7 +37,17 @@ 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(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")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.SANGUINE_REVERTER.get()), 350, 30, Ingredient.fromItems(Items.SHEARS), Ingredient.fromTag(Tags.Items.STONE), Ingredient.fromItems(BloodMagicItems.IMBUED_SLATE.get()), Ingredient.fromTag(Tags.Items.INGOTS_IRON)).build(consumer, BloodMagic.rl(basePath + "sanguine_reverter")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicItems.PRIMITIVE_CRYSTALLINE_RESONATOR.get()), 1200, 200, Ingredient.fromTag(Tags.Items.STONE), Ingredient.fromTag(Tags.Items.INGOTS), Ingredient.fromItems(BloodMagicItems.RAW_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.RAW_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "primitive_crystalline_resonator")); + + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.RAW_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.RAW_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.RAW_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.RAW_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "raw_crystal_block")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.CORROSIVE_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.CORROSIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.CORROSIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.CORROSIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.CORROSIVE_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "corrosive_crystal_block")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.DESTRUCTIVE_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "destructive_crystal_block")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.VENGEFUL_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "vengeful_crystal_block")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.STEADFAST_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "steadfast_crystal_block")); } } diff --git a/src/main/java/wayoftime/bloodmagic/common/tags/BloodMagicTags.java b/src/main/java/wayoftime/bloodmagic/common/tags/BloodMagicTags.java index 0075ce4b..7fc61032 100644 --- a/src/main/java/wayoftime/bloodmagic/common/tags/BloodMagicTags.java +++ b/src/main/java/wayoftime/bloodmagic/common/tags/BloodMagicTags.java @@ -12,16 +12,50 @@ public class BloodMagicTags public static final ITag.INamedTag ARC_TOOL_REVERTER = ItemTags.makeWrapperTag("bloodmagic:arc/reverter"); public static final ITag.INamedTag ARC_TOOL_EXPLOSIVE = ItemTags.makeWrapperTag("bloodmagic:arc/explosive"); public static final ITag.INamedTag ARC_TOOL_HYDRATE = ItemTags.makeWrapperTag("bloodmagic:arc/hydrate"); + public static final ITag.INamedTag ARC_TOOL_RESONATOR = ItemTags.makeWrapperTag("bloodmagic:arc/resonator"); + public static final ITag.INamedTag ARC_TOOL_CUTTINGFLUID = ItemTags.makeWrapperTag("bloodmagic:arc/cuttingfluid"); - // Dusts + public static final ITag.INamedTag CRYSTAL_DEMON = ItemTags.makeWrapperTag("bloodmagic:crystals/demon"); + + // Ores + public static final ITag.INamedTag ORE_COPPER = getForgeOreTag("copper"); + public static final ITag.INamedTag ORE_TIN = getForgeOreTag("tin"); + public static final ITag.INamedTag ORE_LEAD = getForgeOreTag("lead"); + public static final ITag.INamedTag ORE_OSMIUM = getForgeOreTag("osmium"); + public static final ITag.INamedTag ORE_SILVER = getForgeOreTag("silver"); + + // Dusts (/Sands) public static final ITag.INamedTag DUST_IRON = getForgeDustTag("iron"); public static final ITag.INamedTag DUST_GOLD = getForgeDustTag("gold"); public static final ITag.INamedTag DUST_COAL = getForgeDustTag("coal"); public static final ITag.INamedTag DUST_SALTPETER = getForgeDustTag("saltpeter"); public static final ITag.INamedTag DUST_SULFUR = getForgeDustTag("sulfur"); + // Fragments + public static final ITag.INamedTag FRAGMENT_IRON = getFragmentTag("iron"); + public static final ITag.INamedTag FRAGMENT_GOLD = getFragmentTag("gold"); + + // Gravels + public static final ITag.INamedTag GRAVEL_IRON = getGravelTag("iron"); + public static final ITag.INamedTag GRAVEL_GOLD = getGravelTag("gold"); + + public static ITag.INamedTag getForgeOreTag(String name) + { + return ItemTags.makeWrapperTag("forge:ores/" + name); + } + public static ITag.INamedTag getForgeDustTag(String name) { return ItemTags.makeWrapperTag("forge:dusts/" + name); } + + public static ITag.INamedTag getFragmentTag(String name) + { + return ItemTags.makeWrapperTag("bloodmagic:fragments/" + name); + } + + public static ITag.INamedTag getGravelTag(String name) + { + return ItemTags.makeWrapperTag("bloodmagic:gravels/" + name); + } } diff --git a/src/main/java/wayoftime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java b/src/main/java/wayoftime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java index 44d1fdd3..590ff6c3 100644 --- a/src/main/java/wayoftime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java +++ b/src/main/java/wayoftime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java @@ -153,11 +153,11 @@ public class TartaricForgeRecipeCategory implements IRecipeCategory TYPE; @@ -113,8 +115,8 @@ public class TileAlchemicalReactionChamber extends TileInventory implements ITic ItemStack fullBucketStack = this.getStackInSlot(INPUT_BUCKET_SLOT); ItemStack emptyBucketStack = this.getStackInSlot(OUTPUT_BUCKET_SLOT); - ItemStack[] outputInventory = new ItemStack[] - { getStackInSlot(1), getStackInSlot(2), getStackInSlot(3), getStackInSlot(4), getStackInSlot(5) }; + ItemStack[] outputInventory = new ItemStack[] { getStackInSlot(1), getStackInSlot(2), getStackInSlot(3), + getStackInSlot(4), getStackInSlot(5) }; MultiSlotItemHandler outputSlotHandler = new MultiSlotItemHandler(outputInventory, 64); @@ -365,4 +367,49 @@ public class TileAlchemicalReactionChamber extends TileInventory implements ITic { return currentProgress; } + + @Override + public int[] getSlotsForFace(Direction side) + { + switch (side) + { + case UP: + return new int[] { ARC_TOOL_SLOT }; + case DOWN: + return new int[] { 1, 2, 3, 4, 5 }; + default: + return new int[] { 6, 7, 8 }; + } + } + + @Override + public boolean canInsertItem(int index, ItemStack itemStack, Direction direction) + { + if (index == INPUT_BUCKET_SLOT || index == OUTPUT_BUCKET_SLOT) + { + Optional fluidStackOptional = FluidUtil.getFluidContained(itemStack); + + return fluidStackOptional.isPresent() + && ((index == OUTPUT_BUCKET_SLOT && !fluidStackOptional.get().isEmpty()) + || (index == INPUT_BUCKET_SLOT && fluidStackOptional.get().isEmpty())); + } + + if (index >= OUTPUT_SLOT && index < OUTPUT_SLOT + NUM_OUTPUTS) + { + return false; + } + + if (index == ARC_TOOL_SLOT) + { + return itemStack.getItem().isIn(BloodMagicTags.ARC_TOOL); + } + + return true; + } + + @Override + public boolean canExtractItem(int index, ItemStack stack, Direction direction) + { + return index >= OUTPUT_SLOT && index < OUTPUT_SLOT + NUM_OUTPUTS; + } } \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystal.java b/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystal.java index f091ec66..d62fe823 100644 --- a/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystal.java +++ b/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystal.java @@ -15,8 +15,8 @@ import wayoftime.bloodmagic.will.EnumDemonWillType; public class TileDemonCrystal extends TileTicking { - public static final double sameWillConversionRate = 50; - public static final double defaultWillConversionRate = 100; + public static final double sameWillConversionRate = 45; + public static final double defaultWillConversionRate = 90; public static final double timeDelayForWrongWill = 0.6; public final int maxWill = 100; public final double drainRate = 1; @@ -49,7 +49,7 @@ public class TileDemonCrystal extends TileTicking @Override public void onUpdate() { - if (getWorld().isRemote) + if (world.isRemote) { return; } @@ -163,7 +163,6 @@ public class TileDemonCrystal extends TileTicking int crystalCount = getCrystalCount(); if (!getWorld().isRemote && crystalCount > 1) { - BlockState state = getWorld().getBlockState(pos); EnumDemonWillType type = getWillType(); // EnumDemonWillType type = state.getValue(BlockDemonCrystal.TYPE); ItemStack stack = BlockDemonCrystal.getItemStackDropped(type, 1); @@ -181,6 +180,7 @@ public class TileDemonCrystal extends TileTicking public double getCrystalGrowthPerSecond(double will) { +// return 0.1; return 1.0 / 200 * Math.sqrt(will / 200); } @@ -204,7 +204,7 @@ public class TileDemonCrystal extends TileTicking public int getCrystalCount() { BlockState state = world.getBlockState(getPos()); - return state.get(BlockDemonCrystal.AGE); + return state.get(BlockDemonCrystal.AGE) + 1; } public void setCrystalCount(int crystalCount) diff --git a/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystallizer.java b/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystallizer.java new file mode 100644 index 00000000..b8cefb0d --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/tile/TileDemonCrystallizer.java @@ -0,0 +1,187 @@ +package wayoftime.bloodmagic.tile; + +import net.minecraft.block.Block; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.registries.ObjectHolder; +import wayoftime.bloodmagic.common.block.BloodMagicBlocks; +import wayoftime.bloodmagic.demonaura.WorldDemonWillHandler; +import wayoftime.bloodmagic.tile.base.TileTicking; +import wayoftime.bloodmagic.will.DemonWillHolder; +import wayoftime.bloodmagic.will.EnumDemonWillType; +import wayoftime.bloodmagic.will.IDemonWillConduit; + +public class TileDemonCrystallizer extends TileTicking implements IDemonWillConduit +{ + @ObjectHolder("bloodmagic:demoncrystallizer") + public static TileEntityType TYPE; + + public static final int maxWill = 100; + public static final double drainRate = 1; + public static final double willToFormCrystal = 99; + public static final double totalFormationTime = 1000; + // The whole purpose of this block is to grow a crystal initially. The + // acceleration and crystal growing is up to the crystal itself afterwards. + public DemonWillHolder holder = new DemonWillHolder(); + public double internalCounter = 0; + + public TileDemonCrystallizer(TileEntityType type) + { + super(type); + } + + public TileDemonCrystallizer() + { + this(TYPE); + } + + @Override + public void onUpdate() + { + if (world.isRemote) + { + return; + } + + BlockPos offsetPos = pos.offset(Direction.UP); + if (getWorld().isAirBlock(offsetPos)) // Room for a crystal to grow + { + EnumDemonWillType highestType = WorldDemonWillHandler.getHighestDemonWillType(getWorld(), pos); + double amount = WorldDemonWillHandler.getCurrentWill(getWorld(), pos, highestType); + if (amount >= willToFormCrystal) + { + internalCounter += getCrystalFormationRate(amount); + if (internalCounter >= totalFormationTime) + { + if (WorldDemonWillHandler.drainWill(getWorld(), getPos(), highestType, willToFormCrystal, false) >= willToFormCrystal) + { + if (formCrystal(highestType, offsetPos)) + { + WorldDemonWillHandler.drainWill(getWorld(), getPos(), highestType, willToFormCrystal, true); + internalCounter = 0; + } + } + } + } + } + } + + public boolean formCrystal(EnumDemonWillType type, BlockPos position) + { + Block block = BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get(); + switch (type) + { + case CORROSIVE: + block = BloodMagicBlocks.CORROSIVE_CRYSTAL_BLOCK.get(); + break; + case DESTRUCTIVE: + block = BloodMagicBlocks.DESTRUCTIVE_CRYSTAL_BLOCK.get(); + break; + case STEADFAST: + block = BloodMagicBlocks.STEADFAST_CRYSTAL_BLOCK.get(); + break; + case VENGEFUL: + block = BloodMagicBlocks.VENGEFUL_CRYSTAL_BLOCK.get(); + break; + default: + break; + } + getWorld().setBlockState(position, block.getDefaultState()); + TileEntity tile = getWorld().getTileEntity(position); + if (tile instanceof TileDemonCrystal) + { + ((TileDemonCrystal) tile).setPlacement(Direction.UP); + return true; + } + + return false; + } + + public double getCrystalFormationRate(double currentWill) + { + return 1; + } + + @Override + public void deserialize(CompoundNBT tag) + { + holder.readFromNBT(tag, "Will"); + internalCounter = tag.getDouble("internalCounter"); + } + + @Override + public CompoundNBT serialize(CompoundNBT tag) + { + holder.writeToNBT(tag, "Will"); + tag.putDouble("internalCounter", internalCounter); + return tag; + } + + // IDemonWillConduit + + @Override + public int getWeight() + { + return 10; + } + + @Override + public double fillDemonWill(EnumDemonWillType type, double amount, boolean doFill) + { + if (amount <= 0) + { + return 0; + } + + if (!canFill(type)) + { + return 0; + } + + if (!doFill) + { + return Math.min(maxWill - holder.getWill(type), amount); + } + + return holder.addWill(type, amount, maxWill); + } + + @Override + public double drainDemonWill(EnumDemonWillType type, double amount, boolean doDrain) + { + double drained = amount; + double current = holder.getWill(type); + if (current < drained) + { + drained = current; + } + + if (doDrain) + { + return holder.drainWill(type, amount); + } + + return drained; + } + + @Override + public boolean canFill(EnumDemonWillType type) + { + return true; + } + + @Override + public boolean canDrain(EnumDemonWillType type) + { + return true; + } + + @Override + public double getCurrentWill(EnumDemonWillType type) + { + return holder.getWill(type); + } +} diff --git a/src/main/resources/assets/bloodmagic/textures/item/copperfragment.png b/src/main/resources/assets/bloodmagic/textures/item/copperfragment.png new file mode 100644 index 00000000..b668f31a Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/copperfragment.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/coppergravel.png b/src/main/resources/assets/bloodmagic/textures/item/coppergravel.png new file mode 100644 index 00000000..7a5b958a Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/coppergravel.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/coppersand.png b/src/main/resources/assets/bloodmagic/textures/item/coppersand.png new file mode 100644 index 00000000..586ec8d6 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/coppersand.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/crystalline_resonator.png b/src/main/resources/assets/bloodmagic/textures/item/crystalline_resonator.png new file mode 100644 index 00000000..4c1f0282 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/crystalline_resonator.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/goldfragment.png b/src/main/resources/assets/bloodmagic/textures/item/goldfragment.png new file mode 100644 index 00000000..24d21b30 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/goldfragment.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/goldgravel.png b/src/main/resources/assets/bloodmagic/textures/item/goldgravel.png new file mode 100644 index 00000000..142a993a Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/goldgravel.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/ironfragment.png b/src/main/resources/assets/bloodmagic/textures/item/ironfragment.png new file mode 100644 index 00000000..dd381fb5 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/ironfragment.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/irongravel.png b/src/main/resources/assets/bloodmagic/textures/item/irongravel.png new file mode 100644 index 00000000..ee1a7b0a Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/irongravel.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/item/primitive_crystalline_resonator.png b/src/main/resources/assets/bloodmagic/textures/item/primitive_crystalline_resonator.png new file mode 100644 index 00000000..542a89fe Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/item/primitive_crystalline_resonator.png differ