Work on the ore tripling and various other things

Finished adding items required for the ore processing systems. Almost to the point where things are finalized for the first alpha release.
This commit is contained in:
WayofTime 2020-11-05 16:10:50 -05:00
parent 5e8437fe58
commit 15e538c800
77 changed files with 1151 additions and 36 deletions

View file

@ -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

View file

@ -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

View file

@ -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",

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/crystalline_resonator"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/goldfragment"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/goldgravel"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/ironfragment"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/irongravel"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/primitive_crystalline_resonator"
}
}

View file

@ -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"
}
]
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/soulgemgreater"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/soulgemgreater_corrosive"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/soulgemgreater_destructive"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/soulgemgreater_steadfast"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "bloodmagic:item/soulgemgreater_vengeful"
}
}

View file

@ -6,7 +6,7 @@
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:air"
"name": "bloodmagic:demoncrucible"
}
],
"conditions": [

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "bloodmagic:demoncrystallizer"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -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
}

View file

@ -0,0 +1,13 @@
{
"type": "bloodmagic:arc",
"input": {
"tag": "bloodmagic:gravels/gold"
},
"tool": {
"tag": "bloodmagic:arc/cuttingfluid"
},
"output": {
"item": "bloodmagic:goldsand"
},
"consumeingredient": false
}

View file

@ -0,0 +1,13 @@
{
"type": "bloodmagic:arc",
"input": {
"tag": "bloodmagic:gravels/iron"
},
"tool": {
"tag": "bloodmagic:arc/cuttingfluid"
},
"output": {
"item": "bloodmagic:ironsand"
},
"consumeingredient": false
}

View file

@ -0,0 +1,13 @@
{
"type": "bloodmagic:arc",
"input": {
"tag": "forge:ingots/gold"
},
"tool": {
"tag": "bloodmagic:arc/explosive"
},
"output": {
"item": "bloodmagic:goldsand"
},
"consumeingredient": false
}

View file

@ -0,0 +1,13 @@
{
"type": "bloodmagic:arc",
"input": {
"tag": "forge:ingots/iron"
},
"tool": {
"tag": "bloodmagic:arc/explosive"
},
"output": {
"item": "bloodmagic:ironsand"
},
"consumeingredient": false
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -0,0 +1,13 @@
{
"type": "bloodmagic:arc",
"input": {
"tag": "bloodmagic:fragments/gold"
},
"tool": {
"tag": "bloodmagic:arc/resonator"
},
"output": {
"item": "bloodmagic:goldgravel"
},
"consumeingredient": false
}

View file

@ -0,0 +1,13 @@
{
"type": "bloodmagic:arc",
"input": {
"tag": "bloodmagic:fragments/iron"
},
"tool": {
"tag": "bloodmagic:arc/resonator"
},
"output": {
"item": "bloodmagic:irongravel"
},
"consumeingredient": false
}

View file

@ -4,7 +4,7 @@
"item": "minecraft:gold_ore"
},
"tool": {
"tag": "bloodmagic:arc/explosive"
"tag": "bloodmagic:arc/cuttingfluid"
},
"output": {
"item": "bloodmagic:goldsand",

View file

@ -4,7 +4,7 @@
"item": "minecraft:iron_ore"
},
"tool": {
"tag": "bloodmagic:arc/explosive"
"tag": "bloodmagic:arc/cuttingfluid"
},
"output": {
"item": "bloodmagic:ironsand",

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"bloodmagic:basiccuttingfluid"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"bloodmagic:primitive_crystalline_resonator",
"bloodmagic:crystalline_resonator"
]
}

View file

@ -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"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"bloodmagic:defaultcrystal",
"bloodmagic:corrosivecrystal",
"bloodmagic:destructivecrystal",
"bloodmagic:vengefulcrystal",
"bloodmagic:steadfastcrystal"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"bloodmagic:goldfragment"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"bloodmagic:ironfragment"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"bloodmagic:goldgravel"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"bloodmagic:irongravel"
]
}

View file

@ -0,0 +1,4 @@
{
"replace": false,
"values": []
}

View file

@ -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

View file

@ -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()
{

View file

@ -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;
}
}

View file

@ -73,6 +73,7 @@ public class BloodMagicBlocks
public static final RegistryObject<Block> ALCHEMY_TABLE = BLOCKS.register("alchemytable", () -> new BlockAlchemyTable());
public static final RegistryObject<Block> DEMON_CRUCIBLE = BLOCKS.register("demoncrucible", () -> new BlockDemonCrucible());
public static final RegistryObject<Block> DEMON_CRYSTALLIZER = BLOCKS.register("demoncrystallizer", () -> new BlockDemonCrystallizer());
public static final RegistryObject<Block> RAW_CRYSTAL_BLOCK = BLOCKS.register("rawdemoncrystal", () -> new BlockDemonCrystal(EnumDemonWillType.DEFAULT));
public static final RegistryObject<Block> CORROSIVE_CRYSTAL_BLOCK = BLOCKS.register("corrosivedemoncrystal", () -> new BlockDemonCrystal(EnumDemonWillType.CORROSIVE));

View file

@ -36,6 +36,8 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider
private void addVanillaRecipes(Consumer<IFinishedRecipe> 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"));

View file

@ -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());
}

View file

@ -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<Item> tag)
{
this.getOrCreateBuilder(tag).add(item);

View file

@ -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

View file

@ -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());

View file

@ -66,6 +66,7 @@ public class BloodMagicItems
public static final RegistryObject<Item> DAWN_RITUAL_STONE_ITEM = ITEMS.register("lightritualstone", () -> new BlockItem(BloodMagicBlocks.DAWN_RITUAL_STONE.get(), new Item.Properties().group(BloodMagic.TAB)));
public static final RegistryObject<Item> ALCHEMICAL_REACTION_CHAMBER_ITEM = ITEMS.register("alchemicalreactionchamber", () -> new BlockItem(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER.get(), new Item.Properties().group(BloodMagic.TAB)));
public static final RegistryObject<Item> DEMON_CRUCIBLE_ITEM = ITEMS.register("demoncrucible", () -> new BlockItem(BloodMagicBlocks.DEMON_CRUCIBLE.get(), new Item.Properties().group(BloodMagic.TAB)));
public static final RegistryObject<Item> DEMON_CRYSTALLIZER_ITEM = ITEMS.register("demoncrystallizer", () -> new BlockItem(BloodMagicBlocks.DEMON_CRYSTALLIZER.get(), new Item.Properties().group(BloodMagic.TAB)));
public static final RegistryObject<Item> BLOODSTONE_ITEM = ITEMS.register("largebloodstonebrick", () -> new BlockItem(BloodMagicBlocks.BLOODSTONE.get(), new Item.Properties().group(BloodMagic.TAB)));
public static final RegistryObject<Item> 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<Item> PETTY_GEM = ITEMS.register("soulgempetty", () -> new ItemSoulGem("petty", 64));
public static final RegistryObject<Item> LESSER_GEM = ITEMS.register("soulgemlesser", () -> new ItemSoulGem("lesser", 256));
public static final RegistryObject<Item> COMMON_GEM = ITEMS.register("soulgemcommon", () -> new ItemSoulGem("common", 1024));
public static final RegistryObject<Item> GREATER_GEM = ITEMS.register("soulgemgreater", () -> new ItemSoulGem("greater", 4096));
public static final RegistryObject<Item> MONSTER_SOUL_RAW = BASICITEMS.register("basemonstersoul", () -> new ItemMonsterSoul(EnumDemonWillType.DEFAULT));
public static final RegistryObject<Item> MONSTER_SOUL_CORROSIVE = BASICITEMS.register("basemonstersoul_corrosive", () -> new ItemMonsterSoul(EnumDemonWillType.CORROSIVE));
@ -162,16 +164,28 @@ public class BloodMagicItems
public static final RegistryObject<Item> PRIMITIVE_FURNACE_CELL = BASICITEMS.register("furnacecell_primitive", () -> new ItemARCToolBase(128, 1.25));
public static final RegistryObject<Item> PRIMITIVE_EXPLOSIVE_CELL = BASICITEMS.register("primitive_explosive_cell", () -> new ItemARCToolBase(256, 1.25));
public static final RegistryObject<Item> PRIMITIVE_HYDRATION_CELL = BASICITEMS.register("primitive_hydration_cell", () -> new ItemARCToolBase(128, 1.25));
public static final RegistryObject<Item> PRIMITIVE_CRYSTALLINE_RESONATOR = BASICITEMS.register("primitive_crystalline_resonator", () -> new ItemARCToolBase(128, 1.25));
public static final RegistryObject<Item> CRYSTALLINE_RESONATOR = BASICITEMS.register("crystalline_resonator", () -> new ItemARCToolBase(512, 2, 2));
// Alchemy Table items
public static final RegistryObject<Item> BASIC_CUTTING_FLUID = BASICITEMS.register("basiccuttingfluid", () -> new ItemARCToolBase(16, 1));
public static final RegistryObject<Item> BASIC_CUTTING_FLUID = BASICITEMS.register("basiccuttingfluid", () -> new ItemARCToolBase(64, 1));
public static final RegistryObject<Item> EXPLOSIVE_POWDER = BASICITEMS.register("explosivepowder", () -> new ItemARCToolBase(64, 1));
public static final RegistryObject<Item> IRON_SAND = BASICITEMS.register("ironsand", () -> new ItemBase());
public static final RegistryObject<Item> GOLD_SAND = BASICITEMS.register("goldsand", () -> new ItemBase());
public static final RegistryObject<Item> COAL_SAND = BASICITEMS.register("coalsand", () -> new ItemBase());
public static final RegistryObject<Item> SULFUR = BASICITEMS.register("sulfur", () -> new ItemBase());
public static final RegistryObject<Item> SALTPETER = BASICITEMS.register("saltpeter", () -> new ItemBase());
public static final RegistryObject<Item> PLANT_OIL = BASICITEMS.register("plantoil", () -> new ItemBase());
// Fragments
public static final RegistryObject<Item> IRON_FRAGMENT = BASICITEMS.register("ironfragment", () -> new ItemBase());
public static final RegistryObject<Item> GOLD_FRAGMENT = BASICITEMS.register("goldfragment", () -> new ItemBase());
// Gravels
public static final RegistryObject<Item> IRON_GRAVEL = BASICITEMS.register("irongravel", () -> new ItemBase());
public static final RegistryObject<Item> GOLD_GRAVEL = BASICITEMS.register("goldgravel", () -> new ItemBase());
// Sands
public static final RegistryObject<Item> IRON_SAND = BASICITEMS.register("ironsand", () -> new ItemBase());
public static final RegistryObject<Item> GOLD_SAND = BASICITEMS.register("goldsand", () -> new ItemBase());
public static final RegistryObject<Item> COAL_SAND = BASICITEMS.register("coalsand", () -> new ItemBase());
}

View file

@ -8,4 +8,9 @@ public interface IARCTool
{
return 1;
}
default double getAdditionalOutputChanceMultiplier(ItemStack stack)
{
return 1;
}
}

View file

@ -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<ITextComponent> 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;
}
}

View file

@ -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<Item> tag)
{
return new NotCondition(new TagEmptyCondition(tag.getName()));
}
private void addSandRecipes(Consumer<IFinishedRecipe> 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<IFinishedRecipe> 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<IFinishedRecipe> 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<IFinishedRecipe> consumer)

View file

@ -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"));
}
}

View file

@ -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"));
}
}

View file

@ -12,16 +12,50 @@ public class BloodMagicTags
public static final ITag.INamedTag<Item> ARC_TOOL_REVERTER = ItemTags.makeWrapperTag("bloodmagic:arc/reverter");
public static final ITag.INamedTag<Item> ARC_TOOL_EXPLOSIVE = ItemTags.makeWrapperTag("bloodmagic:arc/explosive");
public static final ITag.INamedTag<Item> ARC_TOOL_HYDRATE = ItemTags.makeWrapperTag("bloodmagic:arc/hydrate");
public static final ITag.INamedTag<Item> ARC_TOOL_RESONATOR = ItemTags.makeWrapperTag("bloodmagic:arc/resonator");
public static final ITag.INamedTag<Item> ARC_TOOL_CUTTINGFLUID = ItemTags.makeWrapperTag("bloodmagic:arc/cuttingfluid");
// Dusts
public static final ITag.INamedTag<Item> CRYSTAL_DEMON = ItemTags.makeWrapperTag("bloodmagic:crystals/demon");
// Ores
public static final ITag.INamedTag<Item> ORE_COPPER = getForgeOreTag("copper");
public static final ITag.INamedTag<Item> ORE_TIN = getForgeOreTag("tin");
public static final ITag.INamedTag<Item> ORE_LEAD = getForgeOreTag("lead");
public static final ITag.INamedTag<Item> ORE_OSMIUM = getForgeOreTag("osmium");
public static final ITag.INamedTag<Item> ORE_SILVER = getForgeOreTag("silver");
// Dusts (/Sands)
public static final ITag.INamedTag<Item> DUST_IRON = getForgeDustTag("iron");
public static final ITag.INamedTag<Item> DUST_GOLD = getForgeDustTag("gold");
public static final ITag.INamedTag<Item> DUST_COAL = getForgeDustTag("coal");
public static final ITag.INamedTag<Item> DUST_SALTPETER = getForgeDustTag("saltpeter");
public static final ITag.INamedTag<Item> DUST_SULFUR = getForgeDustTag("sulfur");
// Fragments
public static final ITag.INamedTag<Item> FRAGMENT_IRON = getFragmentTag("iron");
public static final ITag.INamedTag<Item> FRAGMENT_GOLD = getFragmentTag("gold");
// Gravels
public static final ITag.INamedTag<Item> GRAVEL_IRON = getGravelTag("iron");
public static final ITag.INamedTag<Item> GRAVEL_GOLD = getGravelTag("gold");
public static ITag.INamedTag<Item> getForgeOreTag(String name)
{
return ItemTags.makeWrapperTag("forge:ores/" + name);
}
public static ITag.INamedTag<Item> getForgeDustTag(String name)
{
return ItemTags.makeWrapperTag("forge:dusts/" + name);
}
public static ITag.INamedTag<Item> getFragmentTag(String name)
{
return ItemTags.makeWrapperTag("bloodmagic:fragments/" + name);
}
public static ITag.INamedTag<Item> getGravelTag(String name)
{
return ItemTags.makeWrapperTag("bloodmagic:gravels/" + name);
}
}

View file

@ -153,11 +153,11 @@ public class TartaricForgeRecipeCategory implements IRecipeCategory<RecipeTartar
public enum DefaultWill
{
SOUL(new ItemStack(BloodMagicItems.MONSTER_SOUL_RAW.get()), 64),
SOUL(new ItemStack(BloodMagicItems.MONSTER_SOUL_RAW.get()), 16),
PETTY(new ItemStack(BloodMagicItems.PETTY_GEM.get()), 64),
LESSER(new ItemStack(BloodMagicItems.LESSER_GEM.get()), 256),
COMMON(new ItemStack(BloodMagicItems.COMMON_GEM.get()), 1024);
// GREATER(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), 4096),
COMMON(new ItemStack(BloodMagicItems.COMMON_GEM.get()), 1024),
GREATER(new ItemStack(BloodMagicItems.GREATER_GEM.get()), 4096);
// GRAND(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 4), 16384);
public final ItemStack willStack;

View file

@ -6,6 +6,7 @@ import java.util.Optional;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.INamedContainerProvider;
import net.minecraft.item.ItemStack;
@ -14,6 +15,7 @@ import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.ITickableTileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.common.util.LazyOptional;
@ -35,7 +37,7 @@ import wayoftime.bloodmagic.tile.contailer.ContainerAlchemicalReactionChamber;
import wayoftime.bloodmagic.util.Constants;
import wayoftime.bloodmagic.util.MultiSlotItemHandler;
public class TileAlchemicalReactionChamber extends TileInventory implements ITickableTileEntity, INamedContainerProvider
public class TileAlchemicalReactionChamber extends TileInventory implements ITickableTileEntity, INamedContainerProvider, ISidedInventory
{
@ObjectHolder("bloodmagic:alchemicalreactionchamber")
public static TileEntityType<TileAlchemicalReactionChamber> 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<FluidStack> 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;
}
}

View file

@ -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)

View file

@ -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<TileDemonCrystallizer> 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);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 903 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB