diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 00000000..60f5e416
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,36 @@
+# Contributing to BloodMagic
+
+First off, thank you for taking the time to contribute!
+
+## Issues
+
+First, make sure the issue has not been already reported.
+
+If it has not been reported, follow the provided issue template (created when you click "New Issue").
+
+If it has been reported, provide any additional information you can to the current active issue.
+
+## Pull Requests
+
+With the 1.8 rewrite comes a need to keep the code *clean*. Pull Requests will be looked over a bit stricter from now on.
+
+When you wish to contribute, please keep these points in mind:
+
+###Do:
+* Only make 1 commit for each major change.
+ * This helps avoid "polluting" the Git history.
+* Squash extra commits.
+ * See above.
+* Describe each and every change you make in your Pull Request.
+ * This lets everybody know exactly what is going on for easy discussion.
+* Make short yet descriptive commit titles.
+ * Feel free to give a very basic overview of the commit in the message, then use the description to go into detail.
+* Keep your formatting the same as the project.
+ * This will be expanded upon at a later date.
+
+###Do not:
+* Make unnecessary changes to files.
+ * If you don't need to touch it, don't touch it.
+ * This includes: *renaming args*, *renaming files*, *editing formatting*, etc.
+* Use obfuscated names for parameters.
+ * This makes the code look messier and less "professional".
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000..88a1a00c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,25 @@
+#### Issue Description:
+Note: If this bug occurs in a modpack, please report this to the modpack author. Otherwise, delete this line and add your description here. If this is a feature request, this template does not apply to you. Just delete everything.
+
+
+#### What happens:
+
+
+
+#### What you expected to happen:
+
+
+
+#### Steps to reproduce:
+
+1.
+2.
+3.
+...
+
+____
+#### Affected Versions (Do *not* use "latest"):
+
+- BloodMagic:
+- Minecraft:
+- Forge:
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index da2d8747..64717e09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,13 +13,13 @@
crash-reports/
/.idea/
/.metadata/
-/.settings/
/libs/
/saves/
/resourcepacks/
/logs/
/mods/
/screenshots/
+/classes/
# File Extensions
*.psd
@@ -28,9 +28,10 @@ crash-reports/
*.iws
*.classpath
*.project
+*.launch
# Specific files
Thumbs.db
usernamecache.json
options.txt
-
+usercache.json
diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 00000000..e8895216
--- /dev/null
+++ b/.settings/org.eclipse.buildship.core.prefs
@@ -0,0 +1,2 @@
+connection.project.dir=
+eclipse.preferences.version=1
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..52c66cdc
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,392 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=1
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=1
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=1
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=1
+org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=1
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=1
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+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=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=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
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+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=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
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+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_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_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
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=true
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=true
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=true
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..1994e3f7
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,81 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_WayofTime-Dev
+formatter_settings_version=20
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.lazy_logical_operator=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.merge_conditional_blocks=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.number_suffix=false
+sp_cleanup.objects_equals=false
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.precompile_regex=false
+sp_cleanup.push_down_negation=false
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=false
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.simplify_lambda_expression_and_method_ref=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
diff --git a/BM3 Progression.drawio b/BM3 Progression.drawio
new file mode 100644
index 00000000..a37ad70e
--- /dev/null
+++ b/BM3 Progression.drawio
@@ -0,0 +1,308 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
index a8116fad..c945030e 100644
--- a/README.md
+++ b/README.md
@@ -1,61 +1,68 @@
-#Blood Magic: Alchemical Wizardry
+# Blood Magic: Alchemical Wizardry [](https://minecraft.curseforge.com/projects/blood-magic) [](https://discord.gg/VtNrGrs)
-###Gruesome? Probably. Worth it? Definitely!
-###[Downloads](http://minecraft.curseforge.com/mc-mods/224791-blood-magic/files)
+### Gruesome? Probably. Worth it? Definitely!
+### [Downloads](http://minecraft.curseforge.com/projects/blood-magic/files)
-##Information
+## Information
Have you ever picked up a magic mod for Minecraft, and thought that it was too tame? Was there not enough danger involved when creating your next high-tech gadget? Bored with all of those peaceful animals just staring at you without a care in the world? Well then, I am glad you came here!
Blood Magic is an arcane art that is practiced by mages who attempt to gather a vast amount of power through utilizing a forbidden material: blood. Even though it does grant a huge amount of power, every single action that is performed with this volatile magic can prove deadly. You have been warned.
-##Links
+## Links
* Twitter: [@WayofTime](https://twitter.com/WayofTime)
* Wiki: Found at [FTBWiki](http://ftbwiki.org/Blood_Magic)
* [Minecraft Forum Thread](http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1290532-bm)
-* [Curseforge](http://minecraft.curseforge.com/mc-mods/224791-blood-magic)
+* [Curseforge](http://minecraft.curseforge.com/projects/blood-magic)
* [Donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=J7SNY7L82PQ82)
+* [Patreon](https://www.patreon.com/BloodMagic)
-##Issue Reporting
-
-Please include the following:
-
-* Minecraft version
-* Blood Magic version
-* Forge version/build
-* Versions of any mods potentially related to the issue
-* Any relevant screenshots are greatly appreciated.
-* For crashes:
- * Steps to reproduce
- * ForgeModLoader-client-0.log (the FML log) from the root folder of the client
-
-##Development Setup
+## Development Setup
1. Fork this project to your own Github repository and clone it to your desktop.
-2. Navigate to the directory you cloned to. Open a command window there and run `gradlew setupDevWorkspace` then (if you use Eclipse) `gradlew eclipse` or (if you use IDEA) `gradlew idea`.
-3. This process will setup [Forge](http://www.minecraftforge.net/forum/), your workspace, and link [MineTweaker](http://minetweaker3.powerofbytes.com/) as a dependency.
-4. Open the project in your IDE of choice.
-5. Set `../src/api/java` as a source directory.
+2. Navigate to the directory you cloned to. Follow the [Forge Documentation](http://mcforge.readthedocs.io/en/latest/gettingstarted/#from-zero-to-modding) (start at step 4) to setup your workspace. If you use IDEA, follow [this set](http://mcforge.readthedocs.io/en/latest/gettingstarted/#terminal-free-intellij-idea-configuration) of steps.
+
+#### IntelliJ IDEA extra steps
+
+1. Navigate to `File > Settings > Plugins > Browse repositories...`. Search for Lombok and install the plugin.
+2. Navigate to `File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors`. Check `Enable annotation processing`.
[Setup video](https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be) by LexManos. For more information, refer to the [Forge Forums](http://www.minecraftforge.net/forum/index.php/topic,14048.0.html).
-##Custom Builds
-###Custom builds are unsupported. If you have an issue using a build not by me (WayofTime), it is not guaranteed that you will get support.
+## Developing Addons
-####How to make a custom build:
+Add to your build.gradle:
+
+ repositories {
+ maven {
+ url "http://tehnut.info/maven/"
+ }
+ }
+
+ dependencies {
+ deobfCompile "com.wayoftime.bloodmagic:BloodMagic:"
+ }
+
+`` can be found on CurseForge (or via the Maven itself), check the file name of the version you want.
+
+## Custom Builds
+
+**Custom builds are *unsupported*. If you have an issue while using an unofficial build, it is not guaranteed that you will get support.**
+
+#### How to make a custom build:
1. Clone directly from this repository to your desktop.
2. Navigate to the directory you cloned to. Open a command window there and run `gradlew build`
3. Once it completes, your new build will be found at `../build/libs/BloodMagic-*.jar`. You can ignore the `deobf`, `sources`, and `javadoc` jars.
-##License
+## License

Blood Magic: AlchemicalWizardry by WayofTime is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).
-##Installation Instructions
+## Installation Instructions
This mod requires "Minecraft Forge" in order to operate. It is incredibly easy to download and set up, so might as well get to it!
@@ -65,14 +72,12 @@ This mod requires "Minecraft Forge" in order to operate. It is incredibly easy t
3. Place the mod in the **mods** folder of your .minecraft. If you are unsure of where that is located, it is here: `../Users/you/AppData/roaming/.minecraft`.
-##FAQ
+## FAQ
**Q**: My weak blood orb doesn't show my current LP! Fix it please.
**A**: The mechanic for viewing the player's essence has changed due to some issues with mechanics. You now need a Divination Sigil to view a player's essence. It does other things, too, so it is worth it!
-
-
**Q**: Why am I dying so much?
**A**: It might be a good idea to make sure that you have enough essence to do a task. If you don't have enough essence for, say, an imperfect ritual, it will take it out of your health. If your health reaches 0... Well, you don't have to be a genius to see what would happen.
@@ -110,8 +115,6 @@ This mod requires "Minecraft Forge" in order to operate. It is incredibly easy t
**A**: This is a config option. The person you saw with an orb had a config that changed the knife to an orb. The orb and knife function exactly the same way, but you can change it in the configs by looking for the "Idontlikefun" option.
-
**Q**: When I respawn, I appear to only come back with 3 hearts. What's happening?
-
-**A**: This is due to another config option in the "WhimpySettings," which is due to my attempt to combat Zerg Rushing. You can disable this if you really want to, but it shouldn't hurt unduly.
\ No newline at end of file
+**A**: This is due to another config option in the "WhimpySettings," which is due to my attempt to combat Zerg Rushing. You can disable this if you really want to, but it shouldn't hurt unduly.
diff --git a/build.gradle b/build.gradle
index 9be2f8af..b9e99859 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,137 +1,199 @@
buildscript {
repositories {
+ maven { url = 'https://files.minecraftforge.net/maven' }
+ jcenter()
mavenCentral()
- maven { url = "http://files.minecraftforge.net/maven" }
- maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
- classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
- classpath 'org.ajoberstar:gradle-git:0.10.1'
+ classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
+apply plugin: 'net.minecraftforge.gradle'
+// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
+apply plugin: 'eclipse'
+apply plugin: 'maven-publish'
-apply plugin: 'forge'
+version = '1.16.4-3.1.0-15'
+group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
+archivesBaseName = 'BloodMagic'
-ext.configFile = file "build.properties"
-configFile.withReader {
- def prop = new Properties()
- prop.load(it)
- project.ext.config = new ConfigSlurper().parse prop
-}
+sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
-version = config.mc_version + "-" + config.mod_version + "-" + config.build_number
-group= config.package_group
-archivesBaseName = config.mod_name
+println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
+minecraft {
+ // The mappings can be changed at any time, and must be in the following format.
+ // snapshot_YYYYMMDD Snapshot are built nightly.
+ // stable_# Stables are built at the discretion of the MCP team.
+ // Use non-default mappings at your own risk. they may not always work.
+ // Simply re-run your setup task after changing the mappings to update your workspace.
+ mappings channel: 'snapshot', version: '20200916-1.16.2'
+ // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
+
+ // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
-import org.ajoberstar.grgit.Grgit
+ // Default run configurations.
+ // These can be tweaked, removed, or duplicated as needed.
+ runs {
+ client {
+ workingDirectory project.file('run')
+
+ properties 'mixin.env.disableRefMap': 'true'
-def gitHash = 'unknown'
-if (new File(projectDir, '.git').exists()) {
- def repo = Grgit.open(project.file('.'))
- gitHash = repo.log().find().abbreviatedId
+ // Recommended logging data for a userdev environment
+ property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+
+ // Recommended logging level for the console
+ property 'forge.logging.console.level', 'debug'
+
+ mods {
+ bloodmagic {
+ source sourceSets.main
+ }
+ }
+ }
+
+ server {
+ workingDirectory project.file('run')
+
+ properties 'mixin.env.disableRefMap': 'true'
+
+ // Recommended logging data for a userdev environment
+ property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+
+ // Recommended logging level for the console
+ property 'forge.logging.console.level', 'debug'
+
+ mods {
+ bloodmagic {
+ source sourceSets.main
+ }
+ }
+ }
+
+ data {
+ workingDirectory project.file('run')
+
+ properties 'mixin.env.disableRefMap': 'true'
+
+ // Recommended logging data for a userdev environment
+ property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+
+ // Recommended logging level for the console
+ property 'forge.logging.console.level', 'debug'
+
+ args '--mod', 'bloodmagic', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
+
+ mods {
+ bloodmagic {
+ source sourceSets.main
+ }
+ }
+ }
+ }
}
repositories {
- maven {
- name 'CB Maven FS'
- url "http://chickenbones.net/maven/"
+ maven {
+ url "http://dvs1.progwml6.com/files/maven/"
}
maven {
- name 'DVS1 Maven FS'
- url 'http://dvs1.progwml6.com/files/maven'
+ name = "The Loader"
+ url = "https://maven.blamejared.com"
}
- maven {
- name 'TehNut Repo'
- url 'http://tehnut.info/maven/'
- }
- ivy {
- name "MineTweaker3"
- artifactPattern "http://minetweaker3.powerofbytes.com/download/[module]-[revision].[ext]"
- }
}
dependencies {
- compile "codechicken:CodeChickenLib:" + config.mc_version + "-" + config.cclib_version + ":dev"
- compile "codechicken:CodeChickenCore:" + config.mc_version + "-" + config.ccc_version + ":dev"
- compile "codechicken:NotEnoughItems:" + config.mc_version + "-" + config.nei_version + ":dev"
-// compile name: 'MineTweaker3', version: config.minetweaker_version, ext: 'jar'
-// compile "codechicken:ForgeMultipart:1.7.10-1.1.0.314:dev"
-// compile "info.amerifrance.guideapi:Guide-API:" + config.mc_version + "-" + config.guideapi_version + ":deobf"
-}
-
-minecraft {
- version = config.mc_version + "-" + config.forge_version
- runDir = "run"
-
- replaceIn "GAPIChecker.java"
- replace "@VERSION@", config.guideapi_version
-}
-
-processResources {
- inputs.property "version", project.version
- inputs.property "mcversion", project.minecraft.version
-
- from(sourceSets.main.resources.srcDirs) {
- include '**/*.info'
- include '**/*.properties'
-
- expand 'version': project.version, 'mcversion': project.minecraft.version
- }
- from(sourceSets.main.resources.srcDirs) {
- exclude '**/*.info'
- exclude '**/*.properties'
- exclude '**/*.db'
- }
+ // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
+ // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
+ // The userdev artifact is a special name and will get all sorts of transformations applied to it.
+ minecraft 'net.minecraftforge:forge:1.16.4-35.1.37'
+
+ // compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api")
+ // runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}")
+
+ //deobfCompile "mezz.jei:jei_${minecraft_version}:${jei_version}"
+
+ compileOnly fg.deobf("mezz.jei:jei-1.16.2:7.1.3.19:api")
+ runtimeOnly fg.deobf("mezz.jei:jei-1.16.2:7.1.3.19")
+
+ compileOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}:api")
+ runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}")
+
+ compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.16.4:7.1.0.84")
+
+ // You may put jars on which you depend on in ./libs or you may define them like so..
+ // compile "some.group:artifact:version:classifier"
+ // compile "some.group:artifact:version"
+
+ // Real examples
+ // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
+ // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
+
+ // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
+ // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
+
+ // These dependencies get remapped to your current MCP mappings
+ // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
+
+ // For more info...
+ // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
+ // http://www.gradle.org/docs/current/userguide/dependency_management.html
+
}
+// Example for how to get properties into the manifest for reading by the runtime..
jar {
- dependsOn "incrementBuildNumber"
- classifier = ''
- manifest.mainAttributes(
- "Built-By": System.getProperty('user.name'),
- "Created-By": "${System.getProperty('java.vm.version')} + (${System.getProperty('java.vm.vendor')})",
+ manifest {
+ attributes([
+ "Specification-Title": "bloodmagic",
+ "Specification-Vendor": "bloodmagicsareus",
+ "Specification-Version": "1", // We are version 1 of ourselves
"Implementation-Title": project.name,
- "Implementation-Version": project.version,
- "Git-Hash": gitHash
- )
+ "Implementation-Version": "${version}",
+ "Implementation-Vendor" :"bloodmagicsareus",
+ "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
+ ])
+ }
}
-// add a source jar
-task sourceJar(type: Jar) {
- from sourceSets.main.allSource
+// Example configuration to allow publishing using the maven-publish task
+// This is the preferred method to reobfuscate your jar file
+jar.finalizedBy('reobfJar')
+// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
+//publish.dependsOn('reobfJar')
+
+sourceSets.main.resources {
+ srcDir 'src/generated/resources'
+}
+
+task srcJar(type: Jar) {
+ from(sourceSets.main.java)
classifier = 'sources'
}
-// add a javadoc jar
-task javadocJar(type: Jar, dependsOn: javadoc) {
- from javadoc.destinationDir
- classifier = 'javadoc'
+task apiJar(type: Jar) {
+ from(sourceSets.main.allJava)
+ from(sourceSets.main.output)
+ include 'wayoftime/bloodmagic/api/**'
+
+ classifier = 'api'
}
-// because the normal output has been made to be obfuscated
-task deobfJar(type: Jar) {
- from sourceSets.main.output
- classifier = 'deobf'
+artifacts {
+ archives srcJar, apiJar
}
-tasks.build.dependsOn sourceJar, javadocJar, deobfJar
-
-tasks.withType(JavaCompile) { task ->
- task.options.encoding = 'UTF-8'
-}
-
-task("incrementBuildNumber") {
- // increment build number
- doFirst {
- // increment
- config.build_number = (config.build_number.toString().toInteger()) + 1
-
- // write back to the file
- configFile.withWriter {
- config.toProperties().store(it, "")
- }
- }
-}
-
-// Uncomment this line if you want to auto-upload to CurseForge when you build. This requires you to setup curse.gradle yourself.
-// fileTree('gradle').include('curse.gradle').collect().sort().each { apply from: it }
\ No newline at end of file
+publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ artifact jar
+ artifact srcJar
+ artifact apiJar
+ }
+ }
+ repositories {
+ maven {
+ url "file:///${project.projectDir}/mcmodsrepo"
+ }
+ }
+}
\ No newline at end of file
diff --git a/build.properties b/build.properties
deleted file mode 100644
index a40914e6..00000000
--- a/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-mod_name=BloodMagic
-forge_version=11.14.3.1499
-cclib_version=1.1.2.133
-ccc_version=1.0.5.36
-nei_version=1.0.5.104
-//=Dependency Information
-guideapi_version=1.0.1-20
-package_group=com.wayoftime.bloodmagic
-mod_version=1.3.3
-minetweaker_version=Dev-1.7.10-3.0.9B
-build_number=12
-mc_version=1.8
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 00000000..e9b9c9ee
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,1346 @@
+------------------------------------------------------
+Version 3.1.0
+------------------------------------------------------
+- Majorly refactored the progression of the mod. Instead of starting with a Snare, you instead start by crafting the Blood Altar. The changes are documented in the guide, and you can follow its "Getting Started" entry!
+
+- Changed the tooltips so that they are gray, more easily differentiating them from the name of the item.
+- Added the Sigil of Holding
+- Changed the crafting of Tartaric Gems so that you no longer need to use the previous tier gem in the gem slot.
+-> The Hellfire Forge will now syphon from the gem in the crafting table first, and all unused will from the consumed gem will be placed in the crafted gem.
+
+- Changed the GUI for the Alchemy Table
+-> You can now select which sides that an input/output slot is accessible from. Click on the slot you wish to change, then click on the directional toggle buttons.
+
+- Fixed Plunderer's Glint not properly applying the Looting level.
+- Also fixed a NPE crash due to Iron Tip. Fixes some crashes due to mods using the ItemUsedFinish event.
+
+- Fixed the Blood Altar not being able to input fluids. About time, Way!
+- Added new Explosive Charges
+-> Fungal Charge, which is very useful for giant mushrooms and nether mushrooms
+-> Controlled Charge, which will destroy only blocks that match the block it is placed on.
+- Added the ability to apply a few select Anointments to the charges. Only one can be applied to a charge at a time.
+-> Soft Touch, Fortuna, and Smelting
+
+- Fixed the Living Armour so that you cannot use an upgrade tome to usurp the point cap.
+-> Fixed "Strong Legs" so that it no longer runs the program "CrunchyLegs.exe" - as a result, you no longer suffer fall damage from jumping on the same level.
+-> Removed the direct fall damage mitigation from "Strong Legs"
+
+- Added two types of Throwing Daggers to the Blood Mage's offensive kit.
+-> Iron Throwing Dagger
+-> Syringe Throwing Dagger
+
+- Refactored the guide so that it provides +2 to awesomeness.
+
+
+------------------------------------------------------
+Version 3.0.6
+------------------------------------------------------
+- Reimplemented the Well of Suffering.
+- Added several new items, called "Anointments"! These are items that provide temporary buffs to your tools and weapons, such as silk touch, higher damage, and more! Look them up in the Utility section of the book. These include:
+ - Honing Oil
+ - Soft Coating
+ - Fortuna Extract
+ - Holy Water
+ - Miner's Secrets
+ - Dexterity Alkahest
+ - Iron Tip
+ - Plunderer's Glint
+ - Slow-burning Oil
+
+------------------------------------------------------
+Version 3.0.5
+------------------------------------------------------
+- Fixed a crash with the Blood Altar because I am dumb.
+- Also fixed the recipe for the Day array. Now you don't need to clean your clocks!
+
+------------------------------------------------------
+Version 3.0.4
+------------------------------------------------------
+
+- Added two new explosives:
+ - The Shaped Charge, which will break a 5x5x5 volume when placed
+ - The Deforester Charge, which can chop down a tree up to a maximum of 128 logs.
+ - (Both explosives drop all blocks affected, and do not cause further environmental nor entity damage.)
+
+- Added new alchemy arrays:
+ - Two arrays, which changes the current daylight cycle to day and night. Recipes are temp.
+
+- Fixed the following Living Armour upgrades so that they are now obtainable:
+ - Experienced
+ - Body Builder
+
+- Fixed Living Armour not upgrading under certain conditions.
+
+- Fixed the two rituals involving Living Armour so that they are properly activatable using a Weak Activation Crystal.
+
+- Fixed NPE in Blood Altar when trying to interact with the contained Fluids
+- Also fixed bug that prevented the Altar from accepting fluids piped in as inputs.
+- Fixed a client-side crash when right clicking the ground with a Lava Crystal when on a server - now properly makes a fire without consuming the client.
+
+- Fixed the JEI so that it no longer ouputs an error when loading Alchemy Array recipes without a crafting output.
+- Fixed crash with Actually Additions
+
+
+------------------------------------------------------
+Version 3.0.3
+------------------------------------------------------
+
+- Updated the Sanguine Scientiem - it's very well written! Special thanks to both VT-14 and Wrince for their long hours of effort to make this book better than I could have done!
+- Fixed a crash with the Living Armour when crafted and worn right after enchanting.
+
+
+
+------------------------------------------------------
+Version 3.0.2
+------------------------------------------------------
+
+Readded the Living Armour. Currently only with a few upgrades, and no downgrades.
+ - Pin Cushion
+ - Soft Fall
+ - Tough
+ - Strong Legs (Now can be temporarily deactivated when jumping by sneaking)
+ - Healthy
+ - Experienced
+ - Charging Strike
+ - Tough Palms
+ - Quick Feet
+ - Poison Resistance
+ - Gift of Ignis
+ - Dwarven Might
+ - Body Builder
+
+Reimplemented the following rituals:
+ - Resonance of the Faceted Crystal
+ - Crack of the Fractured Crystal
+ - Reap of the Harvest Moon
+ - Ritual of the Shepherd
+ - Ritual of the Green Grove
+ - Focus of the Ellipsoid
+ - Sound of the Cleansing Soul
+ - Ritual of Living Evolution
+
+------------------------------------------------------
+Version 3.0.1
+------------------------------------------------------
+
+- Reimplemented the Incense Altar with all appropriate blocks.
+- Added guide entries for the Incense Altar and Blood Altar. Other misc entries added, too.
+- Fixed a server-related crash on the client on the Sigil of the Green Grove.
+- Added ore processing to Ancient Debris.
+- Readded the other Sentient Tool types (with one more on the way).
+- Added a few WIP items that cannot be used yet - they're part of the D*$)@ D*#@(@* system that I'm adding for Tier 4.
+- Added the API - It's still in flux, so expect it to change very soon!
+- Probably forgot something important.
+- Fixed a crash for the Lava Crystal that made it blow up the Client if used on a server. No, that was not the intended purpose!
+- Added the Ritual Tinkerer for Rituals.
+- Added the "Tome of Peritia" again - stores EXP.
+
+
+------------------------------------------------------
+Version 2.4.3
+------------------------------------------------------
+
+- Fixed Lava Crystals causing crash when used while not yet bound
+- Fixed Teleposers sending entities at the destination position the wrong way
+- Fixed Speed Runes not working on Tier 2 altars
+- Fixed crash when checking tasks for some entities
+- Fixed crash when checking some entities for potion effects
+- Re-implemented the Boost potion
+ - The PR still had TODOs in the description when I merged so this may not be complete yet
+
+------------------------------------------------------
+Version 2.4.2
+------------------------------------------------------
+Now with no guarantees for working textures!
+
+Blood Altar:
+ - A Blood Altar with a Redstone Lamp below it will now emit a redstone signal upon finishing crafting (#1635)
+ - Fixed Blood Altar being able to obtain negative progress (#1649)
+
+Living Armor:
+ - Fixed Storm Trooper Level 4 costing 65 instead of -65 upgrade points (#1631)
+
+Rituals:
+ - Fixed Ritual of the Eternal Soul (Ritual Stone layout & didn't work) (#1633)
+ - Fixed Ritual Tinkerer (ritual area is now unique per ritual instance), added the ability to reset the ritual ranges to default (#1636)
+
+Misc:
+ - Lava Crystals can now set things on fire (#1652)
+ - Fixed parts of the German translation. Other translations still need to be reworked to accomodate changed translation keys (#1640)
+ - Fixed Guidebook showing wrong recipes (Rune of Self-Sacrifice instead of others) (#1641)
+ - Wooden Paths now behave like wood instead of stone (sound & efficient tool) (#1638)
+
+
+Technical Stuff:
+ - Fixed Veil of Evil and Ward of Sacrosanctity console spam (which could eventually lead to an out of memory exception) (#1639)
+ - Fixed GLSL shader compilation errors (affected Mesa driver (AMD GPU) on Linux) (#1624)
+ - Fixed `/bloodmagic network` command permissions (#1613)
+ - Fixed a rare crash that could occur when summoning mobs (#1618)
+
+------------------------------------------------------
+Version 2.4.1
+------------------------------------------------------
+
+Nut was too lazy to create a changelog, it's AEon's turn now!
+Changes made from Feb 02 - now (Fill end date in later)
+
+
+Living Armor:
+ - Fixed "Soft Fall" not preventing damage
+ - "Nocturnal Prowess" should not flash anymore
+ - "Trickshot" now ignores HurtResistanceTime
+ - "Trickshot" now works properly with sentient arrows
+ - "Step Assist" does not take effect while sneaking
+
+Sentient Bow:
+ - Fixed Destructive Will arrows exploding continuously
+ - Fixed Tipped Arrows getting improved even if no Will can be used
+
+Sigils:
+ - Buffed "Sigil of the Fast Miner" to be in accordance to the "Sanguine Scientium"
+ - Fixed a bug where "Sigil of the Fast Miner" would also cause the whirlwind effect
+ - Added "Whirlwind" to the potion registry
+ - Fixed broken Sigil tooltip formatting
+ - Fixed Sigil of Holding not updating some Sigil data, allowing for exploits
+ - Greatly improved "Sigil of Compression" performance
+ - Fixed "Sigil of Compression" bug that would eat leftover items (usually everything between 55 and 64 items for a 3x3 compression)
+
+
+Rituals:
+ - Ported Veil of Evil & Ward of Sacrosanctity
+ - Fixed "Serenade of the Nether" replacing lava source blocks with lava (fixed underlying function to detect flowing liquids)
+ - Added configurability to Ritual of the High Jump by modifying a new ritual area with the Ritual Tinkerer
+
+Misc:
+ - Fixed routing node oredict filter (crashes)
+ - Fixed mimic vanishing in some cases
+ - Fixed "Blood Letter's Pack" and "Coat of Arms" always being used in the main hand slot (action bar/hotbar)
+ - Stop insertions into Demon Crucible if the inventory is not empty
+ - Fixed abnormal deaths at your own hands through the sacrificial dagger (hopefully) (Gravestone bugginess)
+ - Fixed "Unmending" mod incompatibility
+ - Fixed Teleposers crashing the game if someone force-fed it junk
+ - added Nut being angery at contributors for messing stuff up
+ - Added some Russian language strings for the guide book
+ - Added repair recipes for Sentient Tools & Living Armor to JEI
+ - Many translation keys have changed which makes affected translations fall back to english
+
+Technical Stuff no player cares about:
+ - Formatted Project code
+ - Fixed BlockState parsing (mimic vanishing)
+ - Fixed some and streamlined ritual block ranges
+ - Mystery drain still mysterious
+ - Use TextFormatting rather than color codes in block lang names
+ - Fixed world unload crash (may happen if a world is loaded by world generators or JEI Resource graphing)
+ - Fixed `/bloodmagic network get` command
+ - Added translation keys for tickethistory command help strings
+
+------------------------------------------------------
+Version 2.4.0
+------------------------------------------------------
+
+It's been a while, eh? Some of you may be asking yourself "whats up with bloodmagic" like that damned recon on a certain
+social media site. Well here's what's up: put something snarky here when done writing changelog
+
+There's so much here, I'm probably going to miss some. Here's a general overview from just skimming commit titles.
+
+Much of this was done via PR because I'm ~~lazy~~ too busy having fun with Fabric.
+
+- Fixed harvest moon not working with pumpkins
+- [API] Added a way to unregister an altar component
+- Moved anything related to Tier 6 behind an opt-in config. Please stop asking me how to get it.
+- Fixed small demon stone bricks recipe so it returns 4 instead of 1
+- Ported some old rituals from 1.7
+ - Cry of the Eternal Soul
+ - Reverence of the Condor
+ - Ritual of the Feathered Earth
+- Added a new ritual, Ritual of Grounding
+- Optimized bound tool harvesting
+- Fixed render issues with demon crystals
+- Fixed Hymn of Syphoning not updating some tanks visually
+- Added very basic documentation for several rituals to the guide book
+- Made meteor costs for Mark of the Falling Tower configurable in the meteor json
+- Fluid related sigils should now work identically to buckets of the fluid
+- Fixed ritual tinkerer area setting behaving wonkily
+- Fixed Seer Sigil not working for incense altars
+- Added the ability to buff movement and updraft arrays by providing more of their ingredient
+- Ported the ritual dismantler from 1.7.10
+- Logic fix for the Solar Powered
+ - Now it requires a clear line of sight to the sky as well as it being day time
+- Fixed Sigil of Magnetism AOE being offset from the player
+- Rewrote commands
+ - They're different in some way, some how
+ - Don't ask me how
+- Quality of life improvements for the ritual tinkerer
+- Changed the activation crystal levels of some rituals to use the awakened crystal
+ - Mark of the Falling Tower
+ - All the living armor ones
+ - It's late and I'm tired don't hate me for being too lazy to look up their names
+- Fixed up some bounding boxes for some blocks with fancier models
+- Sentient Bow now properly handles modded and potion-ified arrows
+
+I can't wait for this to turn out to be very broken so I can yell at the contributor :>
+
+------------------------------------------------------
+Version 2.3.3
+------------------------------------------------------
+
+- Fixed Altars not filling orbs of their own tier
+
+------------------------------------------------------
+Version 2.3.2
+------------------------------------------------------
+
+looky bois, we beta now
+
+- Fixed Sentient Sword attacking mobs and players without being provoked
+- Fixed weird Crystal Clusters being weird
+ - They are now less weird
+- Fixed Ritual Reader and Tinkerer not being in the creative tab
+- Fixed an NPE that would happen with some blocks in the Ritual of Magnetism's area of effect
+- Fixed Mimics not being able to replace blocks during placement
+- Fixed issues with inter-dimensional teleportation
+ - Teleposers and Teleposition Sigils are now fully functional
+- Fixed custom arrows not having their effects when fired from the Sentient Bow
+- Fixed Splash Potions being unthrowable while Living Armor had the quenched downgrade
+- Fixed Ritual Stones being considered Iron instead of Rock
+- Fixed the Lava, Water, and Void sigils so they now work properly with tanks
+- Fixed an issue where the Teleposer would attempt to damage an offline player
+- Fixed the Compression Sigil so it now functions
+- Fixed low tier altars being able to fill high tier orbs
+- Fixed Sentient Tools having the wrong material
+- Fixed Sentient Tools not having a repair material
+ - It is now demon crystals
+- Added a config to disable mob drops from mobs killed by the Well of Suffering
+- Added an additional glow to the Dagger of Sacrifice when it has a full incense bonus
+- Reworked the Phantom Bridge
+- Updated german translation
+- Updated chinese translation
+
+------------------------------------------------------
+Version 2.3.1
+------------------------------------------------------
+
+- Fixed Ritual of Magnetism not being registered
+- Fixed Mob Sacrifice Array so it no longer kills bosses and players
+- Fixed Will type serializer using lowercase names
+- Fixed item rendering for the Sigil of Holding HUD
+- Added mod id to command localization keys to prevent potential conflicts
+
+------------------------------------------------------
+Version 2.3.0
+------------------------------------------------------
+
+- Fixed Basic Cutting Fluid recipe so it no longer requires an unobtainable potion
+- Fixed Teleposer Blacklist not working
+- Fixed the bounding box on the Blood Tank
+- Fixed crafted Inscription Tools not having their uses tag applied
+- Fixed JEI queries with bound Blood Orbs
+- Fixed Crushing Ritual not passing a valid player
+- Fixed Mending applying to Potion Flasks
+- Fixed Teleposition Sigil not checking for a Teleposer at it's destination
+- Fixed Lava Crystal not syphoning LP
+- Fixed the Laputa array moving unbreakable blocks
+ - ie: Bedrock
+- Fixed the Ritual of the Green Grove not working on Cactus and Reeds
+- Added a Mob Sacrifice array
+- Updated the HUD system
+ - You can now edit the HUD layout via the in-game config editor with a drag'n'drop system.
+ - This screen is only available while in a world.
+- Updated the German translation
+- Updated the Chinese translation
+- [API] Reworked how rituals are registered
+ - This will break any addons that work with rituals
+ - If you report an issue to me regarding broken addons, it will be closed without any comment
+
+------------------------------------------------------
+Version 2.2.12
+------------------------------------------------------
+- Fixed Hellfire Forge and Alchemy Table's shape-crafted-ness.
+- Fixed Cutting Fluids so they now work properly.
+- Fixed the Fluid filters so that they now work perfectly in the routing system.
+- Fixed the Living Armour Upgrade that provides night vision, so it is no longer as finicky.
+- Proved that Way could update the version number properly without being told by the maid.
+
+------------------------------------------------------
+Version 2.2.11
+------------------------------------------------------
+- Fixed the Alchemy Array from voiding items when broken when it shouldn't have.
+- Fixed Blood Tank NBT transfer between item/tile form.
+- Made sure to not offend TehNut's sensibilities :NutMaid:
+
+------------------------------------------------------
+Version 2.2.10
+------------------------------------------------------
+- Fixed Turret Array crash on servers.
+- Fixed the Blood Altar so it can actually fill Blood Orbs (derp).
+
+------------------------------------------------------
+Version 2.2.9
+------------------------------------------------------
+- Fixed stupid NPE in the Furnace Array
+- Fixed various issues with the Alchemy Table:
+ - Now works for recipes that require an LP cost.
+ - Hoppers no longer lose items when items are placed into the "slave" Alchemy Table who has some slots restricted.
+- Added an entry to the book that explains you can, in fact, use Sea Lanterns instead of glowstone blocks for your Tier 3 altar.
+- Fixed the Demon Will crystals growing when they shouldn't. Also lowered the time between natural crystal growths in Will-enriched areas.
+ - Side note: who's bright idea was it to have to wait 15 minutes per crystal growth?
+- Added the "Resonance of the Faceted Crystal", which can be used to create your first aspected Will crystal clusters.
+- Made it so the Crystallizer no longer generates a random aspected Will crystal cluster.
+- Fixed rare crash with the Blood Altar, which only has a chance of occuring on restart.
+
+------------------------------------------------------
+Version 2.2.8
+------------------------------------------------------
+- Fixed a client side null-pointer exception with the Blood Lamp
+ - It's a bright idea to fix this as soon as I can.
+- Changed the recipe of the Teleport Array:
+ - Note from Scotty: Captain, I'll remind ya what happened last time you put an apple in her array! Use an Enderpearl and redstone dust next time!
+- Added new arrays
+ - The Turret Array:
+ > Place an array on top of an inventory with arrows and then place a bow and an arrow in the array. The array will target enemies greater than 3 blocks away and less than 32, using any arrows in the inventory.
+ - Spike Array:
+ > Place a piece of cobblestone and iron ingot in the array. The array deals damage to any living entity that enters
+- Increased the max number of items transferable by the Master Routing Node in its system to 64 per second. Will revisit this limit if I figure out a less silly upgrade system.
+- Added additional effects to the Sentient Bow when aspected to different Will types.
+- Added in book entries for the Teleport Array and the Turret Array.
+- Fixed the Haste sigil and "Quick Feet" so that they work with MC's new movement method.
+- Removed added health from "Quick Feet" - seriously, why was this a thing?
+- Readded the ritual "Focus of the Ellipsoid": creates a hollow ellipsoid from blocks provided in the connecting chest.
+ - Note: The dictionary definition for "Ellipsoid" is a three-dimensional figure whose plane sections are ellipses or circles. For those who weren't born in a math class, it means it is a sphere that has different radii in each direction.
+- Fixed an off by one in altar upgrade management causing the first of any upgrade to not be counted
+- Fixed the LP cost of the Master Blood Orb
+ - This bug has gone unnoticed for 2 years now.
+- Potion Flasks can be crafted now
+- Fixed a server crash when handling dye recipes
+- Moved several text outputs out of the chat and into the action bar
+- Fixed a crash when trying to use unbound toggle-able sigils in the Sigil of Holding
+- Fixed an issue where unbound sigils could be used inside the Sigil of Holding
+- Added missing items for Demon Crystals and Demon Pylons
+
+------------------------------------------------------
+Version 2.2.7
+------------------------------------------------------
+- Added the Furnace Array:
+ - Name pending.
+ - Takes health from nearby players to power adjacent furnaces.
+ - Not covered by standard medical insurance.
+- Added a new Teleport Array:
+ - Please keep all hands and feet inside the floating circle until you have come to a complete stop.
+ - Note to Scotty: Feed the non-floating circle a Feather followed by an Apple to initiate the Beaming sequence.
+- Seer Sigil should now properly mimic all functions of the Divination Sigil.
+- Fixed some console error spam when using Lava/Water/Void sigils.
+- Registered Sulfur (dustSulfur) and Saltpeter (dustSaltpeter) to the ore dictionary.
+- Rewrote how IBindable stores it's data:
+ - This will probably break existing worlds if you have Rituals running. Stop them before updating.
+ - This will also unbind any of your bound items. Bind them again after updating.
+ - *glances at the big red A next to all 1.12 files*
+- Fixed Haste being *constricted* when above level 2.
+- De-nerf Fast Miner array so it provides Haste 3 again.
+- Prepped API for recipe tweaking mods.
+
+------------------------------------------------------
+Version 2.2.6
+------------------------------------------------------
+
+- Fixed a weird thing where slates were weird
+- Added HUD elements for Tranquility and Inversion
+- Fixed Sigils stacking 64 times higher than they should have
+
+As a side note, I've been listening to http://loli.dance/ for the last like 2 hours now.
+
+------------------------------------------------------
+Version 2.2.5
+------------------------------------------------------
+
+- We are now even more sure we're looking at a block before doing blocky things
+- Fix Lava Crystal being consumed by furnaces
+- Augmented Capacity and Self Sacrifice runes remember their names now
+- Satiated Stomach will now let you gorge yourself on overly high saturation foods
+ - I'm looking at you, Pam. Stop being weird and giving your foods 28 saturation.
+- Made Mod ID node filter dumber so it actually, like, works properly
+- "Temporarily" disabled cross-dimensional teleports for entities. Temporarily.
+ - Did I mention this is temporary? As in totally not permanently?
+ - Who am I kidding? I'll probably forget about this.
+- Bounce Arrays are no longer death traps when sneaking.
+
+------------------------------------------------------
+Version 2.2.4
+------------------------------------------------------
+
+- Make sure we're looking at a block before doing blocky things
+- Slightly altered the altar's renderer
+- Added new spammy logging with config options
+ - Prints out information like mods registering things via the API and stuff
+
+------------------------------------------------------
+Version 2.2.3
+------------------------------------------------------
+
+- Fixed mundane components being really really really thirsty
+ - (everything required water reagents. everything.)
+- Buffed the Fast Miner array with a nerf
+ - Vanilla doesn't like Haste 3 I guess?
+- Moved Divination Sigil altar output to a HUD element
+ - RIP Blood Altar chat spam 2014-2018
+- Mark of the Falling Tower is now re-opened and ready for sacrifices.
+- Polished Demon Stones are no longer lonely uncraftable bois
+- Somewhat more efficient (at least LoC wise) altar upgrade checking
+- Blood Altar is now less stingy about outputs
+- Coerced augmented Potion Flask recipe outputs out of hiding
+
+------------------------------------------------------
+Version 2.2.2
+------------------------------------------------------
+
+- Fixed Alchemy Arrays so they might actually function now. Might.
+ - How did this even function properly before? I have no idea.
+- Soul Snare should now stop giving the thrower ghosty debuffs. Should.
+- Blood Magic is now in the mood to launch on servers. Probably.
+- Soul Forge crafting works again! Potentially!
+- Fixed the altar nuking any and all NBT attached to output items.
+- Fixed the version not being replaced properly
+- Rewrote Hwyla integration.
+ - Should now function a lot nicer.
+- Implemented a new API for recipe registration
+ - Still need to move the alchemy table over, but otherwise this seems to function just fine.
+- Implemented a new API for registering tranquility blocks.
+ - Will allow Chisel to stop crashing
+
+------------------------------------------------------
+Version 2.2.1
+------------------------------------------------------
+
+- Fixed crashes when using systems that depended on internal entity names
+- Fixed a crash when attempting to get the owner from unbound bindable items
+- Fixed a server crash on startup
+- Fixed GUIs not displaying the background and tooltips properly
+- Helped the Sentient Sword get over it's identity crisis
+- By the way I'm not actually upset or anything guys.
+ - Please stop overreacting Reddit.
+
+------------------------------------------------------
+Version 2.2.0
+------------------------------------------------------
+
+- Basic port to 1.12
+ - Does not include the vast majority of rewrites and cleanup I did on the other branch
+ - Completely untested. Done out of spite. Go away.
+ - There, you have it. Screw off now.
+
+------------------------------------------------------
+Version 2.1.11
+------------------------------------------------------
+
+- Added support for some modded crops (Untested. Theoretically they work)
+ - Harvestcraft
+ - Actually Additions
+ - Extra Utilities
+- Fixed permission level for sub-commands
+- Large Bloodstone Bricks should receive 4 from a craft
+- Fixed Diamond Meteor giving blocks of diamond
+- Dynamically calculate Meteor Weight
+- Fixed NPE in fluid filter
+- Fixed Blood Tank capacity being reset when the chunk reloaded
+- Updated russian translation
+- Fixed Rune Type capability not registering on physical client
+- Updated Sigil of Holding texture so set color is more visible
+- Fixed blocks destroyed by bound tools not storing any NBT data
+- Fixed Harvest ritual not working on Melons and Pumpkins
+- [API] Methods for removing recipes
+
+------------------------------------------------------
+Version 2.1.10
+------------------------------------------------------
+
+- Fixed malicious clients being able to load arbitrary chunks on the server
+- Fixed Bound tools not setting their tool class and harvest level
+
+------------------------------------------------------
+Version 2.1.9
+------------------------------------------------------
+
+- Fixed Alchemy Table overwriting output each time it crafted something
+ - https://github.com/WayofTime/BloodMagic/issues/1119
+- Blood Magic commands (/bloodmagic) can now be used in Command Blocks
+ - https://github.com/WayofTime/BloodMagic/issues/1117
+- Re-implemented the Soul Fray debuff on death
+ - No more exploiting sacrifice by killing yourself over and over (again)
+ - https://github.com/WayofTime/BloodMagic/issues/1118
+- Updated Traditional Chinese localization
+ - https://github.com/WayofTime/BloodMagic/pull/1116
+
+------------------------------------------------------
+Version 2.1.8
+------------------------------------------------------
+
+- Fixed more null stack issues
+ - Will it ever end?
+- Fixed a crash when activating a ritual via Redstone
+- Fixed a fluid handling issue with Blood Tanks
+ - https://github.com/WayofTime/BloodMagic/issues/1108
+- Fixed issue where Sigils inside a Sigil of Holding were using the wrong item
+ - https://github.com/WayofTime/BloodMagic/issues/1102
+- Fixed crash when activing Bound Tools
+ - https://github.com/WayofTime/BloodMagic/issues/1114
+- Updated the Chinese localization
+ - https://github.com/WayofTime/BloodMagic/pull/1052
+- Placer Ritual is now much more performant
+- Many recipes have been moved over to support the Ore Dictionary
+ - https://github.com/WayofTime/BloodMagic/issues/1101
+
+------------------------------------------------------
+Version 2.1.7
+------------------------------------------------------
+
+- Fixed Grave Digger not applying damage bonus
+ - https://github.com/WayofTime/BloodMagic/issues/1098
+- Fixed crash when attempting to handle the dropping of Demonic Will
+ - https://github.com/WayofTime/BloodMagic/issues/1091
+- Fixed Crash of the Timberman dupe
+ - This also adds support for IItemHandler based inventories
+ - https://github.com/WayofTime/BloodMagic/issues/1090
+- Fixed a crash when a Meteor struck the ground
+ - https://github.com/WayofTime/BloodMagic/issues/1088
+- Fixed the Seer's Sigil not using Roman Numerals to display the altar tier
+ - https://github.com/WayofTime/BloodMagic/pull/1094
+
+------------------------------------------------------
+Version 2.1.6
+------------------------------------------------------
+- Fixed invisible Sentient Specters destroying everything and everybody around their owners
+ - lol
+ - https://github.com/WayofTime/BloodMagic/issues/1065
+- Fixed occasional crash when Blood Altar checked it's recipe
+ - https://github.com/WayofTime/BloodMagic/issues/1086
+- Fixed Blood Light acting as a collidable block in obfuscated environments
+ - I think
+ - https://github.com/WayofTime/BloodMagic/issues/1083
+- Fixed crash when Alchemy Table fully depleted a Cutting Fluid item
+ - https://github.com/WayofTime/BloodMagic/issues/1082
+- Fixed crash when scrolling through Sigil of Holding
+ - https://github.com/WayofTime/BloodMagic/issues/1081
+- Fixed not being able to take Gems out of Demon Crucibles
+ - https://github.com/WayofTime/BloodMagic/issues/1079
+- Fixed some more null stack issues
+ - When is this going to be over...
+ - https://github.com/WayofTime/BloodMagic/issues/1068
+- Fixed JEI not displaying Armor Tomes
+- Fixed Body Builder level 4 being 5x more expensive than level 5
+ - https://github.com/WayofTime/BloodMagic/pull/1080
+- Updated Japanese localization
+ - https://github.com/WayofTime/BloodMagic/pull/1076
+
+------------------------------------------------------
+Version 2.1.5
+------------------------------------------------------
+- Fixed Hellfire Forge slots acting up
+ - i is not j no matter how similar they look
+- Fixed JEI compat for Alchemy Table recipes
+- Fixed a lot more null stack checks
+- Fixed (yet another) crash when creating an "invalid" stack of the Blood Tank
+- Fixed Demon Will Crystal and Teleposer crashy interaction
+- Fixed crash when working with toggleable sigils
+
+------------------------------------------------------
+Version 2.1.4
+------------------------------------------------------
+- Fixed a crash when checking if two items could be combined
+- Fixed a crash when attempting to open the Sigil of Holding GUI
+- Fixed a crash when somebody made an "invalid" stack of the Blood Tank
+- Fixed a crash/hilarity where a Blood Altar would update itself as a Comparator
+ - Thanks to Arcaratus for causing this. I haven't laughed that hard in a while.
+
+------------------------------------------------------
+Version 2.1.3
+------------------------------------------------------
+- Added a new Master Ritual Stone that inverts it's redstone activity
+- Fixed Living Armor attributes overriding eachother instead of adding up
+- Fixed Ore doubling sometimes adding invalid recipes
+- Downgrade tomes are now called Downgrade Tomes
+- Added some caching to rituals to (hopefully) increase performance with less world data query-ing
+
+------------------------------------------------------
+Version 2.1.2
+------------------------------------------------------
+- Fixed server crash when creating the guide entries
+
+------------------------------------------------------
+Version 2.1.1-70
+------------------------------------------------------
+- Updated to Minecraft 1.11(.2)
+- Fixed the Living Armour Sacrificial Upgrade
+- Fixed Bound Tools not draining LP
+- Implemented the Blood Tank
+ - Current recipes are temporaryâ„¢
+- Empty flasks can now be refilled to create a new flask
+- Fixed Aura of Expulsion whitelist
+- Added the Altar's Charge value to the Waila Tooltip when holding a Seer's Sigil
+- Fixed meteor config error caused by EnderCore reloading configs early into startup
+- Fixed meteor config not generating new entries
+- Blacklisted Sentient Spectres from the Well of Suffering
+- Fixed Sigils drawing from the user instead of the bound network
+- Added Fluid routing to the routing nodes - this is done by using the Fluid Filter and placing a fluid container as the filter.
+- Made it so the book does not give the filling recipe when the Blood Orb recipe is queried.
+- Added a null check for the Will getter for the Aura incase the WillChunk somehow does not generate.
+- [API] Added a new IMC API for modders to register their blocks as an altar component.
+ - Example: Chisel Glowstone can now be used for the Tier 3 caps (once Chisel implements it)
+
+------------------------------------------------------
+Version 2.1.0-69
+------------------------------------------------------
+- Fixed Phantom Bridge sigil glitch when travelling between dimensions and teleporting large distances.
+- Added deprecated methods for easier updating - Oops!
+
+------------------------------------------------------
+Version 2.1.0-68
+------------------------------------------------------
+- Fixed Ritual of Regeneration's text
+- Fixed silly dupe bug with the Zephyr ritual.
+
+------------------------------------------------------
+Version 2.1.0-67
+------------------------------------------------------
+- Added the Destructive Will effect to the Ritual of the Green Grove. This ritual now is done~
+- Finished the Augments for the Serenade of the Nether.
+- Implemented a new model for the Blood Altar to be more in-line with the rest of the mod (Thanks, wiiv!)
+- Made the Blood Altar respect the new capability system for fluid management.
+- Finished the Augments for the Ritual of the Feathered Knife.
+- Finished the Augments for the Ritual of the Crusher.
+- Finished most of the Augments for the Ritual of the Shepherd.
+- Changed the Ritual of the Feathered Knife so it respects the Tough Palms Living Armour Upgrade.
+- Fixed the Ritual of the Feathered Knife so that its health threshold is percent-based.
+- Made the aspected Sentient Tools drop their corresponding Will type on killing enemies.
+- Made it so peaceful animals provide more LP by default (to encourage creating your own farm).
+- Increased the effectiveness of animals for the Gathering of the Forsaken Souls ritual by a factor of 4.
+- Added the framework for the Purification Altar.
+- Fixed a crash with the Ritual Diviner when attempting to replace certain blocks.
+- Snares can no longer hit the thrower of the snare within 20 ticks of throwing it.
+- Updated the book so it contains most of the rituals.
+- Added some placeholder recipes for the Living Armour Downgrades - they will eventually change.
+
+------------------------------------------------------
+Version 2.1.0-66
+------------------------------------------------------
+- Made it so that when you acquire a Living Armour Upgrade from a Tome, it raises the corresponding Stat Tracker up to that upgrade level.
+- Added some more framework for the Living Armour Downgrades.
+- Modified the Grim Reaper's Sprint so it is better at later levels.
+- Added a Repairing Living Armour Upgrade (trained by damaging the chestplate of the Living Armour while you have a full set on - it repairs all of your armour pieces over time)
+- Modified the Dwarven Might skill to better change the mining speed when mining.
+- Added a Dig Slowdown armour downgrade called "Weakened Pick".
+- Added the framework for a ritual that grants downgrades (instead of the potion method).
+- Fixed the recipes for some of the Demon Will blocks
+- Added the Sigil of Elasticity, the Sigil of the Claw, and the Sigil of Winter's Breath.
+- Changed most of the BlockString blocks to a BlockEnum in order to solve a loading issue with schematics.
+- Added the entries for the Skeleton Turret Array and the Updraft Array
+- Added the Bounce Array
+- Modified the Sigil of the Phantom Bridge so it better performs with speed modifications
+- Added the ability to use Mimic Blocks containing a valid Altar Component to work with the altar (#945)
+ - Note: If using a Blood Rune, you do not get the ability of said rune. It just counts as a valid block.
+- Fixed `/bloodmagic network get NAME` using the wrong localization (#955)
+- Fixed Mimic Blocks causing an NPE with some Tile Entities (#951)
+- Fixed a massive FPS drop when looking at a Master Ritual Stone while holding a Ritual Tinkerer (#950)
+- Fixed an occasional crash when looking at a Mimic block with WAILA installed (#949)
+- Fixed the displayed Lesser Tartaric Gem recipe in the Guide (#947)
+- Fixed Dagger of Sacrifice one-shotting bosses. It now just doesn't work (#932)
+- Fixed controls re-binding after each startup (#922)
+- Added an alchemy array, the Array of the Fast Miner
+
+------------------------------------------------------
+Version 2.1.0-65
+------------------------------------------------------
+- Fixed NPE when attacking mobs when you don't have a set of Living Armour. Oops.
+
+------------------------------------------------------
+Version 2.1.0-64
+------------------------------------------------------
+- Fixed the symmetry issues of the Ritual of Containment
+- Changed the recipe of the Acceleration rune so that it is a T4 rune.
+- Added the Charging rune, which accumulates charge by using the LP from the Blood Altar (1 charge = 1 LP always). If enough charge is stored when crafting, the crafting occurs instantly.
+- Added the entries for the Rune of Augmented Capacity, Charging Rune, and Rune of Acceleration
+- Fixed the Sigil of Translocation so that it does not crash when picking up certain blocks. Also removed the damned lightning.
+- Changed the Quick Feet upgrade and the speed boost sigil so that their speeds are applied when strafing and walking backwards as well.
+
+------------------------------------------------------
+Version 2.1.0-63
+------------------------------------------------------
+- Removed the darn testing code from the Divination Sigil. >.>
+
+------------------------------------------------------
+Version 2.1.0-62
+------------------------------------------------------
+- Fixed the fact rituals were not working (Might have been a compiler error).
+
+------------------------------------------------------
+Version 2.1.0-61
+------------------------------------------------------
+- Added fancy rendering for the Inversion Pillars.
+- Made the Meteor registry more manageable by separating the meteors into independent .json files.
+- Fixed the Sigil of Holding so that it does not crash servers when pressing the Holding key ('H' by default)
+
+------------------------------------------------------
+Version 2.1.0-60
+------------------------------------------------------
+- Fixed routing node serialization.
+- Removed unwanted System.out lines when clicking on the slots in the routing node.
+
+------------------------------------------------------
+Version 2.1.0-59
+------------------------------------------------------
+- Added the Living Armour Upgrade, Nocturnal Prowess, which gives night vision in dark areas and increases damage while the area is dark.
+- Added a LOT of dungeon blocks. I mean a lot.
+- Finished adding the recipes for all of the blocks (except the Demon Alloy)
+- Added a temporary texture (finally) for the Inspectoris Scandalum
+- Fixed Specters spawning with the /give command
+- Fixed the sacrifice range of the altar.
+- Fixed the Regeneration ritual so that it works on non-players
+- Added Mimic entry to The Architect.
+- Configurified the Meteor Ritual - Modpacks and users can edit all of the major properties of the meteor ritual, including what items need to be dropped onto the ritual as well as what you get in the ritual, radius, etc. The config will refresh if there is a version change unless you set "resyncOnVersionChange" to false.
+- Merged the three brick variants into one.
+- Added the Inversion Pillar models and caps
+
+------------------------------------------------------
+Version 2.0.4-58
+------------------------------------------------------
+- Temporarily removed the dungeon stuff so that it doesn't crash.
+
+------------------------------------------------------
+Version 2.0.4-57
+------------------------------------------------------
+- Changed the Demon Will Aura Gauge so it refreshes based on the player's ticks existed
+- Made Draft of Angelus craftable with gold dust
+- Fixed Elytra upgrade
+- Added the Mimics - the real ones
+- Implemented a bit of framework for some T5 shenanigans.
+- Fixed the Incense Altar so it properly detected the south sides of the altar.
+- Updated the Filtered Item Routing Nodes' GUI so that it behaved less like ass. Also added the necessary nbt porting code.
+- Further improved the routing GUI by allowing an amount to be typed into the amount bar.
+- Updated the toggleable sigils so they drain the user's LP based on the user's total ticks existed instead of the world time. This is to solve the doDaylightCycle glitch in this scenario.
+
+------------------------------------------------------
+Version 2.0.4-56
+------------------------------------------------------
+- Fixed an incompatability between the 1.10.2 and the 1.9.4 versions
+
+------------------------------------------------------
+Version 2.0.4-55
+------------------------------------------------------
+- Made Guide-API a required mod.
+- Fixed a funky issue where the Sound of the Cleansing Soul did not reset the upgrade points internally.
+- Added Sentient Specters, which are essentially tamable companions. Drop a sentient tool if you have more than 1024 Will of a given type to summon one (at the cost of 100 Will).
+- Added Mimic Blocks!
+
+------------------------------------------------------
+Version 2.0.3-54
+------------------------------------------------------
+- Eliminated some of the "wonkiness" from the Air Sigil
+- Fixed the Hellfire Forge so that swapping Tartaric gems will not give free stuff.
+- Added the Potion Flask and a few of the potion effects - max amount of effects that can be added to a single flask is currently 3.
+- Fixed the Aura gauge not resetting in chunks that do not have any Aura
+- Added tooltips for the progress to the next upgrade for Living Armour (hold shift + M)
+- Finished off The Architect docs for now
+- Finished off The Demon Kin docs for the time being
+
+------------------------------------------------------
+Version 2.0.3-53
+------------------------------------------------------
+- Fixed issue where the mod doesn't load on servers. Oops.
+
+------------------------------------------------------
+Version 2.0.3-52
+------------------------------------------------------
+- Updated the Sanguine Scientiem with Alchemy Array recipes
+- Fixed the Blood Altar so that it can (again) work on a stack size larger than 1.
+
+------------------------------------------------------
+Version 2.0.3-51
+------------------------------------------------------
+- Added the Demon Will Aura Gauge to accurately determine the Will in the Aura.
+- Added the ability for rituals to have a Demon Will set on them. Now to get rituals to use them.
+- Fixed it so that the Crushing Ritual now ignores liquids
+- Added the Mark of the Falling Tower ritual.
+- Changed the tooltip of the ritual diviner so that it gives information about the selected ritual.
+- Added more to the Sanguine Scientiem, including Hellfire Forge recipes and Altar recipes
+- Updated a lot of the text in the Sanguine Scientiem
+
+------------------------------------------------------
+Version 2.0.2-50
+------------------------------------------------------
+- Fixed bad NPE when using the WoS. (Well, I guess all NPEs are technically bad, but I guess it depends on your perspective. That said, I don't think a changelog is the best place for a theoretical discussion about the rights and wrongs of errors, so I will stop now.)
+
+------------------------------------------------------
+Version 2.0.2-49
+------------------------------------------------------
+- All Alchemy Array recipes are WIP and are subject to change! ^.^ They are created using the Arcane Ash and are shown as first item + second item.
+- Added the Movement Array (feather + redstone)
+- Added the Mob Beacon Array (2x Zombie Flesh)
+- Added the Updraft Array (feather + glowstone)
+- Added the Skeleton Turret Array (Arrow + feather)
+- Fixed the Lava Crystal recipe so that it can use all tiers of blood orb
+- Nerfed the Bound Blade. This is temporary, since the sword eventually will be modified.
+- Fixed Teleposers so they no longer crash 1.10 instances when teleposing tiles.
+
+------------------------------------------------------
+Version 2.0.2-48
+------------------------------------------------------
+- Fixed a stupid bug by a stupid Way
+
+------------------------------------------------------
+Version 2.0.2-47
+------------------------------------------------------
+- Fixed horrible memory leak in the Living Armour.
+- Item Nodes can now be disabled by a (weak) redstone signal.
+
+------------------------------------------------------
+Version 2.0.2-46
+------------------------------------------------------
+- Fixed it so Ritual stones can be placed by the Ritual Diviner again. Also made it so that rituals are activateable and don't crash servers.
+
+------------------------------------------------------
+Version 2.0.2-45
+------------------------------------------------------
+- Changed the recipe of the Sanguine Scientiem
+- Fixed the Routing system so that it properly eliminates the connection to the Master node when the Master node is broken.
+- Fixed an issue where the Spectral Blocks (from the Sigil of Suppression) would return the liquid on the client side before the sigil was deactivated.
+- Made it so that the bound tools are (supposedly more so) unbreakable. This will probably come bite me on the ehem later, but we'll see.
+- Added Fire Resistance Living Armour Upgrade, "Gift of Ignis."
+- Updated The Architect section of the documentation.
+- Fixed it so the Ritual will call stopRitual when a ritual stone is broken.
+- Added the recipe for the Inspectoris Scandalum (I had to check if I spelled that right) which acts as a helper for Altar Building
+- Right-clicking a MRS with the Ritual Diviner will affix the ritual hologram to the MRS.
+
+------------------------------------------------------
+Version 2.0.2-44
+------------------------------------------------------
+- Added the Draft of Angelus, which increases the max number of upgrade points for Living Armour. It's strawberry flavoured!
+- Fixed the Tome of Peritia again - <= and < are the same, right?
+- Fixed an interaction between the Tome of Peritia and the Experienced upgrade
+
+------------------------------------------------------
+Version 2.0.1-43
+------------------------------------------------------
+- Added an initial method to divine where a blood rune is missing for the next tier of altar.
+- Fixed an NPE with the Gathering of the Forsaken Souls
+- Fixed Absorption Hearts remaining after the absorption buff ends for the Steadfast Sentient Sword
+- Updated the Guide (Woooooooooooooo........)
+- (Possibly?) fixed Tome of Peritia bug of the Negative Speed of Light
+- Added recipes for all ores -> dust in the alchemy table.
+- Added the recipes for the Sentient Tools - yes, they all drop Will.
+- Fixed the bow so that it now gives you Will when you kill a mob - it does not drop the Will, it goes directly to you.
+
+------------------------------------------------------
+Version 2.0.1-42
+------------------------------------------------------
+- Fixed Demon Crucible's weird behaviour where right-clicking it with an invalid item would still put the item in the crucible
+ and give the player an item with a stacksize of 0.
+- WAILA!
+- Oh, and demon wings with the Elytra.
+
+------------------------------------------------------
+Version 2.0.1-40
+------------------------------------------------------
+- Bug fix version, and added several translations - some of these are still WIP.
+- Fixed render bug with the Alchemy Table
+- Demon WIll now drops from slimes at a reduced rate instead of not at all
+- Fixed Jesus Water effect with Life Essence
+- Added the Vengeful Will crystal cluster recipe. Oops! >.>
+- Changed the "Default" Will into "Raw" Will.
+- Fixed an item duplication bug with how item pick-up is handled with the Zephyr ritual and the magnetism sigil.
+- Made the bound Axe function... correctly
+- Fixed a command block only issue with BM commands
+
+------------------------------------------------------
+Version 2.0.0-39
+------------------------------------------------------
+- Updated to 1.9.4!
+- Fixed the Trick Shot upgrade
+- Fixed Gate of the Fold endless loop
+- Added rune type colors to the Ritual Diviner tooltip
+- Crusher ritual ignores unbreakable blocks
+
+------------------------------------------------------
+Version 2.0.0-38
+------------------------------------------------------
+- Fixed it so that the Sentient weaponry is actually repairable using any demon will crystals in an anvil
+- Changed the stat tracker for Tough Palms so that it counts number of hearts sacrificed, not number of sacrifices
+- Fixed the Living Armour so that it wouldn't get damaged by self-sacrificing when you had upgrades that mitigate unblockable sources.
+- Fixed bound sword stuttering
+
+------------------------------------------------------
+Version 2.0.0-37
+------------------------------------------------------
+- Fixed Elytra upgrade not working on servers. Oops!
+
+------------------------------------------------------
+Version 2.0.0-36
+------------------------------------------------------
+- Added JEI compat for the Alchemy Table
+- Changed the Item Routing system so that it used capabilities instead
+- Updated the Alchemy Table recipe system so that it can provide better custom recipes.
+- Added some more recipes (like rudimentary ore doubling) to the alchemy table.
+- Added Explosive Powder, which is used to reduce cobblestone into gravel and gravel into sand (64 uses)
+
+------------------------------------------------------
+Version 2.0.0-35
+------------------------------------------------------
+- Changed Living Armour so that it is now damagable. The Living Armour Chestplate will be damaged, but will not break. If it gets to ~0 durability, it will damage your LP network heavily.
+- Living Armour is now repairable in an anvil with Binding Reagent.
+- Started adding in the Alchemy Table... not really started.
+- Changed it so that the Mending enchantment consumes the EXP before the Tome of Peritia does
+- Added fall distance mitigation to the jump upgrade
+- Fixed Lava Crystals... again.
+- Worked on the Alchemy Table
+- Added the Elytra upgrade - craft the tome in an anvil by using a book and a full Elytra.
+
+------------------------------------------------------
+Version 2.0.0-34
+------------------------------------------------------
+- Added config to Blood Magic that will prevent the compression handler from reading the recipes added by the Compression mod (default is true).
+- Added Japanese localization and fixed Czech (I can't spell) localization.
+
+------------------------------------------------------
+Version 2.0.0-33
+------------------------------------------------------
+- Fixed a few localization derps.
+- Fixed a few minor bugs.
+
+------------------------------------------------------
+Version 2.0.0-32
+------------------------------------------------------
+- Changed Tome of Peritia's recipe
+- Added step assist living armour upgrade tracker.
+- Added new Living Armour upgrades:
+ - Added Charging Strike, which increases knockback and damage for attacks while sprinting
+ - Added True Strike, increasing the damage of critical hits
+- Updated for Forge 12.16.0.1859
+- Did some work on the Sentient Bow to start adding abilities to it
+- Fixed the Speed and Jump rituals so that they correctly update the player's motion.
+- Implemented the "Ritual Tinkerer" and added its recipe.
+
+------------------------------------------------------
+Version 2.0.0-31
+------------------------------------------------------
+- Fixed NPE when using an empty bucket.
+- Added Living Armour Upgrades:
+ - Strong Legs increases jump height. Pro tip: hold shift to bypass this jump boost.
+ - Soft Fall decreases all fall damage, up to 100% at level 5.
+ - Grave Digger, for fun times with alternative weapons
+- Added increase in speed for Routing nodes inside of a chunk with Demon Aura
+- Fixed OutOfBoundsException in the Sentient Sword when you didn't have enough Will.
+- Fixed custom potion effects so they could be applied server-sided
+- Added recipe for the Tome of Peritia
+
+------------------------------------------------------
+Version 2.0.0-30
+------------------------------------------------------
+- Wow, there are a lot of bug fixes lately.
+- Fixed it so that the blood orb is no longer consumed in the crafting grid.
+
+------------------------------------------------------
+Version 2.0.0-29
+------------------------------------------------------
+- Fixed formatting not working properly on servers.
+
+------------------------------------------------------
+Version 2.0.0-28
+------------------------------------------------------
+- Fixed the soul snare.
+- Removed health buff from Steadfast armour
+- Changed corrosive sword's effect from poison to wither
+- Fixed living armour's training bracelet so that it deactivates any training of upgrades not supported
+- Added "Experienced" living armour upgrade, which provides more xp from picked up orbs.
+- Updated to Forge 1826
+
+------------------------------------------------------
+Version 2.0.0-27
+------------------------------------------------------
+- Added OreDict support for the altar (was done in 26)
+- Made it so that the Tartaric gem would show visually what type of will was contained
+- Allowed the Sentient Sword to use different wills, and change its colour based on the used one. Also made it so you do not toggle it by right clicking, but it simply
+ rechecks itself when you smack something and when you right-click.
+- Fixed item binding. Yusssss.
+- Added Sword, Armour, and Bow texture changes when you have different demonic will in your inventory.
+- Finalized sentient sword effects
+- Did work on the unique demon will effects for armour
+- FINALLY changed it so farm animals do not drop demon will.
+
+------------------------------------------------------
+Version 2.0.0-23
+------------------------------------------------------
+- Fixed "see through world" syndrome for most blocks
+- Fixed .obj models so that they will properly render while in-hand
+- Fixed routing node attaching logic
+- Changed the growth behavior of the crystals
+- Fixed Potion getting for various methods
+- Started work on crystal automation ritual
+- Finished first iteration of the iterator of AreaDescriptor (hehe)
+- Finished the crystal automation ritual, "Gathering of the Forsaken Souls." This ritual damages mobs in it's area (21^3 cube around the MRS) and once it kills a mob it
+ uses its life essence to feed the demonic will crystals inside of its area (two blocks above the ritual stone, 7x7 region and 5 high). This costs LP and
+ demonic will from the aura of the particular type, and costs less will the more... varied the mobs killed are. Growth amount is dictated by the max health
+ of the mobs killed.
+- Updated to Forge 1811
+
+------------------------------------------------------
+Version 2.0.0-22
+------------------------------------------------------
+- Fixed client disconnect when joining servers
+- Fixed Bound Blade having same damage between activated and deactivated states
+- Fixed Sentient Armour gem so it works, now
+- Fixed Armour model textures
+- Fixed crash on newer versions of Forge
+- Updated zh_CN localization
+
+------------------------------------------------------
+Version 2.0.0-21
+------------------------------------------------------
+- Initial release to 1.9. Many glitches that have yet to be ironed out, some of them Forge issues. Probably best not to play with this one until Forge stabilizes.
+
+------------------------------------------------------
+Version 2.0.0-20
+------------------------------------------------------
+- Fixed Blood Altar crashing on odd occasions.
+- Fixed GUI of hellfire forge.
+- Fixed issue with Will Chunks not generating when requested in new chunks
+- Fixed issue where Orb Tier was never set for a player internally
+- Fixed Creative Dagger. It now works correctly. Shift + Right Click on an Altar to fill it to capacity.
+- Fixed step height being set to incorrect value. Your Chisels and Bits stairs should work, now!
+- Fixed Bound Tools not being enchantable.
+- Fixed Bound Tools "Beast Mode" breaking blocks unreliably.
+- Fixed Blood Light Sigil not using LP
+- Changed Will system so that it automatically goes into your inventory and then drops any excess Will on the ground.
+- Changed Blood Light to render more particles when the sigil is held to make them easier to find.
+- Added debug commands. These work exactly the same as in the 1.7.10 version
+- [API] Fixed AddToNetworkEvent not being cancellable even though it should be
+- [API] Helper method in NetworkHelper to obtain the highest possible capacity for a given tier.
+
+------------------------------------------------------
+Version 2.0.0-19
+------------------------------------------------------
+- Fixed path blocks so they are actually craftable.
+- Added gui stuff to enable priority in the item routing system: nodes with a lower value priority will be accessed first. (May be rotated in the future)
+- Grayed out the currently active side's button in the item routers.
+- Added Demon Pylon
+- Changed behaviour of Demon Crucible
+- Fully implemented the behaviour of the crystal growing process.
+ - A Demon Crucible will be able to syphon the demon will from the tartaric gems inside of its inventory - right click with a gem to place it into the inventory.
+ - The syphoned will from the gem will go into the chunk, staying in the air - it will not move to neighbouring chunks unless forced to do so through other means
+ - The Demon Pylon draws will in the air from surrounding chunks and puts it into its own chunk - this acts as sort of like a pressure system, where it will even out the will distribution, but only goes one way.
+ - The Demon Crystallizer takes 100 will from the air (need a demon crucible for it to work) and forms a demon crystal on top of it. There is a 10% chance that this crystal will be of a special type.
+ - The Demon Crystals can be mined in order to collect their crystals. These crystals can be used for crafting more powerful stuff. If you have over 1024 will on your person when you right click the crystal, you can harvest a single crystal instead of the entire thing.
+ - You can put the harvested crystals inside of a demon crucible. Each crystal is worth 10 will, so this acts as a way to semi-automate will creation.
+ - When a hellfire forge is inside of a chunk with demon will, it will fill its contained tartaric gem with will.
+ - Changed a few recipes (like the greater tartaric gem) to match this new system.
+
+------------------------------------------------------
+Version 2.0.0-18
+------------------------------------------------------
+- Fixed issue with lava crystal working even their is no LP available.
+- Added upgrade trainer
+- Fixed step height issue with C&B stuff. Apparently step height is now 0.6 by default instead of 0.5.
+- Added Ritual: Song of the Cleansing Soul to remove Living Armour upgrades from the armour.
+- Added Ritual: Ritual of Living Evolution, which is used to set the living armour's max upgrade points to 300.
+- Added Ritual: The Timberman to cut down trees. Requires a chest on top of the MRS in order to collect the drops from harvested trees.
+- Added Ritual: Hymn of Syphoning, which syphons up fluids around it in a 16 block radius and puts the fluid in the tank above it. The tank above it must have at least one bucket of the fluid you want to syphon inside of it.
+- Added Ritual: The Assembly of the High Altar, which places runes and blocks from the inventory above it in the world in the form of a blood altar. Autobuilding altars~
+- Added Ritual: The Gate of the Fold.
+- Added Ritual: The Filler. Places blocks from the inventory on top of it in the world.
+- Added Ritual: Le Vulcanos Frigius
+
+- Added tooltip to living armour to show the current upgrade points of the armour.
+- Added recipe for the training bracelet. Combine in an anvil with an upgrade tome to set it as the upgrade to train.
+- Ammended range of Zephyr ritual
+- Fixed Green Grove ritual
+- Fixed Crusher ritual so it didn't break everything at once.
+- Removed the FOV effect from the Quick Feet speed upgrade.
+- Minor work on the Demon Crucible.
+- Crucibles now fill the tartaric gems of close-by hellfire forges
+- Fixed rituals not correctly re-activating when taking off a redstone signal after reloading the world.
+- Added Teleposition Sigil, which teleports the user to the bound Teleposer.
+- Added Transposition Sigil, which picks up the block clicked on including the NBT of the given tile.
+
+------------------------------------------------------
+Version 2.0.0-17
+------------------------------------------------------
+- Added Living Armour Upgrades
+ - Solar Powered
+ - Grim Reaper's Sprint
+ - [Thaumcraft] Runic Shielding
+- Fixed Blood Altar's progress resetting when clicking with another item
+- Fixed Divination and Seer sigils crashing when clicking on an altar while not bound
+- Added crafting recipes for the following sigils:
+ - Compression
+ - Phantom Bridge
+ - Ender Severance
+ - Haste
+- Dagger now bypasses checks of armour
+
+------------------------------------------------------
+Version 2.0.0-16
+------------------------------------------------------
+- Fixed a major bug with the Blood Orbs.
+
+------------------------------------------------------
+Version 2.0.0-15
+------------------------------------------------------
+- Added blood lamp sigil array texture and reagent. Made it so the blood lamp sigil will place the light when right clicking on a block.
+- Added magnetism sigil array texture and reagent.
+- Added the ability for the blood altar to have its buffer tanks accessed (Semi-tested)
+- Improved readability for large numbers
+- Fixed break particle for Alchemy Array
+- Waila handling for Alchemy Array
+- Fixed Ritual eating LP when reactivated via a Redstone signal
+- Ritual Stones now always drop blank stones
+- Bound Blade is now enchant-able
+- Goggles of Revealing upgrade for Living Helmet. Combine a Living Helmet and Goggles of Revealing in an Anvil
+- Fixed config for disabling rituals
+- [API] Lots of changes to the binding system. It's now handled automatically for all items that implement IBindable.
+- Added Incense Altar system.
+- Added models for the routing nodes, incense altar, and the hellfire forge.
+
+------------------------------------------------------
+Version 2.0.0-14
+------------------------------------------------------
+- [API] Added support for some IMC methods:
+ - FMLInterModComs.sendMessage("BloodMagic", "teleposerBlacklist", ItemStack)
+ - FMLInterModComs.sendMessage("BloodMagic", "sacrificeValue", "ClassName;Value")
+ - FMLInterModComs.sendMessage("BloodMagic", "greenGroveBlacklist", "domain:name")
+- Fixed the bound sword so that it now drops weak blood shards.
+- Fixed the demon will so that you can actually pick it up!
+
+------------------------------------------------------
+Version 2.0.0-13
+------------------------------------------------------
+- Added recipes and temp textures for path blocks. More path blocks to come.
+- Tweaked the Incense altar and added its recipe.
+- Fixed Blood Light sigil not providing the right coloured particles
+- Added the ability for the divination sigil to look up information about the incense altar.
+- Fix another NPE when checking of a player has a full set of Living Armor
+
+------------------------------------------------------
+Version 2.0.0-12
+------------------------------------------------------
+- This build doesn't exist. Shhh
+
+------------------------------------------------------
+Version 2.0.0-11
+------------------------------------------------------
+- Fix NPE when checking if a player has a full Living Armor set
+
+------------------------------------------------------
+Version 2.0.0-10
+------------------------------------------------------
+- Added recipe for Sentient Armour - craft a Sentient Armour Gem and right click with it to toggle the armour.
+- Added recipes for the Greater and Grand Tartaric gems. These are temporary recipes.
+- Updated textures.
+- Added ability to fill gems from other gems. Right click with a gem to fill other gems in your inventory.
+- Un-nerfed the Ritual Stone recipe to provide 4 again
+- Rituals can now be toggled with Redstone. Provide a redstone signal to the Master Ritual Stone to turn it off.
+- Made the Sentient sword able to block.
+- Fixed the Sentient Sword so that even when not activated it will still do damage - just at a reduced amount.
+- Made it so that Demon Will will be voided if all of the player's tartaric gems are filled.
+
+------------------------------------------------------
+Version 2.0.0-9
+------------------------------------------------------
+- Fixed the rituals so that they no longer caused nausea no matter what.
+
+------------------------------------------------------
+Version 2.0.0-8
+------------------------------------------------------
+- Fixed crash when activating rituals while operating on servers
+- Added the majority of stuff for the item routing system.
+
+------------------------------------------------------
+Version 2.0.0-7
+------------------------------------------------------
+- JEI now displays more information for Altar recipes. Hover over the Altar image to view it.
+- Added particles to the Blood Altar on the server-side.
+- Allow configuration of entity sacrificial values
+- [API] Allow setting of entity sacrificial values via API. Takes precedence over config values.
+- [API] Method to easily get instances of Items and Blocks
+- [API] Allow mods to blacklist their blocks from the Green Grove ritual/sigil
+
+------------------------------------------------------
+Version 2.0.0-6
+------------------------------------------------------
+- Fixed the LivingArmourTracker for defense so that it no longer ate up armour (om nom nom nom)
+
+------------------------------------------------------
+Version 2.0.0-5
+------------------------------------------------------
+- Tweaked Sentient Sword's will drop rate
+- No longer 1.8.8 compatible
+- Cleaned some clutter from JEI
+- Added a potential fix to some server mod issues.
+
+
+------------------------------------------------------
+Version 2.0.0-4
+------------------------------------------------------
+- Added Physical resistance upgrade (Tough skin)
+- Added health boost upgrade (Healthy)
+- Added melee damage upgrade (Fierce strike)
+- Added trick shot upgrade (Have fun finding it! :D)
+- Added T5 orb recipe and Demonic Activation Crystal
+- Added Rituals:
+ - Animal Growth ritual
+ - Harvest ritual
+ - Magnetism ritual
+ - Crushing ritual
+ - Full Stomach ritual
+
+- Added parts for the new Demon Will System
+ - Added the Demon Will item
+ - Added the Sentient Sword, which will be powered by consuming demon will
+ - Added a Lesser Tartaric Gem in order to hold onto more will
+ - SSSSSSSSoooooooouuuuuuulllllllllsssssss
+ - Added Hellfire Forge block
+ - Added rudimentary snare and recipe - has 25% chance for monster to drop its soul
+ - Added Sentient Bow
+ - Added Sentient Armour
+
+- Fixed binding of togglable sigils
+- Added saving for ritual tags
+
+------------------------------------------------------
+Version 2.0.0-3
+------------------------------------------------------
+- Fixed client-side issue when shift-clicking lava crystals into a furnace while on a server.
+- Added poison upgrade to Living Armour
+- Fixed digging upgrade
+- Added self sacrifice upgrade to Living Armour (Tough Palms)
+- Added knockback resistance upgrade to Living Armour, trained via eating (Body Builder)
+
+
+------------------------------------------------------
+Version 2.0.0-2
+------------------------------------------------------
+- Added Life Essence bucket recipe
+- Added the rendering of LP inside of the altar
+- Added Living Armour including some upgrades:
+ - Added speed upgrade
+ - Added digging upgrade
+- Modified Divination Sigil recipe - no longer uses a block of glass because of issues on servers (tempramental)
+- Modified Apprentice Blood Orb recipe to require a block of redstone instead.
+- Added the Reagent Air recipe.
+
+
+------------------------------------------------------
+Version 2.0.0
+------------------------------------------------------
+
+Initial release of the open beta for the mod to Minecraft v1.8.9! This mod version has a lot of changes. Because it is a full-on rewrite, some of the mechanics of the mod have changed/are going to change. As such, the feel of the mod will be slightly different than previous iterations.
+This mod has a large amount of compatibility with the recipe look-up mod, Just Enough Items (JEI). It is VERY much recommended that you download JEI, since it will make your life a lot easier with the new mechanics.
+Because this is a beta of a rewrite, there will be a lot of missing content. I am trying my hardest to add new content as fast as I can, but my team and I are only human and can only code so fast. Please give a little patience while we make the mod the best it possibly can!
+Also, please submit bug reports or feature requests to the github, https://github.com/WayofTime/BloodMagic. We'll get to the issue soon!
+
+New
+- Added "Alchemy Array" crafting - this is achieved by making some "Arcane Ash" and clicking on the ground to create an array. You then click on the array with the first ingredient and then the second - breaking the array will give the items back.
+- Added JEI compatibility
+- Added WAILA compatibility (No more needing 3rd-party addons!)
+
+Changed
+- Lots of internals have changed. Too many to list.
+- A graphical overhaul of everything has been implemented. These textures were provided by CyanideX's Unity texture pack. BBoldt and Yulife (Inap) from the Unity team are our new permanent texture artists.
+
+Bug Fixes
+-
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 00000000..27da6a0e
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,10 @@
+# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
+# This is required to provide enough memory for the Minecraft decompilation process.
+org.gradle.jvmargs=-Xmx3G
+org.gradle.daemon=false
+
+minecraft_version=1.16.3
+
+#Mod dependencies
+jei_version=7.6.0.49
+patchouli_version=1.16.4-48-SNAPSHOT
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 3d0dee6e..7a3265ee 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index fbe9865d..1d5b29fb 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Fri Sep 26 11:20:52 CDT 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
diff --git a/gradlew b/gradlew
old mode 100644
new mode 100755
index 91a7e269..cccdd3d5
--- a/gradlew
+++ b/gradlew
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
##############################################################################
##
@@ -6,47 +6,6 @@
##
##############################################################################
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
@@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do
fi
done
SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
+cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -90,7 +89,7 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -114,6 +113,7 @@ fi
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
@@ -154,11 +154,19 @@ if $cygwin ; then
esac
fi
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+APP_ARGS=$(save "$@")
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index 8a0b282a..f9553162 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -8,14 +8,14 @@
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
@@ -46,10 +46,9 @@ echo location of your Java installation.
goto fail
:init
-@rem Get command-line arguments, handling Windowz variants
+@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache
new file mode 100644
index 00000000..6089bd47
--- /dev/null
+++ b/src/generated/resources/.cache/cache
@@ -0,0 +1,757 @@
+cb435652c27b4978d8db83af2fd531ccaa82ada7 assets/bloodmagic/blockstates/accelerationrune.json
+43be0406da1c9f7cf734427bea235a65cda073d2 assets/bloodmagic/blockstates/airritualstone.json
+5ba8e1b2a7ef85028044056cc971b8fe02ab7e7f assets/bloodmagic/blockstates/alchemicalreactionchamber.json
+4a60c54def00d68368ed0a0d4783979aa63d5f60 assets/bloodmagic/blockstates/altarcapacityrune.json
+950fff9f06033741091aa8a66a62857da673efb9 assets/bloodmagic/blockstates/bettercapacityrune.json
+8a5edb859a6f4d0adfbe2f608bab6b8c8addf01a assets/bloodmagic/blockstates/blankrune.json
+904d9baa649250571bce5f965cf48fbec69c2c1a assets/bloodmagic/blockstates/bloodlight.json
+5f3898cc4891f85091fe6104800d6c88d9e85e29 assets/bloodmagic/blockstates/bloodstonebrick.json
+631b579c38652efbcd9e5771d09ad6e476f3ba00 assets/bloodmagic/blockstates/chargingrune.json
+a35188b0244bf9808098c7d49d0af9bd32cef297 assets/bloodmagic/blockstates/corrosivedemoncrystal.json
+b943c6433f295c168841aec3c3f62e525c5c9cc9 assets/bloodmagic/blockstates/creeping_doubt.json
+a54ab8dfd36a593829dc33644c5f9dbccaaadaf3 assets/bloodmagic/blockstates/deforester_charge.json
+b696f680545dffa4d3fbcc83b4b81ab58ac69aef assets/bloodmagic/blockstates/destructivedemoncrystal.json
+6bd58d1d02a40416cec29409dee7ef80038b26d5 assets/bloodmagic/blockstates/dislocationrune.json
+0b7d0241c379d0b3a8a4fa2dae79d4f998800a1f assets/bloodmagic/blockstates/dungeon_brick1.json
+19d1da41c8b836a88ea7164b32e5a8525e5155cf assets/bloodmagic/blockstates/dungeon_brick2.json
+79853c0ffa8fd2eb9e2ddd0848c572de0cf49037 assets/bloodmagic/blockstates/dungeon_brick3.json
+1117fb4dd4f110a7b7fabae92760e0a3b949c461 assets/bloodmagic/blockstates/dungeon_brick_assorted.json
+c67498a81f8dd53770da51df45192b171cdd234c assets/bloodmagic/blockstates/dungeon_brick_gate.json
+8b568926830785a5cb848fb36d4ae01e67590501 assets/bloodmagic/blockstates/dungeon_brick_stairs.json
+6c10c79909e008b960f2d78543f55847eec7a226 assets/bloodmagic/blockstates/dungeon_brick_wall.json
+8a04e502b6965d912793699d61071e44428fceb8 assets/bloodmagic/blockstates/dungeon_eye.json
+40051ea4111a9c2fd2524d664d52f241eed5317e assets/bloodmagic/blockstates/dungeon_metal.json
+fe31978b41dc50c21f413c81410221f657fd4d23 assets/bloodmagic/blockstates/dungeon_ore.json
+388af5c6d34f62d66d987760871c64793df84a37 assets/bloodmagic/blockstates/dungeon_pillar_cap.json
+8d8d58ad890f339b75dbdfc710b30dc00eed2ef3 assets/bloodmagic/blockstates/dungeon_pillar_center.json
+48e7b0533fa722eb66956e01de661ebac6470da7 assets/bloodmagic/blockstates/dungeon_pillar_special.json
+e3f31a23580bce835115483f5790cb08bac44fe2 assets/bloodmagic/blockstates/dungeon_polished.json
+aa980029d03236ba34f53952fdadc06cf1cff245 assets/bloodmagic/blockstates/dungeon_polished_gate.json
+30c3dc138436c2a25a7fcdd7edca7f70f1adb425 assets/bloodmagic/blockstates/dungeon_polished_stairs.json
+512bd11d55934229cb464c720362949302309eba assets/bloodmagic/blockstates/dungeon_polished_wall.json
+2015a403ca2bcc73afbb4768df99554a13b171b6 assets/bloodmagic/blockstates/dungeon_smallbrick.json
+f5b4cda776f7aabe537ca843e41074c03429cdfb assets/bloodmagic/blockstates/dungeon_stone.json
+167512323d506489adb4487d3da092ceec0bd17e assets/bloodmagic/blockstates/dungeon_tile.json
+4806276351c534917c2e72f98c4618e6592b18a0 assets/bloodmagic/blockstates/dungeon_tilespecial.json
+ba1cd8a9475212843e3b26232c8a9943fa0d2d20 assets/bloodmagic/blockstates/duskritualstone.json
+bb3db171734f511fc0c259d86e869b49aa1d0c77 assets/bloodmagic/blockstates/earthritualstone.json
+e780d6d9e891082dc6ce83fde1697ce36281a02a assets/bloodmagic/blockstates/fireritualstone.json
+e2c9c08bab702938e1a861d096526f16f68f6691 assets/bloodmagic/blockstates/fungal_charge.json
+f78ce2be09ab794bf5f5679414eee0dc85cf4fb1 assets/bloodmagic/blockstates/largebloodstonebrick.json
+002795212cc7bf2cad2a91f873d85e2204c6367d assets/bloodmagic/blockstates/lightritualstone.json
+e1a98bd53fca155e4bbb03c1e548341af0f84bd7 assets/bloodmagic/blockstates/masterritualstone.json
+505e45be4a207e22433d853e5139c5b1d48c57d7 assets/bloodmagic/blockstates/nether_soil.json
+95a0c9a84139cf92c2689e53408b51619db126a1 assets/bloodmagic/blockstates/obsidianbrickpath.json
+8b0ea137c63cf3a658a03eee58ca4b2c3d996f87 assets/bloodmagic/blockstates/obsidiantilepath.json
+372ecd737f7082a4c2c70e46745f893b1179f885 assets/bloodmagic/blockstates/orbcapacityrune.json
+a2eaa9166258d7179d9e5099200f777bb9edf613 assets/bloodmagic/blockstates/rawdemoncrystal.json
+90daa355e528ab8a6582f796951201882f3c56da assets/bloodmagic/blockstates/ritualstone.json
+285618c1a8ec36e36d479f577190579ae7616529 assets/bloodmagic/blockstates/sacrificerune.json
+b03040d7a168653bf8df3600033b8fde2383db30 assets/bloodmagic/blockstates/selfsacrificerune.json
+d2e2e78bd859c321a72f40fbb17ca79292d58031 assets/bloodmagic/blockstates/shaped_charge.json
+487ffdc02ab7b65aafcb932e3b5cf6ea0500b21d assets/bloodmagic/blockstates/speedrune.json
+f1ca47098385a955155cab9c2a97219e02d390a0 assets/bloodmagic/blockstates/steadfastdemoncrystal.json
+297bc2425f7b07b1a9dd3f7f6649c44f88dbac29 assets/bloodmagic/blockstates/stonebrickpath.json
+e3256db10fc8a8ab540f6ac8d27e0f47861e817a assets/bloodmagic/blockstates/stonetilepath.json
+6989c4e23e5405772a8601ea88f071a479ed3fa9 assets/bloodmagic/blockstates/veinmine_charge.json
+48ed6b25a5d8d8074c38d772fdc27c1753d42c36 assets/bloodmagic/blockstates/vengefuldemoncrystal.json
+e6d9cf699667aaa47efff37b2b033895dee29c15 assets/bloodmagic/blockstates/waterritualstone.json
+74c889434f46e060e8f185e8ef674312eb2f1192 assets/bloodmagic/blockstates/woodbrickpath.json
+42f26f715bddd16c069f9b51e3767b36477c8908 assets/bloodmagic/blockstates/woodtilepath.json
+3c6ce233dae6c1307d9016406c324bbe844b4e1e assets/bloodmagic/blockstates/wornstonebrickpath.json
+d59655f12d1724b73b77c373fb6864fcff69db12 assets/bloodmagic/blockstates/wornstonetilepath.json
+0492479fed31666acdf2d5f3fb2dab3b6ebdf6b5 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
+3c98a88c2283ad54f0efb9d7194361bbc3e93c17 assets/bloodmagic/models/block/altarcapacityrune.json
+7cd62092c6fb3109e016d42090cf89bfa3ab7fca assets/bloodmagic/models/block/bettercapacityrune.json
+1fe0f89895addb7abcacf6ce7e39b6ddc87b0d85 assets/bloodmagic/models/block/blankrune.json
+3c83e090a1cff00e2bb2c7eb475785954b6eb980 assets/bloodmagic/models/block/bloodlight.json
+ae2ff1abd707f2193d04d235de8f0ce92ada1d0f assets/bloodmagic/models/block/bloodstonebrick.json
+320827ad2feaa51a90ebb7064a70bdc6d3765203 assets/bloodmagic/models/block/chargingrune.json
+d5d82916652aee95adb8c16c97788be0a0f9f9d6 assets/bloodmagic/models/block/creeping_doubt_1.json
+3effbe56422e18a44138e13e33eb26ba33b9381f assets/bloodmagic/models/block/creeping_doubt_2.json
+8a7e5bfc63d3de0987bd71c1237fb580a6317601 assets/bloodmagic/models/block/creeping_doubt_3.json
+8c75a72923902d5000852728436313f5979e903a assets/bloodmagic/models/block/creeping_doubt_4.json
+38d083dbe1852d6dc0995a46d63a8a6dbe2c31ac assets/bloodmagic/models/block/creeping_doubt_5.json
+ec5fcd20fee4260f131c82ec0a6558cc4e70e781 assets/bloodmagic/models/block/creeping_doubt_6.json
+f38c5b52e9215a3d819e0b35c590d8924ca84200 assets/bloodmagic/models/block/creeping_doubt_7.json
+9b332dc0443cb28c08d3af52096b7dd4fb2b68cc assets/bloodmagic/models/block/creeping_doubt_8.json
+17ed7bf0e4e0aba9fc6390c8fa46f02b63145b1c assets/bloodmagic/models/block/crystal/corrosivecrystal1.json
+0ae47095829ba2218113131f29e0a870b7ac7c71 assets/bloodmagic/models/block/crystal/corrosivecrystal2.json
+f2fa5d770d52b5888d4fcba9161bc6485938cc21 assets/bloodmagic/models/block/crystal/corrosivecrystal3.json
+f3f58ce78925d6c5e9c3beaa325f75084b9fab7c assets/bloodmagic/models/block/crystal/corrosivecrystal4.json
+ca4af4bd7d6bfefbdb925aafe9d7ea80b18eaa3a assets/bloodmagic/models/block/crystal/corrosivecrystal5.json
+1e0d6dc84398a2e12d177578c6c798b2c22ca95c assets/bloodmagic/models/block/crystal/corrosivecrystal6.json
+302703cfe171a5f5bca492eb781ab3f3fd1c5cc1 assets/bloodmagic/models/block/crystal/corrosivecrystal7.json
+6e4a3ba1cbd063757f2781e61bfae1b6191f750f assets/bloodmagic/models/block/crystal/defaultcrystal1.json
+c41eee3071f1c1b27548eed79d333ab40d18a993 assets/bloodmagic/models/block/crystal/defaultcrystal2.json
+3cf921a7416da052e2879cf0daae21144a40fa98 assets/bloodmagic/models/block/crystal/defaultcrystal3.json
+6019d4e18f271f67b970c4e9b140ff96dc2c26fb assets/bloodmagic/models/block/crystal/defaultcrystal4.json
+a106985d414ba63680da8a6b1abe77a0406adcc7 assets/bloodmagic/models/block/crystal/defaultcrystal5.json
+8c3307e3ef8f44eb95c70774e32989454da8b675 assets/bloodmagic/models/block/crystal/defaultcrystal6.json
+592af0e2cf2849bd0581a43271d391a9ddbc6fb0 assets/bloodmagic/models/block/crystal/defaultcrystal7.json
+f688ae826b9f42b092d8de2e419f67f8049a5d00 assets/bloodmagic/models/block/crystal/destructivecrystal1.json
+e27df3ee62984fc10026e721b262c89db95f2b40 assets/bloodmagic/models/block/crystal/destructivecrystal2.json
+df186d5bbcb608d7e91b2a67ab7fc347aa715a34 assets/bloodmagic/models/block/crystal/destructivecrystal3.json
+c4839ceb06d5a22aa47c71e1a7d7dfd12a7af68c assets/bloodmagic/models/block/crystal/destructivecrystal4.json
+091b5b1986e7542485c7d03419baf6f3f81fd8cb assets/bloodmagic/models/block/crystal/destructivecrystal5.json
+cf05718711393bf322680bc24897ba82bafd1f53 assets/bloodmagic/models/block/crystal/destructivecrystal6.json
+a66d5091e5241479e512a3a71aba67d93992f32b assets/bloodmagic/models/block/crystal/destructivecrystal7.json
+47d8fa9891d7baad8a17df455fd6d9baf6da56de assets/bloodmagic/models/block/crystal/steadfastcrystal1.json
+6bbd2e8584e783e07390b0f30d0f3fbb2782f663 assets/bloodmagic/models/block/crystal/steadfastcrystal2.json
+0883e99e1d5fa81d2ea0212ab8e9f4d5313717f4 assets/bloodmagic/models/block/crystal/steadfastcrystal3.json
+c0a2ec89a412ce6dc078697f6ab92944a8a65cd9 assets/bloodmagic/models/block/crystal/steadfastcrystal4.json
+b8d576ca3daf0b597b222f9d0645526e1d8a65be assets/bloodmagic/models/block/crystal/steadfastcrystal5.json
+1e6b6825d373b1532d2458e6122a9869153d3776 assets/bloodmagic/models/block/crystal/steadfastcrystal6.json
+2478650854e8e82b46bfb58754004e89771636fc assets/bloodmagic/models/block/crystal/steadfastcrystal7.json
+dc2fff8fbabd58db8c0f2fb83d3d68446e324389 assets/bloodmagic/models/block/crystal/vengefulcrystal1.json
+623e226eb28df9d7e2311ed6c68fba0835c80785 assets/bloodmagic/models/block/crystal/vengefulcrystal2.json
+fe8271e4e815de11cd617179dedface57bd8c696 assets/bloodmagic/models/block/crystal/vengefulcrystal3.json
+658bcbf2eadb0e2b442668e47b8a3a0fc684a57f assets/bloodmagic/models/block/crystal/vengefulcrystal4.json
+825352d6cdd314dd4cb775062757e2b8eb39f5d7 assets/bloodmagic/models/block/crystal/vengefulcrystal5.json
+9603b46cb4ebc567878ca5f54fe96e1199f34d0c assets/bloodmagic/models/block/crystal/vengefulcrystal6.json
+ecf64f8c06743f0c2752e32a67753c0d5f9f67a1 assets/bloodmagic/models/block/crystal/vengefulcrystal7.json
+c75695cf399d96d66914ab7dcfe1fe6bf171d6b9 assets/bloodmagic/models/block/deforester_charge.json
+6adbeedc17f649ef47419845a6da0d50cfc76742 assets/bloodmagic/models/block/dislocationrune.json
+313607b36c7c30073bbc64d3130f15b5871c5cd3 assets/bloodmagic/models/block/dungeon_brick1.json
+55a9c171872cf9fb40c06dc2e9e826223a9096e0 assets/bloodmagic/models/block/dungeon_brick2.json
+ff6727ee9a149e89deef8d666f373bdb4e68a545 assets/bloodmagic/models/block/dungeon_brick3.json
+5b95b5519b04dec4f87ad7d287e3e1fa344725d8 assets/bloodmagic/models/block/dungeon_brick_gate.json
+3de5c424b0928c220bf2073ee6aca5dbf4f379bb assets/bloodmagic/models/block/dungeon_brick_gate_open.json
+daaeb0a0adb39fb6df3c6e6d380b34efd14bf4ce assets/bloodmagic/models/block/dungeon_brick_gate_wall.json
+62ecdb415d060bf8a815f57fcf4c56b1e788f8f2 assets/bloodmagic/models/block/dungeon_brick_gate_wall_open.json
+d40eb07dfa8b700d08a7f4c3739f4b6eef0bc95f assets/bloodmagic/models/block/dungeon_brick_stairs.json
+df27c2b4e3345199ba29e16cddffcb86efe457b5 assets/bloodmagic/models/block/dungeon_brick_stairs_inner.json
+2fbb36a96684b4acc57e551ac1f971878685a2aa assets/bloodmagic/models/block/dungeon_brick_stairs_outer.json
+ffb2021036b74d29fca5fc706885f3e1399c2950 assets/bloodmagic/models/block/dungeon_brick_wall_inventory.json
+70508a960748a3f62a11b1a7277977f0256be58a assets/bloodmagic/models/block/dungeon_brick_wall_post.json
+a7d371e5d0efefae2729131bda16120bfe477bb8 assets/bloodmagic/models/block/dungeon_brick_wall_side.json
+bd152efd619489661cac86a80190bf9e88c86363 assets/bloodmagic/models/block/dungeon_brick_wall_side_tall.json
+19ae530a34eb5cee35dc7b9cdd51c9c2d61fdc9e assets/bloodmagic/models/block/dungeon_eye.json
+72d70f0acb18b765340167559c10b027bd98673a assets/bloodmagic/models/block/dungeon_metal.json
+61eb4e5ede53a8278d2d95fbeb40dc01424f2895 assets/bloodmagic/models/block/dungeon_ore.json
+a4449c1d14c46bcda58b542c3efdddadff15bedc assets/bloodmagic/models/block/dungeon_pillar_cap.json
+1752cc99d0c334016bebd0e8027b8abe3ca5d7e8 assets/bloodmagic/models/block/dungeon_pillar_cap_down.json
+f171162bb4b86e70f2b2f13f3393704d295a4d86 assets/bloodmagic/models/block/dungeon_pillar_cap_east.json
+c340c5e6c593cec4d342b36097fe7cca85ad647b assets/bloodmagic/models/block/dungeon_pillar_cap_north.json
+c8ee14fcf2f46c755b47cc407e3cd0dbe7a477f9 assets/bloodmagic/models/block/dungeon_pillar_cap_south.json
+4ac68eafddb0c99ad884af596bc48cd63af5a021 assets/bloodmagic/models/block/dungeon_pillar_cap_west.json
+e6f858e8aa3c4bf2189885400a76892e707f5403 assets/bloodmagic/models/block/dungeon_pillar_center.json
+12209619fc1d437d9339402ce437e6c9b2f3c02b assets/bloodmagic/models/block/dungeon_pillar_center_x.json
+a4223ff2570f04a4a5d068944e8964811a62e92a assets/bloodmagic/models/block/dungeon_pillar_center_z.json
+5b884f4ad41e9f0ba94a1a91938af497d3dde49b assets/bloodmagic/models/block/dungeon_pillar_special.json
+eb4237db6507002305969c55ba64c9e19fe90357 assets/bloodmagic/models/block/dungeon_pillar_special_x.json
+29736a69c3d5eef5b11befa0be27ddd274abc29e assets/bloodmagic/models/block/dungeon_pillar_special_z.json
+a0aabc2be78af27e620e82d9f9b877dc99ae2798 assets/bloodmagic/models/block/dungeon_polished.json
+05b4a25735c96036005bea06e013651a8aac5641 assets/bloodmagic/models/block/dungeon_polished_gate.json
+fd32ed9981b8164f88319b66811f8e6d41ec8470 assets/bloodmagic/models/block/dungeon_polished_gate_open.json
+590dbd87da39d8dc0f03dd274e46e5fec55a6ab0 assets/bloodmagic/models/block/dungeon_polished_gate_wall.json
+9b86f7cfcf9b539090a49fe213ca76eb4295a7cd assets/bloodmagic/models/block/dungeon_polished_gate_wall_open.json
+a9871493a35453a0f0cf1f5ff3e54f646325c2cf assets/bloodmagic/models/block/dungeon_polished_stairs.json
+b073d62667acc4d278b96efcfbb929e4c70afe22 assets/bloodmagic/models/block/dungeon_polished_stairs_inner.json
+fc4b1f91035eab88ea3178713ff950dce2637e41 assets/bloodmagic/models/block/dungeon_polished_stairs_outer.json
+f5176982c9143ec07275349178617102af40ebeb assets/bloodmagic/models/block/dungeon_polished_wall_inventory.json
+eb1252284b87f352e5d7eeae48d57e189f25340f assets/bloodmagic/models/block/dungeon_polished_wall_post.json
+3c060012163a8c95532b85010773326a28e6f30e assets/bloodmagic/models/block/dungeon_polished_wall_side.json
+6b5d875b69643f9daa4302a317ef3863fcce1a91 assets/bloodmagic/models/block/dungeon_polished_wall_side_tall.json
+ef2a677751c2ae6c3cec9b905c28aeb615ea03e7 assets/bloodmagic/models/block/dungeon_smallbrick.json
+84555e144215de4477ab826420400747b11edf9a assets/bloodmagic/models/block/dungeon_stone.json
+d4e4cbb3a24e069a8e6c8e60764f8bbb7b3adb2b assets/bloodmagic/models/block/dungeon_stone_mirrored.json
+8a922c0105191857905467f048aa40221cb34853 assets/bloodmagic/models/block/dungeon_tile.json
+3895234c0c49d936ad0ad420dedd3669999b8a81 assets/bloodmagic/models/block/dungeon_tilespecial.json
+81313327125e6e7396df0408595228bf0f63e1c9 assets/bloodmagic/models/block/duskritualstone.json
+c30064f4aa09c42d23e94d118ae5b148eadb3a6c assets/bloodmagic/models/block/earthritualstone.json
+44c4d3178261b3756987643b62f263c91fa74198 assets/bloodmagic/models/block/etherealopaquemimic.json
+4ff1cab1014cd8f655e5f032ecf60dd371f421c3 assets/bloodmagic/models/block/fireritualstone.json
+0fb05dea521223c58619fd71ccc2bcdf82ba7563 assets/bloodmagic/models/block/fungal_charge.json
+d6bf1482345199e7d056a60865024ea5d480b986 assets/bloodmagic/models/block/largebloodstonebrick.json
+2e1a81c758bfeec2aee807b48239f23241302268 assets/bloodmagic/models/block/lightritualstone.json
+eab1713a8879decb2ae05258a6bcfa9da78ec67b assets/bloodmagic/models/block/masterritualstone.json
+c0e0f918b237d2f25718bae4774750b90a88de7b assets/bloodmagic/models/block/nether_soil.json
+1e354903812e9cf8e2fea26b908430d7e1cf20a9 assets/bloodmagic/models/block/obsidianbrickpath.json
+71893b8b185c2b0f64f21b7dc6c4f2850f936206 assets/bloodmagic/models/block/obsidiantilepath.json
+c3a813b735cd229f8597e41d04465926b2e65fe1 assets/bloodmagic/models/block/orbcapacityrune.json
+9b2bf2a44b788cbaecbe63a3e085e8de76672e1b assets/bloodmagic/models/block/ritualstone.json
+a8a1d06fcc2f8395530c72d2846133fff37d5537 assets/bloodmagic/models/block/sacrificerune.json
+791c9f2e27215ff0a45eed7efe385276bfc09aed assets/bloodmagic/models/block/selfsacrificerune.json
+d6238c0661560abd991d534ef6c8836f4655a7e7 assets/bloodmagic/models/block/sentientmimic.json
+04a1e67d1587be970310912849119903b99412ef assets/bloodmagic/models/block/shaped_charge.json
+6556131b1aeb25dc67daf31a1ecdb3ce23e718d4 assets/bloodmagic/models/block/solidclearmimic.json
+88b9f25444280d323fff11046d4d3a3af11265e8 assets/bloodmagic/models/block/solidlightmimic.json
+23d937795efdb02507d301c459e52cd4b0cfa5cb assets/bloodmagic/models/block/solidopaquemimic.json
+65fe5e01ed2660e45a5c329ff2389a87e4d791ec assets/bloodmagic/models/block/speedrune.json
+c5d2b0e33500a5c51046cd606e0d1272ec0dddd6 assets/bloodmagic/models/block/stonebrickpath.json
+359e28e79778961f57c6369b5d1b68218972fccb assets/bloodmagic/models/block/stonetilepath.json
+d8c8cb24e0e8479ec620b4cd8d5a6f5abb1a2dcb assets/bloodmagic/models/block/veinmine_charge.json
+6041f2e47f5437d90a58586e42d18dadc42df439 assets/bloodmagic/models/block/waterritualstone.json
+d77cdb168a084aeb962be6ad7b4f41b181837be6 assets/bloodmagic/models/block/woodbrickpath.json
+e54a4f2b3cd405c69782662b1b0d57e24f7c2524 assets/bloodmagic/models/block/woodtilepath.json
+ee59117289640eaebf7a9d7f629dd584ac3ed50f assets/bloodmagic/models/block/wornstonebrickpath.json
+bee51abed529a89ad088b2cb89a4c1d0de541bf1 assets/bloodmagic/models/block/wornstonetilepath.json
+9462d62d9bc9408359d30728de8651dc104aacf1 assets/bloodmagic/models/item/accelerationrune.json
+28dc926a434253f140a7c4eece1522a64a7cccae assets/bloodmagic/models/item/activationcrystalawakened.json
+3f64f82051888db51f30a75c41e1d249d7899235 assets/bloodmagic/models/item/activationcrystalcreative.json
+10fa1f758c52f639880607bfaac3ced18b8b91ae assets/bloodmagic/models/item/activationcrystalweak.json
+fe8e3deb3ad0107ca3ebd70694c1fc55a987d912 assets/bloodmagic/models/item/airritualstone.json
+33074d865864911fcaf65e6d56430e87d466a1b8 assets/bloodmagic/models/item/airscribetool.json
+60487d07a2fc1af61993e6bbebf012cf20aa3edd assets/bloodmagic/models/item/airsigil.json
+92cc51b70ce22796804d093e3fc21141658f85fd assets/bloodmagic/models/item/alchemicalreactionchamber.json
+f150f178edf7d6d250bcfd84af1c28a21cff09c6 assets/bloodmagic/models/item/altarcapacityrune.json
+cb96caeaa30f168d03a7763f06fdff9fe47d29c5 assets/bloodmagic/models/item/apprenticebloodorb.json
+5ae6e2eedcbf4a58b2e437aae2304e8171e05689 assets/bloodmagic/models/item/arcaneashes.json
+69dc96914b3f5c8f672bbaca16720ffef951c179 assets/bloodmagic/models/item/basemonstersoul.json
+975b721b2a1b40b4d3b3bf20d17329476f4bfc98 assets/bloodmagic/models/item/basemonstersoul_corrosive.json
+318e954cc662ea33e30dad9bdff5e73b1da3b129 assets/bloodmagic/models/item/basemonstersoul_destructive.json
+366657ca2747a4c8f9521c5b0b8f439d7880fcce assets/bloodmagic/models/item/basemonstersoul_steadfast.json
+af6319be25a2aeadf7366c6f4b83a6c8e9e07343 assets/bloodmagic/models/item/basemonstersoul_vengeful.json
+f5a0419f239ff5079b60011adb903a126265942e assets/bloodmagic/models/item/basiccuttingfluid.json
+d3c33ff908880e7abc8a2cd977304419ec48a23d assets/bloodmagic/models/item/bettercapacityrune.json
+7a1c55d55fe59d8a70bc2a867d127cb303c1ba23 assets/bloodmagic/models/item/blankrune.json
+db9d31cae77018833be0e4d38db84d75adeb30a1 assets/bloodmagic/models/item/blankslate.json
+c801f34e88224f9fabd89245f9d2a0d9ef466b64 assets/bloodmagic/models/item/bloodlightsigil.json
+c795d1b7aa99ce27da63868f81bac615cf199c66 assets/bloodmagic/models/item/bloodstonebrick.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/bow_power_anointment.json
+7315e49149eca494e6b132d383082cb76fc9c0e4 assets/bloodmagic/models/item/chargingrune.json
+8c84f53166f2fdf7eaac4b6dc45402e3fa5b18d9 assets/bloodmagic/models/item/coalsand.json
+3636c40fafa385642db14ca5f09d68e547060c4d assets/bloodmagic/models/item/corrosivecrystal.json
+e8bdf0e3f557bb09c665312df380672e676f4382 assets/bloodmagic/models/item/corrosivedemoncrystal.json
+470406aa7191f99f8b8d144fa0b1c314bdc10f11 assets/bloodmagic/models/item/corrupted_dust.json
+1136b546d2cf73fc0f419447f7c328b8e2083323 assets/bloodmagic/models/item/corrupted_tinydust.json
+9b332dc0443cb28c08d3af52096b7dd4fb2b68cc assets/bloodmagic/models/item/creeping_doubt.json
+7b4471ae902c8e96a3730a86e1b15fb5c13aeec7 assets/bloodmagic/models/item/crystalline_resonator.json
+5414b42d1246ff780f15ebd42212f19e90891daa assets/bloodmagic/models/item/daggerofsacrifice.json
+08e573e533ecbfed2a734691608abe0119f3f3e3 assets/bloodmagic/models/item/defaultcrystal.json
+cad1aef333d131d77b7960f5dc295694baeead1c assets/bloodmagic/models/item/deforester_charge.json
+6353ff212d21942d3fcbf7ea0cedd027e831059f assets/bloodmagic/models/item/demonslate.json
+fd9ec2b5fe4436363ae5058b6ff9d77bd81ce85d assets/bloodmagic/models/item/demonwillgauge.json
+51f65b07ce2ff59d740e28a27a039bd0022c367f assets/bloodmagic/models/item/destructivecrystal.json
+3e952fc5e87bd7883dadd761ef708ddfac29638c assets/bloodmagic/models/item/destructivedemoncrystal.json
+7af07ab578bbd20e2f834b26d9cafb5fe23bc7d4 assets/bloodmagic/models/item/dislocationrune.json
+d57d9bcecc2580bdc009e1cd2b4a87cc39b4bca9 assets/bloodmagic/models/item/divinationsigil.json
+f866879eed9f1bd7eebac14495de599ca3ad855d assets/bloodmagic/models/item/dungeon_brick1.json
+78f206d696acf10f082a34c7ec2fdbddc321231a assets/bloodmagic/models/item/dungeon_brick2.json
+52f18a291e92fe5218dd4abacdabdc106dc2d380 assets/bloodmagic/models/item/dungeon_brick3.json
+f866879eed9f1bd7eebac14495de599ca3ad855d assets/bloodmagic/models/item/dungeon_brick_assorted.json
+1a1ab86e948d6f2a7e928750d5442fff1edb4c19 assets/bloodmagic/models/item/dungeon_brick_gate.json
+2ec6a2c66e88981ff54e74035bb3adb1ec4f6396 assets/bloodmagic/models/item/dungeon_brick_stairs.json
+098a26f4e9222c801f9a17a6db1b266ad4085003 assets/bloodmagic/models/item/dungeon_brick_wall.json
+0a48c4fd74036702ae2d72a9b2333c2bdf5ab31b assets/bloodmagic/models/item/dungeon_eye.json
+e5b467f756ccc4d3ab42a1249864d47f2b9c4587 assets/bloodmagic/models/item/dungeon_metal.json
+95a45fae0890e626aa5e5ff85b9884bd30087244 assets/bloodmagic/models/item/dungeon_ore.json
+ba5c610437b7d3a84820109c32d204310ff41fd7 assets/bloodmagic/models/item/dungeon_pillar_cap.json
+d098a544e7b9918a45106c2cbc5e10baea66502a assets/bloodmagic/models/item/dungeon_pillar_center.json
+5284f1cc7508546c66669564182fe5056053333d assets/bloodmagic/models/item/dungeon_pillar_special.json
+9e876e438fa9bac067f6b3af4904e6bbd24044c8 assets/bloodmagic/models/item/dungeon_polished.json
+9a7bf4c6c15f2a6e39588b1b8aed7988a7713a02 assets/bloodmagic/models/item/dungeon_polished_gate.json
+477cd98babad0a71ccfcc9e541169fe9bc31d8d1 assets/bloodmagic/models/item/dungeon_polished_stairs.json
+f3b763d6edc3c75655797481f05e02d409f481d9 assets/bloodmagic/models/item/dungeon_polished_wall.json
+2ecba4811bd02698f6a34b5cdd9160426f7bda63 assets/bloodmagic/models/item/dungeon_smallbrick.json
+2d7a8a3ed9f91a5bf5c277c6342c69e97692d347 assets/bloodmagic/models/item/dungeon_stone.json
+717a9dcc833d1fbea4e5f989f45f46268d4ffe37 assets/bloodmagic/models/item/dungeon_tester.json
+6186d2045f87b1e6cc7006226993a93b63d650ff assets/bloodmagic/models/item/dungeon_tile.json
+21e8a4fa93ba249684e0624a10a6f0f00ff6d194 assets/bloodmagic/models/item/dungeon_tilespecial.json
+10aceefca3ad3f0da773cb317c4effc6c06051ea assets/bloodmagic/models/item/duskritualstone.json
+1f8ce936602a2e55ecf05b926734099c057733e5 assets/bloodmagic/models/item/duskscribetool.json
+4d56efd7fdbf430f49903ce201577047687c3804 assets/bloodmagic/models/item/earthritualstone.json
+b29b6d11b54e98dbfbeb9d677298e6ca95bf2ca2 assets/bloodmagic/models/item/earthscribetool.json
+cdbaaf8662f2e855a34a66f28e49403c4ea9a45e assets/bloodmagic/models/item/ethereal_mimic.json
+c5a3b58c52f75650ae38391841b21ad1cb0855f9 assets/bloodmagic/models/item/etherealslate.json
+64529fc174f49c6eabca127ebdd287ff77a7ed63 assets/bloodmagic/models/item/experiencebook.json
+dbd20c2ac822262cc368fd7d649de67c754e693d assets/bloodmagic/models/item/explosivepowder.json
+c36bde4f98c0aeb3bf0f369ad3bc067e5f0dc916 assets/bloodmagic/models/item/fireritualstone.json
+0a3dcea188a3e5cf5f7c9a2cc4ad62667ac5821b assets/bloodmagic/models/item/firescribetool.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/fortune_anointment.json
+0392d220dc92ab8abad335e620b011e000b61ef9 assets/bloodmagic/models/item/fragment_netherite_scrap.json
+4228d831053597cbb7d7e5fb68b7a6dbf1dbf977 assets/bloodmagic/models/item/fungal_charge.json
+27ce75b6179a4620fd23aa07568c47fad36a14eb assets/bloodmagic/models/item/furnacecell_primitive.json
+72386afa0dcb2444a8072d1618425038c73106c7 assets/bloodmagic/models/item/goldfragment.json
+2bf9f4f4901425531903ace1cebee594bc37e55a assets/bloodmagic/models/item/goldgravel.json
+bad504721d3bfd106869df9902bac0aa4001a1a7 assets/bloodmagic/models/item/goldsand.json
+ebb91dfd0f28c439478b5f041b127aefa00ae583 assets/bloodmagic/models/item/gravel_netherite_scrap.json
+44663089f348642bcca1c5020b5081c3ab172f92 assets/bloodmagic/models/item/growthsigil.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/hidden_knowledge_anointment.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/holy_water_anointment.json
+f68825f667ca73b4373fd5068a47f0d1ca9b2aad assets/bloodmagic/models/item/icesigil.json
+5d151f9d9007fb7459dde9f2d5c182b9b6aa06e0 assets/bloodmagic/models/item/infusedslate.json
+59940408324c0379fa791a58f4a81781d06d1257 assets/bloodmagic/models/item/ingot_hellforged.json
+80c575c613c1696069284224fe2c711c343bb0be assets/bloodmagic/models/item/ironfragment.json
+4b803c1c838284d78474bab0f8ced938985dd958 assets/bloodmagic/models/item/irongravel.json
+d83040a473f44ff2fd9d290f3fd6ef0d8b9f3114 assets/bloodmagic/models/item/ironsand.json
+9b9fc4a11a187257d30334cd3faa949790b6ca29 assets/bloodmagic/models/item/largebloodstonebrick.json
+ffc3da1cbb86adc5aec7dfd503d23af319aec529 assets/bloodmagic/models/item/lavacrystal.json
+12360580230f4eab90dbe7de3d5bbf79e2338b03 assets/bloodmagic/models/item/lavasigil.json
+5a76914a87fc9b99079bb6afed1d4cfe3e4a532e assets/bloodmagic/models/item/lightritualstone.json
+0d6c9d3b2ec30835ef74b6d6e8184074ac0861b8 assets/bloodmagic/models/item/livingboots.json
+dd50db84188025895693164736f4799e75b8c7a9 assets/bloodmagic/models/item/livinghelmet.json
+e39cf255d5c8873e02d1f2df2c829d0858df25e3 assets/bloodmagic/models/item/livingleggings.json
+45756697d2f012fcc2de5fead120768a87655662 assets/bloodmagic/models/item/livingplate.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/looting_anointment.json
+7211624c82431d12dd21b3de262f4f332a69e0e1 assets/bloodmagic/models/item/magicianbloodorb.json
+2b760616f7dad714accf1249b85eec4761f69706 assets/bloodmagic/models/item/masterbloodorb.json
+9e377ab2c131993f96ab6fb544bda4dbba0ab87e assets/bloodmagic/models/item/masterritualstone.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/melee_anointment.json
+3d5c71d1f24ebcc65db48765b56db60d64673a0d assets/bloodmagic/models/item/mimic.json
+7596826c5b40c2809eb0a42eb5f5f2089290e3e5 assets/bloodmagic/models/item/miningsigil.json
+9010fdcefb80ed0db271b41263412a1673c6c311 assets/bloodmagic/models/item/nether_soil.json
+eaa0548775c3d5839b46d333af33f815dc6dd0fe assets/bloodmagic/models/item/obsidianbrickpath.json
+cf066d15baae650a383240a91240abd335bbb0e3 assets/bloodmagic/models/item/obsidiantilepath.json
+ff9b802098659824626dc90dbb5a0d8960234228 assets/bloodmagic/models/item/orbcapacityrune.json
+d5fd516b1cf94ab01d5b1fbe554705215f21ff66 assets/bloodmagic/models/item/plantoil.json
+abdd58730704a0936783c6752098a9fec1e3f18d assets/bloodmagic/models/item/primitive_crystalline_resonator.json
+f3dd3ad67c86895983e3cf0f21e44d0f4046962e assets/bloodmagic/models/item/primitive_explosive_cell.json
+0a88f03b48e0032f7ed7878212b0b01a930186d0 assets/bloodmagic/models/item/primitive_hydration_cell.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/quick_draw_anointment.json
+63fe86d0faf9aa03a513221a6a12828a886b1301 assets/bloodmagic/models/item/rawdemoncrystal.json
+6f5418ed5739381e95b4d3b33f3e2924a6233941 assets/bloodmagic/models/item/reagentair.json
+0f3fbea424448d41cac91bc479d9235def615af7 assets/bloodmagic/models/item/reagentbinding.json
+df9beacb97275ffaa7f186778d94ad11138dffe3 assets/bloodmagic/models/item/reagentbloodlight.json
+ba57b2a11a0920e7a4df894c6fbae38bf2a6e0ce assets/bloodmagic/models/item/reagentfastminer.json
+f9a2fbb703e22dee4ae74daff99249e5f22caa0f assets/bloodmagic/models/item/reagentgrowth.json
+a0e2480efd5433e9ead1ef87c2b31b0dbbc7ecb6 assets/bloodmagic/models/item/reagentholding.json
+2f8cfb7f2c9cb3dd62a007c2ec56f585414149d8 assets/bloodmagic/models/item/reagentlava.json
+2a07dc18d2d8166815c29aa989ccd0093d5d112b assets/bloodmagic/models/item/reagentmagnetism.json
+7ce18ad9b0de94a3fc5abf03c6726c8cc4cf5524 assets/bloodmagic/models/item/reagentsight.json
+7aa180a374f6a60f0525659c90f386a9df7bedcd assets/bloodmagic/models/item/reagentvoid.json
+d6fefc8d0d11bcc40ec6c9fa41e8e9402274251a assets/bloodmagic/models/item/reagentwater.json
+98783464efdcbcaf2f457dfafc4a126f57454f8c assets/bloodmagic/models/item/reinforcedslate.json
+8c473f375d7e45adb82f615a6d9e6dea312f57bd assets/bloodmagic/models/item/ritualdiviner.json
+152682fd87d660cb06931b65d7a402ccd332a21a assets/bloodmagic/models/item/ritualdivinerdusk.json
+2722891c9c40b124d85bf9ff8eb885e175f5e6ff assets/bloodmagic/models/item/ritualstone.json
+7f7c3f406430ca088c3993c1347c2219b287498e assets/bloodmagic/models/item/ritualtinkerer.json
+db73abb3bcb1731b6fc389e3577910b6aab87b10 assets/bloodmagic/models/item/sacrificerune.json
+7d0c46410e4e256bd88f9220cd3eaf948a4b715f assets/bloodmagic/models/item/sacrificialdagger.json
+9a67ae7be820dca31446758377677cc2c906ab80 assets/bloodmagic/models/item/saltpeter.json
+db66835b16edd296fe71a63a2f195ffdc9e97519 assets/bloodmagic/models/item/sand_hellforged.json
+1e7fca5638c09e4c46f9e65854bc0316d8142361 assets/bloodmagic/models/item/sand_netherite.json
+eb098783e91a17d07429d9006fb09bf056350e57 assets/bloodmagic/models/item/sanguinereverter.json
+b6e98c7b1789654fe7ff559e95011c0a28c58bc1 assets/bloodmagic/models/item/seersigil.json
+cc71421e98ee7ee047a4cfbb6cb69529c2b02d4e assets/bloodmagic/models/item/selfsacrificerune.json
+7f0256ef2f219d92882e759677399050b0776d64 assets/bloodmagic/models/item/shaped_charge.json
+6cc73920a09d4d6925154732f4064d8d03590f25 assets/bloodmagic/models/item/sigilofholding.json
+ea5747638d0b5dcc03f008b202cc60a11e0827bb assets/bloodmagic/models/item/sigilofmagnetism.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/silk_touch_anointment.json
+96eca80edd26a325bd65f325f4c3d651b1080912 assets/bloodmagic/models/item/slate_ampoule.json
+08bee690d5092e3c9e6c04c43f50af668fdb3b7e assets/bloodmagic/models/item/slate_vial.json
+dd4a590f68820a04ca4a71df507e8a39ca6bd393 assets/bloodmagic/models/item/smelting_anointment.json
+db0f63198089161b8d4ecfb1ec8a45f7dc5ba83d assets/bloodmagic/models/item/soulaxe.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
+c873e91c70eef9ad4c39aeb2fe8b9aa16a26cccd assets/bloodmagic/models/item/soulpickaxe.json
+5682770badd4dbc1ae533de0ce0f9a7cd0b2aeea assets/bloodmagic/models/item/soulscythe.json
+bde2befafc97fd89a428dfa3f39fc970e9a3ae29 assets/bloodmagic/models/item/soulshovel.json
+7b375670d1fa52a3585907d3e880863dbcc04b32 assets/bloodmagic/models/item/soulsnare.json
+fe2b201007c974229509f6900c6eb8b03d158b0a assets/bloodmagic/models/item/soulsword.json
+52d21027ac6fed000e77b5e8ad9102319b25cb33 assets/bloodmagic/models/item/speedrune.json
+36e0914768c8b3eb3b80702280ca74bbd8546623 assets/bloodmagic/models/item/steadfastcrystal.json
+6968a3d0c3bbeac8ea4cb2c050e28506e8938851 assets/bloodmagic/models/item/steadfastdemoncrystal.json
+29009ca92dc30e1ec4ae1d454cd3f8726d8edc3c assets/bloodmagic/models/item/stonebrickpath.json
+2dc28b0e2b7ae7bb0bcf8c8e74b9ba7c800446ff assets/bloodmagic/models/item/stonetilepath.json
+1992b3655f7bbca8b7aac7c53f1a0e7b1ab3124d assets/bloodmagic/models/item/sulfur.json
+451fa4812d23a207882eb95d89673b1e4c2dd257 assets/bloodmagic/models/item/throwing_dagger.json
+4f4e6c72a160eb635bdf78ed0a6ba5765fbf51ea assets/bloodmagic/models/item/throwing_dagger_syringe.json
+d13731c45f6dd23b8e70d2a75d4068bdae88ef5c assets/bloodmagic/models/item/upgradetome.json
+e8fe01c5cddc268538681889f3161472a8f1c8ad assets/bloodmagic/models/item/variants/growthsigil_activated.json
+20c802279de4df496057795c2e891fa54a21376f assets/bloodmagic/models/item/variants/growthsigil_deactivated.json
+2778ea3a62ce6dd718a557beee7b5329bb185ff9 assets/bloodmagic/models/item/variants/icesigil_activated.json
+11f5516cea8ac65bbb0f5958d6492170482ae8d8 assets/bloodmagic/models/item/variants/icesigil_deactivated.json
+be3772fd711ccf4a2adfad122a8b39e8a36e874a assets/bloodmagic/models/item/variants/miningsigil_activated.json
+7dec45f3167426d975564692a80196cdb3f4bdb4 assets/bloodmagic/models/item/variants/miningsigil_deactivated.json
+9403d6195d4d38d5876c2a42f4edfb9bdcd05210 assets/bloodmagic/models/item/variants/sacrificialdagger.json
+89ea1f760bac680b1baa98536d6bc407e347676e assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json
+79c61e61656a934397c92626809c1869b0617fc3 assets/bloodmagic/models/item/variants/sigilofmagnetism_activated.json
+129ace1f4a25f22bd09215603248a25adcf234e0 assets/bloodmagic/models/item/variants/sigilofmagnetism_deactivated.json
+81e1cb0664f53f30ad195fc4330786b71db9e20c assets/bloodmagic/models/item/variants/soulaxe.json
+2254b45194021cdd3fbc7d384d958b031a8e7cea assets/bloodmagic/models/item/variants/soulaxe_corrosive.json
+c11750d01a720a1b0eca0610ec12cba0fef4d5da assets/bloodmagic/models/item/variants/soulaxe_destructive.json
+368e428410c7c6d6bf444970221bb5ebe5f6bacd assets/bloodmagic/models/item/variants/soulaxe_steadfast.json
+267875926ed261400a10371e044e9f54aafa637a assets/bloodmagic/models/item/variants/soulaxe_vengeful.json
+cddaa2be8db3aff90933fb772b92cab735ebf11e assets/bloodmagic/models/item/variants/soulgemcommon.json
+874aa708d02de2315e29033b2f67fd313edc8aff assets/bloodmagic/models/item/variants/soulgemcommon_corrosive.json
+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
+1ef6dd3ceed7f6ffd3e91283146fbe3f6db46d10 assets/bloodmagic/models/item/variants/soulgemlesser_steadfast.json
+7801bda9366c21aad10137d30151ac4154acbea1 assets/bloodmagic/models/item/variants/soulgemlesser_vengeful.json
+0b37376d07ecf8ff91df345435abd5d94d28714e assets/bloodmagic/models/item/variants/soulgempetty.json
+fb9e51a933316daa4a99b6e6c9a2606dc354f0dc assets/bloodmagic/models/item/variants/soulgempetty_corrosive.json
+0a15d2c90a8d139c1689579460379e5feefaddec assets/bloodmagic/models/item/variants/soulgempetty_destructive.json
+a94516c3019969baa379f4a32d68736010cb473a assets/bloodmagic/models/item/variants/soulgempetty_steadfast.json
+eabd2e88451ef42250e86c6675868b322aa0db92 assets/bloodmagic/models/item/variants/soulgempetty_vengeful.json
+cebb0537b96480ac99314840a45107108b1bbc3a assets/bloodmagic/models/item/variants/soulpickaxe.json
+2045e6593e80a11da9c60d0bdcef456503141232 assets/bloodmagic/models/item/variants/soulpickaxe_corrosive.json
+37144adb7eb312c66a3567faeb3ece5aeef76e70 assets/bloodmagic/models/item/variants/soulpickaxe_destructive.json
+e09d7927fdb84c372d36b290e3c69f728c922675 assets/bloodmagic/models/item/variants/soulpickaxe_steadfast.json
+bec6cecf74db6a32fb5890b0596ddb7e2bf2daef assets/bloodmagic/models/item/variants/soulpickaxe_vengeful.json
+a1fa69851bf9bb7022a25c0bef26fd44633616e2 assets/bloodmagic/models/item/variants/soulscythe.json
+7c97bf4b12fc39cbe100d0e54e6b1b53a592c771 assets/bloodmagic/models/item/variants/soulscythe_corrosive.json
+ad9c84341af3f0e90cdb206f39fbf4c2e589c52a assets/bloodmagic/models/item/variants/soulscythe_destructive.json
+00b631dc41ee04264a91fe9a9e0b5660daf9fbc5 assets/bloodmagic/models/item/variants/soulscythe_steadfast.json
+379922deb3b4e352763b335c01d4d66bfc531218 assets/bloodmagic/models/item/variants/soulscythe_vengeful.json
+501142d1ff49eaf663e9a2044da17b8b5a25e361 assets/bloodmagic/models/item/variants/soulshovel.json
+f65e2a2d4f0cae6c3dc986274c2dee0f1773cfb2 assets/bloodmagic/models/item/variants/soulshovel_corrosive.json
+6c6b04b81358bb82b4d127fc621190dc2804fd45 assets/bloodmagic/models/item/variants/soulshovel_destructive.json
+0e193ee2b27783f3d10461977c7d719be96af203 assets/bloodmagic/models/item/variants/soulshovel_steadfast.json
+a8a7f03cc24f0d796e8868ace72f50ec4343dd5b assets/bloodmagic/models/item/variants/soulshovel_vengeful.json
+0cd32e8e693d85b8a81e96ea305ffafb4a72e861 assets/bloodmagic/models/item/variants/soulsword_activated.json
+60831276c8b0a5ecfa8e1a7beee6c5a4838cae69 assets/bloodmagic/models/item/variants/soulsword_corrosive_activated.json
+792bb3a3e613808890cf0c31585318dc8e16891d assets/bloodmagic/models/item/variants/soulsword_corrosive_deactivated.json
+ba7a7366b1471dd58b27b523bde130e39220fe01 assets/bloodmagic/models/item/variants/soulsword_deactivated.json
+ef838be270d9d87651aec70c6b59197b01e48a6c assets/bloodmagic/models/item/variants/soulsword_destructive_activated.json
+ec6f6bf7f520182b2044f3cc5a10f1d4c7a8d7ab assets/bloodmagic/models/item/variants/soulsword_destructive_deactivated.json
+149f3e3049bd4f4ed559e56db79027bda9e8478e assets/bloodmagic/models/item/variants/soulsword_steadfast_activated.json
+7d22fdba9bb8593c247a0b33df11f3b26a16c254 assets/bloodmagic/models/item/variants/soulsword_steadfast_deactivated.json
+2029220112f89a3f4d432ab4749dff6143846659 assets/bloodmagic/models/item/variants/soulsword_vengeful_activated.json
+0f5a3e1e5993a03ccda156eed855b71fbd0be0a2 assets/bloodmagic/models/item/variants/soulsword_vengeful_deactivated.json
+81776d7be5f2d13e44622a6d38929821bc78ae7d assets/bloodmagic/models/item/veinmine_charge.json
+16bde91467016c6012fe2b618c898d0340043492 assets/bloodmagic/models/item/vengefulcrystal.json
+11e3347147e079093c4fa12018412071db22a4f5 assets/bloodmagic/models/item/vengefuldemoncrystal.json
+9019dcd2f21b03e703ceeee1ea3199de72110268 assets/bloodmagic/models/item/voidsigil.json
+a31019db55828cb937a071ac2f74b125a2d0c955 assets/bloodmagic/models/item/waterritualstone.json
+23d5a97cb44909c470ea76833138cd187f13ba80 assets/bloodmagic/models/item/waterscribetool.json
+bfa6dec13cc193bbe634c2c68b641f3897ccb342 assets/bloodmagic/models/item/watersigil.json
+cb4eaa9292890e172b0f36a63605db0c973f735e assets/bloodmagic/models/item/weakbloodorb.json
+46423c1325542ab0efad772e1aab52082d9ef636 assets/bloodmagic/models/item/weakbloodshard.json
+6b16a94dcb06f31b7a92f250449ec42dbc3568aa assets/bloodmagic/models/item/will_power_anointment.json
+c0907e611e09ccc924452070519006add21f3d12 assets/bloodmagic/models/item/woodbrickpath.json
+1de444baa270a146dcd33c784b08f75a3d745421 assets/bloodmagic/models/item/woodtilepath.json
+c8ea88c439c91d0eeee3e6204a3c50f8cfd36758 assets/bloodmagic/models/item/wornstonebrickpath.json
+2d9dab8ebc036473d82eb044eb7a7bba0d0937a4 assets/bloodmagic/models/item/wornstonetilepath.json
+273f8363ef906c87c67ae8aeb21a7d9d2834bbc6 data/bloodmagic/advancements/recipes/bloodmagictab/alchemy_table.json
+e6a3ac3998653b10ee09780be9099a9d0c5b3917 data/bloodmagic/advancements/recipes/bloodmagictab/arc.json
+08af21340e8457f43f7e5235790f58c2a67b9b3a data/bloodmagic/advancements/recipes/bloodmagictab/blood_altar.json
+80cf1e0f026565be99279c46306b92be06bda65c data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_acceleration.json
+f77e3947a24a252c04a80d1eb26547a3fbf868e7 data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_aug_capacity.json
+f8b66411c96c6a7a409fb10f6888d078f1f8fa14 data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_blank.json
+ab5612f33028487c08e51de4b91bb786df1b1b95 data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_capacity.json
+e59e508cdbd51f62f83559edeb5f2a89226d7694 data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_charging.json
+d707d48cc670ae65f224487a5012d5464c0a9760 data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_displacement.json
+e897d6f91e2a0bd12b0da0a50e5c897294989e7c data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_orb.json
+4a53004c651901cd1245de452810161736d9b067 data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_sacrifice.json
+263f7c251d2f163db5bd229f2ab8a222f23ae03a data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_self_sacrifice.json
+7ca400d1141ff4be1b529cd060950b42cf3b9bfb data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_speed.json
+764e54fdaa24f87cceb815990bbbd2e2cd87f205 data/bloodmagic/advancements/recipes/bloodmagictab/bloodstonebrick.json
+2e7ec285e758b06c2bd7d9fd93eedd96f511fa49 data/bloodmagic/advancements/recipes/bloodmagictab/corrupted_dust.json
+f92c8a88a2c0ca63510d170c33f5eb2d1aee25ec data/bloodmagic/advancements/recipes/bloodmagictab/experience_tome.json
+1b1dab3143eae33e25c4a14c011adec72768c9b5 data/bloodmagic/advancements/recipes/bloodmagictab/hellforged_block.json
+a6f012d0584d36d9b7dd0ec4f9e4cbd2a3ff1146 data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json
+4c24af93a64071aadc0308b27bcbc44572e5ccfc data/bloodmagic/advancements/recipes/bloodmagictab/largebloodstonebrick.json
+344567e6f5671131addcfebbd92d18e5cbd66ef5 data/bloodmagic/advancements/recipes/bloodmagictab/lava_crystal.json
+d8ca7255f72a2ab6915552cdeb682ecc6efde03a data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json
+1b85f9d2b823aef941158276b6f46bd8279cd693 data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json
+f17f721149daf9246788be3235e5a6472155215a data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json
+147ba38e68ca50e503ecf1ea96e85ce62c2dd86d data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json
+ea0b32b5595661f0d09f68a8a596577cc62ba0b1 data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json
+0dc717f46c2c6f36b58114df2bf5c82aadb104d2 data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json
+091fbd276c5ad173716e9e7474fa278e742a662f data/bloodmagic/advancements/recipes/bloodmagictab/primitive_furnace_cell.json
+7cf09fef1a5bfc1401ecc34857bdf78c7282c12a data/bloodmagic/advancements/recipes/bloodmagictab/primitive_hydration_cell.json
+01e90bb9c59d44a52777ecc0cf28754295fda675 data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_0.json
+836e1fc171dba197e02d6a9e3e61a3718cb5a482 data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_1.json
+5deb91599f19a4f28e5b03c9fcb428d3f00a3644 data/bloodmagic/advancements/recipes/bloodmagictab/ritual_reader.json
+c8e5cdac0e7328640ab1cb0eab0a46f0733b59b3 data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_blank.json
+1578416eb302aecb3fd61e481634c5c021541f51 data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_master.json
+832301a424345b7ca70b43cb214faa104179f0fb data/bloodmagic/advancements/recipes/bloodmagictab/sacrificial_dagger.json
+b76943e5606d3cd4ec9933b533e0925499af5c65 data/bloodmagic/advancements/recipes/bloodmagictab/smelting/ingot_hellforged.json
+766cf6a61f198a8426debb6f0c9f43e36193fc76 data/bloodmagic/advancements/recipes/bloodmagictab/soul_forge.json
+1c751b044e5ce4d05746857d6cf5e812e94a4026 data/bloodmagic/advancements/recipes/misc/smelting/ingot_gold.json
+af036dd1bd5193c2d36e7cb96c0a2b73a37b76ab data/bloodmagic/advancements/recipes/misc/smelting/ingot_iron.json
+ab358377c93ecbdd790722d5e796df59095e79e1 data/bloodmagic/advancements/recipes/misc/smelting/ingot_netherite_scrap.json
+639ebb2ccabb2eaece59be96c2e6f28c31f4d2f4 data/bloodmagic/loot_tables/blocks/accelerationrune.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/airritualstone.json
+1ed1f3cebe68450b6d5ca3ce69e4728a7d250b1c data/bloodmagic/loot_tables/blocks/alchemicalreactionchamber.json
+443550be9eaf1021b11fd2bbe6afcfe2cee6f7ad data/bloodmagic/loot_tables/blocks/alchemyarray.json
+c92a9f2a90f2c17933f89832899c295cde1f194d data/bloodmagic/loot_tables/blocks/alchemytable.json
+17d8dcc62320d5d2eeb781e925963d9b9d5eec54 data/bloodmagic/loot_tables/blocks/altar.json
+05bb6268d7e884c962061a632e162d5baf73271e data/bloodmagic/loot_tables/blocks/altarcapacityrune.json
+87d44fa5143733864c12608443d11744b91e0496 data/bloodmagic/loot_tables/blocks/bettercapacityrune.json
+867d0fa555de94140215d9edb7cd7ae533bbc619 data/bloodmagic/loot_tables/blocks/blankrune.json
+f1a8e3131d85077665563372cad868534a72fb31 data/bloodmagic/loot_tables/blocks/bloodlight.json
+f0827ad5bf71c06a71f50aeb0298c04d0cb1a1d9 data/bloodmagic/loot_tables/blocks/bloodstonebrick.json
+779b809a2a51e6dab46f9e6799249f2f14653ebb data/bloodmagic/loot_tables/blocks/chargingrune.json
+0d501e4eb447e84b38250ab1c396abe1218d129c data/bloodmagic/loot_tables/blocks/corrosivedemoncrystal.json
+e59c93dcc8d42b3ddb71dad1695573b1c284213f data/bloodmagic/loot_tables/blocks/creeping_doubt.json
+794eab6d989fe113f797835fa6a2f7ead5bfbd38 data/bloodmagic/loot_tables/blocks/deforester_charge.json
+4c9ed83e7e7215f995df35054e96d2f4e5027016 data/bloodmagic/loot_tables/blocks/demoncrucible.json
+c590b923d28b3d7916932dfcb05091df815f71dd data/bloodmagic/loot_tables/blocks/demoncrystallizer.json
+b0ce964c69f63aa13350259279e5fe831ae18e2c data/bloodmagic/loot_tables/blocks/destructivedemoncrystal.json
+a9fcfc656fab957328c10ee1d9d33807e697b7f7 data/bloodmagic/loot_tables/blocks/dislocationrune.json
+e39c50638d466bf706327f52fd42c915e2990d7e data/bloodmagic/loot_tables/blocks/dungeon_brick1.json
+be050ff812ae62793e3c51d7c2ab343294ede7f0 data/bloodmagic/loot_tables/blocks/dungeon_brick2.json
+75252b630d7e0cf77db12125844283949ee94226 data/bloodmagic/loot_tables/blocks/dungeon_brick3.json
+607d6e286ff2280686f258a931341aeed5334781 data/bloodmagic/loot_tables/blocks/dungeon_brick_assorted.json
+03410080009911badbf6458a54b596bee464cbe4 data/bloodmagic/loot_tables/blocks/dungeon_brick_gate.json
+0d30aeb91425e2419abf555e9baab34475f45afc data/bloodmagic/loot_tables/blocks/dungeon_brick_stairs.json
+fa335aded871280065ca02db79d6de59ced7f6c9 data/bloodmagic/loot_tables/blocks/dungeon_brick_wall.json
+47baa958866616d96eb39e2671a4cf488e0abae2 data/bloodmagic/loot_tables/blocks/dungeon_eye.json
+055aa396cd80393d84ed340692be62f74ecb6ffc data/bloodmagic/loot_tables/blocks/dungeon_metal.json
+234675dab5d5ff7e1fec0e13cede1f141811fc92 data/bloodmagic/loot_tables/blocks/dungeon_ore.json
+53864c213b973e67006cda4596877bcdd3474396 data/bloodmagic/loot_tables/blocks/dungeon_pillar_cap.json
+db8be3b67639ab451d0a28e0674240094ceea046 data/bloodmagic/loot_tables/blocks/dungeon_pillar_center.json
+c3deab4dd4ef8c1cf6f217d660ea07e5d7bd8555 data/bloodmagic/loot_tables/blocks/dungeon_pillar_special.json
+32d9f0674d7d416a5d668af187b89caede4188a3 data/bloodmagic/loot_tables/blocks/dungeon_polished.json
+dc0822572a66634163dd630797b1b90d98d47c22 data/bloodmagic/loot_tables/blocks/dungeon_polished_gate.json
+a44e605af1925a17a806c751f9f4279dbffa417f data/bloodmagic/loot_tables/blocks/dungeon_polished_stairs.json
+d6f0610c923131dee1c8723231ffafd7a75eb689 data/bloodmagic/loot_tables/blocks/dungeon_polished_wall.json
+e936d89fc5a75a786a455a32e9bce2f7b1bdcb34 data/bloodmagic/loot_tables/blocks/dungeon_smallbrick.json
+b6732b30df9e946739a1913671a60f56090679f8 data/bloodmagic/loot_tables/blocks/dungeon_stone.json
+69eb25424b97782eb86d9667581ada8d03e3b220 data/bloodmagic/loot_tables/blocks/dungeon_tile.json
+6381473b6e0bc7c16b8214eb083f5069622b4dd1 data/bloodmagic/loot_tables/blocks/dungeon_tilespecial.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/duskritualstone.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/earthritualstone.json
+2f27b244e5b3459408e9519dde05dc70cbb03998 data/bloodmagic/loot_tables/blocks/ethereal_mimic.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/fireritualstone.json
+70ecedd4cea1655ce9fe5b1d3f72796a5c0ff133 data/bloodmagic/loot_tables/blocks/fungal_charge.json
+59dd54a876b7ccd0b6c90f409753c2af2d687f03 data/bloodmagic/loot_tables/blocks/incensealtar.json
+462a82b07e7fe3e479a2c072c73507686c339346 data/bloodmagic/loot_tables/blocks/largebloodstonebrick.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/lightritualstone.json
+72610188b4538d98ffcd015c2813d63d19889d5f data/bloodmagic/loot_tables/blocks/masterritualstone.json
+ce5bf03f0ee03205ef6a1b6f512cb5da23addc57 data/bloodmagic/loot_tables/blocks/mimic.json
+842c4dce4e47561fe29d7b5c03d3953808ada929 data/bloodmagic/loot_tables/blocks/nether_soil.json
+3892d33bbef90db50034b1358d4a9ee8b731bc8d data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json
+3576b2f9d92ab5bdc456cb904905fb5c969e55f3 data/bloodmagic/loot_tables/blocks/obsidiantilepath.json
+95442c1bb740fab2eb8ee051f7184813f6023afa data/bloodmagic/loot_tables/blocks/orbcapacityrune.json
+6c59e846922061c0f2249b0c73c3be89ec73ea31 data/bloodmagic/loot_tables/blocks/rawdemoncrystal.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/ritualstone.json
+e0239eff7762a414a4e4faa0158d844dffb8c1f6 data/bloodmagic/loot_tables/blocks/sacrificerune.json
+9b697e37046b6238b3a19eae9113b88010ccff32 data/bloodmagic/loot_tables/blocks/selfsacrificerune.json
+fce757b3f3b79758be0fba70e016b3bdb373814e data/bloodmagic/loot_tables/blocks/shaped_charge.json
+f748a5ba8838b50de0502f132fe2a65f4726dae6 data/bloodmagic/loot_tables/blocks/soulforge.json
+015e07226fd90935f7ec663f4bcf3873a57a82d1 data/bloodmagic/loot_tables/blocks/speedrune.json
+128ec3ee93e927d457beeb8161e80706e9239760 data/bloodmagic/loot_tables/blocks/steadfastdemoncrystal.json
+8849e41b699c2eb7c3712a8e862bd9dd309a5c31 data/bloodmagic/loot_tables/blocks/stonebrickpath.json
+6149fd464bafaabf35ca431202680c84cf5441b1 data/bloodmagic/loot_tables/blocks/stonetilepath.json
+10b636d364f9ff72eb6db34f6f5e6aca704fc621 data/bloodmagic/loot_tables/blocks/veinmine_charge.json
+33a22d9b198c93ed07ac69b7a594bb08db64b239 data/bloodmagic/loot_tables/blocks/vengefuldemoncrystal.json
+26e3f34021426def32602e5ae7755e4672878320 data/bloodmagic/loot_tables/blocks/waterritualstone.json
+04c5bc02383ddff04588af3a048ee3973e69666f data/bloodmagic/loot_tables/blocks/woodbrickpath.json
+2c471cedf5e3e39610821766609646698d2b47e3 data/bloodmagic/loot_tables/blocks/woodtilepath.json
+9ab0aac56f75e7811f9641a6a20ff8d9dd78876a data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json
+4a7395079f874ae08af94f64a8a00211a56e906a data/bloodmagic/loot_tables/blocks/wornstonetilepath.json
+c95cd70b7ca320e18618c07827add555984b0e45 data/bloodmagic/loot_tables/test.json
+966981b01944985f1fe5cfa72b21c9ceeebd9cc4 data/bloodmagic/recipes/alchemy_table.json
+6e508e442b24c2a0e3f85026277c199cc0deada0 data/bloodmagic/recipes/alchemytable/arcane_ash.json
+a343604b5a75e1b3810df97d024813fb041cffb6 data/bloodmagic/recipes/alchemytable/basic_cutting_fluid.json
+cc28a48ec4b21be99c4ec13f6e560c322012192c data/bloodmagic/recipes/alchemytable/bow_power_anointment.json
+6a93bcd65cf2636fc684276777f56630f82d710c data/bloodmagic/recipes/alchemytable/bread.json
+e50009fa724173c2dcb4fab49b4f029039f69bf8 data/bloodmagic/recipes/alchemytable/clay_from_sand.json
+72f8d4afe57970d3969a9373b18f8eac86b245bc data/bloodmagic/recipes/alchemytable/cobweb.json
+96cc66cdb9c5f786eaa899e1fbdd38144e44a0fe data/bloodmagic/recipes/alchemytable/explosive_powder.json
+1fa964af556af521d8eaf1a686befdd9d69c63af data/bloodmagic/recipes/alchemytable/flint_from_gravel.json
+90b9431139014864558e96916eb835105f3b5a2f data/bloodmagic/recipes/alchemytable/fortune_anointment.json
+7b4b20c316a4c2e533d8a123025a4424ea808142 data/bloodmagic/recipes/alchemytable/gold_ore_from_gilded.json
+aff95e4322f9e8daaffc2337964f95ab6f9d631c data/bloodmagic/recipes/alchemytable/grass_block.json
+540edca1f507d366e55887b4429a9952c00f4060 data/bloodmagic/recipes/alchemytable/gunpowder.json
+9f1b37b59f8abbe419306b3eb8af59317a54483a data/bloodmagic/recipes/alchemytable/hidden_knowledge_anointment.json
+566352daaa6e6803df68475d964108b3f89cebd2 data/bloodmagic/recipes/alchemytable/holy_water_anointment.json
+0657a60976678fdfbdf0b8ee2c178502520d194a data/bloodmagic/recipes/alchemytable/leather_from_flesh.json
+c42ae24ad8955d8cf0a1f1096b0bca37d55621cf data/bloodmagic/recipes/alchemytable/looting_anointment.json
+93620eaad39a46a97f3381ff5c645e59d7dddd16 data/bloodmagic/recipes/alchemytable/melee_damage_anointment.json
+b18dde32d8a428f44437c0e53e5fdb990597498d data/bloodmagic/recipes/alchemytable/nether_wart_from_block.json
+0a5ce0f2d09a596fb47b27a60e66eceeb04e0b0d data/bloodmagic/recipes/alchemytable/plantoil_from_beets.json
+f1fd76dab242882e327b4677b95328cb3a52deee data/bloodmagic/recipes/alchemytable/plantoil_from_carrots.json
+e9f5a06e4800cb03cc13480db9fdb7b9fa47f487 data/bloodmagic/recipes/alchemytable/plantoil_from_taters.json
+f41e9bf8376ffcad07752b5657e27e06e500be0a data/bloodmagic/recipes/alchemytable/plantoil_from_wheat.json
+6230b36712a5b6d239ec35b85e7fda0917ca7bc2 data/bloodmagic/recipes/alchemytable/quick_draw_anointment.json
+eb8f2ef0c592ba022190d727eec69d73b7437bac data/bloodmagic/recipes/alchemytable/reagent_air.json
+755960529025fecd187cae962dc76988c1d52c8e data/bloodmagic/recipes/alchemytable/reagent_binding.json
+47a4511054bd10454302a6b41eecfac942d27864 data/bloodmagic/recipes/alchemytable/reagent_blood_light.json
+e50bf64f33ac29e704f553ef465c2631c1857777 data/bloodmagic/recipes/alchemytable/reagent_fastminer.json
+00d41617bb2e67cdfcfcd87c3bb931726bd37e13 data/bloodmagic/recipes/alchemytable/reagent_growth.json
+2c613ba6d23fb3a133963e48134893ac7e404042 data/bloodmagic/recipes/alchemytable/reagent_holding.json
+e06d24e618d3f2f17cb34a79ac630bd81c85dc45 data/bloodmagic/recipes/alchemytable/reagent_lava.json
+41969af0a92baece82c53a779f2e71aec71fe0cb data/bloodmagic/recipes/alchemytable/reagent_magnetism.json
+cb5b17173d9f6b7dad40a59aa920f47601e1304e data/bloodmagic/recipes/alchemytable/reagent_sight.json
+1f19c4b4070c9e519c83fc624cb401503d8178cb data/bloodmagic/recipes/alchemytable/reagent_void.json
+ef693cd04a08d89990ec8bb2620ff5e7efc353fc data/bloodmagic/recipes/alchemytable/reagent_water.json
+842713a090b5abf3ce967dbee90d7582f7414949 data/bloodmagic/recipes/alchemytable/sand_coal.json
+9292733697eca52de2c2ac7325ba45ab0354bfa3 data/bloodmagic/recipes/alchemytable/sand_gold.json
+06f00cce47e0d5e5d25a2587796494340f8a3278 data/bloodmagic/recipes/alchemytable/sand_iron.json
+3e3359b89a8c38c0fdeb2b4ca2920bce053082f8 data/bloodmagic/recipes/alchemytable/silk_touch_anointment.json
+f7e91d164ea5c782420ff3507a98da16c5915b73 data/bloodmagic/recipes/alchemytable/slate_vial.json
+4158f21d795aeeec52cfdec718ba9f82b0f2d10d data/bloodmagic/recipes/alchemytable/smelting_anointment.json
+a91e81c79959b522bcd1bac901bca646184015de data/bloodmagic/recipes/alchemytable/string.json
+3c9d829f7bff8a4d607c46fc3ff4f86dffa28fd5 data/bloodmagic/recipes/altar/air_tool.json
+f41b0e9dfab608c42a85c3c5c5bbc050b03f02a1 data/bloodmagic/recipes/altar/apprenticebloodorb.json
+2269c03d8ba4b790fb6a30c32bdb0169c283e5e2 data/bloodmagic/recipes/altar/bucket_life.json
+2a67e37497a571b5ee944375d315fddccea87697 data/bloodmagic/recipes/altar/daggerofsacrifice.json
+c5a4a256a7437f2e13c574a6f0c4d75fc2e718cb data/bloodmagic/recipes/altar/demonicslate.json
+d79a96eb3eed597f1c18a8983764a6362a24748c data/bloodmagic/recipes/altar/dusk_tool.json
+7272cdd4e1469cf83849e5444b4b93a7563a6bf2 data/bloodmagic/recipes/altar/earth_tool.json
+37913b1babf9b8159332db09b114c919b1b49473 data/bloodmagic/recipes/altar/fire_tool.json
+9aeb0d2d33d839eedb2d9bbdaf76fc73e0b39941 data/bloodmagic/recipes/altar/imbuedslate.json
+2643d1516f6dae79128fdc8c48c4cfe23453f171 data/bloodmagic/recipes/altar/magicianbloodorb.json
+5996888ae6e4ae9afc86a5d629a729d624fc4372 data/bloodmagic/recipes/altar/masterbloodorb.json
+30d84c946ad9235f6e59f1046edbe8d44acc799e data/bloodmagic/recipes/altar/reinforcedslate.json
+584d01dff4d64bb88bd3783751a29723700f1728 data/bloodmagic/recipes/altar/slate.json
+5e6289a1c8deb414202bba0f16fc09f9fdf7add0 data/bloodmagic/recipes/altar/soul_snare.json
+926d4a0e165c87a15a609744d832d2f5f04a40d0 data/bloodmagic/recipes/altar/water_tool.json
+dd59da50b674ec8f680e01a91261bf34091075cf data/bloodmagic/recipes/altar/weakbloodorb.json
+5807b2515f4a2dc9855327940e6055f6947f0749 data/bloodmagic/recipes/arc.json
+f35bb47d609201f6568b598307ae9d157792fe3e data/bloodmagic/recipes/arc/clay_from_sand.json
+6b8ba1822bac8a1af426a14f87d613dc89e3fca0 data/bloodmagic/recipes/arc/clay_from_terracotta.json
+5206a65f02d3bea5c23164325eb23ce8e928102f data/bloodmagic/recipes/arc/dustsfrom_gravel_gold.json
+5af6c601a7be4c0fc4811befa59324c1a2cdb758 data/bloodmagic/recipes/arc/dustsfrom_gravel_iron.json
+6f3f5d2f3054d61a3965b10bcebc8cefe107cf5f data/bloodmagic/recipes/arc/dustsfrom_gravel_netherite_scrap.json
+b5d3a7ee94494665a9e69519da43a0d4056deb76 data/bloodmagic/recipes/arc/dustsfrom_ingot_gold.json
+a31e17fb2da1259fb186cfd07c9cd500e6354518 data/bloodmagic/recipes/arc/dustsfrom_ingot_iron.json
+b9dc41ad0d9ee6035084a8e9a8eb920223817d33 data/bloodmagic/recipes/arc/dustsfrom_ingot_netherite_scrap.json
+e0846e670dc94334ba695d2a1182527a5016cd31 data/bloodmagic/recipes/arc/dustsfrom_ore_gold.json
+855c963531471cedd2f5f067801b96c0bd6a0c56 data/bloodmagic/recipes/arc/dustsfrom_ore_iron.json
+e410be937d52aea0f186aa14fa9b2929a98ffaf3 data/bloodmagic/recipes/arc/dustsfrom_ore_netherite_scrap.json
+517a3b7a6bbfc486777f509c2d9af6490ff722c9 data/bloodmagic/recipes/arc/fragmentsgold.json
+d8b9e64d14e67299aa08888246cdead76ebd91ce data/bloodmagic/recipes/arc/fragmentsiron.json
+ec54b6d447bf5709b15d7bccb9c7d0790661f621 data/bloodmagic/recipes/arc/fragmentsnetherite_scrap.json
+0275b4a539ccac64818c19bcb5351408eea9d193 data/bloodmagic/recipes/arc/gravelsgold.json
+32b0aeab82c1d98b86b162e98036b2591ccf649c data/bloodmagic/recipes/arc/gravelsiron.json
+f83ad96ea74fd51f1fd78ee40ff0fbeb08755b12 data/bloodmagic/recipes/arc/gravelsnetherite_scrap.json
+2eb26a1af68ed7a5fdb6ac9d4bbc7557729c56cd data/bloodmagic/recipes/arc/netherrack_to_sulfer.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
+8d9d66d63e21cc8a6f02fac2111f5d169c8542ff data/bloodmagic/recipes/arc/reversion/weak_blood_orb.json
+1e5814caf63714b8e1ff2b2f413a86ba8c840ebb data/bloodmagic/recipes/arc/weakbloodshard.json
+e1285ec51100f2336c1ea1a1a3057e74a0dd84d1 data/bloodmagic/recipes/array/airsigil.json
+d1ac23080f72f21adb5908befefe965ffb4efd4f data/bloodmagic/recipes/array/bloodlightsigil.json
+f6b6c72c0a2d6b3e602976f0dd2dfa778be41777 data/bloodmagic/recipes/array/bounce.json
+7110895fe75e65404bc66d6c09087d9e58220a11 data/bloodmagic/recipes/array/day.json
+1890706e5b93cd6df764b0419483c348e0d7f277 data/bloodmagic/recipes/array/divinationsigil.json
+4bd220ced486f1d8fc4468ebd61dac755670d716 data/bloodmagic/recipes/array/fastminersigil.json
+d9ae32c70d4bd872f22229006ad3c8e0cf7e3721 data/bloodmagic/recipes/array/grove.json
+f191a3c9982b827b0b2ba93164a81fc4f8cb0959 data/bloodmagic/recipes/array/growthsigil.json
+4452b681c328ed01ec680b6b68cb2a0aee11ed3d data/bloodmagic/recipes/array/holdingsigil.json
+78c880321f0bfad14239d4b9d2edae170a7fa86e data/bloodmagic/recipes/array/lavasigil.json
+165f8f8ba7ae094cdd1367716a0797a0f8d4d605 data/bloodmagic/recipes/array/living_boots.json
+1de17e8a769d471c934835955184d0c8782fb619 data/bloodmagic/recipes/array/living_helmet.json
+4a48885f110a87505381c7e2f2607d30612a3604 data/bloodmagic/recipes/array/living_leggings.json
+5e3c6dd7bfcd16e79f17e963d8c1b59c0d1aebe9 data/bloodmagic/recipes/array/living_plate.json
+8b1007de1b7fca5d27b54d7c9839cde9e47ab1c0 data/bloodmagic/recipes/array/magnetismsigil.json
+7a674784e0d8d4f6f071a72d26ba677087976970 data/bloodmagic/recipes/array/movement.json
+5c208259e33c3a56c5d6f6ab951ac0c4d5b60e26 data/bloodmagic/recipes/array/night.json
+6fd91801759c6a7a018b9d18601fc3db4d3ee3b4 data/bloodmagic/recipes/array/seersigil.json
+1921cc1cba3bcc36a6be6edd377dd44eb9b884a0 data/bloodmagic/recipes/array/spike.json
+085bf564ec74060e5c0224155cefc6ba0635c2c8 data/bloodmagic/recipes/array/updraft.json
+cabe693e7c714203ad708a1068f302b3ee3120b0 data/bloodmagic/recipes/array/voidsigil.json
+5e68d933fff631142a8dd819aee235d343d43cff data/bloodmagic/recipes/array/watersigil.json
+ac895b8c95ca10d61ae6efedfe5815b980588433 data/bloodmagic/recipes/blood_altar.json
+f4de3cfc4616f762b4a87b08510153ae06733528 data/bloodmagic/recipes/blood_rune_acceleration.json
+78e3f4666bc13897821abec9fa41e8b72accd007 data/bloodmagic/recipes/blood_rune_aug_capacity.json
+2f31d0108cdb0cca056405023bd0ac64b6c02524 data/bloodmagic/recipes/blood_rune_blank.json
+5c4e4af372250a3f967666f0f97198547cfbd5e1 data/bloodmagic/recipes/blood_rune_capacity.json
+f905c1a8ca4d3a9f841ca6c44caa91de327fc29d data/bloodmagic/recipes/blood_rune_charging.json
+ac0ee73ab691edd09be24453bd3fe3dc1a8f1ecb data/bloodmagic/recipes/blood_rune_displacement.json
+89563d5c176d465632a45005cbe5e570791fd8dd data/bloodmagic/recipes/blood_rune_orb.json
+b63d77c3762f86d4a91f62e192c3e9b26e3b52ca data/bloodmagic/recipes/blood_rune_sacrifice.json
+7c4e247c1df6ef594bbb2fc2196afb102f45982b data/bloodmagic/recipes/blood_rune_self_sacrifice.json
+e2bcf2a6f951fbcef45554ec90ba28d14e261d18 data/bloodmagic/recipes/blood_rune_speed.json
+eeb5e64b8bc90adc2554dde88b8792b92ad7c8cc data/bloodmagic/recipes/bloodstonebrick.json
+68e9201ef0d0051618a73434b35791a208bacde1 data/bloodmagic/recipes/corrupted_dust.json
+ab11cf6806dab2a2d1cda2f7fde9cd2ecd9cdf9f data/bloodmagic/recipes/experience_tome.json
+84aeee900c15d94f1940e72c8f331755d0a97b11 data/bloodmagic/recipes/hellforged_block.json
+9a5749465020b32b0147b3367784ce31a0d3b54b data/bloodmagic/recipes/incense_altar.json
+63bca28ba5eebb9c488c819bcb117595eadb877d data/bloodmagic/recipes/largebloodstonebrick.json
+9dedad36e9d2ab6688e069c2e6df3851c395b583 data/bloodmagic/recipes/lava_crystal.json
+50d84717ac673875e4b52522b583f564a8a75e8e data/bloodmagic/recipes/path/path_stone.json
+2756ff3f29e1231795671c94fdaf9e5abc65bbee data/bloodmagic/recipes/path/path_stonetile.json
+dcb702aeb768bc0ff5d1f05c5ac95066c4082193 data/bloodmagic/recipes/path/path_wood.json
+7491b9f62c29d2fde6ff1dbff09f16f458b9afe8 data/bloodmagic/recipes/path/path_woodtile.json
+d85f637e3c87ba050c24581b8f4bef4176e1ba14 data/bloodmagic/recipes/path/path_wornstone.json
+2ee3e7f073df764289939b8df814cc8f056eced0 data/bloodmagic/recipes/path/path_wornstonetile.json
+0b1a11f0e1b6bc317e2dbf04560a81581623f41e data/bloodmagic/recipes/primitive_furnace_cell.json
+7e1a70935e9b5ba6b345af6a7077287896ec6cfe data/bloodmagic/recipes/primitive_hydration_cell.json
+bfd7925ad30534463d7daf0f7dce03cf1502cbcf data/bloodmagic/recipes/ritual_diviner_0.json
+2ec436681cdd169bae99d090bb889c2a45420b6c data/bloodmagic/recipes/ritual_diviner_1.json
+18accae45d6c592b108c227c629caf15e430bf2b data/bloodmagic/recipes/ritual_reader.json
+7757e5fd52f71b0d21595e072593fc592210dd64 data/bloodmagic/recipes/ritual_stone_blank.json
+8608f828f997b1a8015287bd9cd436e9d7dff2ff data/bloodmagic/recipes/ritual_stone_master.json
+aefbf1fd258f1cda8d04db7e0794b9612993e6bf data/bloodmagic/recipes/sacrificial_dagger.json
+1eab0535b38c4a8a021a72244b9e6a75353970f0 data/bloodmagic/recipes/smelting/ingot_gold.json
+b644726cea2da0626f33b60fbc64701f26d48561 data/bloodmagic/recipes/smelting/ingot_hellforged.json
+477f968ee84a5b9cd3e9c2a9864be32b5e7d3a32 data/bloodmagic/recipes/smelting/ingot_iron.json
+06855bcd8951355604ab1e63b5db717382430967 data/bloodmagic/recipes/smelting/ingot_netherite_scrap.json
+d4ee90b52934c7c530fb031dcf81d4f1ccb27a9b data/bloodmagic/recipes/soul_forge.json
+8b64af8453c60b6b1ae55bd0dd1a68fe95e8ba19 data/bloodmagic/recipes/soulforge/commontartaricgem.json
+659db62f8fb71c792b00d6409b1c9a2f1ca96048 data/bloodmagic/recipes/soulforge/corrosive_crystal_block.json
+5ad148899ed46134ae0572b220736b9d38004980 data/bloodmagic/recipes/soulforge/deforester_charge.json
+26d7fb7f868bcc96ce268adccead7207d5559afb data/bloodmagic/recipes/soulforge/deforester_charge_fortune_1.json
+40ae097cd8b3c0dcd38f7032d928acdb71da13da data/bloodmagic/recipes/soulforge/deforester_charge_silk_touch.json
+bd63ccb772c829a4a50df17f06a641353dc3b98e data/bloodmagic/recipes/soulforge/deforester_charge_smelting.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
+78f0e3dc5fa61d8f9c182a3608184f21925f79db data/bloodmagic/recipes/soulforge/fungal_charge.json
+61003f9b47ae96e5bccd518d514ef2532ce6e028 data/bloodmagic/recipes/soulforge/fungal_charge_fortune_1.json
+9f7efc88c863110e6253b8877eee93c2e6533090 data/bloodmagic/recipes/soulforge/fungal_charge_silk_touch.json
+a625c60e99970a93cb188e17579bcb958890d7a9 data/bloodmagic/recipes/soulforge/fungal_charge_smelting.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
+4a4340f334c51beaacb77fd201298ad94b71e79c data/bloodmagic/recipes/soulforge/sanguine_reverter.json
+799c9b83373966f70bbd6777cdae0ff2ff89fd84 data/bloodmagic/recipes/soulforge/sentientaxe.json
+6d94372ffffbe36ca91ed2a5e46991bff896726c data/bloodmagic/recipes/soulforge/sentientpickaxe.json
+6b47831e5c2f3033b6706706d810fa96d8abebd6 data/bloodmagic/recipes/soulforge/sentientscythe.json
+6dcced40126f950b85f868aa04c77e90b71b69f2 data/bloodmagic/recipes/soulforge/sentientshovel.json
+7e281841a2953c1284d332c2bbf75097f8128241 data/bloodmagic/recipes/soulforge/sentientsword.json
+dc977e9d98fcba66fbcce3f6c31a746db5ed60f5 data/bloodmagic/recipes/soulforge/shaped_charge.json
+865cac49dd9604f35577aa6cfd2756946b49b8b1 data/bloodmagic/recipes/soulforge/shaped_charge_fortune_1.json
+83b9b038785f449e4948cf17f8fa35457c24a3cb data/bloodmagic/recipes/soulforge/shaped_charge_silk_touch.json
+7417c0ad20f4c23a7fed958f658e6dc96720ec60 data/bloodmagic/recipes/soulforge/shaped_charge_smelting.json
+c4102a1573e632d0b9f894353b0d522a51a7c65e data/bloodmagic/recipes/soulforge/steadfast_crystal_block.json
+ed0875aaba76e013684b8ea2f8275d5563e90e98 data/bloodmagic/recipes/soulforge/throwing_dagger.json
+b081dbc0865421df6a591366393ffdbceb205907 data/bloodmagic/recipes/soulforge/throwing_dagger_syringe.json
+978033adf58e34fa317bcea448ac1ddf3f0cd69e data/bloodmagic/recipes/soulforge/vein_charge.json
+a06bb2d29cfa5d9c38092e93196bed7f331bcc97 data/bloodmagic/recipes/soulforge/vein_charge_fortune_1.json
+29a712f5e12e1702f6221c4c8918ba37299edd7c data/bloodmagic/recipes/soulforge/vein_charge_silk_touch.json
+911023ba84eed7836875793a21c32a83755760d3 data/bloodmagic/recipes/soulforge/vein_charge_smelting.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
+bcd2befe59cbb4931c8c9bed183d19b2a469e506 data/bloodmagic/tags/items/arc/tool.json
+2bdc1397bd092d373f785f08a2befdce8c1c1e2e data/bloodmagic/tags/items/crystals/demon.json
+dab44ece8bcdf079b349fc4f49da67aafe9c4cf7 data/bloodmagic/tags/items/dusts/corrupted.json
+dc8d6f8f8d128499f3d2632ef1bc353cc49d1ddb data/bloodmagic/tags/items/fragments/gold.json
+a60c7b779168689387a03f00002bfd8380d919e5 data/bloodmagic/tags/items/fragments/iron.json
+590aab8d5f5a4ed18dd211865e917674dcabfea0 data/bloodmagic/tags/items/fragments/netherite_scrap.json
+af9b1a9ba1b16a85e3e1cf84b99e4cc9e12f9886 data/bloodmagic/tags/items/gravels/gold.json
+19547e1b8859f1e2f1ae858e74b4456fc20be53f data/bloodmagic/tags/items/gravels/iron.json
+3597daeddb742612d0b7fe2d0f711251a2781ac2 data/bloodmagic/tags/items/gravels/netherite_scrap.json
+04fdfff381183672d6d7b3e55ded42a0a5b89f16 data/bloodmagic/tags/items/tiny_dusts/corrupted.json
+b7b3ffae086763317f5ed70a4f857e9634932972 data/forge/tags/fluids/life.json
+4f8f46a7e30fe81d36790d3ffed37efef7c87d06 data/forge/tags/items/dusts/coal.json
+82f2679934e550a1188658350e52cfac7c450c4d data/forge/tags/items/dusts/gold.json
+205d57b4f622a13fceda5e8062d9bba80d619e92 data/forge/tags/items/dusts/hellforged.json
+625a1e6a3b635b2ac5176a49afbae9b476de4f71 data/forge/tags/items/dusts/iron.json
+05fbe38ee5bdb3d912a5980254886ad64399e062 data/forge/tags/items/dusts/netherite_scrap.json
+9380fe45b06787ba776af4a7d542a047c1441031 data/forge/tags/items/dusts/saltpeter.json
+5c709b6444acb94ca784c33618547ba535e15db2 data/forge/tags/items/dusts/sulfur.json
+ca758f49ba878f8e498fe156d4916c1e332d552c data/forge/tags/items/ingots/hellforged.json
+74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/forge/tags/items/ores/copper.json
+74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/forge/tags/items/ores/lead.json
+74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/forge/tags/items/ores/osmium.json
+74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/forge/tags/items/ores/silver.json
+74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/forge/tags/items/ores/tin.json
+d348e6ef5f30db7c6c6ef2aac89c45e9c4c6fef7 data/minecraft/tags/blocks/mushroom_hyphae.json
+95fd3a7b178a92c5aecdd097fec5359f14a06c13 data/minecraft/tags/blocks/mushroom_stem.json
+2ba6f93ee0567360afa3ae9999027b839ed06532 data/minecraft/tags/blocks/walls.json
+d348e6ef5f30db7c6c6ef2aac89c45e9c4c6fef7 data/minecraft/tags/items/mushroom_hyphae.json
+95fd3a7b178a92c5aecdd097fec5359f14a06c13 data/minecraft/tags/items/mushroom_stem.json
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/accelerationrune.json b/src/generated/resources/assets/bloodmagic/blockstates/accelerationrune.json
new file mode 100644
index 00000000..dc97d5de
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/accelerationrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/accelerationrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/airritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/airritualstone.json
new file mode 100644
index 00000000..a64ce156
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/airritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/airritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/alchemicalreactionchamber.json b/src/generated/resources/assets/bloodmagic/blockstates/alchemicalreactionchamber.json
new file mode 100644
index 00000000..05658c8b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/alchemicalreactionchamber.json
@@ -0,0 +1,34 @@
+{
+ "variants": {
+ "facing=north,lit=false": {
+ "model": "bloodmagic:block/alchemicalreactionchamber"
+ },
+ "facing=south,lit=false": {
+ "model": "bloodmagic:block/alchemicalreactionchamber",
+ "y": 180
+ },
+ "facing=west,lit=false": {
+ "model": "bloodmagic:block/alchemicalreactionchamber",
+ "y": 270
+ },
+ "facing=east,lit=false": {
+ "model": "bloodmagic:block/alchemicalreactionchamber",
+ "y": 90
+ },
+ "facing=north,lit=true": {
+ "model": "bloodmagic:block/alchemicalreactionchamber"
+ },
+ "facing=south,lit=true": {
+ "model": "bloodmagic:block/alchemicalreactionchamber",
+ "y": 180
+ },
+ "facing=west,lit=true": {
+ "model": "bloodmagic:block/alchemicalreactionchamber",
+ "y": 270
+ },
+ "facing=east,lit=true": {
+ "model": "bloodmagic:block/alchemicalreactionchamber",
+ "y": 90
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/altarcapacityrune.json b/src/generated/resources/assets/bloodmagic/blockstates/altarcapacityrune.json
new file mode 100644
index 00000000..f5a088ea
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/altarcapacityrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/altarcapacityrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/bettercapacityrune.json b/src/generated/resources/assets/bloodmagic/blockstates/bettercapacityrune.json
new file mode 100644
index 00000000..ead6c945
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/bettercapacityrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/bettercapacityrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/blankrune.json b/src/generated/resources/assets/bloodmagic/blockstates/blankrune.json
new file mode 100644
index 00000000..d211f0a6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/blankrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/blankrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/bloodlight.json b/src/generated/resources/assets/bloodmagic/blockstates/bloodlight.json
new file mode 100644
index 00000000..dfa612f0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/bloodlight.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/bloodlight"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/bloodstonebrick.json b/src/generated/resources/assets/bloodmagic/blockstates/bloodstonebrick.json
new file mode 100644
index 00000000..4bf17916
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/bloodstonebrick.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/bloodstonebrick"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/chargingrune.json b/src/generated/resources/assets/bloodmagic/blockstates/chargingrune.json
new file mode 100644
index 00000000..5c238290
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/chargingrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/chargingrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/corrosivedemoncrystal.json b/src/generated/resources/assets/bloodmagic/blockstates/corrosivedemoncrystal.json
new file mode 100644
index 00000000..fb67a253
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/corrosivedemoncrystal.json
@@ -0,0 +1,431 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal1",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal1"
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal1",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal1",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal1",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal1",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal2",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal2"
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal2",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal2",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal2",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal2",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal3",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal3"
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal3",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal3",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal3",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal3",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal4",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal4"
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal4",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal4",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal4",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal4",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal5",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal5"
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal5",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal5",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal5",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal5",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal6",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal6"
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal6",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal6",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal6",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal6",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal7",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal7"
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal7",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal7",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal7",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/corrosivecrystal7",
+ "x": 90,
+ "y": 90
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/creeping_doubt.json b/src/generated/resources/assets/bloodmagic/blockstates/creeping_doubt.json
new file mode 100644
index 00000000..d7e819a0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/creeping_doubt.json
@@ -0,0 +1,28 @@
+{
+ "variants": {
+ "age=0": {
+ "model": "bloodmagic:block/creeping_doubt_1"
+ },
+ "age=1": {
+ "model": "bloodmagic:block/creeping_doubt_2"
+ },
+ "age=2": {
+ "model": "bloodmagic:block/creeping_doubt_3"
+ },
+ "age=3": {
+ "model": "bloodmagic:block/creeping_doubt_4"
+ },
+ "age=4": {
+ "model": "bloodmagic:block/creeping_doubt_5"
+ },
+ "age=5": {
+ "model": "bloodmagic:block/creeping_doubt_6"
+ },
+ "age=6": {
+ "model": "bloodmagic:block/creeping_doubt_7"
+ },
+ "age=7": {
+ "model": "bloodmagic:block/creeping_doubt_8"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/deforester_charge.json b/src/generated/resources/assets/bloodmagic/blockstates/deforester_charge.json
new file mode 100644
index 00000000..bac5692f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/deforester_charge.json
@@ -0,0 +1,29 @@
+{
+ "variants": {
+ "attached=down": {
+ "model": "bloodmagic:block/deforester_charge",
+ "x": 180
+ },
+ "attached=up": {
+ "model": "bloodmagic:block/deforester_charge"
+ },
+ "attached=north": {
+ "model": "bloodmagic:block/deforester_charge",
+ "x": 90
+ },
+ "attached=south": {
+ "model": "bloodmagic:block/deforester_charge",
+ "x": 270
+ },
+ "attached=west": {
+ "model": "bloodmagic:block/deforester_charge",
+ "x": 90,
+ "y": 270
+ },
+ "attached=east": {
+ "model": "bloodmagic:block/deforester_charge",
+ "x": 90,
+ "y": 90
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/destructivedemoncrystal.json b/src/generated/resources/assets/bloodmagic/blockstates/destructivedemoncrystal.json
new file mode 100644
index 00000000..b99a263f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/destructivedemoncrystal.json
@@ -0,0 +1,431 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal1",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal1"
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal1",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal1",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal1",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal1",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal2",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal2"
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal2",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal2",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal2",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal2",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal3",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal3"
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal3",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal3",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal3",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal3",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal4",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal4"
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal4",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal4",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal4",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal4",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal5",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal5"
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal5",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal5",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal5",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal5",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal6",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal6"
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal6",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal6",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal6",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal6",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal7",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal7"
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal7",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal7",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal7",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/destructivecrystal7",
+ "x": 90,
+ "y": 90
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dislocationrune.json b/src/generated/resources/assets/bloodmagic/blockstates/dislocationrune.json
new file mode 100644
index 00000000..e788f3d5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dislocationrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dislocationrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick1.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick1.json
new file mode 100644
index 00000000..149337cf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick1.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_brick1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick2.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick2.json
new file mode 100644
index 00000000..2be23091
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick2.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_brick2"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick3.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick3.json
new file mode 100644
index 00000000..b5c84c5c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick3.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_brick3"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_assorted.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_assorted.json
new file mode 100644
index 00000000..81dc572a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_assorted.json
@@ -0,0 +1,15 @@
+{
+ "variants": {
+ "": [
+ {
+ "model": "bloodmagic:block/dungeon_brick1"
+ },
+ {
+ "model": "bloodmagic:block/dungeon_brick2"
+ },
+ {
+ "model": "bloodmagic:block/dungeon_brick3"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_gate.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_gate.json
new file mode 100644
index 00000000..4dae3f78
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_gate.json
@@ -0,0 +1,80 @@
+{
+ "variants": {
+ "facing=north,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate",
+ "uvlock": true
+ },
+ "facing=west,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall",
+ "uvlock": true
+ },
+ "facing=west,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_open",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_open",
+ "uvlock": true
+ },
+ "facing=west,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_open",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_open",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall_open",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall_open",
+ "uvlock": true
+ },
+ "facing=west,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall_open",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_brick_gate_wall_open",
+ "y": 270,
+ "uvlock": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_stairs.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_stairs.json
new file mode 100644
index 00000000..f36609c1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_stairs.json
@@ -0,0 +1,209 @@
+{
+ "variants": {
+ "facing=north,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_brick_stairs"
+ },
+ "facing=north,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner"
+ },
+ "facing=west,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_inner"
+ },
+ "facing=north,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer"
+ },
+ "facing=west,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_brick_stairs_outer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_wall.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_wall.json
new file mode 100644
index 00000000..9ffbb2d4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_brick_wall.json
@@ -0,0 +1,90 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "up": "true"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_post"
+ }
+ },
+ {
+ "when": {
+ "east": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side",
+ "y": 90,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "east": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side_tall",
+ "y": 90,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "north": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side",
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "north": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side_tall",
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "south": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side",
+ "y": 180,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "south": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side_tall",
+ "y": 180,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "west": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side",
+ "y": 270,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "west": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_brick_wall_side_tall",
+ "y": 270,
+ "uvlock": true
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_eye.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_eye.json
new file mode 100644
index 00000000..baa1f6ce
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_eye.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_eye"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_metal.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_metal.json
new file mode 100644
index 00000000..bef6c3bf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_metal.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_metal"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_ore.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_ore.json
new file mode 100644
index 00000000..a44ddeae
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_ore.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_ore"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_cap.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_cap.json
new file mode 100644
index 00000000..cc2654a2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_cap.json
@@ -0,0 +1,22 @@
+{
+ "variants": {
+ "facing=down": {
+ "model": "bloodmagic:block/dungeon_pillar_cap_down"
+ },
+ "facing=up": {
+ "model": "bloodmagic:block/dungeon_pillar_cap"
+ },
+ "facing=north": {
+ "model": "bloodmagic:block/dungeon_pillar_cap_north"
+ },
+ "facing=south": {
+ "model": "bloodmagic:block/dungeon_pillar_cap_south"
+ },
+ "facing=west": {
+ "model": "bloodmagic:block/dungeon_pillar_cap_west"
+ },
+ "facing=east": {
+ "model": "bloodmagic:block/dungeon_pillar_cap_east"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_center.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_center.json
new file mode 100644
index 00000000..56d64ff0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_center.json
@@ -0,0 +1,13 @@
+{
+ "variants": {
+ "axis=x": {
+ "model": "bloodmagic:block/dungeon_pillar_center_x"
+ },
+ "axis=y": {
+ "model": "bloodmagic:block/dungeon_pillar_center"
+ },
+ "axis=z": {
+ "model": "bloodmagic:block/dungeon_pillar_center_z"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_special.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_special.json
new file mode 100644
index 00000000..6b7e479d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_pillar_special.json
@@ -0,0 +1,13 @@
+{
+ "variants": {
+ "axis=x": {
+ "model": "bloodmagic:block/dungeon_pillar_special_x"
+ },
+ "axis=y": {
+ "model": "bloodmagic:block/dungeon_pillar_special"
+ },
+ "axis=z": {
+ "model": "bloodmagic:block/dungeon_pillar_special_z"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished.json
new file mode 100644
index 00000000..0a334ab3
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_polished"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_gate.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_gate.json
new file mode 100644
index 00000000..467dc35d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_gate.json
@@ -0,0 +1,80 @@
+{
+ "variants": {
+ "facing=north,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate",
+ "uvlock": true
+ },
+ "facing=west,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=false,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall",
+ "uvlock": true
+ },
+ "facing=west,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=true,open=false": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_open",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_open",
+ "uvlock": true
+ },
+ "facing=west,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_open",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=false,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_open",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall_open",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall_open",
+ "uvlock": true
+ },
+ "facing=west,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall_open",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,in_wall=true,open=true": {
+ "model": "bloodmagic:block/dungeon_polished_gate_wall_open",
+ "y": 270,
+ "uvlock": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_stairs.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_stairs.json
new file mode 100644
index 00000000..0b576e77
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_stairs.json
@@ -0,0 +1,209 @@
+{
+ "variants": {
+ "facing=north,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=straight": {
+ "model": "bloodmagic:block/dungeon_polished_stairs"
+ },
+ "facing=north,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner"
+ },
+ "facing=west,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=inner_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=inner_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_inner"
+ },
+ "facing=north,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer"
+ },
+ "facing=west,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=outer_left": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=outer_right": {
+ "model": "bloodmagic:block/dungeon_polished_stairs_outer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_wall.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_wall.json
new file mode 100644
index 00000000..228f6735
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_polished_wall.json
@@ -0,0 +1,90 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "up": "true"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_post"
+ }
+ },
+ {
+ "when": {
+ "east": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side",
+ "y": 90,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "east": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side_tall",
+ "y": 90,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "north": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side",
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "north": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side_tall",
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "south": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side",
+ "y": 180,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "south": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side_tall",
+ "y": 180,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "west": "low"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side",
+ "y": 270,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "west": "tall"
+ },
+ "apply": {
+ "model": "bloodmagic:block/dungeon_polished_wall_side_tall",
+ "y": 270,
+ "uvlock": true
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_smallbrick.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_smallbrick.json
new file mode 100644
index 00000000..c9950639
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_smallbrick.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_smallbrick"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_stone.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_stone.json
new file mode 100644
index 00000000..7e4a6bec
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_stone.json
@@ -0,0 +1,20 @@
+{
+ "variants": {
+ "": [
+ {
+ "model": "bloodmagic:block/dungeon_stone"
+ },
+ {
+ "model": "bloodmagic:block/dungeon_stone_mirrored"
+ },
+ {
+ "model": "bloodmagic:block/dungeon_stone",
+ "y": 180
+ },
+ {
+ "model": "bloodmagic:block/dungeon_stone_mirrored",
+ "y": 180
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_tile.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_tile.json
new file mode 100644
index 00000000..c34e5e71
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_tile.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_tile"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/dungeon_tilespecial.json b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_tilespecial.json
new file mode 100644
index 00000000..1204cd1d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/dungeon_tilespecial.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/dungeon_tilespecial"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/duskritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/duskritualstone.json
new file mode 100644
index 00000000..474324b4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/duskritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/duskritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/earthritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/earthritualstone.json
new file mode 100644
index 00000000..75d2c5eb
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/earthritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/earthritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/fireritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/fireritualstone.json
new file mode 100644
index 00000000..33e7f1b2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/fireritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/fireritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/fungal_charge.json b/src/generated/resources/assets/bloodmagic/blockstates/fungal_charge.json
new file mode 100644
index 00000000..88c95e60
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/fungal_charge.json
@@ -0,0 +1,29 @@
+{
+ "variants": {
+ "attached=down": {
+ "model": "bloodmagic:block/fungal_charge",
+ "x": 180
+ },
+ "attached=up": {
+ "model": "bloodmagic:block/fungal_charge"
+ },
+ "attached=north": {
+ "model": "bloodmagic:block/fungal_charge",
+ "x": 90
+ },
+ "attached=south": {
+ "model": "bloodmagic:block/fungal_charge",
+ "x": 270
+ },
+ "attached=west": {
+ "model": "bloodmagic:block/fungal_charge",
+ "x": 90,
+ "y": 270
+ },
+ "attached=east": {
+ "model": "bloodmagic:block/fungal_charge",
+ "x": 90,
+ "y": 90
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/largebloodstonebrick.json b/src/generated/resources/assets/bloodmagic/blockstates/largebloodstonebrick.json
new file mode 100644
index 00000000..e7f7e853
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/largebloodstonebrick.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/largebloodstonebrick"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/lightritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/lightritualstone.json
new file mode 100644
index 00000000..d198280b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/lightritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/lightritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/masterritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/masterritualstone.json
new file mode 100644
index 00000000..c6276d28
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/masterritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/masterritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/nether_soil.json b/src/generated/resources/assets/bloodmagic/blockstates/nether_soil.json
new file mode 100644
index 00000000..de25c31e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/nether_soil.json
@@ -0,0 +1,28 @@
+{
+ "variants": {
+ "moisture=0": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=1": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=2": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=3": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=4": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=5": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=6": {
+ "model": "bloodmagic:block/nether_soil"
+ },
+ "moisture=7": {
+ "model": "bloodmagic:block/nether_soil"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json
new file mode 100644
index 00000000..38e7c85f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/obsidianbrickpath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/obsidianbrickpath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json
new file mode 100644
index 00000000..185a1d06
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/obsidiantilepath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/obsidiantilepath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/orbcapacityrune.json b/src/generated/resources/assets/bloodmagic/blockstates/orbcapacityrune.json
new file mode 100644
index 00000000..afa6fb84
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/orbcapacityrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/orbcapacityrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/rawdemoncrystal.json b/src/generated/resources/assets/bloodmagic/blockstates/rawdemoncrystal.json
new file mode 100644
index 00000000..be9a5c2a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/rawdemoncrystal.json
@@ -0,0 +1,431 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal1",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal1"
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal1",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal1",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal1",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal1",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal2",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal2"
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal2",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal2",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal2",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal2",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal3",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal3"
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal3",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal3",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal3",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal3",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal4",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal4"
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal4",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal4",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal4",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal4",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal5",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal5"
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal5",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal5",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal5",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal5",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal6",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal6"
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal6",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal6",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal6",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal6",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal7",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal7"
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal7",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal7",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal7",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/defaultcrystal7",
+ "x": 90,
+ "y": 90
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/ritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/ritualstone.json
new file mode 100644
index 00000000..8f09bcba
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/ritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/ritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/sacrificerune.json b/src/generated/resources/assets/bloodmagic/blockstates/sacrificerune.json
new file mode 100644
index 00000000..1564fd64
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/sacrificerune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/sacrificerune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/selfsacrificerune.json b/src/generated/resources/assets/bloodmagic/blockstates/selfsacrificerune.json
new file mode 100644
index 00000000..05620681
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/selfsacrificerune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/selfsacrificerune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/shaped_charge.json b/src/generated/resources/assets/bloodmagic/blockstates/shaped_charge.json
new file mode 100644
index 00000000..8b918ec1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/shaped_charge.json
@@ -0,0 +1,29 @@
+{
+ "variants": {
+ "attached=down": {
+ "model": "bloodmagic:block/shaped_charge",
+ "x": 180
+ },
+ "attached=up": {
+ "model": "bloodmagic:block/shaped_charge"
+ },
+ "attached=north": {
+ "model": "bloodmagic:block/shaped_charge",
+ "x": 90
+ },
+ "attached=south": {
+ "model": "bloodmagic:block/shaped_charge",
+ "x": 270
+ },
+ "attached=west": {
+ "model": "bloodmagic:block/shaped_charge",
+ "x": 90,
+ "y": 270
+ },
+ "attached=east": {
+ "model": "bloodmagic:block/shaped_charge",
+ "x": 90,
+ "y": 90
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/speedrune.json b/src/generated/resources/assets/bloodmagic/blockstates/speedrune.json
new file mode 100644
index 00000000..9ebf2703
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/speedrune.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/speedrune"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/steadfastdemoncrystal.json b/src/generated/resources/assets/bloodmagic/blockstates/steadfastdemoncrystal.json
new file mode 100644
index 00000000..f886422f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/steadfastdemoncrystal.json
@@ -0,0 +1,431 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal1",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal1"
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal1",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal1",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal1",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal1",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal2",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal2"
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal2",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal2",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal2",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal2",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal3",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal3"
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal3",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal3",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal3",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal3",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal4",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal4"
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal4",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal4",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal4",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal4",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal5",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal5"
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal5",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal5",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal5",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal5",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal6",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal6"
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal6",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal6",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal6",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal6",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal7",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal7"
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal7",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal7",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal7",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/steadfastcrystal7",
+ "x": 90,
+ "y": 90
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json
new file mode 100644
index 00000000..dd693c22
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/stonebrickpath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/stonebrickpath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json
new file mode 100644
index 00000000..e3f65a05
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/stonetilepath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/stonetilepath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/veinmine_charge.json b/src/generated/resources/assets/bloodmagic/blockstates/veinmine_charge.json
new file mode 100644
index 00000000..beb5ad11
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/veinmine_charge.json
@@ -0,0 +1,29 @@
+{
+ "variants": {
+ "attached=down": {
+ "model": "bloodmagic:block/veinmine_charge",
+ "x": 180
+ },
+ "attached=up": {
+ "model": "bloodmagic:block/veinmine_charge"
+ },
+ "attached=north": {
+ "model": "bloodmagic:block/veinmine_charge",
+ "x": 90
+ },
+ "attached=south": {
+ "model": "bloodmagic:block/veinmine_charge",
+ "x": 270
+ },
+ "attached=west": {
+ "model": "bloodmagic:block/veinmine_charge",
+ "x": 90,
+ "y": 270
+ },
+ "attached=east": {
+ "model": "bloodmagic:block/veinmine_charge",
+ "x": 90,
+ "y": 90
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/vengefuldemoncrystal.json b/src/generated/resources/assets/bloodmagic/blockstates/vengefuldemoncrystal.json
new file mode 100644
index 00000000..c4f8f825
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/vengefuldemoncrystal.json
@@ -0,0 +1,431 @@
+{
+ "multipart": [
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal1",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal1"
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal1",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal1",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal1",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "0|1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal1",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal2",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal2"
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal2",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal2",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal2",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "1|2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal2",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal3",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal3"
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal3",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal3",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal3",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "2|3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal3",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal4",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal4"
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal4",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal4",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal4",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "3|4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal4",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal5",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal5"
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal5",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal5",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal5",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "4|5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal5",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal6",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal6"
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal6",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal6",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal6",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "5|6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal6",
+ "x": 90,
+ "y": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "down"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal7",
+ "x": 180
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "up"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal7"
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "north"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal7",
+ "x": 90
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "south"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal7",
+ "x": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "west"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal7",
+ "x": 90,
+ "y": 270
+ }
+ },
+ {
+ "when": {
+ "age": "6",
+ "attached": "east"
+ },
+ "apply": {
+ "model": "bloodmagic:block/crystal/vengefulcrystal7",
+ "x": 90,
+ "y": 90
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/waterritualstone.json b/src/generated/resources/assets/bloodmagic/blockstates/waterritualstone.json
new file mode 100644
index 00000000..35b1d3aa
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/waterritualstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/waterritualstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json
new file mode 100644
index 00000000..5b1d7ce2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/woodbrickpath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/woodbrickpath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json
new file mode 100644
index 00000000..6439e3bc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/woodtilepath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/woodtilepath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json b/src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json
new file mode 100644
index 00000000..4c9539bf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/wornstonebrickpath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/wornstonebrickpath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json b/src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json
new file mode 100644
index 00000000..db7e680a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/blockstates/wornstonetilepath.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "bloodmagic:block/wornstonetilepath"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/lang/en_us.json b/src/generated/resources/assets/bloodmagic/lang/en_us.json
new file mode 100644
index 00000000..32f01ab1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/lang/en_us.json
@@ -0,0 +1,503 @@
+{
+ "anointment.bloodmagic.bow_power": "Heavy Shot",
+ "anointment.bloodmagic.fortune": "Fortunate",
+ "anointment.bloodmagic.hidden_knowledge": "Miner's Secrets",
+ "anointment.bloodmagic.holy_water": "Holy Light",
+ "anointment.bloodmagic.looting": "Plundering",
+ "anointment.bloodmagic.melee_damage": "Whetstone",
+ "anointment.bloodmagic.quick_draw": "Deft Hands",
+ "anointment.bloodmagic.silk_touch": "Soft Touch",
+ "anointment.bloodmagic.smelting": "Heated Tool",
+ "block.bloodmagic.accelerationrune": "Acceleration Rune",
+ "block.bloodmagic.airritualstone": "Air Ritual Stone",
+ "block.bloodmagic.alchemicalreactionchamber": "Alchemical Reaction Chamber",
+ "block.bloodmagic.alchemytable": "Alchemy Table",
+ "block.bloodmagic.altar": "Blood Altar",
+ "block.bloodmagic.altarcapacityrune": "Rune of Capacity",
+ "block.bloodmagic.bettercapacityrune": "Rune of Augmented Capacity",
+ "block.bloodmagic.blankrune": "Blank Rune",
+ "block.bloodmagic.bloodstonebrick": "Bloodstone Brick",
+ "block.bloodmagic.chargingrune": "Charging Rune",
+ "block.bloodmagic.corrosivedemoncrystal": "Corrosive Crystal Cluster",
+ "block.bloodmagic.deforester_charge": "Deforester Charge",
+ "block.bloodmagic.demoncrucible": "Demon Crucible",
+ "block.bloodmagic.demoncrystallizer": "Demon Crystallizer",
+ "block.bloodmagic.destructivedemoncrystal": "Destructive Crystal Cluster",
+ "block.bloodmagic.dislocationrune": "Displacement Rune",
+ "block.bloodmagic.dungeon_brick1": "Demon Bricks",
+ "block.bloodmagic.dungeon_brick2": "Offset Demon Bricks",
+ "block.bloodmagic.dungeon_brick3": "Long Demon Bricks",
+ "block.bloodmagic.dungeon_brick_assorted": "Assorted Demon Bricks",
+ "block.bloodmagic.dungeon_brick_gate": "Demon Brick Gate",
+ "block.bloodmagic.dungeon_brick_stairs": "Demon Brick Stairs",
+ "block.bloodmagic.dungeon_brick_wall": "Demon Brick Wall",
+ "block.bloodmagic.dungeon_eye": "Demon Eye",
+ "block.bloodmagic.dungeon_ore": "Demonite",
+ "block.bloodmagic.dungeon_pillar_cap": "Demon Stone Pillar Cap",
+ "block.bloodmagic.dungeon_pillar_center": "Demon Stone Pillar",
+ "block.bloodmagic.dungeon_pillar_special": "Accented Demon Stone Pillar",
+ "block.bloodmagic.dungeon_polished": "Polished Demon Stone",
+ "block.bloodmagic.dungeon_polished_gate": "Demon Stone Gate",
+ "block.bloodmagic.dungeon_polished_stairs": "Demon Stone Stairs",
+ "block.bloodmagic.dungeon_polished_wall": "Demon Stone Wall",
+ "block.bloodmagic.dungeon_smallbrick": "Small Demon Bricks",
+ "block.bloodmagic.dungeon_stone": "Demon Stone",
+ "block.bloodmagic.dungeon_tile": "Demon Stone Tiles",
+ "block.bloodmagic.dungeon_tilespecial": "Accented Demon Stone Tiles",
+ "block.bloodmagic.duskritualstone": "Dusk Ritual Stone",
+ "block.bloodmagic.earthritualstone": "Earth Ritual Stone",
+ "block.bloodmagic.fireritualstone": "Fire Ritual Stone",
+ "block.bloodmagic.fungal_charge": "Fungal Charge",
+ "block.bloodmagic.incensealtar": "Incense Altar",
+ "block.bloodmagic.largebloodstonebrick": "Large Bloodstone Brick",
+ "block.bloodmagic.lightritualstone": "Dawn Ritual Stone",
+ "block.bloodmagic.masterritualstone": "Master Ritual Stone",
+ "block.bloodmagic.obsidianbrickpath": "Obsidian Path",
+ "block.bloodmagic.obsidiantilepath": "Tiled Obsidian Path",
+ "block.bloodmagic.orbcapacityrune": "Rune of the Orb",
+ "block.bloodmagic.rawdemoncrystal": "Raw Crystal Cluster",
+ "block.bloodmagic.ritualstone": "Ritual Stone",
+ "block.bloodmagic.sacrificerune": "Rune of Sacrifice",
+ "block.bloodmagic.selfsacrificerune": "Rune of Self Sacrifice",
+ "block.bloodmagic.shaped_charge": "Shaped Charge",
+ "block.bloodmagic.soulforge": "Hellfire Forge",
+ "block.bloodmagic.speedrune": "Speed Rune",
+ "block.bloodmagic.steadfastdemoncrystal": "Steadfast Crystal Cluster",
+ "block.bloodmagic.stonebrickpath": "Stone Path",
+ "block.bloodmagic.stonetilepath": "Tiled Stone Path",
+ "block.bloodmagic.veinmine_charge": "Controlled Charge",
+ "block.bloodmagic.vengefuldemoncrystal": "Vengeful Crystal Cluster",
+ "block.bloodmagic.waterritualstone": "Water Ritual Stone",
+ "block.bloodmagic.woodbrickpath": "Wooden Path",
+ "block.bloodmagic.woodtilepath": "Tiled Wooden Path",
+ "block.bloodmagic.wornstonebrickpath": "Worn Stone Path",
+ "block.bloodmagic.wornstonetilepath": "Tiled Worn Stone Path",
+ "bloodmagic.keybind.cycle_holding_neg": "Cycle Sigil (-)",
+ "bloodmagic.keybind.cycle_holding_pos": "Cycle Sigil (+)",
+ "bloodmagic.keybind.open_holding": "Open Sigil of Holding",
+ "chat.bloodmagic.damageSource": "%s's soul became too weak",
+ "chat.bloodmagic.living_upgrade_level_increase": "%s has leveled up to %d",
+ "chat.bloodmagic.ritual.activate": "A rush of energy flows through the ritual!",
+ "chat.bloodmagic.ritual.notValid": "You feel that these runes are not configured correctly...",
+ "chat.bloodmagic.ritual.prevent": "The ritual is actively resisting you!",
+ "chat.bloodmagic.ritual.weak": "You feel a push, but are too weak to perform this ritual.",
+ "gui.bloodmagic.empty": "Empty",
+ "guide.bloodmagic.landing_text": "\"It is my dear hope that by holding this tome in your hands, I may impart the knowledge of the lost art that is Blood Magic\"$(br)$(o)- Magus Arcana$()",
+ "guide.bloodmagic.name": "Sanguine Scientiem",
+ "hud.bloodmagic.inactive": "Inactive",
+ "item.bloodmagic.activationcrystalawakened": "Awakened Activation Crystal",
+ "item.bloodmagic.activationcrystalcreative": "Creative Activation Crystal",
+ "item.bloodmagic.activationcrystalweak": "Weak Activation Crystal",
+ "item.bloodmagic.airscribetool": "Inscription Tool: Air",
+ "item.bloodmagic.airsigil": "Air Sigil",
+ "item.bloodmagic.apprenticebloodorb": "Apprentice Blood Orb",
+ "item.bloodmagic.arcaneashes": "Arcane Ashes",
+ "item.bloodmagic.basemonstersoul": "Demon Will",
+ "item.bloodmagic.basemonstersoul_corrosive": "Demon Will",
+ "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.bow_power_anointment": "Iron Tip",
+ "item.bloodmagic.coalsand": "Coal Sand",
+ "item.bloodmagic.corrosivecrystal": "Corrosive Will Crystal",
+ "item.bloodmagic.crystalline_resonator": "Crystalline Resonator",
+ "item.bloodmagic.daggerofsacrifice": "Dagger of Sacrifice",
+ "item.bloodmagic.defaultcrystal": "Demon Will Crystal",
+ "item.bloodmagic.demonslate": "Demonic Slate",
+ "item.bloodmagic.destructivecrystal": "Destructive Will Crystal",
+ "item.bloodmagic.divinationsigil": "Divination Sigil",
+ "item.bloodmagic.duskscribetool": "Inscription Tool: Dusk",
+ "item.bloodmagic.earthscribetool": "Inscription Tool: Earth",
+ "item.bloodmagic.etherealslate": "Ethereal Slate",
+ "item.bloodmagic.experiencebook": "Tome of Peritia",
+ "item.bloodmagic.explosivepowder": "Explosive Powder",
+ "item.bloodmagic.firescribetool": "Inscription Tool: Fire",
+ "item.bloodmagic.fortune_anointment": "Fortuna Extract",
+ "item.bloodmagic.fragment_netherite_scrap": "Ancient Debris Fragment",
+ "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.gravel_netherite_scrap": "Ancient Debris Gravel",
+ "item.bloodmagic.growthsigil": "Sigil of the Green Grove",
+ "item.bloodmagic.hidden_knowledge_anointment": "Miner's Secrets",
+ "item.bloodmagic.holy_water_anointment": "Holy Water",
+ "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.livingboots": "Living Boots",
+ "item.bloodmagic.livinghelmet": "Living Helmet",
+ "item.bloodmagic.livingleggings": "Living Leggings",
+ "item.bloodmagic.livingplate": "Living Chestplate",
+ "item.bloodmagic.looting_anointment": "Plunderer's Glint",
+ "item.bloodmagic.magicianbloodorb": "Magician Blood Orb",
+ "item.bloodmagic.masterbloodorb": "Master Blood Orb",
+ "item.bloodmagic.melee_anointment": "Honing Oil",
+ "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.quick_draw_anointment": "Dexterity Alkahest",
+ "item.bloodmagic.reagentair": "Air Reagent",
+ "item.bloodmagic.reagentbinding": "Binding Reagent",
+ "item.bloodmagic.reagentbloodlight": "Blood Lamp Reagent",
+ "item.bloodmagic.reagentfastminer": "Mining Reagent",
+ "item.bloodmagic.reagentgrowth": "Growth Reagent",
+ "item.bloodmagic.reagentholding": "Holding Reagent",
+ "item.bloodmagic.reagentlava": "Lava Reagent",
+ "item.bloodmagic.reagentmagnetism": "Magnetism Reagent",
+ "item.bloodmagic.reagentsight": "Sight Reagent",
+ "item.bloodmagic.reagentvoid": "Void Reagent",
+ "item.bloodmagic.reagentwater": "Water Reagent",
+ "item.bloodmagic.reinforcedslate": "Reinforced Slate",
+ "item.bloodmagic.ritualdiviner": "Ritual Diviner",
+ "item.bloodmagic.ritualdivinerdusk": "Ritual Diviner [Dusk]",
+ "item.bloodmagic.ritualtinkerer": "Ritual Tinkerer",
+ "item.bloodmagic.sacrificialdagger": "Sacrificial Knife",
+ "item.bloodmagic.saltpeter": "Saltpeter",
+ "item.bloodmagic.sand_netherite": "Netherite Scrap Sand",
+ "item.bloodmagic.sanguinereverter": "Sanguine Reverter",
+ "item.bloodmagic.seersigil": "Seer's Sigil",
+ "item.bloodmagic.sigilofholding": "Sigil of Holding",
+ "item.bloodmagic.sigilofmagnetism": "Sigil of Magnetism",
+ "item.bloodmagic.silk_touch_anointment": "Soft Coating",
+ "item.bloodmagic.slate_ampoule": "Slate Ampoule",
+ "item.bloodmagic.slate_vial": "Slate-infused Vial",
+ "item.bloodmagic.smelting_anointment": "Slow-burning Oil",
+ "item.bloodmagic.soulaxe": "Sentient Axe",
+ "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.soulpickaxe": "Sentient Pickaxe",
+ "item.bloodmagic.soulscythe": "Sentient Scythe",
+ "item.bloodmagic.soulshovel": "Sentient Shovel",
+ "item.bloodmagic.soulsnare": "Soul Snare",
+ "item.bloodmagic.soulsword": "Sentient Sword",
+ "item.bloodmagic.steadfastcrystal": "Steadfast Will Crystal",
+ "item.bloodmagic.sulfur": "Sulfur",
+ "item.bloodmagic.throwing_dagger": "Iron Throwing Dagger",
+ "item.bloodmagic.throwing_dagger_syringe": "Syringe Throwing Dagger",
+ "item.bloodmagic.upgradetome": "Living Armour Upgrade Tome",
+ "item.bloodmagic.vengefulcrystal": "Vengeful Will Crystal",
+ "item.bloodmagic.voidsigil": "Void Sigil",
+ "item.bloodmagic.waterscribetool": "Inscription Tool: Water",
+ "item.bloodmagic.watersigil": "Water Sigil",
+ "item.bloodmagic.weakbloodorb": "Weak Blood Orb",
+ "item.bloodmagic.weakbloodshard": "Weak Blood Shard",
+ "itemGroup.bloodmagic.creativeTab": "Blood Magic",
+ "itemGroup.bloodmagictab": "Blood Magic",
+ "jei.bloodmagic.recipe.alchemyarraycrafting": "Alchemy Array",
+ "jei.bloodmagic.recipe.alchemytable": "Alchemy Table",
+ "jei.bloodmagic.recipe.altar": "Blood Altar",
+ "jei.bloodmagic.recipe.arc": "ARC Recipe",
+ "jei.bloodmagic.recipe.arcfurnace": "ARC Furnace Recipe",
+ "jei.bloodmagic.recipe.consumptionrate": "Consumption: %s LP/t",
+ "jei.bloodmagic.recipe.drainrate": "Drain: %s LP/t",
+ "jei.bloodmagic.recipe.lpDrained": "Drained: %s LP",
+ "jei.bloodmagic.recipe.minimumsouls": "Minimum: %s Will",
+ "jei.bloodmagic.recipe.requiredlp": "LP: %d",
+ "jei.bloodmagic.recipe.requiredtier": "Tier: %d",
+ "jei.bloodmagic.recipe.soulforge": "Hellfire Forge",
+ "jei.bloodmagic.recipe.soulsdrained": "Drained: %s Will",
+ "jei.bloodmagic.recipe.ticksRequired": "Time: %sTicks",
+ "key.bloodmagic.category": "Blood Magic",
+ "living_upgrade.bloodmagic.arrow_protect": "Pin Cushion",
+ "living_upgrade.bloodmagic.arrow_shot": "Trick Shot",
+ "living_upgrade.bloodmagic.battleHunger": "Battle Hungry",
+ "living_upgrade.bloodmagic.crippledArm": "Crippled Arm",
+ "living_upgrade.bloodmagic.critical_strike": "True Strike",
+ "living_upgrade.bloodmagic.digSlowdown": "Weakened Pick",
+ "living_upgrade.bloodmagic.digging": "Dwarven Might",
+ "living_upgrade.bloodmagic.disoriented": "Disoriented",
+ "living_upgrade.bloodmagic.elytra": "Elytra",
+ "living_upgrade.bloodmagic.experienced": "Experienced",
+ "living_upgrade.bloodmagic.fall_protect": "Soft Fall",
+ "living_upgrade.bloodmagic.fire_resist": "Gift of Ignis",
+ "living_upgrade.bloodmagic.grave_digger": "Grave Digger",
+ "living_upgrade.bloodmagic.grim_reaper": "Grim Reaper's Sprint",
+ "living_upgrade.bloodmagic.health": "Healthy",
+ "living_upgrade.bloodmagic.jump": "Strong Legs",
+ "living_upgrade.bloodmagic.knockback_resist": "Body Builder",
+ "living_upgrade.bloodmagic.meleeDecrease": "Dulled Blade",
+ "living_upgrade.bloodmagic.melee_damage": "Fierce Strike",
+ "living_upgrade.bloodmagic.night_sight": "Nocturnal Prowess",
+ "living_upgrade.bloodmagic.physical_protect": "Tough",
+ "living_upgrade.bloodmagic.poison_resist": "Poison Resistance",
+ "living_upgrade.bloodmagic.quenched": "Quenched",
+ "living_upgrade.bloodmagic.repair": "Repairing",
+ "living_upgrade.bloodmagic.revealing": "Revealing",
+ "living_upgrade.bloodmagic.self_sacrifice": "Tough Palms",
+ "living_upgrade.bloodmagic.slippery": "Loose Traction",
+ "living_upgrade.bloodmagic.slowHeal": "Diseased",
+ "living_upgrade.bloodmagic.slowness": "Limp Leg",
+ "living_upgrade.bloodmagic.solar_powered": "Solar Powered",
+ "living_upgrade.bloodmagic.speed": "Quick Feet",
+ "living_upgrade.bloodmagic.sprint_attack": "Charging Strike",
+ "living_upgrade.bloodmagic.step_assist": "Step Assist",
+ "living_upgrade.bloodmagic.stormTrooper": "Storm Trooper",
+ "living_upgrade.bloodmagic.thaumRunicShielding": "Runic Shielding",
+ "ritual.bloodmagic.altarBuilderRitual": "The Assembly of the High Altar",
+ "ritual.bloodmagic.altarBuilderRitual.info": "Builds an altar out of the components inside of the connected inventory.",
+ "ritual.bloodmagic.animalGrowthRitual": "Ritual of the Shepherd",
+ "ritual.bloodmagic.animalGrowthRitual.chest.info": "(Chest) Chest for breeding items if properly augmented.",
+ "ritual.bloodmagic.animalGrowthRitual.corrosive.info": "(Corrosive) Unimplemented.",
+ "ritual.bloodmagic.animalGrowthRitual.default.info": "(Raw) Increases the speed of the ritual based on the total Will in the Aura.",
+ "ritual.bloodmagic.animalGrowthRitual.destructive.info": "(Destructive) Causes adults that have not bred lately to run at mobs and explode.",
+ "ritual.bloodmagic.animalGrowthRitual.growing.info": "(Growth) Animals within this range will grow much faster.",
+ "ritual.bloodmagic.animalGrowthRitual.info": "Increases the maturity rate of baby animals within its range.",
+ "ritual.bloodmagic.animalGrowthRitual.steadfast.info": "(Steadfast) Automatically breeds adults within its area using items in the connected chest.",
+ "ritual.bloodmagic.animalGrowthRitual.vengeful.info": "(Vengeful) Decreases the time it takes for adults to breed again.",
+ "ritual.bloodmagic.armourEvolveRitual": "Ritual of Living Evolution",
+ "ritual.bloodmagic.armourEvolveRitual.info": "Increases the amount of maximum Upgrade Points on your Living Armor to 300.",
+ "ritual.bloodmagic.blockRange.firstBlock": "First block for new range stored.",
+ "ritual.bloodmagic.blockRange.inactive": "The ritual stone is currently inactive, and cannot have its range modified.",
+ "ritual.bloodmagic.blockRange.noRange": "The range was not properly chosen.",
+ "ritual.bloodmagic.blockRange.success": "New range successfully set!",
+ "ritual.bloodmagic.blockRange.tooBig": "The block range given is too big! Needs to be at most %s blocks.",
+ "ritual.bloodmagic.blockRange.tooFar": "The block range given is too far! Needs to be within a vertical range of %s blocks and a horizontal range of %s blocks.",
+ "ritual.bloodmagic.cobblestoneRitual": "Le Vulcanos Frigius",
+ "ritual.bloodmagic.condorRitual.info": "Provides flight in an area around the ritual.",
+ "ritual.bloodmagic.containmentRitual": "Ritual of Containment",
+ "ritual.bloodmagic.containmentRitual.containmentRange.info": "(Containment) The area of the ritual where mobs will be pulled. All mobs are pulled towards the master ritual stone, regardless of where this area is.",
+ "ritual.bloodmagic.containmentRitual.info": "Pulls all mobs within its area towards the master ritual stone.",
+ "ritual.bloodmagic.crushingRitual": "Ritual of the Crusher",
+ "ritual.bloodmagic.crushingRitual.chest.info": "(Chest) The location of the inventory that the ritual will place the broken blocks into.",
+ "ritual.bloodmagic.crushingRitual.corrosive.info": "(Corrosive) All blocks are broken to be processed with a form of cutting fluid. Overrides Silk Touch where applicable.",
+ "ritual.bloodmagic.crushingRitual.crushingRange.info": "(Crushing) The blocks that the ritual will break.",
+ "ritual.bloodmagic.crushingRitual.default.info": "(Raw) Increases the speed of the ritual based on total Will.",
+ "ritual.bloodmagic.crushingRitual.destructive.info": "(Destructive) Blocks are broken down forcefully: all blocks broken are affected by Fortune III.",
+ "ritual.bloodmagic.crushingRitual.info": "Breaks blocks within its crushing range and places the items into the linked chest.",
+ "ritual.bloodmagic.crushingRitual.steadfast.info": "(Steadfast) Causes all blocks that are broken to be picked up with silk touch. Overrides Fortune where applicable.",
+ "ritual.bloodmagic.crushingRitual.vengeful.info": "(Vengeful) Compresses the inventory on successful operation. Currently only does one compression per operation.",
+ "ritual.bloodmagic.crystalHarvestRitual": "Crack of the Fractured Crystal",
+ "ritual.bloodmagic.crystalHarvestRitual.crystal.info": "(Crystal) All Demon Will crystal clusters have a single crystal broken off, spawning the crystal into the world. If there is only one crystal on the cluster, it will not break it.",
+ "ritual.bloodmagic.crystalHarvestRitual.info": "Breaks Demon Will crystal clusters within its range, dropping the results on top of the crystals.",
+ "ritual.bloodmagic.crystalSplitRitual": "Resonance of the Faceted Crystal",
+ "ritual.bloodmagic.crystalSplitRitual.info": "Splits apart a well-grown Raw crystal cluster into seperal aspected crystal clusters.",
+ "ritual.bloodmagic.ellipseRitual": "Focus of the Ellipsoid",
+ "ritual.bloodmagic.ellipseRitual.chest.info": "(Chest) The location of the inventory that the ritual will grab blocks from to place in the world.",
+ "ritual.bloodmagic.ellipseRitual.info": "Creates a hollow spheroid around the ritual using the blocks in the attached chest.",
+ "ritual.bloodmagic.ellipseRitual.spheroidRange.info": "(Placement) The range that the ritual will place its blocks in. Spheroid is centered on the ritual - if one side is shorter than the side opposite the spheroid is truncated.",
+ "ritual.bloodmagic.eternalSoulRitual.info": "Capable of transferring Life Essence from a Network back into an Altar at a cost.",
+ "ritual.bloodmagic.expulsionRitual": "Aura of Expulsion",
+ "ritual.bloodmagic.expulsionRitual.expulsionRange.info": "(Expulsion) The area from which players that are not owner or have an orb in the chest will be teleported away from.",
+ "ritual.bloodmagic.expulsionRitual.info": "Expels players from its range that are neither the owner nor have a bound blood orb in the chest on top of the master ritual stone.",
+ "ritual.bloodmagic.featheredKnifeRitual": "Ritual of the Feathered Knife",
+ "ritual.bloodmagic.featheredKnifeRitual.altar.info": "(Altar) This range defines the area that the ritual searches for the blood altar. Changing this will either expand or limit the range to a certain region.",
+ "ritual.bloodmagic.featheredKnifeRitual.corrosive.info": "(Corrosive) Uses the player's Incense to increase the yield.",
+ "ritual.bloodmagic.featheredKnifeRitual.damage.info": "(Damage) This defines where the ritual will damage a player. Players inside of this range will receive damage over time up to the specified limit.",
+ "ritual.bloodmagic.featheredKnifeRitual.default.info": "(Raw) Increases the speed of the ritual based on the total Will in the Aura.",
+ "ritual.bloodmagic.featheredKnifeRitual.destructive.info": "(Destructive) Increases the yield of the ritual based on total Will.",
+ "ritual.bloodmagic.featheredKnifeRitual.info": "Drains health from players in its area and puts the LP into a nearby blood altar.",
+ "ritual.bloodmagic.featheredKnifeRitual.steadfast.info": "(Steadfast) Sets the minimum health for sacrificing from 30%% to 70%%.",
+ "ritual.bloodmagic.featheredKnifeRitual.vengeful.info": "(Vengeful) Sets the minimum health for sacrificing to 10%%. Overridden by Steadfast for the Owner if active.",
+ "ritual.bloodmagic.fellingRitual": "The Timberman",
+ "ritual.bloodmagic.fellingRitual.chest.info": "(Chest) The location of the inventory that the ritual will place the results into.",
+ "ritual.bloodmagic.fellingRitual.fellingRange.info": "(Cutting) The range that the ritual will search out logs and leaves in order to cut down.",
+ "ritual.bloodmagic.fellingRitual.info": "A standard tree-cutting machine, this ritual will cut down all trees and leaves within its area and collect the drops.",
+ "ritual.bloodmagic.forsakenSoulRitual": "Gathering of the Forsaken Souls",
+ "ritual.bloodmagic.forsakenSoulRitual.crystal.info": "(Crystal) Demon Crystals in this range receive an increase in growth speed when a mob is killed by the ritual.",
+ "ritual.bloodmagic.forsakenSoulRitual.damage.info": "(Damage) Mobs within this range will be slowly damaged, and when killed will grow the crystals.",
+ "ritual.bloodmagic.forsakenSoulRitual.info": "Damages mobs within its damage range and when the mob dies a demon crystal within its crystal range will be grown.",
+ "ritual.bloodmagic.fullStomachRitual": "Ritual of the Satiated Stomach",
+ "ritual.bloodmagic.fullStomachRitual.chest.info": "(Chest) The location of the inventory that the ritual will grab food from to feed players in range.",
+ "ritual.bloodmagic.fullStomachRitual.fillRange.info": "(Feeding) The range that the ritual will look at to feed players.",
+ "ritual.bloodmagic.fullStomachRitual.info": "Takes food from the linked chest and fills the player's saturation with it.",
+ "ritual.bloodmagic.greenGroveRitual": "Ritual of the Green Grove",
+ "ritual.bloodmagic.greenGroveRitual.corrosive.info": "(Corrosive) Entities within range are attacked by nearby plants, leeching away their life.",
+ "ritual.bloodmagic.greenGroveRitual.default.info": "(Raw) Increases the speed of all of the ritual operations depending on the total Will in the Aura.",
+ "ritual.bloodmagic.greenGroveRitual.destructive.info": "(Destructive) Growing range is increased based on total Will.",
+ "ritual.bloodmagic.greenGroveRitual.growing.info": "(Growth) The area that the ritual will grow plants in.",
+ "ritual.bloodmagic.greenGroveRitual.hydrate.info": "(Steadfast) Blocks within this range are rehydrated into farmland, and seeds within the area are planted nearby.",
+ "ritual.bloodmagic.greenGroveRitual.info": "Grows crops within its area.",
+ "ritual.bloodmagic.greenGroveRitual.leech.info": "(Corrosive) Entities in this area have their life drained to grow nearby crops.",
+ "ritual.bloodmagic.greenGroveRitual.steadfast.info": "(Steadfast) Seeds are replanted and blocks are hydrated within the Hydration range.",
+ "ritual.bloodmagic.greenGroveRitual.vengeful.info": "(Vengeful) Increases the rate that a growth tick is successful.",
+ "ritual.bloodmagic.groundingRitual.corrosive.info": "(Corrosive) Disables gravity (+Vengeful) Applies Levitation.",
+ "ritual.bloodmagic.groundingRitual.default.info": "(Raw) Affects players.",
+ "ritual.bloodmagic.groundingRitual.destructive.info": "(Destructive) Applies Heavy Heart (increases fall damage) (+Vengeful) Stronger effect.",
+ "ritual.bloodmagic.groundingRitual.info": "Forces entities on the ground and prevents jumping.",
+ "ritual.bloodmagic.groundingRitual.steadfast.info": "(Steadfast) Affects Bosses. Doesn't affect bosses that are immune against motion change or immune against potions (except Wither and Ender Dragon).",
+ "ritual.bloodmagic.groundingRitual.vengeful.info": "(Vengeful) Makes effects stronger. (+Corrosive) Applies Levitation. (+Destructive) Higher Heavy Heart amplifier.",
+ "ritual.bloodmagic.harvestRitual": "Reap of the Harvest Moon",
+ "ritual.bloodmagic.harvestRitual.harvestRange.info": "(Harvesting) Plants within this range will be harvested.",
+ "ritual.bloodmagic.harvestRitual.info": "Harvests plants within its range, dropping the results on the ground.",
+ "ritual.bloodmagic.interdictionRitual": "Ritual of Interdiction",
+ "ritual.bloodmagic.interdictionRitual.info": "Pushes all mobs within its area away from the master ritual stone.",
+ "ritual.bloodmagic.interdictionRitual.interdictionRange.info": "(Push) The area of the ritual where mobs will be pushed. All mobs are pushed away from the master ritual stone, regardless of where this area is.",
+ "ritual.bloodmagic.jumpRitual": "Ritual of the High Jump",
+ "ritual.bloodmagic.jumpRitual.info": "Causes entities to leap up into the air.",
+ "ritual.bloodmagic.jumpRitual.jumpRange.info": "(Jumping) Entities in this range will be launched in the air.",
+ "ritual.bloodmagic.lavaRitual": "Serenade of the Nether",
+ "ritual.bloodmagic.lavaRitual.corrosive.info": "(Corrosive) Entities within range that are immune to fire are damaged severely.",
+ "ritual.bloodmagic.lavaRitual.default.info": "(Raw) Decreases the LP cost of placing lava and allows lava to be placed insided of a linked container.",
+ "ritual.bloodmagic.lavaRitual.destructive.info": "(Destructive) Lava placement range is increased based on total Will.",
+ "ritual.bloodmagic.lavaRitual.fireDamage.info": "(Corrosive) Entities within this range that are immune to fire damage are hurt proportional to the Will.",
+ "ritual.bloodmagic.lavaRitual.fireFuse.info": "(Vengeful) Entities in this range are afflicted by Fire Fuse.",
+ "ritual.bloodmagic.lavaRitual.fireResist.info": "(Steadfast) Players in this range have Fire Resist applied.",
+ "ritual.bloodmagic.lavaRitual.info": "Generates a source of lava from the master ritual stone.",
+ "ritual.bloodmagic.lavaRitual.lavaRange.info": "(Lava) The area that the ritual will place lava source blocks.",
+ "ritual.bloodmagic.lavaRitual.lavaTank.info": "(Raw) The tank that the ritual will place lava into.",
+ "ritual.bloodmagic.lavaRitual.steadfast.info": "(Steadfast) Players within a designated range have Fire Resistance applied to them.",
+ "ritual.bloodmagic.lavaRitual.vengeful.info": "(Vengeful) Entities within range have Fire Fuse applied to them.",
+ "ritual.bloodmagic.magneticRitual": "Ritual of Magnetism",
+ "ritual.bloodmagic.magneticRitual.info": "Pulls up ores from the ground and puts them into its placement range.",
+ "ritual.bloodmagic.magneticRitual.placementRange.info": "(Placement) The range that the ritual will place the grabbed ores into.",
+ "ritual.bloodmagic.meteorRitual.info": "Consumes an item inside of its item range to summon a meteor full of resources from the sky, aimed directly at the ritual.",
+ "ritual.bloodmagic.placerRitual": "The Filler",
+ "ritual.bloodmagic.placerRitual.chest.info": "(Chest) The location of the inventory that the ritual will grab blocks from to place in the world.",
+ "ritual.bloodmagic.placerRitual.info": "Grabs blocks that are inside of the connected inventory and places them into the world.",
+ "ritual.bloodmagic.placerRitual.placerRange.info": "(Placement) The range that the ritual will place its blocks in.",
+ "ritual.bloodmagic.portalRitual": "The Gate of the Fold",
+ "ritual.bloodmagic.portalRitual.info": "Creates a portal network based on the activator and the immediately surrounding blocks. Blocks can be changed after activation without changing the network of portals, and portals with the same \"key\" will link together.",
+ "ritual.bloodmagic.pumpRitual": "Hymn of Siphoning",
+ "ritual.bloodmagic.pumpRitual.info": "Looks around the world and grabs fluids from the defined area. Will only remove and put the fluid into the connected tank if the tank has at least a bucket's worth of the same fluid.",
+ "ritual.bloodmagic.pumpRitual.pumpRange.info": "(Pump) The region that the ritual will look for fluids to grab from the world.",
+ "ritual.bloodmagic.regenerationRitual": "Ritual of Regeneration",
+ "ritual.bloodmagic.regenerationRitual.corrosive.info": "(Corrosive) Steals health from non-players inside of its Vampirism range and directly heals players.",
+ "ritual.bloodmagic.regenerationRitual.default.info": "(Raw)",
+ "ritual.bloodmagic.regenerationRitual.destructive.info": "(Destructive)",
+ "ritual.bloodmagic.regenerationRitual.heal.info": "(Healing) Entities within this range will receive a regeneration buff.",
+ "ritual.bloodmagic.regenerationRitual.info": "Casts regeneration on entities within its range if they are missing health.",
+ "ritual.bloodmagic.regenerationRitual.steadfast.info": "(Steadfast)",
+ "ritual.bloodmagic.regenerationRitual.vampire.info": "(Vampirism) Mobs within this range have their health syphoned to heal players in the Healing range.",
+ "ritual.bloodmagic.regenerationRitual.vengeful.info": "(Vengeful)",
+ "ritual.bloodmagic.speedRitual": "Ritual of Speed",
+ "ritual.bloodmagic.speedRitual.default.info": "(Raw) Increases the velocity caused by the ritual based on total Will.",
+ "ritual.bloodmagic.speedRitual.destructive.info": "(Destructive) Prevents child mobs and players from being transported. Players are transported if paired with Vengeful.",
+ "ritual.bloodmagic.speedRitual.info": "Launches players within its range in the direction of the ritual.",
+ "ritual.bloodmagic.speedRitual.sanicRange.info": "(Speed) All entities within this area are launched in the direction of the arrow formed by the ritual.",
+ "ritual.bloodmagic.speedRitual.vengeful.info": "(Vengeful) Prevents adult mobs and players from being transported. Players are transported if paired with Destructive.",
+ "ritual.bloodmagic.suppressionRitual": "Ritual of Suppression",
+ "ritual.bloodmagic.suppressionRitual.info": "Suppresses fluids within its range - deactivating the ritual returns the fluids back to the world.",
+ "ritual.bloodmagic.suppressionRitual.suppressionRange.info": "(Suppress) All liquids within the range are suppressed.",
+ "ritual.bloodmagic.testRitual": "Test Ritual",
+ "ritual.bloodmagic.upgradeRemoveRitual": "Sound of the Cleansing Soul",
+ "ritual.bloodmagic.upgradeRemoveRitual.info": "Removes all upgrades (and downgrades) from your Living Armor and gives you the corresponding Upgrade (and Downgrade) Tomes. These Tomes can be used to be applied to your Living Armor again.",
+ "ritual.bloodmagic.waterRitual": "Ritual of the Full Spring",
+ "ritual.bloodmagic.waterRitual.info": "Generates a source of water from the master ritual stone.",
+ "ritual.bloodmagic.waterRitual.waterRange.info": "(Water) The area that the ritual will place water source blocks.",
+ "ritual.bloodmagic.waterRitual.waterTank.info": "(Raw) The tank that the ritual will place water into.",
+ "ritual.bloodmagic.wellOfSufferingRitual": "Well of Suffering",
+ "ritual.bloodmagic.wellOfSufferingRitual.altar.info": "(Altar) This range defines the area that the ritual searches for the blood altar. Changing this will either expand or limit the range to a certain region.",
+ "ritual.bloodmagic.wellOfSufferingRitual.damage.info": "(Damage) This defines where the ritual will damage a mob. All mobs inside of this range (except for players) will receive damage over time.",
+ "ritual.bloodmagic.wellOfSufferingRitual.info": "Attacks mobs within its damage zone and puts the LP into a nearby blood altar.",
+ "ritual.bloodmagic.willConfig.set": "The ritual will use these Demon Will types: %s",
+ "ritual.bloodmagic.willConfig.void": "The ritual no longer uses Demon Will",
+ "ritual.bloodmagic.zephyrRitual": "Call of the Zephyr",
+ "ritual.bloodmagic.zephyrRitual.chest.info": "(Chest) The location of the inventory that the ritual will place the picked up items into.",
+ "ritual.bloodmagic.zephyrRitual.info": "Picks up items within its range and places them into the linked chest.",
+ "ritual.bloodmagic.zephyrRitual.zephyrRange.info": "(Suction) Items within this range will be sucked into the linked chest.",
+ "tile.bloodmagic.alchemytable.name": "Alchemy Table",
+ "tile.bloodmagic.arc.name": "Alchemical Reaction Chamber",
+ "tile.bloodmagic.soulforge.name": "Hellfire Forge",
+ "tooltip.bloodmagic.activated": "Activated",
+ "tooltip.bloodmagic.activationcrystal.awakened": "Activates more powerful rituals",
+ "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.blood_provider.slate.desc": "A simple ampoule containing 500LP",
+ "tooltip.bloodmagic.config.disabled": "Currently disabled in the Config",
+ "tooltip.bloodmagic.currentBaseType.corrosive": "Corrosive",
+ "tooltip.bloodmagic.currentBaseType.default": "Raw",
+ "tooltip.bloodmagic.currentBaseType.destructive": "Destructive",
+ "tooltip.bloodmagic.currentBaseType.steadfast": "Steadfast",
+ "tooltip.bloodmagic.currentBaseType.vengeful": "Vengeful",
+ "tooltip.bloodmagic.currentOwner": "Current owner: %s",
+ "tooltip.bloodmagic.currentTier": "Current tier: %d",
+ "tooltip.bloodmagic.currentType.corrosive": "Contains: Corrosive Will",
+ "tooltip.bloodmagic.currentType.default": "Contains: Raw Will",
+ "tooltip.bloodmagic.currentType.destructive": "Contains: Destructive Will",
+ "tooltip.bloodmagic.currentType.steadfast": "Contains: Steadfast Will",
+ "tooltip.bloodmagic.currentType.vengeful": "Contains: Vengeful Will",
+ "tooltip.bloodmagic.deactivated": "Deactivated",
+ "tooltip.bloodmagic.decoration.notSafe": "Dangerous for decoration",
+ "tooltip.bloodmagic.decoration.safe": "Safe for decoration",
+ "tooltip.bloodmagic.diviner.airRune": "Air Runes: %d",
+ "tooltip.bloodmagic.diviner.blankRune": "Blank Runes: %d",
+ "tooltip.bloodmagic.diviner.currentDirection": "Current Direction: %s",
+ "tooltip.bloodmagic.diviner.currentRitual": "Current Ritual: %s",
+ "tooltip.bloodmagic.diviner.dawnRune": "Dawn Runes: %d",
+ "tooltip.bloodmagic.diviner.duskRune": "Dusk Runes: %d",
+ "tooltip.bloodmagic.diviner.earthRune": "Earth Runes: %d",
+ "tooltip.bloodmagic.diviner.extraExtraInfo": "-Hold shift + alt for augmentation info-",
+ "tooltip.bloodmagic.diviner.extraInfo": "Press shift for extra info",
+ "tooltip.bloodmagic.diviner.fireRune": "Fire Runes: %d",
+ "tooltip.bloodmagic.diviner.totalRune": "Total Runes: %d",
+ "tooltip.bloodmagic.diviner.waterRune": "Water Runes: %d",
+ "tooltip.bloodmagic.experienceTome": "A book used to store experience",
+ "tooltip.bloodmagic.experienceTome.exp": "Exp: %0.3f",
+ "tooltip.bloodmagic.experienceTome.expLevel": "Level: %d",
+ "tooltip.bloodmagic.extraInfo": "&9-Hold shift for more info-",
+ "tooltip.bloodmagic.holdShiftForInfo": "Press shift for extra info",
+ "tooltip.bloodmagic.inscriber.desc": "The writing is on the wall...",
+ "tooltip.bloodmagic.livingarmour.extraExtraInfo": "&9-Hold shift + M for progress info-",
+ "tooltip.bloodmagic.livingarmour.upgrade.level": "%s (Level %d)",
+ "tooltip.bloodmagic.livingarmour.upgrade.points": "Upgrade points: %s / %s",
+ "tooltip.bloodmagic.livingarmour.upgrade.progress": "%s (%d/100)",
+ "tooltip.bloodmagic.orb.desc": "Stores raw Life Essence",
+ "tooltip.bloodmagic.orb.owner": "Added by: %s",
+ "tooltip.bloodmagic.ritualReader.currentState": "Current mode: %s",
+ "tooltip.bloodmagic.ritualReader.desc.information": "Right click on an active Master Ritual Stone to gather basic information about the ritual.",
+ "tooltip.bloodmagic.ritualReader.desc.set_area": "Right click on an active Master Ritual stone to cycle what area of the ritual you want to modify. Then click on the two corners of the new range you want to set the range.",
+ "tooltip.bloodmagic.ritualReader.desc.set_will_types": "Set the types of demon will that the ritual will consume from the aura by right clicking on the MRS with the same types of crystals on your hotbar.",
+ "tooltip.bloodmagic.ritualReader.information": "Information",
+ "tooltip.bloodmagic.ritualReader.set_area": "Define Area",
+ "tooltip.bloodmagic.ritualReader.set_will_types": "Set Will Consumed",
+ "tooltip.bloodmagic.sacrificialdagger.desc": "Just a prick of the finger will suffice...",
+ "tooltip.bloodmagic.sentientAxe.desc": "Uses demon will to unleash its full potential.",
+ "tooltip.bloodmagic.sentientPickaxe.desc": "Uses demon will to unleash its full potential.",
+ "tooltip.bloodmagic.sentientShovel.desc": "Uses demon will to unleash its full potential.",
+ "tooltip.bloodmagic.sentientSword.desc": "Uses demon will to unleash its full potential.",
+ "tooltip.bloodmagic.sigil.air.desc": "I feel lighter already...",
+ "tooltip.bloodmagic.sigil.bloodlight.desc": "I see a light!",
+ "tooltip.bloodmagic.sigil.divination.currentAltarCapacity": "Current Capacity: %d LP",
+ "tooltip.bloodmagic.sigil.divination.currentAltarTier": "Current Tier: %d",
+ "tooltip.bloodmagic.sigil.divination.currentBonus": "Current Bonus: +%d%%",
+ "tooltip.bloodmagic.sigil.divination.currentEssence": "Current Essence: %d LP",
+ "tooltip.bloodmagic.sigil.divination.currentTranquility": "Current Tranquility: %d",
+ "tooltip.bloodmagic.sigil.divination.desc": "Peer into the soul",
+ "tooltip.bloodmagic.sigil.divination.otherNetwork": "Peering into the soul of %s",
+ "tooltip.bloodmagic.sigil.fastminer.desc": "Keep mining, and mining...",
+ "tooltip.bloodmagic.sigil.greengrove.desc": "Environmentally friendly",
+ "tooltip.bloodmagic.sigil.holding.desc": "Sigil-ception",
+ "tooltip.bloodmagic.sigil.holding.press": "Press %s to modify",
+ "tooltip.bloodmagic.sigil.holding.sigilInSlot": "Slot %d: %s",
+ "tooltip.bloodmagic.sigil.lava.desc": "HOT! DO NOT EAT",
+ "tooltip.bloodmagic.sigil.magnetism.desc": "I have a very magnetic personality",
+ "tooltip.bloodmagic.sigil.seer.currentAltarCapacity": "Current Capacity: %d LP",
+ "tooltip.bloodmagic.sigil.seer.currentAltarConsumptionRate": "Consumption Rate: %d LP",
+ "tooltip.bloodmagic.sigil.seer.currentAltarProgress": "Current Progress: %d LP/ %s LP",
+ "tooltip.bloodmagic.sigil.seer.currentAltarProgress.percent": "Current Progress: %s",
+ "tooltip.bloodmagic.sigil.seer.currentAltarTier": "Current Tier: %d",
+ "tooltip.bloodmagic.sigil.seer.currentBonus": "Current Bonus: +%d%%",
+ "tooltip.bloodmagic.sigil.seer.currentCharge": "Current Charge: %d",
+ "tooltip.bloodmagic.sigil.seer.currentEssence": "Current Essence: %d LP",
+ "tooltip.bloodmagic.sigil.seer.currentTranquility": "Current Tranquility: %d",
+ "tooltip.bloodmagic.sigil.seer.desc": "When seeing all is not enough",
+ "tooltip.bloodmagic.sigil.void.desc": "Better than a Swiffer\u00AE!",
+ "tooltip.bloodmagic.sigil.water.desc": "Infinite water, anyone?",
+ "tooltip.bloodmagic.slate.desc": "Infused stone inside of a Blood Altar",
+ "tooltip.bloodmagic.slate_vial": "A glass vial infused with a simple slate",
+ "tooltip.bloodmagic.soulGem.common": "A gem used to contain more will",
+ "tooltip.bloodmagic.soulGem.grand": "A gem used to contain a large amount of will",
+ "tooltip.bloodmagic.soulGem.greater": "A gem used to contain a greater amount of will",
+ "tooltip.bloodmagic.soulGem.lesser": "A gem used to contain some will",
+ "tooltip.bloodmagic.soulGem.petty": "A gem used to contain a little will",
+ "tooltip.bloodmagic.soulSnare.desc": "Throw at a monster and then kill them to obtain their demonic will",
+ "tooltip.bloodmagic.throwing_dagger.desc": "Not to be used in the kitchen",
+ "tooltip.bloodmagic.tier": "Tier %d",
+ "tooltip.bloodmagic.will": "Will Quality: %s"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/accelerationrune.json b/src/generated/resources/assets/bloodmagic/models/block/accelerationrune.json
new file mode 100644
index 00000000..fd09a780
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/accelerationrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/accelerationrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/airritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/airritualstone.json
new file mode 100644
index 00000000..428b9552
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/airritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/airritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/alchemicalreactionchamber.json b/src/generated/resources/assets/bloodmagic/models/block/alchemicalreactionchamber.json
new file mode 100644
index 00000000..84690dfc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/alchemicalreactionchamber.json
@@ -0,0 +1,9 @@
+{
+ "parent": "minecraft:block/orientable_with_bottom",
+ "textures": {
+ "side": "bloodmagic:block/arc_side",
+ "front": "bloodmagic:block/arc_front",
+ "bottom": "bloodmagic:block/arc_bottom",
+ "top": "bloodmagic:block/arc_top"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/altarcapacityrune.json b/src/generated/resources/assets/bloodmagic/models/block/altarcapacityrune.json
new file mode 100644
index 00000000..c8a6d830
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/altarcapacityrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/altarcapacityrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/bettercapacityrune.json b/src/generated/resources/assets/bloodmagic/models/block/bettercapacityrune.json
new file mode 100644
index 00000000..3ffccb3a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/bettercapacityrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/bettercapacityrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/blankrune.json b/src/generated/resources/assets/bloodmagic/models/block/blankrune.json
new file mode 100644
index 00000000..ab6f65ac
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/blankrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/blankrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/bloodlight.json b/src/generated/resources/assets/bloodmagic/models/block/bloodlight.json
new file mode 100644
index 00000000..1a06cf8d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/bloodlight.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/bloodlight"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/bloodstonebrick.json b/src/generated/resources/assets/bloodmagic/models/block/bloodstonebrick.json
new file mode 100644
index 00000000..b0eccad9
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/bloodstonebrick.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/bloodstonebrick"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/chargingrune.json b/src/generated/resources/assets/bloodmagic/models/block/chargingrune.json
new file mode 100644
index 00000000..8a0996cf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/chargingrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/chargingrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_1.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_1.json
new file mode 100644
index 00000000..2f9e67a5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_2.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_2.json
new file mode 100644
index 00000000..614b4b22
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_2"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_3.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_3.json
new file mode 100644
index 00000000..b8c6af48
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_3"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_4.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_4.json
new file mode 100644
index 00000000..a9f300dd
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_4.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_4"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_5.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_5.json
new file mode 100644
index 00000000..cba7434f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_5.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_5"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_6.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_6.json
new file mode 100644
index 00000000..ebe9679d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_6.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_6"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_7.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_7.json
new file mode 100644
index 00000000..d0b2d010
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_7.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_7"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_8.json b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_8.json
new file mode 100644
index 00000000..9763321c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/creeping_doubt_8.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_8"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal1.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal1.json
new file mode 100644
index 00000000..2b4aebed
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal1",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal2.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal2.json
new file mode 100644
index 00000000..24b1ec69
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal2",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal3.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal3.json
new file mode 100644
index 00000000..fc658c68
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal3",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal4.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal4.json
new file mode 100644
index 00000000..5fc95052
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal4.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal4",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal5.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal5.json
new file mode 100644
index 00000000..a39edf1b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal5.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal5",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal6.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal6.json
new file mode 100644
index 00000000..40221914
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal6.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal6",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal7.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal7.json
new file mode 100644
index 00000000..bb114d6c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/corrosivecrystal7.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal7",
+ "textures": {
+ "crystal": "bloodmagic:models/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal1.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal1.json
new file mode 100644
index 00000000..d6f96ee5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal1",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal2.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal2.json
new file mode 100644
index 00000000..64eb34d7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal2",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal3.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal3.json
new file mode 100644
index 00000000..985aa46e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal3",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal4.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal4.json
new file mode 100644
index 00000000..6832216d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal4.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal4",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal5.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal5.json
new file mode 100644
index 00000000..516a689d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal5.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal5",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal6.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal6.json
new file mode 100644
index 00000000..b1fd517f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal6.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal6",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal7.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal7.json
new file mode 100644
index 00000000..058eca74
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/defaultcrystal7.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal7",
+ "textures": {
+ "crystal": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal1.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal1.json
new file mode 100644
index 00000000..a94ae6dc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal1",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal2.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal2.json
new file mode 100644
index 00000000..4f35bb55
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal2",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal3.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal3.json
new file mode 100644
index 00000000..a01fcd89
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal3",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal4.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal4.json
new file mode 100644
index 00000000..94865f70
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal4.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal4",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal5.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal5.json
new file mode 100644
index 00000000..94c1c39c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal5.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal5",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal6.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal6.json
new file mode 100644
index 00000000..5d63f3ba
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal6.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal6",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal7.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal7.json
new file mode 100644
index 00000000..81eb3805
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/destructivecrystal7.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal7",
+ "textures": {
+ "crystal": "bloodmagic:models/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal1.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal1.json
new file mode 100644
index 00000000..ba1d5669
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal1",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal2.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal2.json
new file mode 100644
index 00000000..cce291fc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal2",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal3.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal3.json
new file mode 100644
index 00000000..046018b9
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal3",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal4.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal4.json
new file mode 100644
index 00000000..1dc6165a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal4.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal4",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal5.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal5.json
new file mode 100644
index 00000000..3ea44bc5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal5.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal5",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal6.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal6.json
new file mode 100644
index 00000000..6de624be
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal6.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal6",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal7.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal7.json
new file mode 100644
index 00000000..d66e329b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/steadfastcrystal7.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal7",
+ "textures": {
+ "crystal": "bloodmagic:models/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal1.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal1.json
new file mode 100644
index 00000000..9fa509cf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal1",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal2.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal2.json
new file mode 100644
index 00000000..c6a89b2b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal2",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal3.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal3.json
new file mode 100644
index 00000000..83b5dd09
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal3",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal4.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal4.json
new file mode 100644
index 00000000..16322807
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal4.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal4",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal5.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal5.json
new file mode 100644
index 00000000..13d761b5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal5.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal5",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal6.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal6.json
new file mode 100644
index 00000000..6c25cecf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal6.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal6",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal7.json b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal7.json
new file mode 100644
index 00000000..d3a5b678
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/crystal/vengefulcrystal7.json
@@ -0,0 +1,6 @@
+{
+ "parent": "bloodmagic:block/crystal7",
+ "textures": {
+ "crystal": "bloodmagic:models/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/deforester_charge.json b/src/generated/resources/assets/bloodmagic/models/block/deforester_charge.json
new file mode 100644
index 00000000..f441dc4e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/deforester_charge.json
@@ -0,0 +1,11 @@
+{
+ "parent": "bloodmagic:block/sub/shaped_charge",
+ "textures": {
+ "1": "minecraft:block/oak_log_top",
+ "3": "minecraft:block/oak_log_top",
+ "4": "bloodmagic:block/blankrune",
+ "5": "minecraft:block/oak_planks",
+ "6": "bloodmagic:models/defaultcrystal",
+ "particle": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dislocationrune.json b/src/generated/resources/assets/bloodmagic/models/block/dislocationrune.json
new file mode 100644
index 00000000..a4b7b5f3
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dislocationrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dislocationrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick1.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick1.json
new file mode 100644
index 00000000..67fd1fd3
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick1.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick2.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick2.json
new file mode 100644
index 00000000..f928def2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick2.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_brick2"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick3.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick3.json
new file mode 100644
index 00000000..cde0ff61
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick3.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_brick3"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate.json
new file mode 100644
index 00000000..e31759c0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_open.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_open.json
new file mode 100644
index 00000000..d4a81aaa
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_open.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate_open",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_wall.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_wall.json
new file mode 100644
index 00000000..19ef409e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_wall.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate_wall",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_wall_open.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_wall_open.json
new file mode 100644
index 00000000..1d63b5c3
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_gate_wall_open.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate_wall_open",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs.json
new file mode 100644
index 00000000..97ec435b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/stairs",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_brick1",
+ "bottom": "bloodmagic:block/dungeon/dungeon_brick1",
+ "top": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs_inner.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs_inner.json
new file mode 100644
index 00000000..ab8c305f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs_inner.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/inner_stairs",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_brick1",
+ "bottom": "bloodmagic:block/dungeon/dungeon_brick1",
+ "top": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs_outer.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs_outer.json
new file mode 100644
index 00000000..54284cbc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_stairs_outer.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/outer_stairs",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_brick1",
+ "bottom": "bloodmagic:block/dungeon/dungeon_brick1",
+ "top": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_inventory.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_inventory.json
new file mode 100644
index 00000000..c90f1034
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_inventory.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/wall_inventory",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_post.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_post.json
new file mode 100644
index 00000000..1e2aa564
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_post.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_wall_post",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_side.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_side.json
new file mode 100644
index 00000000..d68f15be
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_side.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_wall_side",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_side_tall.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_side_tall.json
new file mode 100644
index 00000000..88c3bc4a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_brick_wall_side_tall.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_wall_side_tall",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_brick1"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_eye.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_eye.json
new file mode 100644
index 00000000..050b373a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_eye.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_eye"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_metal.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_metal.json
new file mode 100644
index 00000000..bad4f014
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_metal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_metal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_ore.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_ore.json
new file mode 100644
index 00000000..93254ada
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_ore.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_ore"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap.json
new file mode 100644
index 00000000..80da11c8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/cube_bottom_top",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_pillartop",
+ "bottom": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "top": "bloodmagic:block/dungeon/dungeon_pillarheart"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_down.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_down.json
new file mode 100644
index 00000000..1c9c81fa
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_down.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/cube_bottom_top",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_pillarbottom",
+ "bottom": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "top": "bloodmagic:block/dungeon/dungeon_pillarheart"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_east.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_east.json
new file mode 100644
index 00000000..ddca684f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_east.json
@@ -0,0 +1,59 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideBottom": "bloodmagic:block/dungeon/dungeon_pillarbottom",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideTop": "bloodmagic:block/dungeon/dungeon_pillartop"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#sideBottom",
+ "rotation": 270
+ },
+ "up": {
+ "texture": "#sideBottom",
+ "rotation": 270
+ },
+ "north": {
+ "texture": "#sideTop",
+ "rotation": 270
+ },
+ "south": {
+ "texture": "#sideBottom",
+ "rotation": 270
+ },
+ "west": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ },
+ "east": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_north.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_north.json
new file mode 100644
index 00000000..ba59597e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_north.json
@@ -0,0 +1,57 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideBottom": "bloodmagic:block/dungeon/dungeon_pillarbottom",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideTop": "bloodmagic:block/dungeon/dungeon_pillartop"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#sideBottom"
+ },
+ "up": {
+ "texture": "#sideTop"
+ },
+ "north": {
+ "texture": "#end"
+ },
+ "south": {
+ "texture": "#end"
+ },
+ "west": {
+ "texture": "#sideTop",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ },
+ "east": {
+ "texture": "#sideBottom",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_south.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_south.json
new file mode 100644
index 00000000..643f943d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_south.json
@@ -0,0 +1,57 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideBottom": "bloodmagic:block/dungeon/dungeon_pillarbottom",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideTop": "bloodmagic:block/dungeon/dungeon_pillartop"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#sideTop"
+ },
+ "up": {
+ "texture": "#sideBottom"
+ },
+ "north": {
+ "texture": "#end"
+ },
+ "south": {
+ "texture": "#end"
+ },
+ "west": {
+ "texture": "#sideBottom",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ },
+ "east": {
+ "texture": "#sideTop",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_west.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_west.json
new file mode 100644
index 00000000..d871f337
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_cap_west.json
@@ -0,0 +1,59 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideBottom": "bloodmagic:block/dungeon/dungeon_pillarbottom",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "sideTop": "bloodmagic:block/dungeon/dungeon_pillartop"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#sideTop",
+ "rotation": 270
+ },
+ "up": {
+ "texture": "#sideTop",
+ "rotation": 270
+ },
+ "north": {
+ "texture": "#sideBottom",
+ "rotation": 270
+ },
+ "south": {
+ "texture": "#sideTop",
+ "rotation": 270
+ },
+ "west": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ },
+ "east": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center.json
new file mode 100644
index 00000000..0ee75aa8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center.json
@@ -0,0 +1,7 @@
+{
+ "parent": "minecraft:block/cube_column",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_pillar",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center_x.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center_x.json
new file mode 100644
index 00000000..dc0d116a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center_x.json
@@ -0,0 +1,58 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillar",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "side": "bloodmagic:block/dungeon/dungeon_pillar"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "up": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "north": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "south": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "west": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ },
+ "east": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center_z.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center_z.json
new file mode 100644
index 00000000..8cf66442
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_center_z.json
@@ -0,0 +1,56 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillar",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "side": "bloodmagic:block/dungeon/dungeon_pillar"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#side"
+ },
+ "up": {
+ "texture": "#side"
+ },
+ "north": {
+ "texture": "#end"
+ },
+ "south": {
+ "texture": "#end"
+ },
+ "west": {
+ "texture": "#side",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ },
+ "east": {
+ "texture": "#side",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special.json
new file mode 100644
index 00000000..3ad64eb6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special.json
@@ -0,0 +1,7 @@
+{
+ "parent": "minecraft:block/cube_column",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_pillarspecial",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special_x.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special_x.json
new file mode 100644
index 00000000..4c04aa89
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special_x.json
@@ -0,0 +1,58 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillarspecial",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "side": "bloodmagic:block/dungeon/dungeon_pillarspecial"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "up": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "north": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "south": {
+ "texture": "#side",
+ "rotation": 270
+ },
+ "west": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ },
+ "east": {
+ "texture": "#end",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ]
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special_z.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special_z.json
new file mode 100644
index 00000000..5c198826
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_pillar_special_z.json
@@ -0,0 +1,56 @@
+{
+ "parent": "minecraft:block/cube",
+ "textures": {
+ "particle": "bloodmagic:block/dungeon/dungeon_pillarspecial",
+ "end": "bloodmagic:block/dungeon/dungeon_pillarheart",
+ "side": "bloodmagic:block/dungeon/dungeon_pillarspecial"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 0
+ ],
+ "to": [
+ 16,
+ 16,
+ 16
+ ],
+ "faces": {
+ "down": {
+ "texture": "#side"
+ },
+ "up": {
+ "texture": "#side"
+ },
+ "north": {
+ "texture": "#end"
+ },
+ "south": {
+ "texture": "#end"
+ },
+ "west": {
+ "texture": "#side",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ },
+ "east": {
+ "texture": "#side",
+ "uv": [
+ 16.0,
+ 0.0,
+ 0.0,
+ 16.0
+ ],
+ "rotation": 270
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished.json
new file mode 100644
index 00000000..0cfce680
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate.json
new file mode 100644
index 00000000..00d14be8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_open.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_open.json
new file mode 100644
index 00000000..eeeb11e3
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_open.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate_open",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_wall.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_wall.json
new file mode 100644
index 00000000..5a753921
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_wall.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate_wall",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_wall_open.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_wall_open.json
new file mode 100644
index 00000000..94f199d1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_gate_wall_open.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_fence_gate_wall_open",
+ "textures": {
+ "texture": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs.json
new file mode 100644
index 00000000..291e9cff
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/stairs",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_polished",
+ "bottom": "bloodmagic:block/dungeon/dungeon_polished",
+ "top": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs_inner.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs_inner.json
new file mode 100644
index 00000000..f74477bd
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs_inner.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/inner_stairs",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_polished",
+ "bottom": "bloodmagic:block/dungeon/dungeon_polished",
+ "top": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs_outer.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs_outer.json
new file mode 100644
index 00000000..7df9f548
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_stairs_outer.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:block/outer_stairs",
+ "textures": {
+ "side": "bloodmagic:block/dungeon/dungeon_polished",
+ "bottom": "bloodmagic:block/dungeon/dungeon_polished",
+ "top": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_inventory.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_inventory.json
new file mode 100644
index 00000000..1b6724a7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_inventory.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/wall_inventory",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_post.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_post.json
new file mode 100644
index 00000000..a65da079
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_post.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_wall_post",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_side.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_side.json
new file mode 100644
index 00000000..c2da5f14
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_side.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_wall_side",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_side_tall.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_side_tall.json
new file mode 100644
index 00000000..2d55b1bc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_polished_wall_side_tall.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/template_wall_side_tall",
+ "textures": {
+ "wall": "bloodmagic:block/dungeon/dungeon_polished"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_smallbrick.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_smallbrick.json
new file mode 100644
index 00000000..dd5793ed
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_smallbrick.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_smallbrick"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_stone.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_stone.json
new file mode 100644
index 00000000..e76740d6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_stone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_stone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_stone_mirrored.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_stone_mirrored.json
new file mode 100644
index 00000000..3b579c73
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_stone_mirrored.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_mirrored_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_stone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_tile.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_tile.json
new file mode 100644
index 00000000..8f93a06d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_tile.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_tile"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/dungeon_tilespecial.json b/src/generated/resources/assets/bloodmagic/models/block/dungeon_tilespecial.json
new file mode 100644
index 00000000..2fb38846
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/dungeon_tilespecial.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/dungeon/dungeon_tilespecial"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/duskritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/duskritualstone.json
new file mode 100644
index 00000000..ecfcfa10
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/duskritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/duskritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/earthritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/earthritualstone.json
new file mode 100644
index 00000000..e0949faa
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/earthritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/earthritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/etherealopaquemimic.json b/src/generated/resources/assets/bloodmagic/models/block/etherealopaquemimic.json
new file mode 100644
index 00000000..71983d4a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/etherealopaquemimic.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/etherealopaquemimic"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/fireritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/fireritualstone.json
new file mode 100644
index 00000000..1661fe87
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/fireritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/fireritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/fungal_charge.json b/src/generated/resources/assets/bloodmagic/models/block/fungal_charge.json
new file mode 100644
index 00000000..49b4c667
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/fungal_charge.json
@@ -0,0 +1,11 @@
+{
+ "parent": "bloodmagic:block/sub/shaped_charge",
+ "textures": {
+ "1": "minecraft:block/crimson_planks",
+ "3": "minecraft:block/nether_wart_block",
+ "4": "bloodmagic:block/blankrune",
+ "5": "minecraft:block/crimson_stem",
+ "6": "bloodmagic:models/defaultcrystal",
+ "particle": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/largebloodstonebrick.json b/src/generated/resources/assets/bloodmagic/models/block/largebloodstonebrick.json
new file mode 100644
index 00000000..25aaa1a4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/largebloodstonebrick.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/largebloodstonebrick"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/lightritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/lightritualstone.json
new file mode 100644
index 00000000..89bce579
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/lightritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/lightritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/masterritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/masterritualstone.json
new file mode 100644
index 00000000..cbb503be
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/masterritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/masterritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/nether_soil.json b/src/generated/resources/assets/bloodmagic/models/block/nether_soil.json
new file mode 100644
index 00000000..9014e226
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/nether_soil.json
@@ -0,0 +1,7 @@
+{
+ "parent": "minecraft:block/template_farmland",
+ "textures": {
+ "top": "bloodmagic:block/nether_soil",
+ "dirt": "minecraft:block/netherrack"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json
new file mode 100644
index 00000000..77f2ba8e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/obsidianbrickpath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/obsidianbrickpath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json b/src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json
new file mode 100644
index 00000000..40a85379
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/obsidiantilepath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/obsidiantilepath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/orbcapacityrune.json b/src/generated/resources/assets/bloodmagic/models/block/orbcapacityrune.json
new file mode 100644
index 00000000..db85074a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/orbcapacityrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/orbcapacityrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/ritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/ritualstone.json
new file mode 100644
index 00000000..ca5b7b23
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/ritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/ritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/sacrificerune.json b/src/generated/resources/assets/bloodmagic/models/block/sacrificerune.json
new file mode 100644
index 00000000..9f99851f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/sacrificerune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/sacrificerune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/selfsacrificerune.json b/src/generated/resources/assets/bloodmagic/models/block/selfsacrificerune.json
new file mode 100644
index 00000000..bad7ca8e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/selfsacrificerune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/selfsacrificerune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/sentientmimic.json b/src/generated/resources/assets/bloodmagic/models/block/sentientmimic.json
new file mode 100644
index 00000000..09592433
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/sentientmimic.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/sentientmimic"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/shaped_charge.json b/src/generated/resources/assets/bloodmagic/models/block/shaped_charge.json
new file mode 100644
index 00000000..75078a95
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/shaped_charge.json
@@ -0,0 +1,11 @@
+{
+ "parent": "bloodmagic:block/sub/shaped_charge",
+ "textures": {
+ "1": "bloodmagic:block/dungeon/dungeon_tile",
+ "3": "bloodmagic:block/dungeon/dungeon_stone",
+ "4": "bloodmagic:block/blankrune",
+ "5": "bloodmagic:block/largebloodstonebrick",
+ "6": "bloodmagic:models/defaultcrystal",
+ "particle": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/solidclearmimic.json b/src/generated/resources/assets/bloodmagic/models/block/solidclearmimic.json
new file mode 100644
index 00000000..bed0be1c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/solidclearmimic.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/solidclearmimic"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/solidlightmimic.json b/src/generated/resources/assets/bloodmagic/models/block/solidlightmimic.json
new file mode 100644
index 00000000..7dbf0fc7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/solidlightmimic.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/solidlightmimic"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/solidopaquemimic.json b/src/generated/resources/assets/bloodmagic/models/block/solidopaquemimic.json
new file mode 100644
index 00000000..0028f9e4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/solidopaquemimic.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/solidopaquemimic"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/speedrune.json b/src/generated/resources/assets/bloodmagic/models/block/speedrune.json
new file mode 100644
index 00000000..d33d1f07
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/speedrune.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/speedrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json
new file mode 100644
index 00000000..59ad054f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/stonebrickpath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/stonebrickpath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json b/src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json
new file mode 100644
index 00000000..380149f4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/stonetilepath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/stonetilepath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/veinmine_charge.json b/src/generated/resources/assets/bloodmagic/models/block/veinmine_charge.json
new file mode 100644
index 00000000..1c50bf82
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/veinmine_charge.json
@@ -0,0 +1,11 @@
+{
+ "parent": "bloodmagic:block/sub/shaped_charge",
+ "textures": {
+ "1": "minecraft:block/sandstone_bottom",
+ "3": "minecraft:block/sandstone_bottom",
+ "4": "bloodmagic:block/blankrune",
+ "5": "minecraft:block/sand",
+ "6": "bloodmagic:models/defaultcrystal",
+ "particle": "bloodmagic:models/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/waterritualstone.json b/src/generated/resources/assets/bloodmagic/models/block/waterritualstone.json
new file mode 100644
index 00000000..1222a06c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/waterritualstone.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/waterritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json
new file mode 100644
index 00000000..32aa5bb7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/woodbrickpath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/woodbrickpath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json b/src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json
new file mode 100644
index 00000000..b2a8fbe6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/woodtilepath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/woodtilepath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json
new file mode 100644
index 00000000..b4a3da7b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/wornstonebrickpath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/wornstonebrickpath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json b/src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json
new file mode 100644
index 00000000..b1e91317
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/block/wornstonetilepath.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "bloodmagic:block/wornstonetilepath"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/accelerationrune.json b/src/generated/resources/assets/bloodmagic/models/item/accelerationrune.json
new file mode 100644
index 00000000..4551c1a8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/accelerationrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/accelerationrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/activationcrystalawakened.json b/src/generated/resources/assets/bloodmagic/models/item/activationcrystalawakened.json
new file mode 100644
index 00000000..25f235a5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/activationcrystalawakened.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/activationcrystalawakened"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/activationcrystalcreative.json b/src/generated/resources/assets/bloodmagic/models/item/activationcrystalcreative.json
new file mode 100644
index 00000000..3b5983f3
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/activationcrystalcreative.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/activationcrystalcreative"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/activationcrystalweak.json b/src/generated/resources/assets/bloodmagic/models/item/activationcrystalweak.json
new file mode 100644
index 00000000..fddc803a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/activationcrystalweak.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/activationcrystalweak"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/airritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/airritualstone.json
new file mode 100644
index 00000000..a32ef885
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/airritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/airritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/airscribetool.json b/src/generated/resources/assets/bloodmagic/models/item/airscribetool.json
new file mode 100644
index 00000000..000892ca
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/airscribetool.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/airscribetool"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/airsigil.json b/src/generated/resources/assets/bloodmagic/models/item/airsigil.json
new file mode 100644
index 00000000..b90cce51
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/airsigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/airsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/alchemicalreactionchamber.json b/src/generated/resources/assets/bloodmagic/models/item/alchemicalreactionchamber.json
new file mode 100644
index 00000000..bb6ed1e2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/alchemicalreactionchamber.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/alchemicalreactionchamber"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/altarcapacityrune.json b/src/generated/resources/assets/bloodmagic/models/item/altarcapacityrune.json
new file mode 100644
index 00000000..819ef814
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/altarcapacityrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/altarcapacityrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/apprenticebloodorb.json b/src/generated/resources/assets/bloodmagic/models/item/apprenticebloodorb.json
new file mode 100644
index 00000000..e010d2b7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/apprenticebloodorb.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/apprenticebloodorb"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/arcaneashes.json b/src/generated/resources/assets/bloodmagic/models/item/arcaneashes.json
new file mode 100644
index 00000000..19120a51
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/arcaneashes.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/arcaneashes"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul.json b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul.json
new file mode 100644
index 00000000..5455472a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/basemonstersoul"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_corrosive.json
new file mode 100644
index 00000000..bd22eb5f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/basemonstersoul_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_destructive.json
new file mode 100644
index 00000000..3fcd9fd7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/basemonstersoul_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_steadfast.json
new file mode 100644
index 00000000..db32c775
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/basemonstersoul_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_vengeful.json
new file mode 100644
index 00000000..966c0f17
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/basemonstersoul_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/basemonstersoul_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/basiccuttingfluid.json b/src/generated/resources/assets/bloodmagic/models/item/basiccuttingfluid.json
new file mode 100644
index 00000000..0d5d0cdc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/basiccuttingfluid.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/basiccuttingfluid"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/bettercapacityrune.json b/src/generated/resources/assets/bloodmagic/models/item/bettercapacityrune.json
new file mode 100644
index 00000000..f8b79342
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/bettercapacityrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/bettercapacityrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/blankrune.json b/src/generated/resources/assets/bloodmagic/models/item/blankrune.json
new file mode 100644
index 00000000..7bf5795e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/blankrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/blankrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/blankslate.json b/src/generated/resources/assets/bloodmagic/models/item/blankslate.json
new file mode 100644
index 00000000..d3094597
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/blankslate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/blankslate"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/bloodlightsigil.json b/src/generated/resources/assets/bloodmagic/models/item/bloodlightsigil.json
new file mode 100644
index 00000000..4ae506f9
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/bloodlightsigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/bloodlightsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/bloodstonebrick.json b/src/generated/resources/assets/bloodmagic/models/item/bloodstonebrick.json
new file mode 100644
index 00000000..533f926a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/bloodstonebrick.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/bloodstonebrick"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/bow_power_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/bow_power_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/bow_power_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/chargingrune.json b/src/generated/resources/assets/bloodmagic/models/item/chargingrune.json
new file mode 100644
index 00000000..ccd29652
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/chargingrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/chargingrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/coalsand.json b/src/generated/resources/assets/bloodmagic/models/item/coalsand.json
new file mode 100644
index 00000000..12aaa0cc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/coalsand.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/coalsand"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/corrosivecrystal.json b/src/generated/resources/assets/bloodmagic/models/item/corrosivecrystal.json
new file mode 100644
index 00000000..d99e15f4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/corrosivecrystal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/corrosivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/corrosivedemoncrystal.json b/src/generated/resources/assets/bloodmagic/models/item/corrosivedemoncrystal.json
new file mode 100644
index 00000000..5e739ff2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/corrosivedemoncrystal.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/crystal/corrosivecrystal1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/corrupted_dust.json b/src/generated/resources/assets/bloodmagic/models/item/corrupted_dust.json
new file mode 100644
index 00000000..a5f430a4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/corrupted_dust.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/corrupted_dust"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/corrupted_tinydust.json b/src/generated/resources/assets/bloodmagic/models/item/corrupted_tinydust.json
new file mode 100644
index 00000000..a9ecf66f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/corrupted_tinydust.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/corrupted_tinydust"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/creeping_doubt.json b/src/generated/resources/assets/bloodmagic/models/item/creeping_doubt.json
new file mode 100644
index 00000000..9763321c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/creeping_doubt.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/crop",
+ "textures": {
+ "crop": "bloodmagic:block/creeping_doubt_8"
+ }
+}
\ No newline at end of file
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..44408cd6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/crystalline_resonator.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/crystalline_resonator"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/daggerofsacrifice.json b/src/generated/resources/assets/bloodmagic/models/item/daggerofsacrifice.json
new file mode 100644
index 00000000..762c92a7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/daggerofsacrifice.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/daggerofsacrifice"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/defaultcrystal.json b/src/generated/resources/assets/bloodmagic/models/item/defaultcrystal.json
new file mode 100644
index 00000000..630e05a5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/defaultcrystal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/defaultcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/deforester_charge.json b/src/generated/resources/assets/bloodmagic/models/item/deforester_charge.json
new file mode 100644
index 00000000..64187a41
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/deforester_charge.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/deforester_charge"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/demonslate.json b/src/generated/resources/assets/bloodmagic/models/item/demonslate.json
new file mode 100644
index 00000000..97d3e2f5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/demonslate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/demonslate"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/demonwillgauge.json b/src/generated/resources/assets/bloodmagic/models/item/demonwillgauge.json
new file mode 100644
index 00000000..db062669
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/demonwillgauge.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/demonwillgauge"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/destructivecrystal.json b/src/generated/resources/assets/bloodmagic/models/item/destructivecrystal.json
new file mode 100644
index 00000000..728b4dc5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/destructivecrystal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/destructivecrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/destructivedemoncrystal.json b/src/generated/resources/assets/bloodmagic/models/item/destructivedemoncrystal.json
new file mode 100644
index 00000000..132afed7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/destructivedemoncrystal.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/crystal/destructivecrystal1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dislocationrune.json b/src/generated/resources/assets/bloodmagic/models/item/dislocationrune.json
new file mode 100644
index 00000000..1ddb2946
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dislocationrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dislocationrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/divinationsigil.json b/src/generated/resources/assets/bloodmagic/models/item/divinationsigil.json
new file mode 100644
index 00000000..364fb1ec
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/divinationsigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/divinationsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick1.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick1.json
new file mode 100644
index 00000000..11d3536b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick1.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick2.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick2.json
new file mode 100644
index 00000000..5f9095c0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick2.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick2"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick3.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick3.json
new file mode 100644
index 00000000..fc97a2a2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick3.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick3"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_assorted.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_assorted.json
new file mode 100644
index 00000000..11d3536b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_assorted.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_gate.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_gate.json
new file mode 100644
index 00000000..818f37f8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_gate.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick_gate"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_stairs.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_stairs.json
new file mode 100644
index 00000000..f4f7c835
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_stairs.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick_stairs"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_wall.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_wall.json
new file mode 100644
index 00000000..ee594c7e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_brick_wall.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_brick_wall_inventory"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_eye.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_eye.json
new file mode 100644
index 00000000..b306aa4e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_eye.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_eye"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_metal.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_metal.json
new file mode 100644
index 00000000..b4412870
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_metal.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_metal"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_ore.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_ore.json
new file mode 100644
index 00000000..64362081
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_ore.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_ore"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_cap.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_cap.json
new file mode 100644
index 00000000..03211bec
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_cap.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_pillar_cap"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_center.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_center.json
new file mode 100644
index 00000000..7a965604
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_center.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_pillar_center"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_special.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_special.json
new file mode 100644
index 00000000..dcbe8148
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_pillar_special.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_pillar_special"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished.json
new file mode 100644
index 00000000..334777b9
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_polished"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_gate.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_gate.json
new file mode 100644
index 00000000..ec9c6b87
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_gate.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_polished_gate"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_stairs.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_stairs.json
new file mode 100644
index 00000000..cb02affc
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_stairs.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_polished_stairs"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_wall.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_wall.json
new file mode 100644
index 00000000..f02221cf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_polished_wall.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_polished_wall_inventory"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_smallbrick.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_smallbrick.json
new file mode 100644
index 00000000..2ccf3f92
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_smallbrick.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_smallbrick"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_stone.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_stone.json
new file mode 100644
index 00000000..4c9c2b6a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_stone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_stone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_tester.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_tester.json
new file mode 100644
index 00000000..f408e84c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_tester.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/dungeon_tester"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_tile.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_tile.json
new file mode 100644
index 00000000..4c80f99b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_tile.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_tile"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/dungeon_tilespecial.json b/src/generated/resources/assets/bloodmagic/models/item/dungeon_tilespecial.json
new file mode 100644
index 00000000..98d6dc5a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/dungeon_tilespecial.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/dungeon_tilespecial"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/duskritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/duskritualstone.json
new file mode 100644
index 00000000..289ff1ee
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/duskritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/duskritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/duskscribetool.json b/src/generated/resources/assets/bloodmagic/models/item/duskscribetool.json
new file mode 100644
index 00000000..c95b2d43
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/duskscribetool.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/duskscribetool"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/earthritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/earthritualstone.json
new file mode 100644
index 00000000..3758ede0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/earthritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/earthritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/earthscribetool.json b/src/generated/resources/assets/bloodmagic/models/item/earthscribetool.json
new file mode 100644
index 00000000..4eb734a9
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/earthscribetool.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/earthscribetool"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ethereal_mimic.json b/src/generated/resources/assets/bloodmagic/models/item/ethereal_mimic.json
new file mode 100644
index 00000000..caeb3a85
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ethereal_mimic.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/etherealopaquemimic"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/etherealslate.json b/src/generated/resources/assets/bloodmagic/models/item/etherealslate.json
new file mode 100644
index 00000000..c0f0f8a0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/etherealslate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/etherealslate"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/experiencebook.json b/src/generated/resources/assets/bloodmagic/models/item/experiencebook.json
new file mode 100644
index 00000000..693287c2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/experiencebook.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/experiencebook"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/explosivepowder.json b/src/generated/resources/assets/bloodmagic/models/item/explosivepowder.json
new file mode 100644
index 00000000..25c7aa64
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/explosivepowder.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/explosivepowder"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/fireritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/fireritualstone.json
new file mode 100644
index 00000000..6eef57c2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/fireritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/fireritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/firescribetool.json b/src/generated/resources/assets/bloodmagic/models/item/firescribetool.json
new file mode 100644
index 00000000..9eb63402
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/firescribetool.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/firescribetool"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/fortune_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/fortune_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/fortune_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/fragment_netherite_scrap.json b/src/generated/resources/assets/bloodmagic/models/item/fragment_netherite_scrap.json
new file mode 100644
index 00000000..791fa55c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/fragment_netherite_scrap.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/fragment_netherite_scrap"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/fungal_charge.json b/src/generated/resources/assets/bloodmagic/models/item/fungal_charge.json
new file mode 100644
index 00000000..59b1be87
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/fungal_charge.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/fungal_charge"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/furnacecell_primitive.json b/src/generated/resources/assets/bloodmagic/models/item/furnacecell_primitive.json
new file mode 100644
index 00000000..cefb8192
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/furnacecell_primitive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/furnacecell_primitive"
+ }
+}
\ 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..d8024eaf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/goldfragment.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "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..c104e0f5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/goldgravel.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/goldgravel"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/goldsand.json b/src/generated/resources/assets/bloodmagic/models/item/goldsand.json
new file mode 100644
index 00000000..29106249
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/goldsand.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/goldsand"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/gravel_netherite_scrap.json b/src/generated/resources/assets/bloodmagic/models/item/gravel_netherite_scrap.json
new file mode 100644
index 00000000..79f99443
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/gravel_netherite_scrap.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/gravel_netherite_scrap"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/growthsigil.json b/src/generated/resources/assets/bloodmagic/models/item/growthsigil.json
new file mode 100644
index 00000000..545030bf
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/growthsigil.json
@@ -0,0 +1,16 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/growthsigil_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/growthsigil_activated"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/hidden_knowledge_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/hidden_knowledge_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/hidden_knowledge_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/holy_water_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/holy_water_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/holy_water_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/icesigil.json b/src/generated/resources/assets/bloodmagic/models/item/icesigil.json
new file mode 100644
index 00000000..67d4348e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/icesigil.json
@@ -0,0 +1,16 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/icesigil_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/icesigil_activated"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/infusedslate.json b/src/generated/resources/assets/bloodmagic/models/item/infusedslate.json
new file mode 100644
index 00000000..057c0fc7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/infusedslate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/infusedslate"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ingot_hellforged.json b/src/generated/resources/assets/bloodmagic/models/item/ingot_hellforged.json
new file mode 100644
index 00000000..6f2132df
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ingot_hellforged.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/ingot_hellforged"
+ }
+}
\ 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..acd23d13
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ironfragment.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "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..cd5e0c4d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/irongravel.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/irongravel"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ironsand.json b/src/generated/resources/assets/bloodmagic/models/item/ironsand.json
new file mode 100644
index 00000000..9ad179b8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ironsand.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/ironsand"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/largebloodstonebrick.json b/src/generated/resources/assets/bloodmagic/models/item/largebloodstonebrick.json
new file mode 100644
index 00000000..c048956c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/largebloodstonebrick.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/largebloodstonebrick"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/lavacrystal.json b/src/generated/resources/assets/bloodmagic/models/item/lavacrystal.json
new file mode 100644
index 00000000..663eee3d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/lavacrystal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/lavacrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/lavasigil.json b/src/generated/resources/assets/bloodmagic/models/item/lavasigil.json
new file mode 100644
index 00000000..78803529
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/lavasigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/lavasigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/lightritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/lightritualstone.json
new file mode 100644
index 00000000..96ca64a5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/lightritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/lightritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/livingboots.json b/src/generated/resources/assets/bloodmagic/models/item/livingboots.json
new file mode 100644
index 00000000..6fc62fe4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/livingboots.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/livingboots"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/livinghelmet.json b/src/generated/resources/assets/bloodmagic/models/item/livinghelmet.json
new file mode 100644
index 00000000..26231b72
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/livinghelmet.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/livinghelmet"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/livingleggings.json b/src/generated/resources/assets/bloodmagic/models/item/livingleggings.json
new file mode 100644
index 00000000..9f9e8220
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/livingleggings.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/livingleggings"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/livingplate.json b/src/generated/resources/assets/bloodmagic/models/item/livingplate.json
new file mode 100644
index 00000000..ffcf6a31
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/livingplate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/livingplate"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/looting_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/looting_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/looting_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/magicianbloodorb.json b/src/generated/resources/assets/bloodmagic/models/item/magicianbloodorb.json
new file mode 100644
index 00000000..218986d2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/magicianbloodorb.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/magicianbloodorb"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/masterbloodorb.json b/src/generated/resources/assets/bloodmagic/models/item/masterbloodorb.json
new file mode 100644
index 00000000..63d243a6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/masterbloodorb.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/masterbloodorb"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/masterritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/masterritualstone.json
new file mode 100644
index 00000000..84e36366
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/masterritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/masterritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/melee_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/melee_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/melee_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/mimic.json b/src/generated/resources/assets/bloodmagic/models/item/mimic.json
new file mode 100644
index 00000000..82d7c08b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/mimic.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/solidopaquemimic"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/miningsigil.json b/src/generated/resources/assets/bloodmagic/models/item/miningsigil.json
new file mode 100644
index 00000000..f2f8923a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/miningsigil.json
@@ -0,0 +1,16 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/miningsigil_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/miningsigil_activated"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/nether_soil.json b/src/generated/resources/assets/bloodmagic/models/item/nether_soil.json
new file mode 100644
index 00000000..e26c6db7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/nether_soil.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/nether_soil"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json
new file mode 100644
index 00000000..03c76b69
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/obsidianbrickpath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/obsidianbrickpath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json b/src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json
new file mode 100644
index 00000000..3db5658a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/obsidiantilepath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/obsidiantilepath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/orbcapacityrune.json b/src/generated/resources/assets/bloodmagic/models/item/orbcapacityrune.json
new file mode 100644
index 00000000..c851584c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/orbcapacityrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/orbcapacityrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/plantoil.json b/src/generated/resources/assets/bloodmagic/models/item/plantoil.json
new file mode 100644
index 00000000..f61b1551
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/plantoil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/plantoil"
+ }
+}
\ 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..71d561ab
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/primitive_crystalline_resonator.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/primitive_crystalline_resonator"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/primitive_explosive_cell.json b/src/generated/resources/assets/bloodmagic/models/item/primitive_explosive_cell.json
new file mode 100644
index 00000000..29f8d0f1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/primitive_explosive_cell.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/primitive_explosive_cell"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/primitive_hydration_cell.json b/src/generated/resources/assets/bloodmagic/models/item/primitive_hydration_cell.json
new file mode 100644
index 00000000..73f64a0c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/primitive_hydration_cell.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/primitive_hydration_cell"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/quick_draw_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/quick_draw_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/quick_draw_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/rawdemoncrystal.json b/src/generated/resources/assets/bloodmagic/models/item/rawdemoncrystal.json
new file mode 100644
index 00000000..d1f4da91
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/rawdemoncrystal.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/crystal/defaultcrystal1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentair.json b/src/generated/resources/assets/bloodmagic/models/item/reagentair.json
new file mode 100644
index 00000000..3cdc9d64
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentair.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentair"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentbinding.json b/src/generated/resources/assets/bloodmagic/models/item/reagentbinding.json
new file mode 100644
index 00000000..e8409a07
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentbinding.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentbinding"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentbloodlight.json b/src/generated/resources/assets/bloodmagic/models/item/reagentbloodlight.json
new file mode 100644
index 00000000..54d4afa2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentbloodlight.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentbloodlight"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentfastminer.json b/src/generated/resources/assets/bloodmagic/models/item/reagentfastminer.json
new file mode 100644
index 00000000..3c4434b7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentfastminer.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentfastminer"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentgrowth.json b/src/generated/resources/assets/bloodmagic/models/item/reagentgrowth.json
new file mode 100644
index 00000000..3d4ee45c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentgrowth.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentgrowth"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentholding.json b/src/generated/resources/assets/bloodmagic/models/item/reagentholding.json
new file mode 100644
index 00000000..b84ea6fb
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentholding.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentholding"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentlava.json b/src/generated/resources/assets/bloodmagic/models/item/reagentlava.json
new file mode 100644
index 00000000..d6139efe
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentlava.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentlava"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentmagnetism.json b/src/generated/resources/assets/bloodmagic/models/item/reagentmagnetism.json
new file mode 100644
index 00000000..121d0018
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentmagnetism.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentmagnetism"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentsight.json b/src/generated/resources/assets/bloodmagic/models/item/reagentsight.json
new file mode 100644
index 00000000..37f60639
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentsight.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentsight"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentvoid.json b/src/generated/resources/assets/bloodmagic/models/item/reagentvoid.json
new file mode 100644
index 00000000..4f6564c8
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentvoid.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentvoid"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reagentwater.json b/src/generated/resources/assets/bloodmagic/models/item/reagentwater.json
new file mode 100644
index 00000000..b5730d1a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reagentwater.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reagentwater"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/reinforcedslate.json b/src/generated/resources/assets/bloodmagic/models/item/reinforcedslate.json
new file mode 100644
index 00000000..3299a6a5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/reinforcedslate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/reinforcedslate"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ritualdiviner.json b/src/generated/resources/assets/bloodmagic/models/item/ritualdiviner.json
new file mode 100644
index 00000000..39b88d5c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ritualdiviner.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/ritualdiviner"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ritualdivinerdusk.json b/src/generated/resources/assets/bloodmagic/models/item/ritualdivinerdusk.json
new file mode 100644
index 00000000..48ee296e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ritualdivinerdusk.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/ritualdivinerdusk"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/ritualstone.json
new file mode 100644
index 00000000..4dea1d50
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/ritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/ritualtinkerer.json b/src/generated/resources/assets/bloodmagic/models/item/ritualtinkerer.json
new file mode 100644
index 00000000..31fcff20
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/ritualtinkerer.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/ritualtinkerer"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sacrificerune.json b/src/generated/resources/assets/bloodmagic/models/item/sacrificerune.json
new file mode 100644
index 00000000..dcbe6138
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sacrificerune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/sacrificerune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json b/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json
new file mode 100644
index 00000000..08eefb43
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sacrificialdagger.json
@@ -0,0 +1,20 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/sacrificialdagger"
+ },
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:incense": 0.0
+ },
+ "model": "bloodmagic:item/variants/sacrificialdagger"
+ },
+ {
+ "predicate": {
+ "bloodmagic:incense": 1.0
+ },
+ "model": "bloodmagic:item/variants/sacrificialdagger_ceremonial"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/saltpeter.json b/src/generated/resources/assets/bloodmagic/models/item/saltpeter.json
new file mode 100644
index 00000000..b9ba71f1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/saltpeter.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/saltpeter"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sand_hellforged.json b/src/generated/resources/assets/bloodmagic/models/item/sand_hellforged.json
new file mode 100644
index 00000000..03c5f26d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sand_hellforged.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/sand_hellforged"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sand_netherite.json b/src/generated/resources/assets/bloodmagic/models/item/sand_netherite.json
new file mode 100644
index 00000000..99d41148
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sand_netherite.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/sand_netherite"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sanguinereverter.json b/src/generated/resources/assets/bloodmagic/models/item/sanguinereverter.json
new file mode 100644
index 00000000..2e6c6de6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sanguinereverter.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/sanguinereverter"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/seersigil.json b/src/generated/resources/assets/bloodmagic/models/item/seersigil.json
new file mode 100644
index 00000000..f513120b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/seersigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/seersigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/selfsacrificerune.json b/src/generated/resources/assets/bloodmagic/models/item/selfsacrificerune.json
new file mode 100644
index 00000000..ab853e7b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/selfsacrificerune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/selfsacrificerune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/shaped_charge.json b/src/generated/resources/assets/bloodmagic/models/item/shaped_charge.json
new file mode 100644
index 00000000..de035a33
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/shaped_charge.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/shaped_charge"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json b/src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json
new file mode 100644
index 00000000..32760a59
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sigilofholding.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/sigilofholding"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sigilofmagnetism.json b/src/generated/resources/assets/bloodmagic/models/item/sigilofmagnetism.json
new file mode 100644
index 00000000..8a5253db
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sigilofmagnetism.json
@@ -0,0 +1,16 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/sigilofmagnetism_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/sigilofmagnetism_activated"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/silk_touch_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/silk_touch_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/silk_touch_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/slate_ampoule.json b/src/generated/resources/assets/bloodmagic/models/item/slate_ampoule.json
new file mode 100644
index 00000000..bfabb3e6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/slate_ampoule.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/slate_ampoule"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/slate_vial.json b/src/generated/resources/assets/bloodmagic/models/item/slate_vial.json
new file mode 100644
index 00000000..1dfb1022
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/slate_vial.json
@@ -0,0 +1,7 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/smelting_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/smelting_anointment.json
new file mode 100644
index 00000000..5d52447b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/smelting_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulaxe.json b/src/generated/resources/assets/bloodmagic/models/item/soulaxe.json
new file mode 100644
index 00000000..7a752a51
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulaxe.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulaxe"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulaxe_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulaxe_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulaxe_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulaxe_steadfast"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulgemcommon.json b/src/generated/resources/assets/bloodmagic/models/item/soulgemcommon.json
new file mode 100644
index 00000000..7629117a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulgemcommon.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulgemcommon"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulgemcommon_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulgemcommon_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulgemcommon_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulgemcommon_steadfast"
+ }
+ ]
+}
\ 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/soulgemlesser.json b/src/generated/resources/assets/bloodmagic/models/item/soulgemlesser.json
new file mode 100644
index 00000000..3489ce2f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulgemlesser.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulgemlesser"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulgemlesser_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulgemlesser_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulgemlesser_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulgemlesser_steadfast"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulgempetty.json b/src/generated/resources/assets/bloodmagic/models/item/soulgempetty.json
new file mode 100644
index 00000000..b8c2358c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulgempetty.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulgempetty"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulgempetty_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulgempetty_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulgempetty_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulgempetty_steadfast"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulpickaxe.json b/src/generated/resources/assets/bloodmagic/models/item/soulpickaxe.json
new file mode 100644
index 00000000..14619409
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulpickaxe.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulpickaxe"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulpickaxe_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulpickaxe_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulpickaxe_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulpickaxe_steadfast"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulscythe.json b/src/generated/resources/assets/bloodmagic/models/item/soulscythe.json
new file mode 100644
index 00000000..54c81982
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulscythe.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulscythe"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulscythe_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulscythe_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulscythe_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulscythe_steadfast"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulshovel.json b/src/generated/resources/assets/bloodmagic/models/item/soulshovel.json
new file mode 100644
index 00000000..b6d3c67e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulshovel.json
@@ -0,0 +1,34 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulshovel"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulshovel_corrosive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0
+ },
+ "model": "bloodmagic:item/variants/soulshovel_destructive"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0
+ },
+ "model": "bloodmagic:item/variants/soulshovel_vengeful"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0
+ },
+ "model": "bloodmagic:item/variants/soulshovel_steadfast"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulsnare.json b/src/generated/resources/assets/bloodmagic/models/item/soulsnare.json
new file mode 100644
index 00000000..91fa098e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulsnare.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsnare"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/soulsword.json b/src/generated/resources/assets/bloodmagic/models/item/soulsword.json
new file mode 100644
index 00000000..47e58c18
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/soulsword.json
@@ -0,0 +1,74 @@
+{
+ "overrides": [
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0,
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0,
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_corrosive_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0,
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_destructive_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0,
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_vengeful_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0,
+ "bloodmagic:active": 0.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_steadfast_deactivated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 0.0,
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_activated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 1.0,
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_corrosive_activated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 2.0,
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_destructive_activated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 3.0,
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_vengeful_activated"
+ },
+ {
+ "predicate": {
+ "bloodmagic:type": 4.0,
+ "bloodmagic:active": 1.0
+ },
+ "model": "bloodmagic:item/variants/soulsword_steadfast_activated"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/speedrune.json b/src/generated/resources/assets/bloodmagic/models/item/speedrune.json
new file mode 100644
index 00000000..d2bec661
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/speedrune.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/speedrune"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/steadfastcrystal.json b/src/generated/resources/assets/bloodmagic/models/item/steadfastcrystal.json
new file mode 100644
index 00000000..5a4fee55
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/steadfastcrystal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/steadfastcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/steadfastdemoncrystal.json b/src/generated/resources/assets/bloodmagic/models/item/steadfastdemoncrystal.json
new file mode 100644
index 00000000..d874984d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/steadfastdemoncrystal.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/crystal/steadfastcrystal1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json
new file mode 100644
index 00000000..f7f36e89
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/stonebrickpath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/stonebrickpath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json b/src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json
new file mode 100644
index 00000000..42594e88
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/stonetilepath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/stonetilepath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/sulfur.json b/src/generated/resources/assets/bloodmagic/models/item/sulfur.json
new file mode 100644
index 00000000..c52f67e0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/sulfur.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/sulfur"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/throwing_dagger.json b/src/generated/resources/assets/bloodmagic/models/item/throwing_dagger.json
new file mode 100644
index 00000000..59297614
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/throwing_dagger.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/throwing_dagger"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/throwing_dagger_syringe.json b/src/generated/resources/assets/bloodmagic/models/item/throwing_dagger_syringe.json
new file mode 100644
index 00000000..2e98d782
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/throwing_dagger_syringe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/throwing_dagger_syringe"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/upgradetome.json b/src/generated/resources/assets/bloodmagic/models/item/upgradetome.json
new file mode 100644
index 00000000..674756d4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/upgradetome.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/upgradetome"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/growthsigil_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/growthsigil_activated.json
new file mode 100644
index 00000000..0f5b60bd
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/growthsigil_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/growthsigil_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/growthsigil_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/growthsigil_deactivated.json
new file mode 100644
index 00000000..5d14ea40
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/growthsigil_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/growthsigil_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/icesigil_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/icesigil_activated.json
new file mode 100644
index 00000000..9f6e940a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/icesigil_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/icesigil_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/icesigil_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/icesigil_deactivated.json
new file mode 100644
index 00000000..5a461a5d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/icesigil_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/icesigil_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/miningsigil_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/miningsigil_activated.json
new file mode 100644
index 00000000..12877c52
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/miningsigil_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/miningsigil_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/miningsigil_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/miningsigil_deactivated.json
new file mode 100644
index 00000000..858e701f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/miningsigil_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/miningsigil_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json
new file mode 100644
index 00000000..20e1c9f1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/sacrificialdagger"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json
new file mode 100644
index 00000000..ba8ea9db
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/sacrificialdagger_ceremonial.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/sacrificialdagger_ceremonial"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/sigilofmagnetism_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/sigilofmagnetism_activated.json
new file mode 100644
index 00000000..b49d9096
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/sigilofmagnetism_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/sigilofmagnetism_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/sigilofmagnetism_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/sigilofmagnetism_deactivated.json
new file mode 100644
index 00000000..f0b2fa42
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/sigilofmagnetism_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/sigilofmagnetism_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe.json
new file mode 100644
index 00000000..30fdc78b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulaxe"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_corrosive.json
new file mode 100644
index 00000000..a55f906f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulaxe_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_destructive.json
new file mode 100644
index 00000000..8df2b5f9
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulaxe_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_steadfast.json
new file mode 100644
index 00000000..d67ffdc2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulaxe_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_vengeful.json
new file mode 100644
index 00000000..57f65f4c
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulaxe_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulaxe_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon.json
new file mode 100644
index 00000000..460ba68b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemcommon"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_corrosive.json
new file mode 100644
index 00000000..0fa3a377
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemcommon_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_destructive.json
new file mode 100644
index 00000000..2e30b739
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemcommon_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_steadfast.json
new file mode 100644
index 00000000..56b5b375
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemcommon_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_vengeful.json
new file mode 100644
index 00000000..fc3b3fd5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemcommon_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemcommon_vengeful"
+ }
+}
\ 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/assets/bloodmagic/models/item/variants/soulgemlesser.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser.json
new file mode 100644
index 00000000..7a253c28
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemlesser"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_corrosive.json
new file mode 100644
index 00000000..a191b1f6
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemlesser_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_destructive.json
new file mode 100644
index 00000000..241d5b93
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemlesser_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_steadfast.json
new file mode 100644
index 00000000..9ea458c2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemlesser_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_vengeful.json
new file mode 100644
index 00000000..dbc3cc32
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgemlesser_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgemlesser_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty.json
new file mode 100644
index 00000000..3085ac3b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgempetty"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_corrosive.json
new file mode 100644
index 00000000..b5c185ea
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgempetty_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_destructive.json
new file mode 100644
index 00000000..955e2c62
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgempetty_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_steadfast.json
new file mode 100644
index 00000000..5031e33f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgempetty_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_vengeful.json
new file mode 100644
index 00000000..e7ae0df4
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulgempetty_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulgempetty_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe.json
new file mode 100644
index 00000000..fe117924
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulpickaxe"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_corrosive.json
new file mode 100644
index 00000000..1e88cff5
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulpickaxe_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_destructive.json
new file mode 100644
index 00000000..2aaac132
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulpickaxe_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_steadfast.json
new file mode 100644
index 00000000..8f6ed094
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulpickaxe_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_vengeful.json
new file mode 100644
index 00000000..bd938ace
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulpickaxe_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulpickaxe_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe.json
new file mode 100644
index 00000000..c6ada5af
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulscythe"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_corrosive.json
new file mode 100644
index 00000000..9da5186f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulscythe_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_destructive.json
new file mode 100644
index 00000000..a9e5999b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulscythe_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_steadfast.json
new file mode 100644
index 00000000..9a8e1765
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulscythe_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_vengeful.json
new file mode 100644
index 00000000..e0a42699
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulscythe_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulscythe_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel.json
new file mode 100644
index 00000000..ad3f0972
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulshovel"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_corrosive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_corrosive.json
new file mode 100644
index 00000000..93b102a0
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_corrosive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulshovel_corrosive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_destructive.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_destructive.json
new file mode 100644
index 00000000..34bbd132
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_destructive.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulshovel_destructive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_steadfast.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_steadfast.json
new file mode 100644
index 00000000..3da6185d
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_steadfast.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulshovel_steadfast"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_vengeful.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_vengeful.json
new file mode 100644
index 00000000..2a9bbdf2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulshovel_vengeful.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulshovel_vengeful"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_activated.json
new file mode 100644
index 00000000..9ade5a1a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_corrosive_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_corrosive_activated.json
new file mode 100644
index 00000000..55c0bb87
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_corrosive_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_corrosive_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_corrosive_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_corrosive_deactivated.json
new file mode 100644
index 00000000..610f36ce
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_corrosive_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_corrosive_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_deactivated.json
new file mode 100644
index 00000000..c87c8ee7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_destructive_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_destructive_activated.json
new file mode 100644
index 00000000..e34becaa
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_destructive_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_destructive_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_destructive_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_destructive_deactivated.json
new file mode 100644
index 00000000..78ddb49b
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_destructive_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_destructive_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_steadfast_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_steadfast_activated.json
new file mode 100644
index 00000000..40313e52
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_steadfast_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_steadfast_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_steadfast_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_steadfast_deactivated.json
new file mode 100644
index 00000000..13aa70f1
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_steadfast_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_steadfast_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_vengeful_activated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_vengeful_activated.json
new file mode 100644
index 00000000..1547ea7e
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_vengeful_activated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_vengeful_activated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_vengeful_deactivated.json b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_vengeful_deactivated.json
new file mode 100644
index 00000000..64c72e95
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/variants/soulsword_vengeful_deactivated.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/handheld",
+ "textures": {
+ "layer0": "bloodmagic:item/soulsword_vengeful_deactivated"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/veinmine_charge.json b/src/generated/resources/assets/bloodmagic/models/item/veinmine_charge.json
new file mode 100644
index 00000000..d4e412ca
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/veinmine_charge.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/veinmine_charge"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/vengefulcrystal.json b/src/generated/resources/assets/bloodmagic/models/item/vengefulcrystal.json
new file mode 100644
index 00000000..1256032a
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/vengefulcrystal.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/vengefulcrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/vengefuldemoncrystal.json b/src/generated/resources/assets/bloodmagic/models/item/vengefuldemoncrystal.json
new file mode 100644
index 00000000..b116d448
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/vengefuldemoncrystal.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/crystal/vengefulcrystal1"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/voidsigil.json b/src/generated/resources/assets/bloodmagic/models/item/voidsigil.json
new file mode 100644
index 00000000..41dac6e2
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/voidsigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/voidsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/waterritualstone.json b/src/generated/resources/assets/bloodmagic/models/item/waterritualstone.json
new file mode 100644
index 00000000..4c02099f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/waterritualstone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/waterritualstone"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/waterscribetool.json b/src/generated/resources/assets/bloodmagic/models/item/waterscribetool.json
new file mode 100644
index 00000000..658f9c03
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/waterscribetool.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/waterscribetool"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/watersigil.json b/src/generated/resources/assets/bloodmagic/models/item/watersigil.json
new file mode 100644
index 00000000..12a3f053
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/watersigil.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/watersigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/weakbloodorb.json b/src/generated/resources/assets/bloodmagic/models/item/weakbloodorb.json
new file mode 100644
index 00000000..93800f41
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/weakbloodorb.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/weakbloodorb"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/weakbloodshard.json b/src/generated/resources/assets/bloodmagic/models/item/weakbloodshard.json
new file mode 100644
index 00000000..8cc8378f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/weakbloodshard.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/weakbloodshard"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/will_power_anointment.json b/src/generated/resources/assets/bloodmagic/models/item/will_power_anointment.json
new file mode 100644
index 00000000..057dedef
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/will_power_anointment.json
@@ -0,0 +1,8 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "bloodmagic:item/alchemic_vial_will",
+ "layer1": "bloodmagic:item/alchemic_liquid",
+ "layer2": "bloodmagic:item/alchemic_ribbon_will"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json
new file mode 100644
index 00000000..d598f8f7
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/woodbrickpath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/woodbrickpath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json b/src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json
new file mode 100644
index 00000000..fd20da53
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/woodtilepath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/woodtilepath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json b/src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json
new file mode 100644
index 00000000..78f2ee16
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/wornstonebrickpath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/wornstonebrickpath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json b/src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json
new file mode 100644
index 00000000..7394723f
--- /dev/null
+++ b/src/generated/resources/assets/bloodmagic/models/item/wornstonetilepath.json
@@ -0,0 +1,3 @@
+{
+ "parent": "bloodmagic:block/wornstonetilepath"
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/alchemy_table.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/alchemy_table.json
new file mode 100644
index 00000000..6f38ef77
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/alchemy_table.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:alchemy_table"
+ ]
+ },
+ "criteria": {
+ "has_blank_slate": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:blankslate"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:alchemy_table"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_blank_slate",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/arc.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/arc.json
new file mode 100644
index 00000000..8fdd602b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/arc.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:arc"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:arc"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_altar.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_altar.json
new file mode 100644
index 00000000..7eff31d1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_altar.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_altar"
+ ]
+ },
+ "criteria": {
+ "has_gold": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "minecraft:gold_ingot"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_altar"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_gold",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_acceleration.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_acceleration.json
new file mode 100644
index 00000000..e0555e28
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_acceleration.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_acceleration"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_acceleration"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_aug_capacity.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_aug_capacity.json
new file mode 100644
index 00000000..4de0eed5
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_aug_capacity.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_aug_capacity"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_aug_capacity"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_blank.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_blank.json
new file mode 100644
index 00000000..3de3b9d5
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_blank.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_blank"
+ ]
+ },
+ "criteria": {
+ "has_weak_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:weakbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_blank"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_weak_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_capacity.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_capacity.json
new file mode 100644
index 00000000..85b29fb4
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_capacity.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_capacity"
+ ]
+ },
+ "criteria": {
+ "has_imbued_slate": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:infusedslate"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_capacity"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_imbued_slate",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_charging.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_charging.json
new file mode 100644
index 00000000..c2add425
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_charging.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_charging"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_charging"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_displacement.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_displacement.json
new file mode 100644
index 00000000..6e77a0e8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_displacement.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_displacement"
+ ]
+ },
+ "criteria": {
+ "has_imbued_slate": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:infusedslate"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_displacement"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_imbued_slate",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_orb.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_orb.json
new file mode 100644
index 00000000..46aaf95c
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_orb.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_orb"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_orb"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_sacrifice.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_sacrifice.json
new file mode 100644
index 00000000..2b7ee148
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_sacrifice.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_sacrifice"
+ ]
+ },
+ "criteria": {
+ "has_apprentice_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:apprenticebloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_sacrifice"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_apprentice_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_self_sacrifice.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_self_sacrifice.json
new file mode 100644
index 00000000..076daaee
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_self_sacrifice.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_self_sacrifice"
+ ]
+ },
+ "criteria": {
+ "has_apprentice_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:apprenticebloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_self_sacrifice"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_apprentice_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_speed.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_speed.json
new file mode 100644
index 00000000..7a866e04
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/blood_rune_speed.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:blood_rune_speed"
+ ]
+ },
+ "criteria": {
+ "has_blank_rune": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:blankrune"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:blood_rune_speed"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_blank_rune",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/bloodstonebrick.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/bloodstonebrick.json
new file mode 100644
index 00000000..37f650c6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/bloodstonebrick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:bloodstonebrick"
+ ]
+ },
+ "criteria": {
+ "has_weak_shard": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:weakbloodshard"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:bloodstonebrick"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_weak_shard",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/corrupted_dust.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/corrupted_dust.json
new file mode 100644
index 00000000..885b1b2f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/corrupted_dust.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:corrupted_dust"
+ ]
+ },
+ "criteria": {
+ "has_tiny": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:corrupted_dust"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_tiny",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/experience_tome.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/experience_tome.json
new file mode 100644
index 00000000..16e94029
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/experience_tome.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:experience_tome"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:experience_tome"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/hellforged_block.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/hellforged_block.json
new file mode 100644
index 00000000..cf79dc99
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/hellforged_block.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:hellforged_block"
+ ]
+ },
+ "criteria": {
+ "has_hellforged": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:ingot_hellforged"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:hellforged_block"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_hellforged",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json
new file mode 100644
index 00000000..cc469b58
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/incense_altar.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:incense_altar"
+ ]
+ },
+ "criteria": {
+ "has_weak_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:weakbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:incense_altar"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_weak_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/largebloodstonebrick.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/largebloodstonebrick.json
new file mode 100644
index 00000000..cef9ce21
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/largebloodstonebrick.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:largebloodstonebrick"
+ ]
+ },
+ "criteria": {
+ "has_weak_shard": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:weakbloodshard"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:largebloodstonebrick"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_weak_shard",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/lava_crystal.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/lava_crystal.json
new file mode 100644
index 00000000..84bc8f36
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/lava_crystal.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:lava_crystal"
+ ]
+ },
+ "criteria": {
+ "has_weak_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:weakbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:lava_crystal"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_weak_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json
new file mode 100644
index 00000000..c4388608
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:path/path_stone"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:path/path_stone"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json
new file mode 100644
index 00000000..e89a4e06
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_stonetile.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:path/path_stonetile"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:path/path_stonetile"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json
new file mode 100644
index 00000000..dd6dc1ec
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wood.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:path/path_wood"
+ ]
+ },
+ "criteria": {
+ "has_apprentice_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:apprenticebloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:path/path_wood"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_apprentice_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json
new file mode 100644
index 00000000..1e7d7d71
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_woodtile.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:path/path_woodtile"
+ ]
+ },
+ "criteria": {
+ "has_apprentice_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:apprenticebloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:path/path_woodtile"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_apprentice_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json
new file mode 100644
index 00000000..cde914c3
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstone.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:path/path_wornstone"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:path/path_wornstone"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json
new file mode 100644
index 00000000..658edfb7
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/path/path_wornstonetile.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:path/path_wornstonetile"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:path/path_wornstonetile"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/primitive_furnace_cell.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/primitive_furnace_cell.json
new file mode 100644
index 00000000..801f59f1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/primitive_furnace_cell.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:primitive_furnace_cell"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:primitive_furnace_cell"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/primitive_hydration_cell.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/primitive_hydration_cell.json
new file mode 100644
index 00000000..69a0f6b6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/primitive_hydration_cell.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:primitive_hydration_cell"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:primitive_hydration_cell"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_0.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_0.json
new file mode 100644
index 00000000..ac4dd373
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_0.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:ritual_diviner_0"
+ ]
+ },
+ "criteria": {
+ "has_scribe": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:airscribetool"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:ritual_diviner_0"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_scribe",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_1.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_1.json
new file mode 100644
index 00000000..b671e3bd
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_diviner_1.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:ritual_diviner_1"
+ ]
+ },
+ "criteria": {
+ "has_demon_slate": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:demonslate"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:ritual_diviner_1"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_demon_slate",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_reader.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_reader.json
new file mode 100644
index 00000000..f6f08c7a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_reader.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:ritual_reader"
+ ]
+ },
+ "criteria": {
+ "has_master_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:masterbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:ritual_reader"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_master_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_blank.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_blank.json
new file mode 100644
index 00000000..ef6c9fdb
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_blank.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:ritual_stone_blank"
+ ]
+ },
+ "criteria": {
+ "has_apprentice_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:apprenticebloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:ritual_stone_blank"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_apprentice_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_master.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_master.json
new file mode 100644
index 00000000..878c9ebb
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/ritual_stone_master.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:ritual_stone_master"
+ ]
+ },
+ "criteria": {
+ "has_magician_orb": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:magicianbloodorb"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:ritual_stone_master"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_magician_orb",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/sacrificial_dagger.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/sacrificial_dagger.json
new file mode 100644
index 00000000..744c16e1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/sacrificial_dagger.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:sacrificial_dagger"
+ ]
+ },
+ "criteria": {
+ "has_glass": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "minecraft:glass"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:sacrificial_dagger"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_glass",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/smelting/ingot_hellforged.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/smelting/ingot_hellforged.json
new file mode 100644
index 00000000..bd8021ec
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/smelting/ingot_hellforged.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:smelting/ingot_hellforged"
+ ]
+ },
+ "criteria": {
+ "has_hellforged_dust": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:sand_hellforged"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:smelting/ingot_hellforged"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_hellforged_dust",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/soul_forge.json b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/soul_forge.json
new file mode 100644
index 00000000..262a22ec
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/bloodmagictab/soul_forge.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:soul_forge"
+ ]
+ },
+ "criteria": {
+ "has_blank_slate": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:blankslate"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:soul_forge"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_blank_slate",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_gold.json b/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_gold.json
new file mode 100644
index 00000000..aceef4c7
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_gold.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:smelting/ingot_gold"
+ ]
+ },
+ "criteria": {
+ "has_gold_sand": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:goldsand"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:smelting/ingot_gold"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_gold_sand",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_iron.json b/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_iron.json
new file mode 100644
index 00000000..444757df
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_iron.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:smelting/ingot_iron"
+ ]
+ },
+ "criteria": {
+ "has_iron_sand": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:ironsand"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:smelting/ingot_iron"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_iron_sand",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_netherite_scrap.json b/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_netherite_scrap.json
new file mode 100644
index 00000000..5265d945
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/advancements/recipes/misc/smelting/ingot_netherite_scrap.json
@@ -0,0 +1,32 @@
+{
+ "parent": "minecraft:recipes/root",
+ "rewards": {
+ "recipes": [
+ "bloodmagic:smelting/ingot_netherite_scrap"
+ ]
+ },
+ "criteria": {
+ "has_netherite_dust": {
+ "trigger": "minecraft:inventory_changed",
+ "conditions": {
+ "items": [
+ {
+ "item": "bloodmagic:sand_netherite"
+ }
+ ]
+ }
+ },
+ "has_the_recipe": {
+ "trigger": "minecraft:recipe_unlocked",
+ "conditions": {
+ "recipe": "bloodmagic:smelting/ingot_netherite_scrap"
+ }
+ }
+ },
+ "requirements": [
+ [
+ "has_netherite_dust",
+ "has_the_recipe"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/accelerationrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/accelerationrune.json
new file mode 100644
index 00000000..bff0c94d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/accelerationrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:accelerationrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/airritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/airritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/airritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemicalreactionchamber.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemicalreactionchamber.json
new file mode 100644
index 00000000..e3d6ee73
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemicalreactionchamber.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:alchemicalreactionchamber"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemyarray.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemyarray.json
new file mode 100644
index 00000000..f27b7f82
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemyarray.json
@@ -0,0 +1,10 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "name": "bloodmagic:alchemyarray",
+ "rolls": 1.0,
+ "entries": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemytable.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemytable.json
new file mode 100644
index 00000000..35297d28
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/alchemytable.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:alchemytable"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/altar.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/altar.json
new file mode 100644
index 00000000..49c1cf36
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/altar.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:altar"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/altarcapacityrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/altarcapacityrune.json
new file mode 100644
index 00000000..a71126ce
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/altarcapacityrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:altarcapacityrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/bettercapacityrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/bettercapacityrune.json
new file mode 100644
index 00000000..eb0cce26
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/bettercapacityrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:bettercapacityrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/blankrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/blankrune.json
new file mode 100644
index 00000000..80a59b7a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/blankrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:blankrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/bloodlight.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/bloodlight.json
new file mode 100644
index 00000000..20e1ab88
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/bloodlight.json
@@ -0,0 +1,10 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "name": "bloodmagic:bloodlight",
+ "rolls": 1.0,
+ "entries": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/bloodstonebrick.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/bloodstonebrick.json
new file mode 100644
index 00000000..3f2c2b35
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/bloodstonebrick.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:bloodstonebrick"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/chargingrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/chargingrune.json
new file mode 100644
index 00000000..66c32d3f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/chargingrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:chargingrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/corrosivedemoncrystal.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/corrosivedemoncrystal.json
new file mode 100644
index 00000000..d2cad931
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/corrosivedemoncrystal.json
@@ -0,0 +1,173 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "0"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "1"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 2
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "2"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 3
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "3"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 4
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "4"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 5
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "5"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 6
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:corrosivedemoncrystal",
+ "properties": {
+ "age": "6"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 7
+ }
+ ],
+ "name": "bloodmagic:corrosivecrystal"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/creeping_doubt.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/creeping_doubt.json
new file mode 100644
index 00000000..2c5b9549
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/creeping_doubt.json
@@ -0,0 +1,173 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "0"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "1"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "2"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "3"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "4"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "5"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:creeping_doubt",
+ "properties": {
+ "age": "6"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:weakbloodshard"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/deforester_charge.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/deforester_charge.json
new file mode 100644
index 00000000..78e28375
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/deforester_charge.json
@@ -0,0 +1,10 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "name": "bloodmagic:deforester_charge",
+ "rolls": 1.0,
+ "entries": []
+ }
+ ]
+}
\ 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
new file mode 100644
index 00000000..3e3a8d39
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/demoncrucible.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:demoncrucible"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
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/loot_tables/blocks/destructivedemoncrystal.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/destructivedemoncrystal.json
new file mode 100644
index 00000000..a42c22e1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/destructivedemoncrystal.json
@@ -0,0 +1,173 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "0"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "1"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 2
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "2"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 3
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "3"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 4
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "4"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 5
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "5"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 6
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:destructivedemoncrystal",
+ "properties": {
+ "age": "6"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 7
+ }
+ ],
+ "name": "bloodmagic:destructivecrystal"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dislocationrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dislocationrune.json
new file mode 100644
index 00000000..d158c403
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dislocationrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dislocationrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick1.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick1.json
new file mode 100644
index 00000000..5bf91c81
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick1.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick1"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick2.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick2.json
new file mode 100644
index 00000000..491a46ec
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick2.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick2"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick3.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick3.json
new file mode 100644
index 00000000..ef502cb0
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick3.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick3"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_assorted.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_assorted.json
new file mode 100644
index 00000000..01211879
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_assorted.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick_assorted"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_gate.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_gate.json
new file mode 100644
index 00000000..bd9af9b7
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_gate.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick_gate"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_stairs.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_stairs.json
new file mode 100644
index 00000000..8df43bad
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_stairs.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick_stairs"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_wall.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_wall.json
new file mode 100644
index 00000000..f047c0cd
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_brick_wall.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_brick_wall"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_eye.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_eye.json
new file mode 100644
index 00000000..d7a703f1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_eye.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_eye"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_metal.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_metal.json
new file mode 100644
index 00000000..6b57213b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_metal.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_metal"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_ore.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_ore.json
new file mode 100644
index 00000000..666396e2
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_ore.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_ore"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_cap.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_cap.json
new file mode 100644
index 00000000..29906c2d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_cap.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_pillar_cap"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_center.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_center.json
new file mode 100644
index 00000000..5aa43bb8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_center.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_pillar_center"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_special.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_special.json
new file mode 100644
index 00000000..bde90c58
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_pillar_special.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_pillar_special"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished.json
new file mode 100644
index 00000000..fa0436f5
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_polished"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_gate.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_gate.json
new file mode 100644
index 00000000..46d3c924
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_gate.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_polished_gate"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_stairs.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_stairs.json
new file mode 100644
index 00000000..fc7d93be
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_stairs.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_polished_stairs"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_wall.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_wall.json
new file mode 100644
index 00000000..e3c69dbb
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_polished_wall.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_polished_wall"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_smallbrick.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_smallbrick.json
new file mode 100644
index 00000000..872ac5de
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_smallbrick.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_smallbrick"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_stone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_stone.json
new file mode 100644
index 00000000..7fc9228d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_stone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_stone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_tile.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_tile.json
new file mode 100644
index 00000000..b8211e0f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_tile.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_tile"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_tilespecial.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_tilespecial.json
new file mode 100644
index 00000000..3f90bc80
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/dungeon_tilespecial.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:dungeon_tilespecial"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/duskritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/duskritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/duskritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/earthritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/earthritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/earthritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/ethereal_mimic.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/ethereal_mimic.json
new file mode 100644
index 00000000..abe50fb6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/ethereal_mimic.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ethereal_mimic"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/fireritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/fireritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/fireritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/fungal_charge.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/fungal_charge.json
new file mode 100644
index 00000000..0344f5a2
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/fungal_charge.json
@@ -0,0 +1,10 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "name": "bloodmagic:fungal_charge",
+ "rolls": 1.0,
+ "entries": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json
new file mode 100644
index 00000000..b588d41d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/incensealtar.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:incensealtar"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/largebloodstonebrick.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/largebloodstonebrick.json
new file mode 100644
index 00000000..ee4181fc
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/largebloodstonebrick.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:largebloodstonebrick"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/lightritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/lightritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/lightritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/masterritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/masterritualstone.json
new file mode 100644
index 00000000..8b9eb94d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/masterritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:masterritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/mimic.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/mimic.json
new file mode 100644
index 00000000..5e904859
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/mimic.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:mimic"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/nether_soil.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/nether_soil.json
new file mode 100644
index 00000000..5cf5a8ce
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/nether_soil.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "minecraft:netherrack"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json
new file mode 100644
index 00000000..6eb3eea4
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidianbrickpath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:obsidianbrickpath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json
new file mode 100644
index 00000000..ee7bbbf2
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/obsidiantilepath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:obsidiantilepath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/orbcapacityrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/orbcapacityrune.json
new file mode 100644
index 00000000..239dcb53
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/orbcapacityrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:orbcapacityrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/rawdemoncrystal.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/rawdemoncrystal.json
new file mode 100644
index 00000000..6774eb52
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/rawdemoncrystal.json
@@ -0,0 +1,173 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "0"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "1"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 2
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "2"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 3
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "3"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 4
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "4"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 5
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "5"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 6
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:rawdemoncrystal",
+ "properties": {
+ "age": "6"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 7
+ }
+ ],
+ "name": "bloodmagic:defaultcrystal"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/ritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/ritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/ritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/sacrificerune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/sacrificerune.json
new file mode 100644
index 00000000..30afc854
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/sacrificerune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:sacrificerune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/selfsacrificerune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/selfsacrificerune.json
new file mode 100644
index 00000000..edbac39e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/selfsacrificerune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:selfsacrificerune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/shaped_charge.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/shaped_charge.json
new file mode 100644
index 00000000..c34bb043
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/shaped_charge.json
@@ -0,0 +1,10 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "name": "bloodmagic:shaped_charge",
+ "rolls": 1.0,
+ "entries": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/soulforge.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/soulforge.json
new file mode 100644
index 00000000..32b39be4
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/soulforge.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:soulforge"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/speedrune.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/speedrune.json
new file mode 100644
index 00000000..37341278
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/speedrune.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:speedrune"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/steadfastdemoncrystal.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/steadfastdemoncrystal.json
new file mode 100644
index 00000000..dea3fee2
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/steadfastdemoncrystal.json
@@ -0,0 +1,173 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "0"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "1"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 2
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "2"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 3
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "3"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 4
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "4"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 5
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "5"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 6
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:steadfastdemoncrystal",
+ "properties": {
+ "age": "6"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 7
+ }
+ ],
+ "name": "bloodmagic:steadfastcrystal"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json
new file mode 100644
index 00000000..3a9b4289
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonebrickpath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:stonebrickpath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json
new file mode 100644
index 00000000..7796876b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/stonetilepath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:stonetilepath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/veinmine_charge.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/veinmine_charge.json
new file mode 100644
index 00000000..e7f06266
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/veinmine_charge.json
@@ -0,0 +1,10 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "name": "bloodmagic:veinmine_charge",
+ "rolls": 1.0,
+ "entries": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/vengefuldemoncrystal.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/vengefuldemoncrystal.json
new file mode 100644
index 00000000..c0801fe5
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/vengefuldemoncrystal.json
@@ -0,0 +1,173 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "0"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 1
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "1"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 2
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "2"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 3
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "3"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 4
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "4"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 5
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "5"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 6
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ },
+ {
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:block_state_property",
+ "block": "bloodmagic:vengefuldemoncrystal",
+ "properties": {
+ "age": "6"
+ }
+ }
+ ],
+ "functions": [
+ {
+ "function": "minecraft:set_count",
+ "count": 7
+ }
+ ],
+ "name": "bloodmagic:vengefulcrystal"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/waterritualstone.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/waterritualstone.json
new file mode 100644
index 00000000..e8935390
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/waterritualstone.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:ritualstone"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json
new file mode 100644
index 00000000..d4116d40
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodbrickpath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:woodbrickpath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json
new file mode 100644
index 00000000..fd8a04c6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/woodtilepath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:woodtilepath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json
new file mode 100644
index 00000000..d66e2617
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonebrickpath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:wornstonebrickpath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json
new file mode 100644
index 00000000..4de9ffb8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/blocks/wornstonetilepath.json
@@ -0,0 +1,19 @@
+{
+ "type": "minecraft:block",
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "name": "bloodmagic:wornstonetilepath"
+ }
+ ],
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/loot_tables/test.json b/src/generated/resources/data/bloodmagic/loot_tables/test.json
new file mode 100644
index 00000000..86acee43
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/loot_tables/test.json
@@ -0,0 +1,23 @@
+{
+ "type": "minecraft:chest",
+ "pools": [
+ {
+ "name": "test",
+ "rolls": 1.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "weight": 10,
+ "functions": [
+ {
+ "function": "minecraft:enchant_with_levels",
+ "levels": 30,
+ "treasure": true
+ }
+ ],
+ "name": "minecraft:book"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemy_table.json b/src/generated/resources/data/bloodmagic/recipes/alchemy_table.json
new file mode 100644
index 00000000..6c9bc44a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemy_table.json
@@ -0,0 +1,28 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "sss",
+ "wbw",
+ "gog"
+ ],
+ "key": {
+ "b": {
+ "tag": "forge:ingots/iron"
+ },
+ "s": {
+ "tag": "forge:stone"
+ },
+ "w": {
+ "tag": "minecraft:planks"
+ },
+ "g": {
+ "tag": "forge:ingots/gold"
+ },
+ "o": {
+ "item": "bloodmagic:blankslate"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:alchemytable"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/arcane_ash.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/arcane_ash.json
new file mode 100644
index 00000000..24f98096
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/arcane_ash.json
@@ -0,0 +1,24 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:dusts/redstone"
+ },
+ {
+ "tag": "forge:dyes/white"
+ },
+ {
+ "tag": "forge:gunpowder"
+ },
+ {
+ "tag": "minecraft:coals"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:arcaneashes",
+ "nbt": "{Damage:0}"
+ },
+ "syphon": 500,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ 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/alchemytable/bow_power_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/bow_power_anointment.json
new file mode 100644
index 00000000..e8eac2dc
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/bow_power_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "tag": "forge:ingots/iron"
+ },
+ {
+ "item": "minecraft:bow"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:bow_power_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/bread.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/bread.json
new file mode 100644
index 00000000..5e30f8ec
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/bread.json
@@ -0,0 +1,17 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:crops/wheat"
+ },
+ {
+ "item": "minecraft:sugar"
+ }
+ ],
+ "output": {
+ "item": "minecraft:bread"
+ },
+ "syphon": 100,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/clay_from_sand.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/clay_from_sand.json
new file mode 100644
index 00000000..8cd302ff
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/clay_from_sand.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:sand"
+ },
+ {
+ "tag": "forge:sand"
+ },
+ {
+ "item": "minecraft:water_bucket"
+ }
+ ],
+ "output": {
+ "item": "minecraft:clay_ball",
+ "count": 2
+ },
+ "syphon": 50,
+ "ticks": 100,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/cobweb.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/cobweb.json
new file mode 100644
index 00000000..847b555a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/cobweb.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:string"
+ },
+ {
+ "tag": "forge:string"
+ },
+ {
+ "tag": "forge:string"
+ }
+ ],
+ "output": {
+ "item": "minecraft:cobweb"
+ },
+ "syphon": 50,
+ "ticks": 50,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/explosive_powder.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/explosive_powder.json
new file mode 100644
index 00000000..87b3103b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/explosive_powder.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:gunpowder"
+ },
+ {
+ "tag": "forge:gunpowder"
+ },
+ {
+ "tag": "forge:dusts/coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:explosivepowder",
+ "nbt": "{Damage:0}"
+ },
+ "syphon": 500,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json
new file mode 100644
index 00000000..ffe0ce43
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json
@@ -0,0 +1,18 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:gravel"
+ },
+ {
+ "item": "minecraft:flint"
+ }
+ ],
+ "output": {
+ "item": "minecraft:flint",
+ "count": 2
+ },
+ "syphon": 50,
+ "ticks": 20,
+ "upgradeLevel": 0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/fortune_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/fortune_anointment.json
new file mode 100644
index 00000000..2f66bc4e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/fortune_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "tag": "forge:dusts/redstone"
+ },
+ {
+ "tag": "forge:dusts/coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:fortune_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/gold_ore_from_gilded.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/gold_ore_from_gilded.json
new file mode 100644
index 00000000..bf34285f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/gold_ore_from_gilded.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:gilded_blackstone"
+ }
+ ],
+ "output": {
+ "item": "minecraft:gold_nugget",
+ "count": 9
+ },
+ "syphon": 200,
+ "ticks": 100,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/grass_block.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/grass_block.json
new file mode 100644
index 00000000..03e6aee6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/grass_block.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:dirt"
+ },
+ {
+ "item": "minecraft:bone_meal"
+ },
+ {
+ "item": "minecraft:wheat_seeds"
+ }
+ ],
+ "output": {
+ "item": "minecraft:grass_block"
+ },
+ "syphon": 200,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/gunpowder.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/gunpowder.json
new file mode 100644
index 00000000..aec2762a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/gunpowder.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:dusts/sulfur"
+ },
+ {
+ "tag": "forge:dusts/saltpeter"
+ },
+ {
+ "tag": "minecraft:coals"
+ }
+ ],
+ "output": {
+ "item": "minecraft:gunpowder",
+ "count": 3
+ },
+ "syphon": 0,
+ "ticks": 100,
+ "upgradeLevel": 0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/hidden_knowledge_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/hidden_knowledge_anointment.json
new file mode 100644
index 00000000..228e57a5
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/hidden_knowledge_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "item": "minecraft:glass_bottle"
+ },
+ {
+ "item": "minecraft:enchanted_book"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:hidden_knowledge_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/holy_water_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/holy_water_anointment.json
new file mode 100644
index 00000000..126bd5aa
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/holy_water_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "item": "minecraft:glistering_melon_slice"
+ },
+ {
+ "tag": "forge:gems/quartz"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:holy_water_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/leather_from_flesh.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/leather_from_flesh.json
new file mode 100644
index 00000000..6fd3738b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/leather_from_flesh.json
@@ -0,0 +1,30 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:rotten_flesh"
+ },
+ {
+ "item": "minecraft:rotten_flesh"
+ },
+ {
+ "item": "minecraft:rotten_flesh"
+ },
+ {
+ "item": "minecraft:rotten_flesh"
+ },
+ {
+ "item": "minecraft:flint"
+ },
+ {
+ "item": "minecraft:water_bucket"
+ }
+ ],
+ "output": {
+ "item": "minecraft:leather",
+ "count": 4
+ },
+ "syphon": 100,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/looting_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/looting_anointment.json
new file mode 100644
index 00000000..cdec19e3
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/looting_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "tag": "forge:gems/lapis"
+ },
+ {
+ "tag": "forge:bones"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:looting_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/melee_damage_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/melee_damage_anointment.json
new file mode 100644
index 00000000..496abd4b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/melee_damage_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "item": "minecraft:blaze_powder"
+ },
+ {
+ "tag": "forge:gems/quartz"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:melee_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/nether_wart_from_block.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/nether_wart_from_block.json
new file mode 100644
index 00000000..10442cb7
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/nether_wart_from_block.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:nether_wart_block"
+ }
+ ],
+ "output": {
+ "item": "minecraft:nether_wart"
+ },
+ "syphon": 50,
+ "ticks": 40,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_beets.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_beets.json
new file mode 100644
index 00000000..718a1062
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_beets.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:crops/beetroot"
+ },
+ {
+ "tag": "forge:crops/beetroot"
+ },
+ {
+ "tag": "forge:crops/beetroot"
+ },
+ {
+ "item": "minecraft:bone_meal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:plantoil"
+ },
+ "syphon": 100,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_carrots.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_carrots.json
new file mode 100644
index 00000000..51ca6f26
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_carrots.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:crops/carrot"
+ },
+ {
+ "tag": "forge:crops/carrot"
+ },
+ {
+ "tag": "forge:crops/carrot"
+ },
+ {
+ "item": "minecraft:bone_meal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:plantoil"
+ },
+ "syphon": 100,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_taters.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_taters.json
new file mode 100644
index 00000000..8c0f281b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_taters.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:crops/potato"
+ },
+ {
+ "tag": "forge:crops/potato"
+ },
+ {
+ "item": "minecraft:bone_meal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:plantoil"
+ },
+ "syphon": 100,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_wheat.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_wheat.json
new file mode 100644
index 00000000..af4e9e80
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/plantoil_from_wheat.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:crops/wheat"
+ },
+ {
+ "tag": "forge:crops/wheat"
+ },
+ {
+ "item": "minecraft:bone_meal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:plantoil"
+ },
+ "syphon": 100,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/quick_draw_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/quick_draw_anointment.json
new file mode 100644
index 00000000..629a12f4
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/quick_draw_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "tag": "forge:string"
+ },
+ {
+ "item": "minecraft:spectral_arrow"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:quick_draw_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_air.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_air.json
new file mode 100644
index 00000000..3ac1e251
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_air.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:ghast_tear"
+ },
+ {
+ "tag": "forge:feathers"
+ },
+ {
+ "tag": "forge:feathers"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentair"
+ },
+ "syphon": 2000,
+ "ticks": 200,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_binding.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_binding.json
new file mode 100644
index 00000000..fb49418e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_binding.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:dusts/glowstone"
+ },
+ {
+ "tag": "forge:dusts/redstone"
+ },
+ {
+ "tag": "forge:gunpowder"
+ },
+ {
+ "tag": "forge:nuggets/gold"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentbinding"
+ },
+ "syphon": 1000,
+ "ticks": 200,
+ "upgradeLevel": 3
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_blood_light.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_blood_light.json
new file mode 100644
index 00000000..c9f119f9
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_blood_light.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:dusts/glowstone"
+ },
+ {
+ "item": "minecraft:torch"
+ },
+ {
+ "tag": "forge:dusts/redstone"
+ },
+ {
+ "tag": "forge:dusts/redstone"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentbloodlight"
+ },
+ "syphon": 1000,
+ "ticks": 200,
+ "upgradeLevel": 3
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_fastminer.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_fastminer.json
new file mode 100644
index 00000000..7e90329b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_fastminer.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:iron_pickaxe"
+ },
+ {
+ "item": "minecraft:iron_axe"
+ },
+ {
+ "item": "minecraft:iron_shovel"
+ },
+ {
+ "tag": "forge:gunpowder"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentfastminer"
+ },
+ "syphon": 2000,
+ "ticks": 200,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_growth.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_growth.json
new file mode 100644
index 00000000..8707950f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_growth.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "minecraft:saplings"
+ },
+ {
+ "tag": "minecraft:saplings"
+ },
+ {
+ "item": "minecraft:sugar_cane"
+ },
+ {
+ "item": "minecraft:sugar"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentgrowth"
+ },
+ "syphon": 2000,
+ "ticks": 200,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json
new file mode 100644
index 00000000..d293e725
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_holding.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:chests"
+ },
+ {
+ "tag": "forge:leather"
+ },
+ {
+ "tag": "forge:string"
+ },
+ {
+ "tag": "forge:string"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentholding"
+ },
+ "syphon": 2000,
+ "ticks": 200,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_lava.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_lava.json
new file mode 100644
index 00000000..6618996f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_lava.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:lava_bucket"
+ },
+ {
+ "tag": "forge:dusts/redstone"
+ },
+ {
+ "tag": "forge:cobblestone"
+ },
+ {
+ "tag": "forge:storage_blocks/coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentlava"
+ },
+ "syphon": 1000,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_magnetism.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_magnetism.json
new file mode 100644
index 00000000..4fb4d117
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_magnetism.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:string"
+ },
+ {
+ "tag": "forge:ingots/gold"
+ },
+ {
+ "tag": "forge:ingots/gold"
+ },
+ {
+ "tag": "forge:storage_blocks/iron"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentmagnetism"
+ },
+ "syphon": 1000,
+ "ticks": 200,
+ "upgradeLevel": 3
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_sight.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_sight.json
new file mode 100644
index 00000000..fb57653d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_sight.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:dusts/glowstone"
+ },
+ {
+ "tag": "forge:glass"
+ },
+ {
+ "tag": "forge:glass"
+ },
+ {
+ "item": "bloodmagic:divinationsigil"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentsight"
+ },
+ "syphon": 500,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_void.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_void.json
new file mode 100644
index 00000000..d549746e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_void.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:bucket"
+ },
+ {
+ "tag": "forge:string"
+ },
+ {
+ "tag": "forge:string"
+ },
+ {
+ "tag": "forge:gunpowder"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentvoid"
+ },
+ "syphon": 1000,
+ "ticks": 200,
+ "upgradeLevel": 2
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_water.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_water.json
new file mode 100644
index 00000000..93a5b884
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/reagent_water.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:sugar"
+ },
+ {
+ "item": "minecraft:water_bucket"
+ },
+ {
+ "item": "minecraft:water_bucket"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:reagentwater"
+ },
+ "syphon": 300,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_coal.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_coal.json
new file mode 100644
index 00000000..a3fb3e74
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_coal.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "minecraft:coal"
+ },
+ {
+ "item": "minecraft:coal"
+ },
+ {
+ "item": "minecraft:flint"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:coalsand",
+ "count": 4
+ },
+ "syphon": 400,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_gold.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_gold.json
new file mode 100644
index 00000000..618980ef
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_gold.json
@@ -0,0 +1,18 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:ores/gold"
+ },
+ {
+ "tag": "bloodmagic:arc/cuttingfluid"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:goldsand",
+ "count": 2
+ },
+ "syphon": 400,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_iron.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_iron.json
new file mode 100644
index 00000000..29fd3e67
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/sand_iron.json
@@ -0,0 +1,18 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "forge:ores/iron"
+ },
+ {
+ "tag": "bloodmagic:arc/cuttingfluid"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:ironsand",
+ "count": 2
+ },
+ "syphon": 400,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/silk_touch_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/silk_touch_anointment.json
new file mode 100644
index 00000000..764753f6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/silk_touch_anointment.json
@@ -0,0 +1,23 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "item": "minecraft:cobweb"
+ },
+ {
+ "tag": "forge:nuggets/gold"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:silk_touch_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/slate_vial.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/slate_vial.json
new file mode 100644
index 00000000..2a613dbe
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/slate_vial.json
@@ -0,0 +1,30 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:blankslate"
+ },
+ {
+ "tag": "forge:glass"
+ },
+ {
+ "tag": "forge:glass"
+ },
+ {
+ "tag": "forge:glass"
+ },
+ {
+ "tag": "forge:glass"
+ },
+ {
+ "tag": "forge:glass"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:slate_vial",
+ "count": 8
+ },
+ "syphon": 500,
+ "ticks": 200,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/smelting_anointment.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/smelting_anointment.json
new file mode 100644
index 00000000..a23514d9
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/smelting_anointment.json
@@ -0,0 +1,28 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "item": "bloodmagic:slate_vial"
+ },
+ {
+ "tag": "forge:crops/nether_wart"
+ },
+ {
+ "item": "minecraft:furnace"
+ },
+ [
+ {
+ "item": "minecraft:charcoal"
+ },
+ {
+ "item": "minecraft:coal"
+ }
+ ]
+ ],
+ "output": {
+ "item": "bloodmagic:smelting_anointment"
+ },
+ "syphon": 500,
+ "ticks": 100,
+ "upgradeLevel": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/string.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/string.json
new file mode 100644
index 00000000..0455b315
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/string.json
@@ -0,0 +1,18 @@
+{
+ "type": "bloodmagic:alchemytable",
+ "input": [
+ {
+ "tag": "minecraft:wool"
+ },
+ {
+ "item": "minecraft:flint"
+ }
+ ],
+ "output": {
+ "item": "minecraft:string",
+ "count": 4
+ },
+ "syphon": 100,
+ "ticks": 100,
+ "upgradeLevel": 0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/air_tool.json b/src/generated/resources/data/bloodmagic/recipes/altar/air_tool.json
new file mode 100644
index 00000000..a34cb046
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/air_tool.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "minecraft:ghast_tear"
+ },
+ "output": {
+ "item": "bloodmagic:airscribetool",
+ "nbt": "{Damage:0}"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 1000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/apprenticebloodorb.json b/src/generated/resources/data/bloodmagic/recipes/altar/apprenticebloodorb.json
new file mode 100644
index 00000000..3637afb8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/apprenticebloodorb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:storage_blocks/redstone"
+ },
+ "output": {
+ "item": "bloodmagic:apprenticebloodorb"
+ },
+ "upgradeLevel": 1,
+ "altarSyphon": 5000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/bucket_life.json b/src/generated/resources/data/bloodmagic/recipes/altar/bucket_life.json
new file mode 100644
index 00000000..6902924e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/bucket_life.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "minecraft:bucket"
+ },
+ "output": {
+ "item": "bloodmagic:life_essence_bucket"
+ },
+ "upgradeLevel": 0,
+ "altarSyphon": 1000,
+ "consumptionRate": 5,
+ "drainRate": 0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/daggerofsacrifice.json b/src/generated/resources/data/bloodmagic/recipes/altar/daggerofsacrifice.json
new file mode 100644
index 00000000..f1d7fc16
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/daggerofsacrifice.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "minecraft:iron_sword"
+ },
+ "output": {
+ "item": "bloodmagic:daggerofsacrifice"
+ },
+ "upgradeLevel": 1,
+ "altarSyphon": 3000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/demonicslate.json b/src/generated/resources/data/bloodmagic/recipes/altar/demonicslate.json
new file mode 100644
index 00000000..60a29822
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/demonicslate.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "output": {
+ "item": "bloodmagic:demonslate"
+ },
+ "upgradeLevel": 3,
+ "altarSyphon": 15000,
+ "consumptionRate": 20,
+ "drainRate": 20
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/dusk_tool.json b/src/generated/resources/data/bloodmagic/recipes/altar/dusk_tool.json
new file mode 100644
index 00000000..a8a08519
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/dusk_tool.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:storage_blocks/coal"
+ },
+ "output": {
+ "item": "bloodmagic:duskscribetool",
+ "nbt": "{Damage:0}"
+ },
+ "upgradeLevel": 3,
+ "altarSyphon": 2000,
+ "consumptionRate": 20,
+ "drainRate": 10
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/earth_tool.json b/src/generated/resources/data/bloodmagic/recipes/altar/earth_tool.json
new file mode 100644
index 00000000..72ddfcc8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/earth_tool.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:obsidian"
+ },
+ "output": {
+ "item": "bloodmagic:earthscribetool",
+ "nbt": "{Damage:0}"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 1000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/fire_tool.json b/src/generated/resources/data/bloodmagic/recipes/altar/fire_tool.json
new file mode 100644
index 00000000..859c6e17
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/fire_tool.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "minecraft:magma_cream"
+ },
+ "output": {
+ "item": "bloodmagic:firescribetool",
+ "nbt": "{Damage:0}"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 1000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/imbuedslate.json b/src/generated/resources/data/bloodmagic/recipes/altar/imbuedslate.json
new file mode 100644
index 00000000..b1a577b1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/imbuedslate.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "output": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 5000,
+ "consumptionRate": 15,
+ "drainRate": 10
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/magicianbloodorb.json b/src/generated/resources/data/bloodmagic/recipes/altar/magicianbloodorb.json
new file mode 100644
index 00000000..941c312f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/magicianbloodorb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:storage_blocks/gold"
+ },
+ "output": {
+ "item": "bloodmagic:magicianbloodorb"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 25000,
+ "consumptionRate": 20,
+ "drainRate": 20
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/masterbloodorb.json b/src/generated/resources/data/bloodmagic/recipes/altar/masterbloodorb.json
new file mode 100644
index 00000000..f40e0229
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/masterbloodorb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "bloodmagic:weakbloodshard"
+ },
+ "output": {
+ "item": "bloodmagic:masterbloodorb"
+ },
+ "upgradeLevel": 3,
+ "altarSyphon": 40000,
+ "consumptionRate": 30,
+ "drainRate": 50
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/reinforcedslate.json b/src/generated/resources/data/bloodmagic/recipes/altar/reinforcedslate.json
new file mode 100644
index 00000000..52a37c81
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/reinforcedslate.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "bloodmagic:blankslate"
+ },
+ "output": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "upgradeLevel": 1,
+ "altarSyphon": 2000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/slate.json b/src/generated/resources/data/bloodmagic/recipes/altar/slate.json
new file mode 100644
index 00000000..3be29e67
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/slate.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:stone"
+ },
+ "output": {
+ "item": "bloodmagic:blankslate"
+ },
+ "upgradeLevel": 0,
+ "altarSyphon": 1000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/soul_snare.json b/src/generated/resources/data/bloodmagic/recipes/altar/soul_snare.json
new file mode 100644
index 00000000..ffa64e8f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/soul_snare.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:string"
+ },
+ "output": {
+ "item": "bloodmagic:soulsnare"
+ },
+ "upgradeLevel": 0,
+ "altarSyphon": 500,
+ "consumptionRate": 5,
+ "drainRate": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/water_tool.json b/src/generated/resources/data/bloodmagic/recipes/altar/water_tool.json
new file mode 100644
index 00000000..95508bc1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/water_tool.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:storage_blocks/lapis"
+ },
+ "output": {
+ "item": "bloodmagic:waterscribetool",
+ "nbt": "{Damage:0}"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 1000,
+ "consumptionRate": 5,
+ "drainRate": 5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json b/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json
new file mode 100644
index 00000000..16769109
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/altar/weakbloodorb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "tag": "forge:gems/diamond"
+ },
+ "output": {
+ "item": "bloodmagic:weakbloodorb"
+ },
+ "upgradeLevel": 0,
+ "altarSyphon": 2000,
+ "consumptionRate": 5,
+ "drainRate": 1
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc.json b/src/generated/resources/data/bloodmagic/recipes/arc.json
new file mode 100644
index 00000000..2b02de09
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "sss",
+ "SoS",
+ "IfI"
+ ],
+ "key": {
+ "s": {
+ "tag": "forge:stone"
+ },
+ "f": {
+ "item": "minecraft:furnace"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 3
+ },
+ "I": {
+ "tag": "forge:storage_blocks/iron"
+ },
+ "S": {
+ "item": "bloodmagic:infusedslate"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:alchemicalreactionchamber"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/clay_from_sand.json b/src/generated/resources/data/bloodmagic/recipes/arc/clay_from_sand.json
new file mode 100644
index 00000000..4843ce04
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/clay_from_sand.json
@@ -0,0 +1,25 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "forge:sand"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/hydrate"
+ },
+ "inputfluid": {
+ "amount": 200,
+ "fluid": "minecraft:water"
+ },
+ "addedoutput": [
+ {
+ "chance": 0.5,
+ "type": {
+ "item": "minecraft:clay_ball"
+ }
+ }
+ ],
+ "output": {
+ "item": "minecraft:clay_ball"
+ },
+ "consumeingredient": false
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/clay_from_terracotta.json b/src/generated/resources/data/bloodmagic/recipes/arc/clay_from_terracotta.json
new file mode 100644
index 00000000..da406447
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/clay_from_terracotta.json
@@ -0,0 +1,17 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "minecraft:terracotta"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/hydrate"
+ },
+ "inputfluid": {
+ "amount": 200,
+ "fluid": "minecraft:water"
+ },
+ "output": {
+ "item": "minecraft:clay"
+ },
+ "consumeingredient": false
+}
\ 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_gravel_netherite_scrap.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_netherite_scrap.json
new file mode 100644
index 00000000..498f1d0f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_gravel_netherite_scrap.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "bloodmagic:gravels/netherite_scrap"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/cuttingfluid"
+ },
+ "output": {
+ "item": "bloodmagic:sand_netherite"
+ },
+ "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_ingot_netherite_scrap.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_netherite_scrap.json
new file mode 100644
index 00000000..fc4af18a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ingot_netherite_scrap.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "minecraft:netherite_scrap"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/explosive"
+ },
+ "output": {
+ "item": "bloodmagic:sand_netherite"
+ },
+ "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/dustsfrom_ore_netherite_scrap.json b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_netherite_scrap.json
new file mode 100644
index 00000000..cfc195d4
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/dustsfrom_ore_netherite_scrap.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "forge:ores/netherite_scrap"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/cuttingfluid"
+ },
+ "output": {
+ "item": "bloodmagic:sand_netherite",
+ "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/fragmentsnetherite_scrap.json b/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsnetherite_scrap.json
new file mode 100644
index 00000000..2f2e64a0
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/fragmentsnetherite_scrap.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "forge:ores/netherite_scrap"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/explosive"
+ },
+ "output": {
+ "item": "bloodmagic:fragment_netherite_scrap",
+ "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..0920bb12
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsgold.json
@@ -0,0 +1,27 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "bloodmagic:fragments/gold"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/resonator"
+ },
+ "addedoutput": [
+ {
+ "chance": 0.05,
+ "type": {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ },
+ {
+ "chance": 0.01,
+ "type": {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ }
+ ],
+ "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..980da2fa
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsiron.json
@@ -0,0 +1,27 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "bloodmagic:fragments/iron"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/resonator"
+ },
+ "addedoutput": [
+ {
+ "chance": 0.05,
+ "type": {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ },
+ {
+ "chance": 0.01,
+ "type": {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:irongravel"
+ },
+ "consumeingredient": false
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/gravelsnetherite_scrap.json b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsnetherite_scrap.json
new file mode 100644
index 00000000..86971ad1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/gravelsnetherite_scrap.json
@@ -0,0 +1,27 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "bloodmagic:fragments/netherite_scrap"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/resonator"
+ },
+ "addedoutput": [
+ {
+ "chance": 0.05,
+ "type": {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ },
+ {
+ "chance": 0.01,
+ "type": {
+ "item": "bloodmagic:corrupted_tinydust"
+ }
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:gravel_netherite_scrap"
+ },
+ "consumeingredient": false
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/netherrack_to_sulfer.json b/src/generated/resources/data/bloodmagic/recipes/arc/netherrack_to_sulfer.json
new file mode 100644
index 00000000..ee5e9bdc
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/netherrack_to_sulfer.json
@@ -0,0 +1,17 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "tag": "forge:netherrack"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/explosive"
+ },
+ "outputfluid": {
+ "fluid": "minecraft:lava",
+ "amount": 5
+ },
+ "output": {
+ "item": "bloodmagic:sulfur"
+ },
+ "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
new file mode 100644
index 00000000..284985ab
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustgold.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "minecraft:gold_ore"
+ },
+ "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/ore/dustiron.json b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustiron.json
new file mode 100644
index 00000000..185879fb
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/ore/dustiron.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "minecraft:iron_ore"
+ },
+ "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/reversion/apprentice_blood_orb.json b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/apprentice_blood_orb.json
new file mode 100644
index 00000000..393c065a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/apprentice_blood_orb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "bloodmagic:apprenticebloodorb"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/reverter"
+ },
+ "output": {
+ "item": "minecraft:redstone_block"
+ },
+ "consumeingredient": true
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/reversion/magician_blood_orb.json b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/magician_blood_orb.json
new file mode 100644
index 00000000..4ddb9c5c
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/magician_blood_orb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "bloodmagic:magicianbloodorb"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/reverter"
+ },
+ "output": {
+ "item": "minecraft:gold_block"
+ },
+ "consumeingredient": true
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/reversion/master_blood_orb.json b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/master_blood_orb.json
new file mode 100644
index 00000000..a258faa9
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/master_blood_orb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "bloodmagic:masterbloodorb"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/reverter"
+ },
+ "output": {
+ "item": "bloodmagic:weakbloodshard"
+ },
+ "consumeingredient": true
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/reversion/weak_blood_orb.json b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/weak_blood_orb.json
new file mode 100644
index 00000000..52823f43
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/reversion/weak_blood_orb.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "bloodmagic:weakbloodorb"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/reverter"
+ },
+ "output": {
+ "item": "minecraft:diamond"
+ },
+ "consumeingredient": true
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/arc/weakbloodshard.json b/src/generated/resources/data/bloodmagic/recipes/arc/weakbloodshard.json
new file mode 100644
index 00000000..806f31b2
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/arc/weakbloodshard.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:arc",
+ "input": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "tool": {
+ "tag": "bloodmagic:arc/reverter"
+ },
+ "addedoutput": [
+ {
+ "chance": 0.2,
+ "type": {
+ "item": "bloodmagic:weakbloodshard"
+ }
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:weakbloodshard"
+ },
+ "consumeingredient": false
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/airsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/airsigil.json
new file mode 100644
index 00000000..7cd5e7ff
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/airsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/airsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentair"
+ },
+ "addedinput": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "output": {
+ "item": "bloodmagic:airsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/bloodlightsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/bloodlightsigil.json
new file mode 100644
index 00000000..2e6e3e48
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/bloodlightsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/lightsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentbloodlight"
+ },
+ "addedinput": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "output": {
+ "item": "bloodmagic:bloodlightsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/bounce.json b/src/generated/resources/data/bloodmagic/recipes/array/bounce.json
new file mode 100644
index 00000000..d15b0de6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/bounce.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/bouncearray.png",
+ "baseinput": {
+ "tag": "forge:slimeballs"
+ },
+ "addedinput": {
+ "tag": "forge:dusts/redstone"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/day.json b/src/generated/resources/data/bloodmagic/recipes/array/day.json
new file mode 100644
index 00000000..32c6212b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/day.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/sunarray.png",
+ "baseinput": {
+ "item": "minecraft:coal"
+ },
+ "addedinput": {
+ "item": "minecraft:coal"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/divinationsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/divinationsigil.json
new file mode 100644
index 00000000..b7b8d0bf
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/divinationsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/divinationsigil.png",
+ "baseinput": {
+ "item": "minecraft:redstone"
+ },
+ "addedinput": {
+ "item": "bloodmagic:blankslate"
+ },
+ "output": {
+ "item": "bloodmagic:divinationsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/fastminersigil.json b/src/generated/resources/data/bloodmagic/recipes/array/fastminersigil.json
new file mode 100644
index 00000000..b3644330
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/fastminersigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/fastminersigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentfastminer"
+ },
+ "addedinput": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "output": {
+ "item": "bloodmagic:miningsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/grove.json b/src/generated/resources/data/bloodmagic/recipes/array/grove.json
new file mode 100644
index 00000000..f09741a3
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/grove.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/growthsigil.png",
+ "baseinput": {
+ "tag": "forge:bones"
+ },
+ "addedinput": {
+ "tag": "forge:bones"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/growthsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/growthsigil.json
new file mode 100644
index 00000000..22e90ecc
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/growthsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/growthsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentgrowth"
+ },
+ "addedinput": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "output": {
+ "item": "bloodmagic:growthsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json
new file mode 100644
index 00000000..9aa7670a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/holdingsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/sightsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentholding"
+ },
+ "addedinput": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "output": {
+ "item": "bloodmagic:sigilofholding"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/lavasigil.json b/src/generated/resources/data/bloodmagic/recipes/array/lavasigil.json
new file mode 100644
index 00000000..f71cd318
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/lavasigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/lavasigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentlava"
+ },
+ "addedinput": {
+ "item": "bloodmagic:blankslate"
+ },
+ "output": {
+ "item": "bloodmagic:lavasigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/living_boots.json b/src/generated/resources/data/bloodmagic/recipes/array/living_boots.json
new file mode 100644
index 00000000..6150d54b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/living_boots.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/bindingarray.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentbinding"
+ },
+ "addedinput": {
+ "item": "minecraft:iron_boots"
+ },
+ "output": {
+ "item": "bloodmagic:livingboots",
+ "nbt": "{Damage:0}"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/living_helmet.json b/src/generated/resources/data/bloodmagic/recipes/array/living_helmet.json
new file mode 100644
index 00000000..b11c33dc
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/living_helmet.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/bindingarray.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentbinding"
+ },
+ "addedinput": {
+ "item": "minecraft:iron_helmet"
+ },
+ "output": {
+ "item": "bloodmagic:livinghelmet",
+ "nbt": "{Damage:0}"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/living_leggings.json b/src/generated/resources/data/bloodmagic/recipes/array/living_leggings.json
new file mode 100644
index 00000000..28e8f5ce
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/living_leggings.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/bindingarray.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentbinding"
+ },
+ "addedinput": {
+ "item": "minecraft:iron_leggings"
+ },
+ "output": {
+ "item": "bloodmagic:livingleggings",
+ "nbt": "{Damage:0}"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/living_plate.json b/src/generated/resources/data/bloodmagic/recipes/array/living_plate.json
new file mode 100644
index 00000000..803b429c
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/living_plate.json
@@ -0,0 +1,14 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/bindingarray.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentbinding"
+ },
+ "addedinput": {
+ "item": "minecraft:iron_chestplate"
+ },
+ "output": {
+ "item": "bloodmagic:livingplate",
+ "nbt": "{Damage:0}"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/magnetismsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/magnetismsigil.json
new file mode 100644
index 00000000..324ec177
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/magnetismsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/magnetismsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentmagnetism"
+ },
+ "addedinput": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "output": {
+ "item": "bloodmagic:sigilofmagnetism"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/movement.json b/src/generated/resources/data/bloodmagic/recipes/array/movement.json
new file mode 100644
index 00000000..2d4f6309
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/movement.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/movementarray.png",
+ "baseinput": {
+ "item": "minecraft:feather"
+ },
+ "addedinput": {
+ "tag": "forge:dusts/redstone"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/night.json b/src/generated/resources/data/bloodmagic/recipes/array/night.json
new file mode 100644
index 00000000..c0130213
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/night.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/moonarray.png",
+ "baseinput": {
+ "item": "minecraft:lapis_lazuli"
+ },
+ "addedinput": {
+ "item": "minecraft:lapis_lazuli"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/seersigil.json b/src/generated/resources/data/bloodmagic/recipes/array/seersigil.json
new file mode 100644
index 00000000..3441514b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/seersigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/sightsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentsight"
+ },
+ "addedinput": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "output": {
+ "item": "bloodmagic:seersigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/spike.json b/src/generated/resources/data/bloodmagic/recipes/array/spike.json
new file mode 100644
index 00000000..88ce4ff5
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/spike.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/spikearray.png",
+ "baseinput": {
+ "item": "minecraft:cobblestone"
+ },
+ "addedinput": {
+ "tag": "forge:ingots/iron"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/updraft.json b/src/generated/resources/data/bloodmagic/recipes/array/updraft.json
new file mode 100644
index 00000000..700967ce
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/updraft.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/updraftarray.png",
+ "baseinput": {
+ "item": "minecraft:feather"
+ },
+ "addedinput": {
+ "tag": "forge:dusts/glowstone"
+ },
+ "output": {
+ "item": "minecraft:air"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/voidsigil.json b/src/generated/resources/data/bloodmagic/recipes/array/voidsigil.json
new file mode 100644
index 00000000..4d10c446
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/voidsigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/voidsigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentvoid"
+ },
+ "addedinput": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "output": {
+ "item": "bloodmagic:voidsigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/array/watersigil.json b/src/generated/resources/data/bloodmagic/recipes/array/watersigil.json
new file mode 100644
index 00000000..0862f909
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/array/watersigil.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:array",
+ "texture": "bloodmagic:textures/models/alchemyarrays/watersigil.png",
+ "baseinput": {
+ "item": "bloodmagic:reagentwater"
+ },
+ "addedinput": {
+ "item": "bloodmagic:blankslate"
+ },
+ "output": {
+ "item": "bloodmagic:watersigil"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_altar.json b/src/generated/resources/data/bloodmagic/recipes/blood_altar.json
new file mode 100644
index 00000000..aa83901e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_altar.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "a a",
+ "aba",
+ "cdc"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "item": "minecraft:furnace"
+ },
+ "c": {
+ "tag": "forge:ingots/gold"
+ },
+ "d": {
+ "item": "minecraft:gold_ingot"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:altar"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_acceleration.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_acceleration.json
new file mode 100644
index 00000000..a7e0d300
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_acceleration.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "cdc",
+ "aea"
+ ],
+ "key": {
+ "a": {
+ "item": "minecraft:bucket"
+ },
+ "b": {
+ "item": "bloodmagic:demonslate"
+ },
+ "c": {
+ "tag": "forge:ingots/gold"
+ },
+ "d": {
+ "item": "bloodmagic:speedrune"
+ },
+ "e": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 4
+ }
+ },
+ "result": {
+ "item": "bloodmagic:accelerationrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_aug_capacity.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_aug_capacity.json
new file mode 100644
index 00000000..7a79f948
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_aug_capacity.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "cdc",
+ "aea"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:obsidian"
+ },
+ "b": {
+ "item": "bloodmagic:demonslate"
+ },
+ "c": {
+ "item": "minecraft:bucket"
+ },
+ "d": {
+ "item": "bloodmagic:altarcapacityrune"
+ },
+ "e": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 4
+ }
+ },
+ "result": {
+ "item": "bloodmagic:bettercapacityrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_blank.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_blank.json
new file mode 100644
index 00000000..dba609b8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_blank.json
@@ -0,0 +1,23 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "asa",
+ "aoa",
+ "aaa"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "s": {
+ "item": "bloodmagic:blankslate"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 1
+ }
+ },
+ "result": {
+ "item": "bloodmagic:blankrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_capacity.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_capacity.json
new file mode 100644
index 00000000..daf3fef6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_capacity.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "bcb",
+ "ada"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "item": "minecraft:bucket"
+ },
+ "c": {
+ "item": "bloodmagic:blankrune"
+ },
+ "d": {
+ "item": "bloodmagic:infusedslate"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:altarcapacityrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_charging.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_charging.json
new file mode 100644
index 00000000..acd341f6
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_charging.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "RsR",
+ "GrG",
+ "ReR"
+ ],
+ "key": {
+ "R": {
+ "tag": "forge:dusts/redstone"
+ },
+ "r": {
+ "item": "bloodmagic:blankrune"
+ },
+ "s": {
+ "item": "bloodmagic:demonslate"
+ },
+ "e": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 4
+ },
+ "G": {
+ "tag": "forge:dusts/glowstone"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:chargingrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_displacement.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_displacement.json
new file mode 100644
index 00000000..b43644d9
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_displacement.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "bcb",
+ "ada"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "item": "minecraft:water_bucket"
+ },
+ "c": {
+ "item": "bloodmagic:blankrune"
+ },
+ "d": {
+ "item": "bloodmagic:infusedslate"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:dislocationrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_orb.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_orb.json
new file mode 100644
index 00000000..1ca7d126
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_orb.json
@@ -0,0 +1,27 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "cdc",
+ "aba"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 1
+ },
+ "c": {
+ "item": "bloodmagic:blankrune"
+ },
+ "d": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 4
+ }
+ },
+ "result": {
+ "item": "bloodmagic:orbcapacityrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_sacrifice.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_sacrifice.json
new file mode 100644
index 00000000..3d43229b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_sacrifice.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "cdc",
+ "aea"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "c": {
+ "tag": "forge:ingots/gold"
+ },
+ "d": {
+ "item": "bloodmagic:blankrune"
+ },
+ "e": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 2
+ }
+ },
+ "result": {
+ "item": "bloodmagic:sacrificerune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_self_sacrifice.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_self_sacrifice.json
new file mode 100644
index 00000000..054a70d8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_self_sacrifice.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "cdc",
+ "aea"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "c": {
+ "item": "minecraft:glowstone_dust"
+ },
+ "d": {
+ "item": "bloodmagic:blankrune"
+ },
+ "e": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 2
+ }
+ },
+ "result": {
+ "item": "bloodmagic:selfsacrificerune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/blood_rune_speed.json b/src/generated/resources/data/bloodmagic/recipes/blood_rune_speed.json
new file mode 100644
index 00000000..7ef75bfc
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/blood_rune_speed.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "cdc",
+ "aba"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:stone"
+ },
+ "b": {
+ "item": "bloodmagic:blankslate"
+ },
+ "c": {
+ "item": "minecraft:sugar"
+ },
+ "d": {
+ "item": "bloodmagic:blankrune"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:speedrune"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/bloodstonebrick.json b/src/generated/resources/data/bloodmagic/recipes/bloodstonebrick.json
new file mode 100644
index 00000000..44fbc33d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/bloodstonebrick.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "ss",
+ "ss"
+ ],
+ "key": {
+ "s": {
+ "item": "bloodmagic:largebloodstonebrick"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:bloodstonebrick",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/corrupted_dust.json b/src/generated/resources/data/bloodmagic/recipes/corrupted_dust.json
new file mode 100644
index 00000000..cdcfdbab
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/corrupted_dust.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "sss",
+ "sss",
+ "sss"
+ ],
+ "key": {
+ "s": {
+ "tag": "bloodmagic:tiny_dusts/corrupted"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:corrupted_dust"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/experience_tome.json b/src/generated/resources/data/bloodmagic/recipes/experience_tome.json
new file mode 100644
index 00000000..633dbd55
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/experience_tome.json
@@ -0,0 +1,32 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "ses",
+ "lbl",
+ "gog"
+ ],
+ "key": {
+ "b": {
+ "item": "minecraft:enchanted_book"
+ },
+ "s": {
+ "tag": "forge:string"
+ },
+ "e": {
+ "tag": "forge:storage_blocks/lapis"
+ },
+ "g": {
+ "tag": "forge:ingots/gold"
+ },
+ "l": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 3
+ }
+ },
+ "result": {
+ "item": "bloodmagic:experiencebook"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/hellforged_block.json b/src/generated/resources/data/bloodmagic/recipes/hellforged_block.json
new file mode 100644
index 00000000..3c7c8bbb
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/hellforged_block.json
@@ -0,0 +1,16 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "sss",
+ "sss",
+ "sss"
+ ],
+ "key": {
+ "s": {
+ "tag": "forge:ingots/hellforged"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:dungeon_metal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/incense_altar.json b/src/generated/resources/data/bloodmagic/recipes/incense_altar.json
new file mode 100644
index 00000000..95826002
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/incense_altar.json
@@ -0,0 +1,26 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "s s",
+ "shs",
+ "coc"
+ ],
+ "key": {
+ "s": {
+ "tag": "forge:stone"
+ },
+ "c": {
+ "tag": "forge:cobblestone"
+ },
+ "h": {
+ "item": "minecraft:charcoal"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 1
+ }
+ },
+ "result": {
+ "item": "bloodmagic:incensealtar"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/largebloodstonebrick.json b/src/generated/resources/data/bloodmagic/recipes/largebloodstonebrick.json
new file mode 100644
index 00000000..915b47ef
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/largebloodstonebrick.json
@@ -0,0 +1,15 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "tag": "forge:stone"
+ },
+ {
+ "item": "bloodmagic:weakbloodshard"
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:largebloodstonebrick",
+ "count": 8
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/lava_crystal.json b/src/generated/resources/data/bloodmagic/recipes/lava_crystal.json
new file mode 100644
index 00000000..7a96e775
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/lava_crystal.json
@@ -0,0 +1,29 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "bcb",
+ "ded"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:glass"
+ },
+ "b": {
+ "item": "minecraft:lava_bucket"
+ },
+ "c": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 1
+ },
+ "d": {
+ "tag": "forge:obsidian"
+ },
+ "e": {
+ "tag": "forge:gems/diamond"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:lavacrystal"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_stone.json b/src/generated/resources/data/bloodmagic/recipes/path/path_stone.json
new file mode 100644
index 00000000..3bcdf018
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/path/path_stone.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "tag": "forge:stone"
+ },
+ {
+ "tag": "forge:stone"
+ },
+ {
+ "tag": "forge:stone"
+ },
+ {
+ "tag": "forge:stone"
+ },
+ {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 3
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:stonebrickpath",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json b/src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json
new file mode 100644
index 00000000..64521902
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/path/path_stonetile.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "item": "bloodmagic:stonebrickpath"
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:stonetilepath",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_wood.json b/src/generated/resources/data/bloodmagic/recipes/path/path_wood.json
new file mode 100644
index 00000000..d04415bf
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/path/path_wood.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "tag": "minecraft:planks"
+ },
+ {
+ "tag": "minecraft:planks"
+ },
+ {
+ "tag": "minecraft:planks"
+ },
+ {
+ "tag": "minecraft:planks"
+ },
+ {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 2
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:woodbrickpath",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json b/src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json
new file mode 100644
index 00000000..2d0a2641
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/path/path_woodtile.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "item": "bloodmagic:woodbrickpath"
+ },
+ {
+ "item": "bloodmagic:woodbrickpath"
+ },
+ {
+ "item": "bloodmagic:woodbrickpath"
+ },
+ {
+ "item": "bloodmagic:woodbrickpath"
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:woodtilepath",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json
new file mode 100644
index 00000000..6a43f7e0
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstone.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "item": "bloodmagic:stonebrickpath"
+ },
+ {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 4
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:wornstonebrickpath",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json
new file mode 100644
index 00000000..1efd2976
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/path/path_wornstonetile.json
@@ -0,0 +1,21 @@
+{
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "item": "bloodmagic:wornstonebrickpath"
+ },
+ {
+ "item": "bloodmagic:wornstonebrickpath"
+ },
+ {
+ "item": "bloodmagic:wornstonebrickpath"
+ },
+ {
+ "item": "bloodmagic:wornstonebrickpath"
+ }
+ ],
+ "result": {
+ "item": "bloodmagic:wornstonetilepath",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/primitive_furnace_cell.json b/src/generated/resources/data/bloodmagic/recipes/primitive_furnace_cell.json
new file mode 100644
index 00000000..501b146b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/primitive_furnace_cell.json
@@ -0,0 +1,26 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "csc",
+ "cfc",
+ "coc"
+ ],
+ "key": {
+ "c": {
+ "tag": "forge:cobblestone"
+ },
+ "f": {
+ "tag": "forge:storage_blocks/coal"
+ },
+ "s": {
+ "item": "bloodmagic:blankslate"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 3
+ }
+ },
+ "result": {
+ "item": "bloodmagic:furnacecell_primitive"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/primitive_hydration_cell.json b/src/generated/resources/data/bloodmagic/recipes/primitive_hydration_cell.json
new file mode 100644
index 00000000..241d455f
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/primitive_hydration_cell.json
@@ -0,0 +1,26 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "csc",
+ "cBc",
+ "coc"
+ ],
+ "key": {
+ "B": {
+ "item": "minecraft:water_bucket"
+ },
+ "c": {
+ "tag": "forge:cobblestone"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 3
+ },
+ "s": {
+ "item": "bloodmagic:blankslate"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:primitive_hydration_cell"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/ritual_diviner_0.json b/src/generated/resources/data/bloodmagic/recipes/ritual_diviner_0.json
new file mode 100644
index 00000000..5806cf36
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/ritual_diviner_0.json
@@ -0,0 +1,31 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "dfd",
+ "ase",
+ "dwd"
+ ],
+ "key": {
+ "a": {
+ "item": "bloodmagic:airscribetool"
+ },
+ "s": {
+ "tag": "forge:rods/wooden"
+ },
+ "d": {
+ "tag": "forge:gems/diamond"
+ },
+ "e": {
+ "item": "bloodmagic:earthscribetool"
+ },
+ "f": {
+ "item": "bloodmagic:firescribetool"
+ },
+ "w": {
+ "item": "bloodmagic:waterscribetool"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:ritualdiviner"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/ritual_diviner_1.json b/src/generated/resources/data/bloodmagic/recipes/ritual_diviner_1.json
new file mode 100644
index 00000000..46a797ed
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/ritual_diviner_1.json
@@ -0,0 +1,22 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ " S ",
+ "tdt",
+ " S "
+ ],
+ "key": {
+ "S": {
+ "item": "bloodmagic:demonslate"
+ },
+ "t": {
+ "item": "bloodmagic:duskscribetool"
+ },
+ "d": {
+ "item": "bloodmagic:ritualdiviner"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:ritualdivinerdusk"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/ritual_reader.json b/src/generated/resources/data/bloodmagic/recipes/ritual_reader.json
new file mode 100644
index 00000000..27805eff
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/ritual_reader.json
@@ -0,0 +1,26 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "gog",
+ "isi",
+ " s "
+ ],
+ "key": {
+ "s": {
+ "item": "bloodmagic:demonslate"
+ },
+ "g": {
+ "tag": "forge:glass"
+ },
+ "i": {
+ "tag": "forge:ingots/gold"
+ },
+ "o": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 4
+ }
+ },
+ "result": {
+ "item": "bloodmagic:ritualtinkerer"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/ritual_stone_blank.json b/src/generated/resources/data/bloodmagic/recipes/ritual_stone_blank.json
new file mode 100644
index 00000000..aa493752
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/ritual_stone_blank.json
@@ -0,0 +1,24 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "bcb",
+ "aba"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:obsidian"
+ },
+ "b": {
+ "item": "bloodmagic:reinforcedslate"
+ },
+ "c": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 2
+ }
+ },
+ "result": {
+ "item": "bloodmagic:ritualstone",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/ritual_stone_master.json b/src/generated/resources/data/bloodmagic/recipes/ritual_stone_master.json
new file mode 100644
index 00000000..4cdb269e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/ritual_stone_master.json
@@ -0,0 +1,23 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "aba",
+ "bcb",
+ "aba"
+ ],
+ "key": {
+ "a": {
+ "tag": "forge:obsidian"
+ },
+ "b": {
+ "item": "bloodmagic:ritualstone"
+ },
+ "c": {
+ "type": "bloodmagic:bloodorb",
+ "orb_tier": 3
+ }
+ },
+ "result": {
+ "item": "bloodmagic:masterritualstone"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/sacrificial_dagger.json b/src/generated/resources/data/bloodmagic/recipes/sacrificial_dagger.json
new file mode 100644
index 00000000..23a4dcab
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/sacrificial_dagger.json
@@ -0,0 +1,22 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "ggg",
+ " Gg",
+ "i g"
+ ],
+ "key": {
+ "g": {
+ "tag": "forge:glass"
+ },
+ "G": {
+ "tag": "forge:ingots/gold"
+ },
+ "i": {
+ "tag": "forge:ingots/iron"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:sacrificialdagger"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_gold.json b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_gold.json
new file mode 100644
index 00000000..e8bbf60c
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_gold.json
@@ -0,0 +1,9 @@
+{
+ "type": "minecraft:smelting",
+ "ingredient": {
+ "tag": "forge:dusts/gold"
+ },
+ "result": "minecraft:gold_ingot",
+ "experience": 0.0,
+ "cookingtime": 200
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_hellforged.json b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_hellforged.json
new file mode 100644
index 00000000..6a06b2a3
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_hellforged.json
@@ -0,0 +1,9 @@
+{
+ "type": "minecraft:smelting",
+ "ingredient": {
+ "tag": "forge:dusts/hellforged"
+ },
+ "result": "bloodmagic:ingot_hellforged",
+ "experience": 0.0,
+ "cookingtime": 200
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_iron.json b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_iron.json
new file mode 100644
index 00000000..7ca7a664
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_iron.json
@@ -0,0 +1,9 @@
+{
+ "type": "minecraft:smelting",
+ "ingredient": {
+ "tag": "forge:dusts/iron"
+ },
+ "result": "minecraft:iron_ingot",
+ "experience": 0.0,
+ "cookingtime": 200
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_netherite_scrap.json b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_netherite_scrap.json
new file mode 100644
index 00000000..2edc11a3
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/smelting/ingot_netherite_scrap.json
@@ -0,0 +1,9 @@
+{
+ "type": "minecraft:smelting",
+ "ingredient": {
+ "tag": "forge:dusts/netherite_scrap"
+ },
+ "result": "minecraft:netherite_scrap",
+ "experience": 0.0,
+ "cookingtime": 200
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soul_forge.json b/src/generated/resources/data/bloodmagic/recipes/soul_forge.json
new file mode 100644
index 00000000..1b03fe65
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soul_forge.json
@@ -0,0 +1,25 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "i i",
+ "sSs",
+ "sos"
+ ],
+ "key": {
+ "s": {
+ "tag": "forge:stone"
+ },
+ "S": {
+ "item": "bloodmagic:blankslate"
+ },
+ "i": {
+ "tag": "forge:ingots/iron"
+ },
+ "o": {
+ "tag": "forge:storage_blocks/iron"
+ }
+ },
+ "result": {
+ "item": "bloodmagic:soulforge"
+ }
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/commontartaricgem.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/commontartaricgem.json
new file mode 100644
index 00000000..c87b1cc0
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/commontartaricgem.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgemlesser"
+ },
+ "input1": {
+ "tag": "forge:gems/diamond"
+ },
+ "input2": {
+ "tag": "forge:storage_blocks/gold"
+ },
+ "input3": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "output": {
+ "item": "bloodmagic:soulgemcommon"
+ },
+ "minimumDrain": 240.0,
+ "drain": 50.0
+}
\ No newline at end of file
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/deforester_charge.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge.json
new file mode 100644
index 00000000..b8478f16
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:cobblestone"
+ },
+ "input1": {
+ "item": "minecraft:charcoal"
+ },
+ "input2": {
+ "tag": "minecraft:logs"
+ },
+ "input3": {
+ "tag": "minecraft:planks"
+ },
+ "output": {
+ "item": "bloodmagic:deforester_charge",
+ "count": 8
+ },
+ "minimumDrain": 10.0,
+ "drain": 0.5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_fortune_1.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_fortune_1.json
new file mode 100644
index 00000000..9902d84e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_fortune_1.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:deforester_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "tag": "forge:dusts/redstone"
+ },
+ "input3": {
+ "tag": "forge:dusts/coal"
+ },
+ "output": {
+ "item": "bloodmagic:deforester_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:fortune\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_silk_touch.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_silk_touch.json
new file mode 100644
index 00000000..95be85d4
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_silk_touch.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:deforester_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:cobweb"
+ },
+ "input3": {
+ "tag": "forge:nuggets/gold"
+ },
+ "output": {
+ "item": "bloodmagic:deforester_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:silk_touch\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_smelting.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_smelting.json
new file mode 100644
index 00000000..3ed21416
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge_smelting.json
@@ -0,0 +1,26 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:deforester_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:furnace"
+ },
+ "input3": [
+ {
+ "item": "minecraft:charcoal"
+ },
+ {
+ "item": "minecraft:coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:deforester_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:smelting\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.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/fungal_charge.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge.json
new file mode 100644
index 00000000..9a849f6d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:cobblestone"
+ },
+ "input1": {
+ "item": "minecraft:charcoal"
+ },
+ "input2": {
+ "tag": "minecraft:mushroom_hyphae"
+ },
+ "input3": {
+ "tag": "forge:mushrooms"
+ },
+ "output": {
+ "item": "bloodmagic:fungal_charge",
+ "count": 8
+ },
+ "minimumDrain": 10.0,
+ "drain": 0.5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_fortune_1.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_fortune_1.json
new file mode 100644
index 00000000..b913ba14
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_fortune_1.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:fungal_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "tag": "forge:dusts/redstone"
+ },
+ "input3": {
+ "tag": "forge:dusts/coal"
+ },
+ "output": {
+ "item": "bloodmagic:fungal_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:fortune\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_silk_touch.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_silk_touch.json
new file mode 100644
index 00000000..50c7537b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_silk_touch.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:fungal_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:cobweb"
+ },
+ "input3": {
+ "tag": "forge:nuggets/gold"
+ },
+ "output": {
+ "item": "bloodmagic:fungal_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:silk_touch\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_smelting.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_smelting.json
new file mode 100644
index 00000000..a47141b1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/fungal_charge_smelting.json
@@ -0,0 +1,26 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:fungal_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:furnace"
+ },
+ "input3": [
+ {
+ "item": "minecraft:charcoal"
+ },
+ {
+ "item": "minecraft:coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:fungal_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:smelting\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.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/lessertartaricgem.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/lessertartaricgem.json
new file mode 100644
index 00000000..cf5f5b19
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/lessertartaricgem.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "input1": {
+ "tag": "forge:gems/diamond"
+ },
+ "input2": {
+ "tag": "forge:storage_blocks/redstone"
+ },
+ "input3": {
+ "tag": "forge:storage_blocks/lapis"
+ },
+ "output": {
+ "item": "bloodmagic:soulgemlesser"
+ },
+ "minimumDrain": 60.0,
+ "drain": 20.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/pettytartaricgem.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/pettytartaricgem.json
new file mode 100644
index 00000000..10c7417a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/pettytartaricgem.json
@@ -0,0 +1,20 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:dusts/redstone"
+ },
+ "input1": {
+ "tag": "forge:ingots/gold"
+ },
+ "input2": {
+ "tag": "forge:glass"
+ },
+ "input3": {
+ "tag": "forge:gems/lapis"
+ },
+ "output": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "minimumDrain": 1.0,
+ "drain": 1.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/sanguine_reverter.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/sanguine_reverter.json
new file mode 100644
index 00000000..ee37a2fb
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/sanguine_reverter.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "minecraft:shears"
+ },
+ "input1": {
+ "tag": "forge:stone"
+ },
+ "input2": {
+ "item": "bloodmagic:infusedslate"
+ },
+ "input3": {
+ "tag": "forge:ingots/iron"
+ },
+ "output": {
+ "item": "bloodmagic:sanguinereverter",
+ "nbt": "{Damage:0}"
+ },
+ "minimumDrain": 350.0,
+ "drain": 30.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientaxe.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientaxe.json
new file mode 100644
index 00000000..ee04cc66
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientaxe.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "input1": {
+ "item": "minecraft:iron_axe"
+ },
+ "output": {
+ "item": "bloodmagic:soulaxe",
+ "nbt": "{Damage:0}"
+ },
+ "minimumDrain": 0.0,
+ "drain": 0.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientpickaxe.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientpickaxe.json
new file mode 100644
index 00000000..c553a505
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientpickaxe.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "input1": {
+ "item": "minecraft:iron_pickaxe"
+ },
+ "output": {
+ "item": "bloodmagic:soulpickaxe",
+ "nbt": "{Damage:0}"
+ },
+ "minimumDrain": 0.0,
+ "drain": 0.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientscythe.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientscythe.json
new file mode 100644
index 00000000..77c85c8b
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientscythe.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "input1": {
+ "item": "minecraft:iron_hoe"
+ },
+ "output": {
+ "item": "bloodmagic:soulscythe",
+ "nbt": "{Damage:0}"
+ },
+ "minimumDrain": 0.0,
+ "drain": 0.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientshovel.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientshovel.json
new file mode 100644
index 00000000..205d060e
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientshovel.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "input1": {
+ "item": "minecraft:iron_shovel"
+ },
+ "output": {
+ "item": "bloodmagic:soulshovel",
+ "nbt": "{Damage:0}"
+ },
+ "minimumDrain": 0.0,
+ "drain": 0.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientsword.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientsword.json
new file mode 100644
index 00000000..ca642e55
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/sentientsword.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:soulgempetty"
+ },
+ "input1": {
+ "item": "minecraft:iron_sword"
+ },
+ "output": {
+ "item": "bloodmagic:soulsword",
+ "nbt": "{Damage:0}"
+ },
+ "minimumDrain": 0.0,
+ "drain": 0.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json
new file mode 100644
index 00000000..b7c7fa04
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:cobblestone"
+ },
+ "input1": {
+ "item": "minecraft:charcoal"
+ },
+ "input2": {
+ "tag": "forge:sand"
+ },
+ "input3": {
+ "tag": "forge:stone"
+ },
+ "output": {
+ "item": "bloodmagic:shaped_charge",
+ "count": 8
+ },
+ "minimumDrain": 10.0,
+ "drain": 0.5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_fortune_1.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_fortune_1.json
new file mode 100644
index 00000000..d8a1c3db
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_fortune_1.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:shaped_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "tag": "forge:dusts/redstone"
+ },
+ "input3": {
+ "tag": "forge:dusts/coal"
+ },
+ "output": {
+ "item": "bloodmagic:shaped_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:fortune\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_silk_touch.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_silk_touch.json
new file mode 100644
index 00000000..380a43ac
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_silk_touch.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:shaped_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:cobweb"
+ },
+ "input3": {
+ "tag": "forge:nuggets/gold"
+ },
+ "output": {
+ "item": "bloodmagic:shaped_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:silk_touch\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_smelting.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_smelting.json
new file mode 100644
index 00000000..0fb26bc8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge_smelting.json
@@ -0,0 +1,26 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:shaped_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:furnace"
+ },
+ "input3": [
+ {
+ "item": "minecraft:charcoal"
+ },
+ {
+ "item": "minecraft:coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:shaped_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:smelting\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.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/throwing_dagger.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/throwing_dagger.json
new file mode 100644
index 00000000..b173f229
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/throwing_dagger.json
@@ -0,0 +1,18 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:ingots/iron"
+ },
+ "input1": {
+ "tag": "forge:ingots/iron"
+ },
+ "input2": {
+ "tag": "forge:string"
+ },
+ "output": {
+ "item": "bloodmagic:throwing_dagger",
+ "count": 16
+ },
+ "minimumDrain": 32.0,
+ "drain": 5.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/throwing_dagger_syringe.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/throwing_dagger_syringe.json
new file mode 100644
index 00000000..c7fadcb8
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/throwing_dagger_syringe.json
@@ -0,0 +1,15 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:stone"
+ },
+ "input1": {
+ "tag": "forge:glass"
+ },
+ "output": {
+ "item": "bloodmagic:throwing_dagger_syringe",
+ "count": 8
+ },
+ "minimumDrain": 10.0,
+ "drain": 2.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge.json
new file mode 100644
index 00000000..eadea857
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "tag": "forge:cobblestone"
+ },
+ "input1": {
+ "item": "minecraft:charcoal"
+ },
+ "input2": {
+ "tag": "forge:sandstone"
+ },
+ "input3": {
+ "tag": "forge:sand"
+ },
+ "output": {
+ "item": "bloodmagic:veinmine_charge",
+ "count": 8
+ },
+ "minimumDrain": 10.0,
+ "drain": 0.5
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_fortune_1.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_fortune_1.json
new file mode 100644
index 00000000..4790182d
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_fortune_1.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:veinmine_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "tag": "forge:dusts/redstone"
+ },
+ "input3": {
+ "tag": "forge:dusts/coal"
+ },
+ "output": {
+ "item": "bloodmagic:veinmine_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:fortune\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_silk_touch.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_silk_touch.json
new file mode 100644
index 00000000..ccf0709a
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_silk_touch.json
@@ -0,0 +1,21 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:veinmine_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:cobweb"
+ },
+ "input3": {
+ "tag": "forge:nuggets/gold"
+ },
+ "output": {
+ "item": "bloodmagic:veinmine_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:silk_touch\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.0
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_smelting.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_smelting.json
new file mode 100644
index 00000000..4c46a2cd
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/vein_charge_smelting.json
@@ -0,0 +1,26 @@
+{
+ "type": "bloodmagic:soulforge",
+ "input0": {
+ "item": "bloodmagic:veinmine_charge"
+ },
+ "input1": {
+ "tag": "forge:crops/nether_wart"
+ },
+ "input2": {
+ "item": "minecraft:furnace"
+ },
+ "input3": [
+ {
+ "item": "minecraft:charcoal"
+ },
+ {
+ "item": "minecraft:coal"
+ }
+ ],
+ "output": {
+ "item": "bloodmagic:veinmine_charge",
+ "nbt": "{anointment_holder:{anointments:[{damage:1,max_damage:1,level:1,key:\"bloodmagic:smelting\"}]}}"
+ },
+ "minimumDrain": 60.0,
+ "drain": 1.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/recipes/weak_activation_crystal.json b/src/generated/resources/data/bloodmagic/recipes/weak_activation_crystal.json
new file mode 100644
index 00000000..ba19a174
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/recipes/weak_activation_crystal.json
@@ -0,0 +1,13 @@
+{
+ "type": "bloodmagic:altar",
+ "input": {
+ "item": "bloodmagic:lavacrystal"
+ },
+ "output": {
+ "item": "bloodmagic:activationcrystalweak"
+ },
+ "upgradeLevel": 2,
+ "altarSyphon": 10000,
+ "consumptionRate": 20,
+ "drainRate": 10
+}
\ 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/explosive.json b/src/generated/resources/data/bloodmagic/tags/items/arc/explosive.json
new file mode 100644
index 00000000..7488cf64
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/arc/explosive.json
@@ -0,0 +1,7 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:explosivepowder",
+ "bloodmagic:primitive_explosive_cell"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/tags/items/arc/furnace.json b/src/generated/resources/data/bloodmagic/tags/items/arc/furnace.json
new file mode 100644
index 00000000..40b104b1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/arc/furnace.json
@@ -0,0 +1,7 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:furnacecell_primitive",
+ "bloodmagic:lavacrystal"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/tags/items/arc/hydrate.json b/src/generated/resources/data/bloodmagic/tags/items/arc/hydrate.json
new file mode 100644
index 00000000..dba4afa1
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/arc/hydrate.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:primitive_hydration_cell"
+ ]
+}
\ 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/reverter.json b/src/generated/resources/data/bloodmagic/tags/items/arc/reverter.json
new file mode 100644
index 00000000..ab081891
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/arc/reverter.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:sanguinereverter"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/tags/items/arc/sieve.json b/src/generated/resources/data/bloodmagic/tags/items/arc/sieve.json
new file mode 100644
index 00000000..7d46ac2c
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/arc/sieve.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:airscribetool"
+ ]
+}
\ 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
new file mode 100644
index 00000000..46ccea84
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/arc/tool.json
@@ -0,0 +1,12 @@
+{
+ "replace": false,
+ "values": [
+ "#bloodmagic:arc/furnace",
+ "#bloodmagic:arc/reverter",
+ "#bloodmagic:arc/sieve",
+ "#bloodmagic:arc/explosive",
+ "#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/dusts/corrupted.json b/src/generated/resources/data/bloodmagic/tags/items/dusts/corrupted.json
new file mode 100644
index 00000000..a84e11a0
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/dusts/corrupted.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:corrupted_dust"
+ ]
+}
\ 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/fragments/netherite_scrap.json b/src/generated/resources/data/bloodmagic/tags/items/fragments/netherite_scrap.json
new file mode 100644
index 00000000..1f0d5a35
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/fragments/netherite_scrap.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:fragment_netherite_scrap"
+ ]
+}
\ 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/bloodmagic/tags/items/gravels/netherite_scrap.json b/src/generated/resources/data/bloodmagic/tags/items/gravels/netherite_scrap.json
new file mode 100644
index 00000000..a957a0e3
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/gravels/netherite_scrap.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:gravel_netherite_scrap"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/bloodmagic/tags/items/tiny_dusts/corrupted.json b/src/generated/resources/data/bloodmagic/tags/items/tiny_dusts/corrupted.json
new file mode 100644
index 00000000..e792ed30
--- /dev/null
+++ b/src/generated/resources/data/bloodmagic/tags/items/tiny_dusts/corrupted.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:corrupted_tinydust"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/fluids/life.json b/src/generated/resources/data/forge/tags/fluids/life.json
new file mode 100644
index 00000000..59895a90
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/fluids/life.json
@@ -0,0 +1,7 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:life_essence_fluid",
+ "bloodmagic:life_essence_fluid_flowing"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/coal.json b/src/generated/resources/data/forge/tags/items/dusts/coal.json
new file mode 100644
index 00000000..c9d575d6
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/coal.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:coalsand"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/gold.json b/src/generated/resources/data/forge/tags/items/dusts/gold.json
new file mode 100644
index 00000000..959fcf7a
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/gold.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:goldsand"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/hellforged.json b/src/generated/resources/data/forge/tags/items/dusts/hellforged.json
new file mode 100644
index 00000000..129c8f3d
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/hellforged.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:sand_hellforged"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/iron.json b/src/generated/resources/data/forge/tags/items/dusts/iron.json
new file mode 100644
index 00000000..d3d71370
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/iron.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:ironsand"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/netherite_scrap.json b/src/generated/resources/data/forge/tags/items/dusts/netherite_scrap.json
new file mode 100644
index 00000000..3d4d11de
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/netherite_scrap.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:sand_netherite"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/saltpeter.json b/src/generated/resources/data/forge/tags/items/dusts/saltpeter.json
new file mode 100644
index 00000000..5313e4e2
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/saltpeter.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:saltpeter"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/dusts/sulfur.json b/src/generated/resources/data/forge/tags/items/dusts/sulfur.json
new file mode 100644
index 00000000..092ad725
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/dusts/sulfur.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:sulfur"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/ingots/hellforged.json b/src/generated/resources/data/forge/tags/items/ingots/hellforged.json
new file mode 100644
index 00000000..d71afc0c
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/ingots/hellforged.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:ingot_hellforged"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/ores/copper.json b/src/generated/resources/data/forge/tags/items/ores/copper.json
new file mode 100644
index 00000000..5e8aecc9
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/ores/copper.json
@@ -0,0 +1,4 @@
+{
+ "replace": false,
+ "values": []
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/ores/lead.json b/src/generated/resources/data/forge/tags/items/ores/lead.json
new file mode 100644
index 00000000..5e8aecc9
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/ores/lead.json
@@ -0,0 +1,4 @@
+{
+ "replace": false,
+ "values": []
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/ores/osmium.json b/src/generated/resources/data/forge/tags/items/ores/osmium.json
new file mode 100644
index 00000000..5e8aecc9
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/ores/osmium.json
@@ -0,0 +1,4 @@
+{
+ "replace": false,
+ "values": []
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/ores/silver.json b/src/generated/resources/data/forge/tags/items/ores/silver.json
new file mode 100644
index 00000000..5e8aecc9
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/ores/silver.json
@@ -0,0 +1,4 @@
+{
+ "replace": false,
+ "values": []
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/forge/tags/items/ores/tin.json b/src/generated/resources/data/forge/tags/items/ores/tin.json
new file mode 100644
index 00000000..5e8aecc9
--- /dev/null
+++ b/src/generated/resources/data/forge/tags/items/ores/tin.json
@@ -0,0 +1,4 @@
+{
+ "replace": false,
+ "values": []
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/minecraft/tags/blocks/mushroom_hyphae.json b/src/generated/resources/data/minecraft/tags/blocks/mushroom_hyphae.json
new file mode 100644
index 00000000..f8f96ad1
--- /dev/null
+++ b/src/generated/resources/data/minecraft/tags/blocks/mushroom_hyphae.json
@@ -0,0 +1,14 @@
+{
+ "replace": false,
+ "values": [
+ "minecraft:brown_mushroom_block",
+ "minecraft:red_mushroom_block",
+ "minecraft:crimson_hyphae",
+ "minecraft:warped_hyphae",
+ "minecraft:stripped_crimson_hyphae",
+ "minecraft:stripped_warped_hyphae",
+ "minecraft:nether_wart_block",
+ "minecraft:warped_wart_block",
+ "minecraft:shroomlight"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/minecraft/tags/blocks/mushroom_stem.json b/src/generated/resources/data/minecraft/tags/blocks/mushroom_stem.json
new file mode 100644
index 00000000..8055c89d
--- /dev/null
+++ b/src/generated/resources/data/minecraft/tags/blocks/mushroom_stem.json
@@ -0,0 +1,8 @@
+{
+ "replace": false,
+ "values": [
+ "minecraft:mushroom_stem",
+ "minecraft:crimson_stem",
+ "minecraft:warped_stem"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/minecraft/tags/blocks/walls.json b/src/generated/resources/data/minecraft/tags/blocks/walls.json
new file mode 100644
index 00000000..a79e9654
--- /dev/null
+++ b/src/generated/resources/data/minecraft/tags/blocks/walls.json
@@ -0,0 +1,7 @@
+{
+ "replace": false,
+ "values": [
+ "bloodmagic:dungeon_brick_wall",
+ "bloodmagic:dungeon_polished_wall"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/minecraft/tags/items/mushroom_hyphae.json b/src/generated/resources/data/minecraft/tags/items/mushroom_hyphae.json
new file mode 100644
index 00000000..f8f96ad1
--- /dev/null
+++ b/src/generated/resources/data/minecraft/tags/items/mushroom_hyphae.json
@@ -0,0 +1,14 @@
+{
+ "replace": false,
+ "values": [
+ "minecraft:brown_mushroom_block",
+ "minecraft:red_mushroom_block",
+ "minecraft:crimson_hyphae",
+ "minecraft:warped_hyphae",
+ "minecraft:stripped_crimson_hyphae",
+ "minecraft:stripped_warped_hyphae",
+ "minecraft:nether_wart_block",
+ "minecraft:warped_wart_block",
+ "minecraft:shroomlight"
+ ]
+}
\ No newline at end of file
diff --git a/src/generated/resources/data/minecraft/tags/items/mushroom_stem.json b/src/generated/resources/data/minecraft/tags/items/mushroom_stem.json
new file mode 100644
index 00000000..8055c89d
--- /dev/null
+++ b/src/generated/resources/data/minecraft/tags/items/mushroom_stem.json
@@ -0,0 +1,8 @@
+{
+ "replace": false,
+ "values": [
+ "minecraft:mushroom_stem",
+ "minecraft:crimson_stem",
+ "minecraft:warped_stem"
+ ]
+}
\ No newline at end of file
diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java
deleted file mode 100644
index a76b1bad..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java
+++ /dev/null
@@ -1,1876 +0,0 @@
-package WayofTime.alchemicalWizardry;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import WayofTime.alchemicalWizardry.common.potion.*;
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
-import net.minecraft.item.Item.ToolMaterial;
-import net.minecraft.item.ItemArmor.ArmorMaterial;
-import net.minecraft.item.ItemStack;
-import net.minecraft.potion.Potion;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.WeightedRandomChestContent;
-import net.minecraftforge.common.ChestGenHooks;
-import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.common.util.EnumHelper;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.FluidContainerRegistry;
-import net.minecraftforge.fluids.FluidRegistry;
-import net.minecraftforge.fml.common.FMLCommonHandler;
-import net.minecraftforge.fml.common.Loader;
-import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.common.Mod.EventHandler;
-import net.minecraftforge.fml.common.Mod.Instance;
-import net.minecraftforge.fml.common.ModContainer;
-import net.minecraftforge.fml.common.SidedProxy;
-import net.minecraftforge.fml.common.event.FMLInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLInterModComms;
-import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.network.NetworkRegistry;
-import net.minecraftforge.fml.common.registry.EntityRegistry;
-import net.minecraftforge.fml.common.registry.GameRegistry;
-import net.minecraftforge.oredict.OreDictionary;
-import net.minecraftforge.oredict.RecipeSorter;
-import net.minecraftforge.oredict.RecipeSorter.Category;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-//import thaumcraft.api.ItemApi;
-//import thaumcraft.api.ThaumcraftApi;
-//import thaumcraft.api.aspects.Aspect;
-//import thaumcraft.api.aspects.AspectList;
-import WayofTime.alchemicalWizardry.api.alchemy.AlchemicalPotionCreationHandler;
-import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry;
-import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry;
-import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack;
-import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry;
-import WayofTime.alchemicalWizardry.api.bindingRegistry.BindingRegistry;
-import WayofTime.alchemicalWizardry.api.bindingRegistry.UnbindingRegistry;
-import WayofTime.alchemicalWizardry.api.compress.CompressionRegistry;
-import WayofTime.alchemicalWizardry.api.harvest.HarvestRegistry;
-import WayofTime.alchemicalWizardry.api.items.ShapedBloodOrbRecipe;
-import WayofTime.alchemicalWizardry.api.items.ShapelessBloodOrbRecipe;
-import WayofTime.alchemicalWizardry.api.rituals.Rituals;
-import WayofTime.alchemicalWizardry.api.soulNetwork.ComplexNetworkHandler;
-import WayofTime.alchemicalWizardry.api.spell.SpellEffectRegistry;
-import WayofTime.alchemicalWizardry.api.spell.SpellParadigmMelee;
-import WayofTime.alchemicalWizardry.api.spell.SpellParadigmProjectile;
-import WayofTime.alchemicalWizardry.api.spell.SpellParadigmSelf;
-import WayofTime.alchemicalWizardry.api.spell.SpellParadigmTool;
-import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningRegistry;
-import WayofTime.alchemicalWizardry.common.AlchemicalWizardryEventHooks;
-import WayofTime.alchemicalWizardry.common.AlchemicalWizardryFuelHandler;
-import WayofTime.alchemicalWizardry.common.ClientToServerPacketHandler;
-import WayofTime.alchemicalWizardry.common.CommonProxy;
-import WayofTime.alchemicalWizardry.common.LifeBucketHandler;
-import WayofTime.alchemicalWizardry.common.LifeEssence;
-import WayofTime.alchemicalWizardry.common.ModLivingDropsEvent;
-import WayofTime.alchemicalWizardry.common.NewPacketHandler;
-import WayofTime.alchemicalWizardry.common.achievements.ModAchievements;
-import WayofTime.alchemicalWizardry.common.alchemy.CombinedPotionRegistry;
-import WayofTime.alchemicalWizardry.common.block.BlockArmourForge;
-import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars;
-import WayofTime.alchemicalWizardry.common.compress.AdvancedCompressionHandler;
-import WayofTime.alchemicalWizardry.common.compress.BaseCompressionHandler;
-import WayofTime.alchemicalWizardry.common.compress.StorageBlockCraftingManager;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.DemonPacketMinorGrunt;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.DemonPacketRegistry;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGrunt;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntEarth;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntFire;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardian;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianEarth;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianFire;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianIce;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntGuardianWind;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntIce;
-import WayofTime.alchemicalWizardry.common.demonVillage.demonHoard.demon.EntityMinorDemonGruntWind;
-import WayofTime.alchemicalWizardry.common.demonVillage.loot.DemonVillageLootRegistry;
-import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.TEDemonChest;
-import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.TEDemonPortal;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityAirElemental;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityBileDemon;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityBoulderFist;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityEarthElemental;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityFallenAngel;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityFireElemental;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityHolyElemental;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityIceDemon;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityLowerGuardian;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityShade;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityShadeElemental;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntitySmallEarthGolem;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityWaterElemental;
-import WayofTime.alchemicalWizardry.common.entity.mob.EntityWingedFireDemon;
-import WayofTime.alchemicalWizardry.common.harvest.BloodMagicHarvestHandler;
-import WayofTime.alchemicalWizardry.common.harvest.CactusReedHarvestHandler;
-import WayofTime.alchemicalWizardry.common.harvest.GourdHarvestHandler;
-import WayofTime.alchemicalWizardry.common.items.ItemIncense;
-import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner;
-import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmour;
-//import WayofTime.alchemicalWizardry.common.items.forestry.ItemBloodFrame;
-import WayofTime.alchemicalWizardry.common.items.sigil.holding.HoldingPacketHandler;
-import WayofTime.alchemicalWizardry.common.omega.OmegaParadigmEarth;
-import WayofTime.alchemicalWizardry.common.omega.OmegaParadigmFire;
-import WayofTime.alchemicalWizardry.common.omega.OmegaParadigmWater;
-import WayofTime.alchemicalWizardry.common.omega.OmegaParadigmWind;
-import WayofTime.alchemicalWizardry.common.omega.OmegaRegistry;
-import WayofTime.alchemicalWizardry.common.renderer.AlchemyCircleRenderer;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectAnimalGrowth;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectAutoAlchemy;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectBinding;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectBiomeChanger;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectContainment;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectCrafting;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectCrushing;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectDemonPortal;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectEllipsoid;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectEvaporation;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectExpulsion;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFeatheredEarth;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFeatheredKnife;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFlight;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFullStomach;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectGrowth;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectHarvest;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectHealing;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectInterdiction;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectItemRouting;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectItemSuction;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectJumping;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLava;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLeap;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLifeConduit;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectMagnetic;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectOmegaStalling;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectOmegaTest;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSpawnWard;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSphereCreator;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSummonMeteor;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSupression;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectUnbinding;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectVeilOfEvil;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectWater;
-import WayofTime.alchemicalWizardry.common.rituals.RitualEffectWellOfSuffering;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEMeleeDefaultEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEMeleeDefensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEMeleeEnvironmentalEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEMeleeOffensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEProjectileDefaultEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEProjectileDefensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEProjectileEnvironmentalEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEProjectileOffensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSESelfDefaultEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSESelfDefensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSESelfEnvironmentalEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSESelfOffensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEToolDefaultEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEToolDefensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEToolEnvironmentalEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.earth.CSEToolOffensiveEarth;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEMeleeDefaultFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEMeleeDefensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEMeleeEnvironmentalFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEMeleeOffensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEProjectileDefaultFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEProjectileDefensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEProjectileEnvironmentalFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEProjectileOffensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSESelfDefaultFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSESelfDefensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSESelfEnvironmentalFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSESelfOffensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEToolDefaultFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEToolDefensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEToolEnvironmentalFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.fire.CSEToolOffensiveFire;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEMeleeDefaultIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEMeleeDefensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEMeleeEnvironmentalIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEMeleeOffensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEProjectileDefaultIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEProjectileDefensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEProjectileEnvironmentalIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEProjectileOffensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSESelfDefaultIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSESelfDefensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSESelfEnvironmentalIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSESelfOffensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEToolDefaultIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEToolDefensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEToolEnvironmentalIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.ice.CSEToolOffensiveIce;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEMeleeDefaultWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEMeleeDefensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEMeleeEnvironmentalWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEMeleeOffensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEProjectileDefaultWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEProjectileDefensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEProjectileEnvironmentalWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEProjectileOffensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSESelfDefaultWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSESelfDefensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSESelfEnvironmentalWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSESelfOffensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEToolDefaultWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEToolDefensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEToolEnvironmentalWind;
-import WayofTime.alchemicalWizardry.common.spell.complex.effect.cse.wind.CSEToolOffensiveWind;
-import WayofTime.alchemicalWizardry.common.spell.simple.HomSpellRegistry;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellEarthBender;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellExplosions;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellFireBurst;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellFrozenWater;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellHolyBlast;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellLightningBolt;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellTeleport;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellWateryGrave;
-import WayofTime.alchemicalWizardry.common.spell.simple.SpellWindGust;
-import WayofTime.alchemicalWizardry.common.summoning.SummoningHelperAW;
-import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorRegistry;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEAlchemicalCalcinator;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEBelljar;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEConduit;
-import WayofTime.alchemicalWizardry.common.tileEntity.TECrucible;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpellTable;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEMimicBlock;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESchematicSaver;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESocket;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEnhancementBlock;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock;
-import WayofTime.alchemicalWizardry.common.tileEntity.TESpellParadigmBlock;
-import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer;
-import WayofTime.alchemicalWizardry.common.tileEntity.TEChemistrySet;
-import WayofTime.alchemicalWizardry.common.tileEntity.gui.GuiHandler;
-//import WayofTime.alchemicalWizardry.common.tweaker.MineTweakerIntegration;
-
-
-@Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v1.3.3", guiFactory = "WayofTime.alchemicalWizardry.client.gui.ConfigGuiFactory")
-public class AlchemicalWizardry
-{
- public static String MODID = "AWWayofTime"; //Temporary
-
- public static boolean parseTextFiles = false;
-
- public static boolean doMeteorsDestroyBlocks = true;
- public static String[] diamondMeteorArray;
- public static int diamondMeteorRadius;
- public static String[] stoneMeteorArray;
- public static int stoneMeteorRadius;
- public static String[] ironBlockMeteorArray;
- public static int ironBlockMeteorRadius;
- public static String[] netherStarMeteorArray;
- public static int netherStarMeteorRadius;
-
- public static String[] allowedCrushedOresArray;
-
- public static Potion customPotionDrowning;
- public static Potion customPotionBoost;
- public static Potion customPotionProjProt;
- public static Potion customPotionInhibit;
- public static Potion customPotionFlight;
- public static Potion customPotionReciprocation;
- public static Potion customPotionFlameCloak;
- public static Potion customPotionIceCloak;
- public static Potion customPotionHeavyHeart;
- public static Potion customPotionFireFuse;
- public static Potion customPotionPlanarBinding;
- public static Potion customPotionSoulFray;
- public static Potion customPotionSoulHarden;
- public static Potion customPotionDeaf;
- public static Potion customPotionFeatherFall;
- public static Potion customPotionDemonCloak;
- public static Potion customPotionAmphibian;
-
- public static int customPotionDrowningID;
- public static int customPotionBoostID;
- public static int customPotionProjProtID;
- public static int customPotionInhibitID;
- public static int customPotionFlightID;
- public static int customPotionReciprocationID;
- public static int customPotionFlameCloakID;
- public static int customPotionIceCloakID;
- public static int customPotionHeavyHeartID;
- public static int customPotionFireFuseID;
- public static int customPotionPlanarBindingID;
- public static int customPotionSoulFrayID;
- public static int customPotionSoulHardenID;
- public static int customPotionDeafID;
- public static int customPotionFeatherFallID;
- public static int customPotionDemonCloakID;
- public static int customPotionAmphibianID;
-
- public static boolean ritualDisabledWater;
- public static boolean ritualDisabledLava;
- public static boolean ritualDisabledGreenGrove;
- public static boolean ritualDisabledInterdiction;
- public static boolean ritualDisabledContainment;
- public static boolean ritualDisabledBinding;
- public static boolean ritualDisabledUnbinding;
- public static boolean ritualDisabledHighJump;
- public static boolean ritualDisabledMagnetism;
- public static boolean ritualDisabledCrusher;
- public static boolean ritualDisabledSpeed;
- public static boolean ritualDisabledAnimalGrowth;
- public static boolean ritualDisabledSuffering;
- public static boolean ritualDisabledRegen;
- public static boolean ritualDisabledFeatheredKnife;
- public static boolean ritualDisabledFeatheredEarth;
- public static boolean ritualDisabledGaia;
- public static boolean ritualDisabledCondor;
- public static boolean ritualDisabledFallingTower;
- public static boolean ritualDisabledBalladOfAlchemy;
- public static boolean ritualDisabledExpulsion;
- public static boolean ritualDisabledSuppression;
- public static boolean ritualDisabledZephyr;
- public static boolean ritualDisabledHarvest;
- public static boolean ritualDisabledConduit;
- public static boolean ritualDisabledEllipsoid;
- public static boolean ritualDisabledEvaporation;
- public static boolean ritualDisabledSpawnWard;
- public static boolean ritualDisabledVeilOfEvil;
- public static boolean ritualDisabledFullStomach;
- public static boolean ritualDisabledConvocation;
- public static boolean ritualDisabledSymmetry;
- public static boolean ritualDisabledStalling;
- public static boolean ritualDisabledCrafting;
- public static boolean ritualDisabledPhantomHands;
- public static boolean ritualDisabledSphereIsland;
-
- public static boolean potionDisableRegen;
- public static boolean potionDisableNightVision;
- public static boolean potionDisableFireResistance;
- public static boolean potionDisableWaterBreathing;
- public static boolean potionDisableMoveSpeed;
- public static boolean potionDisableInstantHealth;
- public static boolean potionDisablePoison;
- public static boolean potionDisableBlindness;
- public static boolean potionDisableWeakness;
- public static boolean potionDisableStrength;
- public static boolean potionDisableJumpBoost;
- public static boolean potionDisableSlowness;
- public static boolean potionDisableMining;
- public static boolean potionDisableDrowning;
- public static boolean potionDisableInvisibility;
- public static boolean potionDisableResistance;
- public static boolean potionDisableSaturation;
- public static boolean potionDisableHealthBoost;
- public static boolean potionDisableAbsorption;
- public static boolean potionDisableBoost;
- public static boolean potionDisableFlight;
- public static boolean potionDisableReciprocation;
- public static boolean potionDisablePlanarBinding;
- public static boolean potionDisableSoulFray;
- public static boolean potionDisableSoulHarden;
- public static boolean potionDisableDeafness;
-
- public static boolean isThaumcraftLoaded;
- public static boolean isForestryLoaded;
- public static boolean isBotaniaLoaded;
- public static boolean isFMPLoaded;
- public static boolean isPneumaticCraftLoaded;
-
- public static boolean wimpySettings;
- public static boolean respawnWithDebuff;
- public static boolean lockdownAltar;
- public static boolean causeHungerWithRegen;
- public static boolean causeHungerChatMessage = true;
-
- public static List wellBlacklist;
-
- public static Logger logger = LogManager.getLogger("BloodMagic");
- public static CreativeTabs tabBloodMagic = new CreativeTabs("tabBloodMagic")
- {
- @Override
- public ItemStack getIconItemStack()
- {
- return new ItemStack(ModItems.weakBloodOrb, 1, 0);
- }
-
- @Override
- public Item getTabIconItem()
- {
- return ModItems.weakBloodOrb;
- }
- };
-
- public static ToolMaterial bloodBoundToolMaterial = EnumHelper.addToolMaterial("BoundBlood", 4, 1000, 12.0f, 8.0f, 50);
- public static ArmorMaterial sanguineArmourArmourMaterial = EnumHelper.addArmorMaterial("SanguineArmour", "test", 33, new int[]{3, 8, 6, 3}, 30);
-
- //Dungeon loot chances
- public static int standardBindingAgentDungeonChance;
- public static int mundanePowerCatalystDungeonChance;
- public static int averagePowerCatalystDungeonChance;
- public static int greaterPowerCatalystDungeonChance;
- public static int mundaneLengtheningCatalystDungeonChance;
- public static int averageLengtheningCatalystDungeonChance;
- public static int greaterLengtheningCatalystDungeonChance;
-
- //Mob IDs
- public static String entityFallenAngelID = "AW001FallenAngel";
- public static String entityLowerGuardianID = "AW002";
- public static String entityBileDemonID = "AW003";
- public static String entityWingedFireDemonID = "AW004";
- public static String entitySmallEarthGolemID = "AW005";
- public static String entityIceDemonID = "AW006";
- public static String entityBoulderFistID = "AW007";
- public static String entityShadeID = "AW008";
- public static String entityAirElementalID = "AW009";
- public static String entityWaterElementalID = "AW010";
- public static String entityEarthElementalID = "AW011";
- public static String entityFireElementalID = "AW012";
- public static String entityShadeElementalID = "AW013";
- public static String entityHolyElementalID = "AW014";
- public static String entityMinorDemonGruntID = "AW015";
- public static String entityMinorDemonGruntFireID = "AW016";
- public static String entityMinorDemonGruntWindID = "AW017";
- public static String entityMinorDemonGruntIceID = "AW018";
- public static String entityMinorDemonGruntEarthID = "AW019";
- public static String entityMinorDemonGruntGuardianID = "AW020";
- public static String entityMinorDemonGruntGuardianFireID = "AW021";
- public static String entityMinorDemonGruntGuardianWindID = "AW022";
- public static String entityMinorDemonGruntGuardianIceID = "AW023";
- public static String entityMinorDemonGruntGuardianEarthID = "AW024";
-
- public static boolean isDemonRitualCreativeOnly = false;
-
- public static Fluid lifeEssenceFluid;
-
- // The instance of your mod that Forge uses.
- @Instance("AWWayofTime")
- public static AlchemicalWizardry instance;
-
- // Says where the client and server 'proxy' code is loaded.
- @SidedProxy(clientSide = "WayofTime.alchemicalWizardry.client.ClientProxy", serverSide = "WayofTime.alchemicalWizardry.common.CommonProxy")
- public static CommonProxy proxy;
-
- public static final HoldingPacketHandler packetPipeline = new HoldingPacketHandler();
-
- @EventHandler
- public void preInit(FMLPreInitializationEvent event)
- {
- File bmDirectory = new File("config/BloodMagic/schematics");
-
- if (!bmDirectory.exists() && bmDirectory.mkdirs())
- {
- try
- {
- InputStream in = AlchemicalWizardry.class.getResourceAsStream("/assets/alchemicalwizardry/schematics/building/buildings.zip");
- logger.info("none yet!");
- if (in != null)
- {
- logger.info("I have found a zip!");
- ZipInputStream zipStream = new ZipInputStream(in);
- ZipEntry entry;
-
- while ((entry = zipStream.getNextEntry()) != null)
- {
- File file = new File(bmDirectory, entry.getName());
- if (file.exists() && file.length() > 3L)
- {
- continue;
- }
- FileOutputStream out = new FileOutputStream(file);
-
- byte[] buffer = new byte[8192];
- int len;
- while ((len = zipStream.read(buffer)) != -1)
- {
- out.write(buffer, 0, len);
- }
- out.close();
- }
- }
- } catch (Exception e)
- {
- }
- }
-
- TEDemonPortal.loadBuildingList();
-
- ComplexNetworkHandler.load();
-
- MinecraftForge.EVENT_BUS.register(new LifeBucketHandler());
- BloodMagicConfiguration.init(new File(event.getModConfigurationDirectory(), "AWWayofTime.cfg"));
-
- //Custom config stuff goes here
- Potion[] potionTypes;
-
- for (Field f : Potion.class.getDeclaredFields())
- {
- f.setAccessible(true);
-
- try
- {
- if (f.getName().equals("potionTypes") || f.getName().equals("field_76425_a"))
- {
- Field modfield = Field.class.getDeclaredField("modifiers");
- modfield.setAccessible(true);
- modfield.setInt(f, f.getModifiers() & ~Modifier.FINAL);
- potionTypes = (Potion[]) f.get(null);
- final Potion[] newPotionTypes = new Potion[256];
- System.arraycopy(potionTypes, 0, newPotionTypes, 0, potionTypes.length);
- f.set(null, newPotionTypes);
- }
- } catch (Exception e)
- {
- System.err.println("Severe error, please report this to the mod author:");
- System.err.println(e);
- }
- }
- AlchemicalWizardry.lifeEssenceFluid = new LifeEssence("Life Essence");
- FluidRegistry.registerFluid(lifeEssenceFluid);
-
- ModBlocks.init();
- ModItems.init();
-
- RecipeSorter.register("AWWayofTime:shapedorb", ShapedBloodOrbRecipe.class, Category.SHAPED, "before:minecraft:shapeless");
- RecipeSorter.register("AWWayofTime:shapelessorb", ShapelessBloodOrbRecipe.class, Category.SHAPELESS, "after:minecraft:shapeless");
-
- Object eventHook = new AlchemicalWizardryEventHooks();
- FMLCommonHandler.instance().bus().register(eventHook);
- MinecraftForge.EVENT_BUS.register(eventHook);
- NewPacketHandler.INSTANCE.ordinal();
- HoldingPacketHandler.init();
- ClientToServerPacketHandler.init();
- ModAchievements.init();
- }
-
- @EventHandler
- public void load(FMLInitializationEvent event)
- {
- int craftingConstant = OreDictionary.WILDCARD_VALUE;
-
- ModBlocks.init();
- //blocks
-
- proxy.registerRenderers();
- proxy.registerEntities();
- proxy.registerEntityTrackers();
- proxy.registerEvents();
-
- //ItemStacks used for crafting go here
- ItemStack lapisStack = new ItemStack(Items.dye, 1, 4);
- ItemStack lavaBucketStack = new ItemStack(Items.lava_bucket);
- ItemStack cobblestoneStack = new ItemStack(Blocks.cobblestone, 1, craftingConstant);
- ItemStack glassStack = new ItemStack(Blocks.glass, 1, craftingConstant);
- ItemStack ironIngotStack = new ItemStack(Items.iron_ingot);
- ItemStack diamondStack = new ItemStack(Items.diamond, 1, craftingConstant);
- ItemStack goldNuggetStack = new ItemStack(Items.gold_nugget);
- ItemStack stoneStack = new ItemStack(Blocks.stone, 1, craftingConstant);
- ItemStack redstoneStack = new ItemStack(Items.redstone);
- ItemStack glowstoneBlockStack = new ItemStack(Blocks.glowstone);
- ItemStack ironBlockStack = new ItemStack(Blocks.iron_block);
- ItemStack waterBucketStack = new ItemStack(Items.water_bucket);
- ItemStack emptyBucketStack = new ItemStack(Items.bucket);
- ItemStack magmaCreamStack = new ItemStack(Items.magma_cream);
- ItemStack stringStack = new ItemStack(Items.string);
- ItemStack obsidianStack = new ItemStack(Blocks.obsidian);
- ItemStack goldIngotStack = new ItemStack(Items.gold_ingot);
- ItemStack furnaceStack = new ItemStack(Blocks.furnace);
- ItemStack sugarStack = new ItemStack(Items.sugar);
- ItemStack featherStack = new ItemStack(Items.feather);
- ItemStack ghastTearStack = new ItemStack(Items.ghast_tear);
- ItemStack ironPickaxeStack = new ItemStack(Items.iron_pickaxe);
- ItemStack ironAxeStack = new ItemStack(Items.iron_axe);
- ItemStack ironShovelStack = new ItemStack(Items.iron_shovel);
- ItemStack glowstoneDustStack = new ItemStack(Items.glowstone_dust);
- ItemStack saplingStack = new ItemStack(Blocks.sapling);
- ItemStack reedStack = new ItemStack(Items.reeds);
- ItemStack blankSlateStack = new ItemStack(ModItems.blankSlate, 1, craftingConstant);
- ItemStack reinforcedSlateStack = new ItemStack(ModItems.reinforcedSlate, 1, craftingConstant);
- ItemStack weakBloodOrbStack = new ItemStack(ModItems.weakBloodOrb, 1, craftingConstant);
- ItemStack imbuedSlateStack = new ItemStack(ModItems.imbuedSlate, 1, craftingConstant);
- ItemStack demonSlateStack = new ItemStack(ModItems.demonicSlate, 1, craftingConstant);
- ItemStack apprenticeBloodOrbStack = new ItemStack(ModItems.apprenticeBloodOrb, 1, craftingConstant);
- ItemStack magicianBloodOrbStack = new ItemStack(ModItems.magicianBloodOrb, 1, craftingConstant);
- ItemStack waterSigilStackCrafted = new ItemStack(ModItems.waterSigil);
- ItemStack lavaSigilStackCrafted = new ItemStack(ModItems.lavaSigil);
- ItemStack voidSigilStackCrafted = new ItemStack(ModItems.voidSigil);
- ItemStack airSigilStack = new ItemStack(ModItems.airSigil);
- ItemStack lavaCrystalStackCrafted = new ItemStack(ModItems.lavaCrystal);
- ItemStack lavaCrystalStack = new ItemStack(ModItems.lavaCrystal);
- ItemStack sacrificialDaggerStack = new ItemStack(ModItems.sacrificialDagger);
- ItemStack bloodAltarStack = new ItemStack(ModBlocks.blockAltar, 1, 0);
- ItemStack bloodRuneCraftedStack = new ItemStack(ModBlocks.bloodRune, 1);
- ItemStack bloodRuneStack = new ItemStack(ModBlocks.bloodRune);
- ItemStack speedRuneStack = new ItemStack(ModBlocks.speedRune);
- ItemStack runeOfSacrificeStack = new ItemStack(ModBlocks.runeOfSacrifice);
- ItemStack runeOfSelfSacrificeStack = new ItemStack(ModBlocks.runeOfSelfSacrifice);
- ItemStack miningSigilStackCrafted = new ItemStack(ModItems.sigilOfTheFastMiner);
- ItemStack divinationSigilStackCrafted = new ItemStack(ModItems.divinationSigil);
- ItemStack seerSigilStackCrafted = new ItemStack(ModItems.itemSeerSigil);
- ItemStack ritualStoneStackCrafted = new ItemStack(ModBlocks.ritualStone, 4);
- ItemStack ritualStoneStack = new ItemStack(ModBlocks.ritualStone);
- ItemStack masterRitualStoneStack = new ItemStack(ModBlocks.blockMasterStone);
- ItemStack imperfectRitualStoneStack = new ItemStack(ModBlocks.imperfectRitualStone);
- ItemStack sigilOfElementalAffinityStackCrafted = new ItemStack(ModItems.sigilOfElementalAffinity);
- ItemStack lavaSigilStack = new ItemStack(ModItems.lavaSigil);
- ItemStack waterSigilStack = new ItemStack(ModItems.waterSigil);
- ItemStack sigilOfHoldingStack = new ItemStack(ModItems.sigilOfHolding);
- ItemStack weakBloodShardStack = new ItemStack(ModItems.weakBloodShard);
- ItemStack emptySocketStack = new ItemStack(ModBlocks.emptySocket);
- ItemStack bloodSocketStack = new ItemStack(ModBlocks.bloodSocket);
- ItemStack armourForgeStack = new ItemStack(ModBlocks.armourForge);
- ItemStack largeBloodStoneBrickStackCrafted = new ItemStack(ModBlocks.largeBloodStoneBrick, 32);
- ItemStack largeBloodStoneBrickStack = new ItemStack(ModBlocks.largeBloodStoneBrick);
- ItemStack bloodStoneBrickStackCrafted = new ItemStack(ModBlocks.bloodStoneBrick, 4);
- ItemStack growthSigilStack = new ItemStack(ModItems.growthSigil);
- ItemStack blockHomHeartStack = new ItemStack(ModBlocks.blockSpellTable);
- ItemStack redWoolStack = new ItemStack(Blocks.wool, 1, 14);
- ItemStack simpleCatalystStack = new ItemStack(ModItems.simpleCatalyst);
- ItemStack duskRitualDivinerStack = new ItemStack(ModItems.itemRitualDiviner);
- ((ItemRitualDiviner) duskRitualDivinerStack.getItem()).setMaxRuneDisplacement(duskRitualDivinerStack, 1);
- ItemStack dawnRitualDivinerStack = new ItemStack(ModItems.itemRitualDiviner);
- ((ItemRitualDiviner) dawnRitualDivinerStack.getItem()).setMaxRuneDisplacement(dawnRitualDivinerStack, 2);
- waterSigilStackCrafted.setItemDamage(waterSigilStackCrafted.getMaxDamage());
- lavaSigilStackCrafted.setItemDamage(lavaSigilStackCrafted.getMaxDamage());
- voidSigilStackCrafted.setItemDamage(voidSigilStackCrafted.getMaxDamage());
- lavaCrystalStackCrafted.setItemDamage(lavaCrystalStackCrafted.getMaxDamage());
- miningSigilStackCrafted.setItemDamage(miningSigilStackCrafted.getMaxDamage());
- sigilOfElementalAffinityStackCrafted.setItemDamage(sigilOfElementalAffinityStackCrafted.getMaxDamage());
- ItemStack archmageBloodOrbStack = new ItemStack(ModItems.archmageBloodOrb);
- ItemStack sanctusStack = new ItemStack(ModItems.sanctus);
- ItemStack aetherStack = new ItemStack(ModItems.aether);
- ItemStack terraeStack = new ItemStack(ModItems.terrae);
- ItemStack incendiumStack = new ItemStack(ModItems.incendium);
- ItemStack tennebraeStack = new ItemStack(ModItems.tennebrae);
- ItemStack aquasalusStack = new ItemStack(ModItems.aquasalus);
- ItemStack crystallosStack = new ItemStack(ModItems.crystallos);
- ItemStack crepitousStack = new ItemStack(ModItems.crepitous);
- ItemStack magicalesStack = new ItemStack(ModItems.magicales);
- //All crafting goes here
- GameRegistry.addRecipe(sacrificialDaggerStack, "ggg", " dg", "i g", 'g', glassStack, 'd', goldIngotStack, 'i', ironIngotStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(lavaCrystalStackCrafted, "glg", "lbl", "odo", 'g', glassStack, 'l', lavaBucketStack, 'b', weakBloodOrbStack, 'd', diamondStack, 'o', obsidianStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(waterSigilStackCrafted, "www", "wbw", "wow", 'w', waterBucketStack, 'b', blankSlateStack, 'o', weakBloodOrbStack));
- GameRegistry.addRecipe(lavaSigilStackCrafted, "lml", "lbl", "lcl", 'l', lavaBucketStack, 'b', blankSlateStack, 'm', magmaCreamStack, 'c', lavaCrystalStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(voidSigilStackCrafted, "ese", "ere", "eoe", 'e', emptyBucketStack, 'r', reinforcedSlateStack, 'o', apprenticeBloodOrbStack, 's', stringStack));
- GameRegistry.addRecipe(bloodAltarStack, "s s", "scs", "gdg", 's', stoneStack, 'c', furnaceStack, 'd', diamondStack, 'g', goldIngotStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(bloodRuneCraftedStack, "sss", "ror", "sss", 's', stoneStack, 'o', weakBloodOrbStack, 'r', blankSlateStack));
- GameRegistry.addRecipe(speedRuneStack, "sbs", "uru", "sbs", 'u', sugarStack, 's', stoneStack, 'r', bloodRuneStack, 'b', blankSlateStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 1), "sbs", "bob", "srs", 's', stoneStack, 'o', magicianBloodOrbStack, 'b', emptyBucketStack, 'r', new ItemStack(ModItems.imbuedSlate)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 2), "sbs", "bob", "srs", 's', stoneStack, 'o', magicianBloodOrbStack, 'b', waterBucketStack, 'r', new ItemStack(ModItems.imbuedSlate)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 3), "sws", "ror", "sws", 's', stoneStack, 'o', new ItemStack(ModItems.masterBloodOrb), 'w', weakBloodOrbStack, 'r', new ItemStack(ModItems.demonicSlate)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 4), "srs", "beb", "sos", 's', obsidianStack, 'o', new ItemStack(ModItems.masterBloodOrb), 'r', new ItemStack(ModItems.demonicSlate), 'b', emptyBucketStack, 'e', new ItemStack(ModBlocks.bloodRune, 1, 1)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(airSigilStack, "fgf", "fsf", "fof", 'f', featherStack, 'g', ghastTearStack, 's', reinforcedSlateStack, 'o', apprenticeBloodOrbStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(miningSigilStackCrafted, "sps", "hra", "sos", 'o', apprenticeBloodOrbStack, 's', stoneStack, 'p', ironPickaxeStack, 'h', ironShovelStack, 'a', ironAxeStack, 'r', reinforcedSlateStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(runeOfSacrificeStack, "srs", "gog", "srs", 's', stoneStack, 'g', goldIngotStack, 'o', apprenticeBloodOrbStack, 'r', reinforcedSlateStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(runeOfSelfSacrificeStack, "srs", "gog", "srs", 's', stoneStack, 'g', glowstoneDustStack, 'o', apprenticeBloodOrbStack, 'r', reinforcedSlateStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(divinationSigilStackCrafted, "ggg", "gsg", "gog", 'g', glassStack, 's', blankSlateStack, 'o', weakBloodOrbStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(seerSigilStackCrafted, "gbg", "gsg", "gog", 'g', glassStack, 's', divinationSigilStackCrafted, 'o', apprenticeBloodOrbStack, 'b', new ItemStack(ModItems.bucketLife)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ritualStoneStackCrafted, "srs", "ror", "srs", 's', obsidianStack, 'o', apprenticeBloodOrbStack, 'r', reinforcedSlateStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(masterRitualStoneStack, "brb", "ror", "brb", 'b', obsidianStack, 'o', magicianBloodOrbStack, 'r', ritualStoneStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(imperfectRitualStoneStack, "bsb", "sos", "bsb", 's', stoneStack, 'b', obsidianStack, 'o', weakBloodOrbStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(sigilOfElementalAffinityStackCrafted, "oao", "wsl", "oro", 'o', obsidianStack, 'a', airSigilStack, 'w', waterSigilStack, 'l', lavaSigilStack, 'r', magicianBloodOrbStack, 's', imbuedSlateStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(sigilOfHoldingStack, "asa", "srs", "aoa", 'a', blankSlateStack, 's', stoneStack, 'r', imbuedSlateStack, 'o', magicianBloodOrbStack));
- GameRegistry.addRecipe(emptySocketStack, "bgb", "gdg", "bgb", 'b', weakBloodShardStack, 'g', glassStack, 'd', diamondStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(armourForgeStack, "sfs", "fof", "sfs", 'f', bloodSocketStack, 's', stoneStack, 'o', magicianBloodOrbStack));
- GameRegistry.addShapelessRecipe(largeBloodStoneBrickStackCrafted, weakBloodShardStack, stoneStack);
- GameRegistry.addRecipe(bloodStoneBrickStackCrafted, "bb", "bb", 'b', largeBloodStoneBrickStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(growthSigilStack, "srs", "rer", "sos", 's', saplingStack, 'r', reedStack, 'o', apprenticeBloodOrbStack, 'e', reinforcedSlateStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(blockHomHeartStack, "www", "srs", "sos", 'w', redWoolStack, 's', stoneStack, 'r', bloodRuneStack, 'o', apprenticeBloodOrbStack));
- GameRegistry.addShapelessRecipe(new ItemStack(Items.skull, 1, 2), new ItemStack(Items.skull, 1, 1), new ItemStack(Items.rotten_flesh), new ItemStack(Items.iron_ingot), new ItemStack(Items.leather));
- GameRegistry.addShapelessRecipe(new ItemStack(Items.skull, 1, 0), new ItemStack(Items.skull, 1, 1), new ItemStack(Items.bow, 1, 0), new ItemStack(Items.arrow, 1, 0), new ItemStack(Items.bone));
- GameRegistry.addShapelessRecipe(new ItemStack(Items.skull, 1, 4), new ItemStack(Items.skull, 1, 1), new ItemStack(Items.gunpowder), new ItemStack(Blocks.dirt), new ItemStack(Blocks.sand));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.blockWritingTable), " s ", "ror", 's', new ItemStack(Items.brewing_stand), 'r', obsidianStack, 'o', weakBloodOrbStack));
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockPedestal), "ooo", " c ", "ooo", 'o', obsidianStack, 'c', weakBloodShardStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockPlinth), "iii", " p ", "iii", 'i', ironBlockStack, 'p', new ItemStack(ModBlocks.blockPedestal));
- GameRegistry.addShapelessRecipe(new ItemStack(ModItems.alchemyFlask, 1, 0), new ItemStack(ModItems.alchemyFlask, 1, craftingConstant), new ItemStack(Items.nether_wart), redstoneStack, glowstoneDustStack);
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfHaste), "csc", "sts", "ror", 'c', new ItemStack(Items.cookie), 's', new ItemStack(Items.sugar), 't', ModItems.demonicSlate, 'r', obsidianStack, 'o', new ItemStack(ModItems.masterBloodOrb)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfWind), "faf", "grg", "fof", 'f', featherStack, 'g', ghastTearStack, 'a', new ItemStack(ModItems.airSigil), 'o', new ItemStack(ModItems.masterBloodOrb), 'r', ModItems.demonicSlate));
- GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.weakBloodShard, 5, 0), new ItemStack(ModItems.masterBloodOrb), new ItemStack(ModItems.weakBloodShard), imbuedSlateStack));
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockTeleposer), "ggg", "efe", "ggg", 'g', goldIngotStack, 'f', new ItemStack(ModItems.telepositionFocus), 'e', new ItemStack(Items.ender_pearl));
- GameRegistry.addShapelessRecipe(new ItemStack(ModItems.reinforcedTelepositionFocus), new ItemStack(ModItems.enhancedTelepositionFocus), new ItemStack(ModItems.weakBloodShard));
- GameRegistry.addShapelessRecipe(new ItemStack(ModItems.demonicTelepositionFocus), new ItemStack(ModItems.reinforcedTelepositionFocus), new ItemStack(ModItems.demonBloodShard));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfTheBridge), "nnn", "nsn", "ror", 'n', stoneStack, 'r', new ItemStack(Blocks.soul_sand), 's', imbuedSlateStack, 'o', magicianBloodOrbStack));
- GameRegistry.addRecipe(new ItemStack(ModItems.armourInhibitor), " gg", "gsg", "gg ", 'g', goldIngotStack, 's', new ItemStack(ModItems.weakBloodShard));
- GameRegistry.addRecipe(new ItemStack(ModItems.itemRitualDiviner), "d1d", "2e3", "d4d", '1', new ItemStack(ModItems.airScribeTool), '2', new ItemStack(ModItems.waterScribeTool), '3', new ItemStack(ModItems.fireScribeTool), '4', new ItemStack(ModItems.earthScribeTool), 'd', diamondStack, 'e', new ItemStack(Items.emerald));
- GameRegistry.addRecipe(duskRitualDivinerStack, " d ", "srs", " d ", 'd', new ItemStack(ModItems.duskScribeTool), 's', new ItemStack(ModItems.demonicSlate), 'r', new ItemStack(ModItems.itemRitualDiviner));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfMagnetism), "bgb", "gsg", "bob", 'b', new ItemStack(Blocks.iron_block), 'g', goldIngotStack, 's', new ItemStack(ModItems.imbuedSlate), 'o', magicianBloodOrbStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.energyBazooka), "Ocd", "cb ", "d w", 'O', archmageBloodOrbStack, 'c', crepitousStack, 'b', new ItemStack(ModItems.energyBlaster), 'd', diamondStack, 'w', new ItemStack(ModItems.weakBloodShard)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemBloodLightSigil), "btb", "sss", "bob", 'o', magicianBloodOrbStack, 'b', glowstoneBlockStack, 't', new ItemStack(Blocks.torch), 's', imbuedSlateStack));
- GameRegistry.addRecipe(new ItemStack(ModItems.itemKeyOfDiablo), " gw", "gdg", "wg ", 'w', weakBloodShardStack, 'g', goldIngotStack, 'd', diamondStack);
- GameRegistry.addRecipe(new ItemStack(ModItems.itemBloodPack), "gbg","flf","gsg",'s', blankSlateStack,'g', glassStack,'f',new ItemStack(Items.flint,1,craftingConstant),'b', emptyBucketStack, 'l', new ItemStack(Items.leather_chestplate));
- customPotionDrowning = (new PotionBloodMagic(customPotionDrowningID, true, 0)).setIconIndex(0, 0).setPotionName("Drowning");
- customPotionBoost = (new PotionBloodMagic(customPotionBoostID, false, 0)).setIconIndex(0, 0).setPotionName("Boost");
- customPotionProjProt = (new PotionBloodMagic(customPotionProjProtID, false, 0)).setIconIndex(0, 0).setPotionName("Whirlwind");
- customPotionInhibit = (new PotionBloodMagic(customPotionInhibitID, false, 0)).setIconIndex(0, 0).setPotionName("Inhibit");
- customPotionFlight = (new PotionBloodMagic(customPotionFlightID, false, 0)).setIconIndex(0, 0).setPotionName("Flight");
- customPotionReciprocation = (new PotionBloodMagic(customPotionReciprocationID, false, 0xFFFFFF)).setIconIndex(0, 0).setPotionName("Reciprocation");
- customPotionFlameCloak = (new PotionBloodMagic(customPotionFlameCloakID, false, 0).setIconIndex(0, 0).setPotionName("Flame Cloak"));
- customPotionIceCloak = (new PotionBloodMagic(customPotionIceCloakID, false, 0).setIconIndex(0, 0).setPotionName("Ice Cloak"));
- customPotionHeavyHeart = (new PotionBloodMagic(customPotionHeavyHeartID, true, 0).setIconIndex(0, 0).setPotionName("Heavy Heart"));
- customPotionFireFuse = (new PotionBloodMagic(customPotionFireFuseID, true, 0).setIconIndex(0, 0).setPotionName("Fire Fuse"));
- customPotionPlanarBinding = (new PotionBloodMagic(customPotionPlanarBindingID, true, 0).setIconIndex(0, 0).setPotionName("Planar Binding"));
- customPotionSoulFray = (new PotionBloodMagic(customPotionSoulFrayID, true, 0).setIconIndex(0, 0).setPotionName("Soul Fray"));
- customPotionSoulHarden = (new PotionBloodMagic(customPotionSoulHardenID, false, 0).setIconIndex(0, 0).setPotionName("Soul Harden"));
- customPotionDeaf = (new PotionBloodMagic(customPotionDeafID, true, 0).setIconIndex(0, 0).setPotionName("Deafness"));
- customPotionFeatherFall = (new PotionBloodMagic(customPotionFeatherFallID, false, 0).setIconIndex(0, 0).setPotionName("Feather Fall"));
- customPotionDemonCloak = (new PotionBloodMagic(customPotionDemonCloakID, false, 0).setIconIndex(0, 0).setPotionName("Demon Cloaking"));
- customPotionAmphibian = (new PotionBloodMagic(customPotionAmphibianID, false, 0).setIconIndex(0, 0).setPotionName("Amphibian"));
-
- ItemStack masterBloodOrbStack = new ItemStack(ModItems.masterBloodOrb);
- ItemStack transcendentBloodOrbStack = new ItemStack(ModItems.transcendentBloodOrb);
-
-// ModBlocks.blockLifeEssence.setUnlocalizedName("lifeEssenceBlock");
- FluidContainerRegistry.registerFluidContainer(lifeEssenceFluid, new ItemStack(ModItems.bucketLife), FluidContainerRegistry.EMPTY_BUCKET);
- ModBlocks.blockAltar.setHarvestLevel("pickaxe", 1);
-
- //Register Tile Entity
- GameRegistry.registerTileEntity(TEAltar.class, "containerAltar");
- GameRegistry.registerTileEntity(TEMasterStone.class, "containerMasterStone");
- GameRegistry.registerTileEntity(TESocket.class, "containerSocket");
- GameRegistry.registerTileEntity(TEChemistrySet.class, "containerWritingTable");
- GameRegistry.registerTileEntity(TESpellTable.class, "containerHomHeart");
- GameRegistry.registerTileEntity(TEPedestal.class, "containerPedestal");
- GameRegistry.registerTileEntity(TEPlinth.class, "containerPlinth");
- GameRegistry.registerTileEntity(TETeleposer.class, "containerTeleposer");
- GameRegistry.registerTileEntity(TEConduit.class, "containerConduit");
- GameRegistry.registerTileEntity(TEOrientable.class, "containerOrientable");
- GameRegistry.registerTileEntity(TESpellParadigmBlock.class, "containerSpellParadigmBlock");
- GameRegistry.registerTileEntity(TESpellEffectBlock.class, "containerSpellEffectBlock");
- GameRegistry.registerTileEntity(TESpellModifierBlock.class, "containerSpellModifierBlock");
- GameRegistry.registerTileEntity(TESpellEnhancementBlock.class, "containerSpellEnhancementBlock");
- GameRegistry.registerTileEntity(TESpectralContainer.class, "spectralContainerTileEntity");
- GameRegistry.registerTileEntity(TEDemonPortal.class, "containerDemonPortal");
- GameRegistry.registerTileEntity(TESchematicSaver.class, "containerSchematicSaver");
- GameRegistry.registerTileEntity(TESpectralBlock.class, "containerSpectralBlock");
- GameRegistry.registerTileEntity(TEReagentConduit.class, "containerReagentConduit");
- GameRegistry.registerTileEntity(TEBelljar.class, "containerBellJar");
- GameRegistry.registerTileEntity(TEAlchemicalCalcinator.class, "containerAlchemicCalcinator");
- GameRegistry.registerTileEntity(TEDemonChest.class, "containerDemonChest");
- GameRegistry.registerTileEntity(TEMimicBlock.class, "containerMimic");
- GameRegistry.registerTileEntity(TECrucible.class, "containerCrucible");
- ModBlocks.bloodRune.setHarvestLevel("pickaxe", 2);
- ModBlocks.speedRune.setHarvestLevel("pickaxe", 2);
- ModBlocks.efficiencyRune.setHarvestLevel("pickaxe", 2);
- ModBlocks.runeOfSacrifice.setHarvestLevel("pickaxe", 2);
- ModBlocks.runeOfSelfSacrifice.setHarvestLevel("pickaxe", 2);
- ModBlocks.ritualStone.setHarvestLevel("pickaxe", 2);
- ModBlocks.bloodSocket.setHarvestLevel("pickaxe", 2);
- ModBlocks.ritualStone.setHarvestLevel("pickaxe", 2);
- ModBlocks.imperfectRitualStone.setHarvestLevel("pickaxe", 2);
- ModBlocks.blockMasterStone.setHarvestLevel("pickaxe", 2);
- ModBlocks.emptySocket.setHarvestLevel("pickaxe", 2);
- ModBlocks.bloodStoneBrick.setHarvestLevel("pickaxe", 0);
- ModBlocks.largeBloodStoneBrick.setHarvestLevel("pickaxe", 0);
- ModBlocks.blockWritingTable.setHarvestLevel("pickaxe", 1);
- ModBlocks.blockSpellTable.setHarvestLevel("pickaxe", 1);
- ModBlocks.blockPedestal.setHarvestLevel("pickaxe", 2);
- ModBlocks.blockPlinth.setHarvestLevel("pickaxe", 2);
- ModBlocks.blockTeleposer.setHarvestLevel("pickaxe", 2);
-
- //Fuel handler
- GameRegistry.registerFuelHandler(new AlchemicalWizardryFuelHandler());
-
- //Gui registration
- UpgradedAltars.loadAltars();
- BlockArmourForge.initializeRecipes();
- TEPlinth.initialize();
-
- initAlchemyPotionRecipes();
- initAltarRecipes();
-
- initBindingRecipes();
- initHarvestRegistry();
- initCombinedAlchemyPotionRecipes();
-
- ReagentRegistry.initReagents();
- initReagentRegistries();
- initRituals();
-
- initDemonPacketRegistiry();
- initiateRegistry();
-
- blacklistDemons();
-
- blacklistAccelerators();
-
- MinecraftForge.EVENT_BUS.register(new ModLivingDropsEvent());
- proxy.initRendering();
- NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());
-
- ItemStack gunpowderStack = new ItemStack(Items.gunpowder);
- ItemStack offensaStack = new ItemStack(ModItems.baseAlchemyItems, 1, 0);
- ItemStack praesidiumStack = new ItemStack(ModItems.baseAlchemyItems, 1, 1);
- ItemStack orbisTerraeStack = new ItemStack(ModItems.baseAlchemyItems, 1, 2);
- ItemStack strengthenedCatalystStack = new ItemStack(ModItems.baseAlchemyItems, 1, 3);
- ItemStack concentratedCatalystStack = new ItemStack(ModItems.baseAlchemyItems, 1, 4);
- ItemStack fracturedBoneStack = new ItemStack(ModItems.baseAlchemyItems, 1, 5);
- ItemStack virtusStack = new ItemStack(ModItems.baseAlchemyItems, 1, 6);
- ItemStack reductusStack = new ItemStack(ModItems.baseAlchemyItems, 1, 7);
- ItemStack potentiaStack = new ItemStack(ModItems.baseAlchemyItems, 1, 8);
-
- ItemStack strengthenedCatalystStackCrafted = new ItemStack(ModItems.baseAlchemyItems, 2, 3);
- ItemStack fracturedBoneStackCrafted = new ItemStack(ModItems.baseAlchemyItems, 4, 5);
- //TODO NEW RECIPES!
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.weakBindingAgent), 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Items.clay_ball)}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.standardBindingAgent), 15, new ItemStack[]{new ItemStack(ModItems.weakBindingAgent), sanctusStack, new ItemStack(ModItems.crystallos)}, 3);
- AlchemyRecipeRegistry.registerRecipe(simpleCatalystStack, 2, new ItemStack[]{sugarStack, redstoneStack, redstoneStack, glowstoneDustStack, new ItemStack(Items.gunpowder)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.incendium), 5, new ItemStack[]{lavaBucketStack, new ItemStack(Items.blaze_powder), new ItemStack(Items.blaze_powder), new ItemStack(Blocks.netherrack), simpleCatalystStack}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aether), 5, new ItemStack[]{featherStack, featherStack, glowstoneDustStack, ghastTearStack, simpleCatalystStack}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.sanctus), 5, new ItemStack[]{glowstoneDustStack, new ItemStack(Items.gold_nugget), glowstoneDustStack, glassStack, simpleCatalystStack}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crepitous), 5, new ItemStack[]{new ItemStack(Items.gunpowder), new ItemStack(Items.gunpowder), cobblestoneStack, cobblestoneStack, simpleCatalystStack}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crystallos), 5, new ItemStack[]{new ItemStack(Blocks.ice), new ItemStack(Blocks.ice), new ItemStack(Blocks.snow), new ItemStack(Blocks.snow), simpleCatalystStack}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.terrae), 5, new ItemStack[]{new ItemStack(Blocks.dirt), new ItemStack(Blocks.sand), obsidianStack, obsidianStack, simpleCatalystStack}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aquasalus), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Items.dye, 1, 0), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.potionitem, 1, 0)}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.tennebrae), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Items.coal), new ItemStack(Items.coal), new ItemStack(Blocks.obsidian), new ItemStack(Items.clay_ball)}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.magicales), 5, new ItemStack[]{redstoneStack, simpleCatalystStack, new ItemStack(Items.gunpowder), new ItemStack(Items.glowstone_dust), new ItemStack(Items.glowstone_dust)}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.mundanePowerCatalyst), 10, new ItemStack[]{glowstoneDustStack, glowstoneDustStack, glowstoneDustStack, new ItemStack(ModItems.weakBindingAgent), simpleCatalystStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.mundaneLengtheningCatalyst), 10, new ItemStack[]{redstoneStack, redstoneStack, redstoneStack, new ItemStack(ModItems.weakBindingAgent), simpleCatalystStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.averagePowerCatalyst), 20, new ItemStack[]{new ItemStack(ModItems.mundanePowerCatalyst), new ItemStack(ModItems.mundanePowerCatalyst), new ItemStack(ModItems.standardBindingAgent)}, 4);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.averageLengtheningCatalyst), 20, new ItemStack[]{new ItemStack(ModItems.mundaneLengtheningCatalyst), new ItemStack(ModItems.mundaneLengtheningCatalyst), new ItemStack(ModItems.standardBindingAgent)}, 4);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.greaterPowerCatalyst), 30, new ItemStack[]{new ItemStack(ModItems.averagePowerCatalyst), new ItemStack(ModItems.averagePowerCatalyst), new ItemStack(ModItems.incendium)}, 4);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.greaterLengtheningCatalyst), 30, new ItemStack[]{new ItemStack(ModItems.averageLengtheningCatalyst), new ItemStack(ModItems.averageLengtheningCatalyst), new ItemStack(ModItems.aquasalus)}, 4);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.weakFillingAgent), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Items.nether_wart), redstoneStack, glowstoneDustStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.standardFillingAgent), 10, new ItemStack[]{new ItemStack(ModItems.weakFillingAgent), new ItemStack(ModItems.terrae)}, 3);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.enhancedFillingAgent), 25, new ItemStack[]{new ItemStack(ModItems.standardFillingAgent), new ItemStack(ModItems.aquasalus), new ItemStack(ModItems.magicales)}, 4);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(ModItems.demonBloodShard), incendiumStack, aquasalusStack, aetherStack}, 4);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(Items.nether_star), incendiumStack, aquasalusStack, aetherStack}, 4);
-
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.web), 2, new ItemStack[]{new ItemStack(Items.string), new ItemStack(Items.string), new ItemStack(Items.string), new ItemStack(Items.string), new ItemStack(Items.string)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.gunpowder, 2, 0), 2, new ItemStack[]{gunpowderStack, new ItemStack(Items.coal), new ItemStack(Blocks.sand)}, 1);
-
- AlchemyRecipeRegistry.registerRecipe(strengthenedCatalystStackCrafted, 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Items.dye, 1, 15), new ItemStack(Items.nether_wart)}, 3);
- AlchemyRecipeRegistry.registerRecipe(offensaStack, 10, new ItemStack[]{strengthenedCatalystStack, incendiumStack, new ItemStack(Items.arrow), new ItemStack(Items.flint), new ItemStack(Items.arrow)}, 3);
- AlchemyRecipeRegistry.registerRecipe(praesidiumStack, 10, new ItemStack[]{strengthenedCatalystStack, tennebraeStack, ironIngotStack, new ItemStack(Blocks.web), redstoneStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(orbisTerraeStack, 10, new ItemStack[]{strengthenedCatalystStack, terraeStack, gunpowderStack, new ItemStack(Blocks.netherrack), new ItemStack(Blocks.sand)}, 3);
- AlchemyRecipeRegistry.registerRecipe(concentratedCatalystStack, 10, new ItemStack[]{strengthenedCatalystStack, fracturedBoneStack, goldNuggetStack}, 4);
- AlchemyRecipeRegistry.registerRecipe(fracturedBoneStackCrafted, 2, new ItemStack[]{new ItemStack(Items.bone), new ItemStack(Items.bone), new ItemStack(Items.bone), new ItemStack(Items.bone), gunpowderStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(virtusStack, 20, new ItemStack[]{redstoneStack, new ItemStack(Items.coal), strengthenedCatalystStack, redstoneStack, gunpowderStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(reductusStack, 20, new ItemStack[]{redstoneStack, goldIngotStack, strengthenedCatalystStack, new ItemStack(Blocks.soul_sand), new ItemStack(Items.carrot)}, 3);
- AlchemyRecipeRegistry.registerRecipe(potentiaStack, 20, new ItemStack[]{glowstoneDustStack, strengthenedCatalystStack, lapisStack, lapisStack, new ItemStack(Items.quartz)}, 3);
-
- HomSpellRegistry.registerBasicSpell(new ItemStack(Items.flint_and_steel), new SpellFireBurst());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.ice), new SpellFrozenWater());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.tnt), new SpellExplosions());
- HomSpellRegistry.registerBasicSpell(new ItemStack(ModItems.apprenticeBloodOrb), new SpellHolyBlast());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Items.ghast_tear), new SpellWindGust());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Items.glowstone_dust), new SpellLightningBolt());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Items.water_bucket), new SpellWateryGrave());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.obsidian), new SpellEarthBender());
- HomSpellRegistry.registerBasicSpell(new ItemStack(Items.ender_pearl), new SpellTeleport());
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityFallenAngelID), new ItemStack[]{sanctusStack, sanctusStack, sanctusStack, aetherStack, tennebraeStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityLowerGuardianID), new ItemStack[]{cobblestoneStack, cobblestoneStack, terraeStack, tennebraeStack, new ItemStack(Items.iron_ingot), new ItemStack(Items.gold_nugget)}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityBileDemonID), new ItemStack[]{new ItemStack(Items.poisonous_potato), tennebraeStack, terraeStack, new ItemStack(Items.porkchop), new ItemStack(Items.egg), new ItemStack(Items.beef)}, new ItemStack[]{crepitousStack, crepitousStack, terraeStack, ironBlockStack, ironBlockStack, diamondStack}, new ItemStack[]{}, 0, 5);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityWingedFireDemonID), new ItemStack[]{aetherStack, incendiumStack, incendiumStack, incendiumStack, tennebraeStack, new ItemStack(Blocks.netherrack)}, new ItemStack[]{diamondStack, new ItemStack(Blocks.gold_block), magicalesStack, magicalesStack, new ItemStack(Items.fire_charge), new ItemStack(Blocks.coal_block)}, new ItemStack[]{}, 0, 5);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entitySmallEarthGolemID), new ItemStack[]{new ItemStack(Items.clay_ball), terraeStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityIceDemonID), new ItemStack[]{crystallosStack, crystallosStack, aquasalusStack, crystallosStack, sanctusStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityBoulderFistID), new ItemStack[]{terraeStack, sanctusStack, tennebraeStack, new ItemStack(Items.bone), new ItemStack(Items.cooked_beef), new ItemStack(Items.cooked_beef)}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityShadeID), new ItemStack[]{tennebraeStack, tennebraeStack, tennebraeStack, aetherStack, glassStack, new ItemStack(Items.glass_bottle)}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityAirElementalID), new ItemStack[]{aetherStack, aetherStack, aetherStack, aetherStack, aetherStack, aetherStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityWaterElementalID), new ItemStack[]{aquasalusStack, aquasalusStack, aquasalusStack, aquasalusStack, aquasalusStack, aquasalusStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityEarthElementalID), new ItemStack[]{terraeStack, terraeStack, terraeStack, terraeStack, terraeStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityFireElementalID), new ItemStack[]{incendiumStack, incendiumStack, incendiumStack, incendiumStack, incendiumStack, incendiumStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityShadeElementalID), new ItemStack[]{tennebraeStack, tennebraeStack, tennebraeStack, tennebraeStack, tennebraeStack, tennebraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
- SummoningRegistry.registerSummon(new SummoningHelperAW(entityHolyElementalID), new ItemStack[]{sanctusStack, sanctusStack, sanctusStack, sanctusStack, sanctusStack, sanctusStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
-// SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityMinorDemonGruntID), new ItemStack[]{incendiumStack, sanctusStack, sanctusStack, sanctusStack, sanctusStack, sanctusStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4);
-
- //Custom mobs
- EntityRegistry.registerModEntity(EntityFallenAngel.class, "FallenAngel", 20, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityLowerGuardian.class, "LowerGuardian", 21, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityBileDemon.class, "BileDemon", 22, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityWingedFireDemon.class, "WingedFireDemon", 23, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntitySmallEarthGolem.class, "SmallEarthGolem", 24, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityIceDemon.class, "IceDemon", 25, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityBoulderFist.class, "BoulderFist", 26, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityShade.class, "Shade", 27, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityAirElemental.class, "AirElemental", 28, this, 120, 3, true);
- EntityRegistry.registerModEntity(EntityWaterElemental.class, "WaterElemental", 29, this, 120, 3, true);
- EntityRegistry.registerModEntity(EntityEarthElemental.class, "EarthElemental", 30, this, 120, 3, true);
- EntityRegistry.registerModEntity(EntityFireElemental.class, "FireElemental", 31, this, 120, 3, true);
- EntityRegistry.registerModEntity(EntityShadeElemental.class, "ShadeElemental", 32, this, 120, 3, true);
- EntityRegistry.registerModEntity(EntityHolyElemental.class, "HolyElemental", 33, this, 120, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGrunt.class, "MinorDemonGrunt", 34, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntFire.class, "MinorDemonGruntFire", 35, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntWind.class, "MinorDemonGruntWind", 36, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntIce.class, "MinorDemonGruntIce", 37, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntEarth.class, "MinorDemonGruntEarth", 38, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardian.class, "MinorDemonGruntGuardian", 39, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianFire.class, "MinorDemonGruntGuardianFire", 40, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianWind.class, "MinorDemonGruntGuardianWind", 41, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianIce.class, "MinorDemonGruntGuardianIce", 42, this, 80, 3, true);
- EntityRegistry.registerModEntity(EntityMinorDemonGruntGuardianEarth.class, "MinorDemonGruntGuardianEarth", 43, this, 80, 3, true);
-
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.standardBindingAgent), 1, 3, this.standardBindingAgentDungeonChance / 5));
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.mundanePowerCatalyst), 1, 1, this.mundanePowerCatalystDungeonChance / 5));
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.mundaneLengtheningCatalyst), 1, 1, this.mundaneLengtheningCatalystDungeonChance / 5));
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.averagePowerCatalyst), 1, 1, this.averagePowerCatalystDungeonChance / 5));
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.averageLengtheningCatalyst), 1, 1, this.averageLengtheningCatalystDungeonChance / 5));
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.greaterPowerCatalyst), 1, 1, this.greaterPowerCatalystDungeonChance / 5));
- ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.greaterLengtheningCatalyst), 1, 1, this.greaterLengtheningCatalystDungeonChance / 5));
-
- //Ore Dictionary Registration
- OreDictionary.registerOre("oreCoal", Blocks.coal_ore);
- MeteorRegistry.registerMeteorParadigm(diamondStack, diamondMeteorArray, diamondMeteorRadius);
- MeteorRegistry.registerMeteorParadigm(stoneStack, stoneMeteorArray, stoneMeteorRadius);
- MeteorRegistry.registerMeteorParadigm(ironBlockStack, ironBlockMeteorArray, ironBlockMeteorRadius);
- MeteorRegistry.registerMeteorParadigm(new ItemStack(Items.nether_star), netherStarMeteorArray, netherStarMeteorRadius);
-
- ItemStack stickStack = new ItemStack(Items.stick, 1, craftingConstant);
-
- //Register spell component recipes
- ItemStack complexSpellCrystalStack = new ItemStack(ModItems.itemComplexSpellCrystal);
- ItemStack quartzRodStack = new ItemStack(ModItems.baseItems, 1, 0);
- ItemStack emptyCoreStack = new ItemStack(ModItems.baseItems, 1, 1);
- ItemStack magicalesCableStack = new ItemStack(ModItems.baseItems, 1, 2);
- ItemStack woodBraceStack = new ItemStack(ModItems.baseItems, 1, 3);
- ItemStack stoneBraceStack = new ItemStack(ModItems.baseItems, 1, 4);
- ItemStack projectileCoreStack = new ItemStack(ModItems.baseItems, 1, 5);
- ItemStack selfCoreStack = new ItemStack(ModItems.baseItems, 1, 6);
- ItemStack meleeCoreStack = new ItemStack(ModItems.baseItems, 1, 7);
- ItemStack toolCoreStack = new ItemStack(ModItems.baseItems, 1, 26);
- ItemStack paradigmBackPlateStack = new ItemStack(ModItems.baseItems, 1, 8);
- ItemStack outputCableStack = new ItemStack(ModItems.baseItems, 1, 9);
- ItemStack flameCoreStack = new ItemStack(ModItems.baseItems, 1, 10);
- ItemStack iceCoreStack = new ItemStack(ModItems.baseItems, 1, 11);
- ItemStack windCoreStack = new ItemStack(ModItems.baseItems, 1, 12);
- ItemStack earthCoreStack = new ItemStack(ModItems.baseItems, 1, 13);
- ItemStack inputCableStack = new ItemStack(ModItems.baseItems, 1, 14);
- ItemStack crackedRunicPlateStack = new ItemStack(ModItems.baseItems, 1, 15);
- ItemStack runicPlateStack = new ItemStack(ModItems.baseItems, 1, 16);
- ItemStack imbuedRunicPlateStack = new ItemStack(ModItems.baseItems, 1, 17);
- ItemStack defaultCoreStack = new ItemStack(ModItems.baseItems, 1, 18);
- ItemStack offenseCoreStack = new ItemStack(ModItems.baseItems, 1, 19);
- ItemStack defensiveCoreStack = new ItemStack(ModItems.baseItems, 1, 20);
- ItemStack environmentalCoreStack = new ItemStack(ModItems.baseItems, 1, 21);
- ItemStack powerCoreStack = new ItemStack(ModItems.baseItems, 1, 22);
- ItemStack costCoreStack = new ItemStack(ModItems.baseItems, 1, 23);
- ItemStack potencyCoreStack = new ItemStack(ModItems.baseItems, 1, 24);
- ItemStack obsidianBraceStack = new ItemStack(ModItems.baseItems, 1, 25);
- ItemStack etherealSlateStack = new ItemStack(ModItems.baseItems, 1, 27);
- ItemStack lifeShardStack = new ItemStack(ModItems.baseItems, 1, 28);
- ItemStack soulShardStack = new ItemStack(ModItems.baseItems, 1, 29);
- ItemStack soulRunicPlateStack = new ItemStack(ModItems.baseItems, 1, 30);
- ItemStack livingBraceStack = new ItemStack(ModItems.baseItems, 1, 31);
- ItemStack enderShardStack = new ItemStack(ModItems.baseItems, 1, 32);
- ItemStack enderShardCraftedStack = new ItemStack(ModItems.baseItems, 8, 32);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystal), "lsl", "sls", "lsl", 'l', lifeShardStack, 's', soulShardStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystal, 4, 1), "ss", "ss", 's', new ItemStack(ModBlocks.blockCrystal, 1, 0));
-
- ItemStack magicalesCraftedCableStack = new ItemStack(ModItems.baseItems, 5, 2);
- ItemStack crackedRunicPlateStackCrafted = new ItemStack(ModItems.baseItems, 2, 15);
-
- GameRegistry.addRecipe(quartzRodStack, "qqq", 'q', new ItemStack(Items.quartz));
- GameRegistry.addRecipe(emptyCoreStack, "gig", "nrn", "gig", 'n', goldIngotStack, 'i', ironIngotStack, 'g', glassStack, 'r', simpleCatalystStack);
- GameRegistry.addRecipe(magicalesCraftedCableStack, "sss", "mmm", "sss", 's', new ItemStack(Items.string), 'm', magicalesStack);
- GameRegistry.addRecipe(woodBraceStack, " il", "ili", "li ", 'l', new ItemStack(Blocks.log, 1, craftingConstant), 'i', new ItemStack(Items.string));
- GameRegistry.addRecipe(stoneBraceStack, " is", "isi", "si ", 'i', ironIngotStack, 's', reinforcedSlateStack);
- GameRegistry.addRecipe(obsidianBraceStack, " is", "ibi", "si ", 'i', obsidianStack, 's', reinforcedSlateStack, 'b', stoneBraceStack);
- GameRegistry.addRecipe(livingBraceStack, " gc", "gog", "sg ", 'g', goldIngotStack, 'o', obsidianBraceStack, 'c', lifeShardStack, 's', demonSlateStack);
-
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(projectileCoreStack, "mbm", "aca", "mom", 'c', emptyCoreStack, 'b', weakBloodShardStack, 'm', magicalesStack, 'o', magicianBloodOrbStack, 'a', new ItemStack(Items.arrow)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(selfCoreStack, "sbs", "ncn", "sos", 'c', emptyCoreStack, 's', sanctusStack, 'b', weakBloodShardStack, 'o', magicianBloodOrbStack, 'n', glowstoneDustStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(meleeCoreStack, "sbs", "ncn", "sos", 'c', emptyCoreStack, 's', incendiumStack, 'b', weakBloodShardStack, 'o', magicianBloodOrbStack, 'n', new ItemStack(Items.fire_charge)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(toolCoreStack, "sbs", "ncn", "sos", 'c', emptyCoreStack, 's', terraeStack, 'b', weakBloodShardStack, 'o', magicianBloodOrbStack, 'n', new ItemStack(Blocks.obsidian)));
-
- GameRegistry.addRecipe(paradigmBackPlateStack, "isi", "rgr", "isi", 'i', ironIngotStack, 'r', stoneStack, 'g', goldIngotStack, 's', reinforcedSlateStack);
- GameRegistry.addRecipe(outputCableStack, " si", "s c", " si", 's', stoneStack, 'i', ironIngotStack, 'c', simpleCatalystStack);
-
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(flameCoreStack, "mdm", "scs", "mom", 'm', incendiumStack, 'c', emptyCoreStack, 'o', magicianBloodOrbStack, 'd', diamondStack, 's', weakBloodShardStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(iceCoreStack, "mdm", "scs", "mom", 'm', crystallosStack, 'c', emptyCoreStack, 'o', magicianBloodOrbStack, 'd', diamondStack, 's', weakBloodShardStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(windCoreStack, "mdm", "scs", "mom", 'm', aetherStack, 'c', emptyCoreStack, 'o', magicianBloodOrbStack, 'd', diamondStack, 's', weakBloodShardStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(earthCoreStack, "mdm", "scs", "mom", 'm', terraeStack, 'c', emptyCoreStack, 'o', magicianBloodOrbStack, 'd', diamondStack, 's', weakBloodShardStack));
-
- GameRegistry.addRecipe(inputCableStack, "ws ", "rcs", "ws ", 'w', blankSlateStack, 's', stoneStack, 'r', imbuedSlateStack, 'c', simpleCatalystStack);
-
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(defaultCoreStack, "msm", "geg", "mom", 'm', strengthenedCatalystStack, 'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(offenseCoreStack, "msm", "geg", "mom", 'm', offensaStack, 'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(defensiveCoreStack, "msm", "geg", "mom", 'm', praesidiumStack, 'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(environmentalCoreStack, "msm", "geg", "mom", 'm', orbisTerraeStack, 'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
-
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(powerCoreStack, "msm", "geg", "mom", 'm', virtusStack, 'e', emptyCoreStack, 'o', masterBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(costCoreStack, "msm", "geg", "mom", 'm', reductusStack, 'e', emptyCoreStack, 'o', masterBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(potencyCoreStack, "msm", "geg", "mom", 'm', potentiaStack, 'e', emptyCoreStack, 'o', masterBloodOrbStack, 's', weakBloodShardStack, 'g', goldIngotStack));
-
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemHarvestSigil), "mgm", "gsg", "mom", 's', etherealSlateStack, 'o', archmageBloodOrbStack, 'g', new ItemStack(Items.golden_hoe), 'm', new ItemStack(Blocks.dirt)));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 5), "bsb", "grg", "bob", 's', etherealSlateStack, 'o', archmageBloodOrbStack, 'r', speedRuneStack, 'b', emptyBucketStack, 'g', goldIngotStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemCompressionSigil), "pop", "csc", "obo", 'b', masterBloodOrbStack, 'p', new ItemStack(Blocks.piston), 'c', new ItemStack(Blocks.crafting_table), 's', demonSlateStack, 'o', obsidianStack));
-
- AlchemyRecipeRegistry.registerRecipe(crackedRunicPlateStackCrafted, 10, new ItemStack[]{imbuedSlateStack, imbuedSlateStack, concentratedCatalystStack}, 4);
- AlchemyRecipeRegistry.registerRecipe(runicPlateStack, 30, new ItemStack[]{crackedRunicPlateStack, terraeStack}, 5);
- AlchemyRecipeRegistry.registerRecipe(imbuedRunicPlateStack, 100, new ItemStack[]{magicalesStack, incendiumStack, runicPlateStack, runicPlateStack, aquasalusStack}, 5);
- AlchemyRecipeRegistry.registerRecipe(complexSpellCrystalStack, 50, new ItemStack[]{new ItemStack(ModItems.blankSpell), weakBloodShardStack, weakBloodShardStack, diamondStack, goldIngotStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(soulRunicPlateStack, 150, new ItemStack[]{imbuedRunicPlateStack, soulShardStack, soulShardStack, weakBloodShardStack, diamondStack}, 6);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockConduit, 1, 0), "q q", "ccc", "q q", 'q', quartzRodStack, 'c', magicalesCableStack);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm, 1, 0), "gb ", "pcw", "gb ", 'p', paradigmBackPlateStack, 'c', projectileCoreStack, 'g', goldIngotStack, 'b', stoneBraceStack, 'w', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm, 1, 1), "gb ", "pcw", "gb ", 'p', paradigmBackPlateStack, 'c', selfCoreStack, 'g', goldIngotStack, 'b', stoneBraceStack, 'w', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm, 1, 2), "gb ", "pcw", "gb ", 'p', paradigmBackPlateStack, 'c', meleeCoreStack, 'g', goldIngotStack, 'b', stoneBraceStack, 'w', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm, 1, 3), "gb ", "pcw", "gb ", 'p', paradigmBackPlateStack, 'c', toolCoreStack, 'g', goldIngotStack, 'b', stoneBraceStack, 'w', outputCableStack);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect, 1, 0), "bgb", "ico", "bgb", 'c', flameCoreStack, 'b', stoneBraceStack, 'g', goldIngotStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect, 1, 1), "bgb", "ico", "bgb", 'c', iceCoreStack, 'b', stoneBraceStack, 'g', goldIngotStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect, 1, 2), "bgb", "ico", "bgb", 'c', windCoreStack, 'b', stoneBraceStack, 'g', goldIngotStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect, 1, 3), "bgb", "ico", "bgb", 'c', earthCoreStack, 'b', stoneBraceStack, 'g', goldIngotStack, 'i', inputCableStack, 'o', outputCableStack);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier, 1, 0), "bgb", "ico", "bgb", 'c', defaultCoreStack, 'i', inputCableStack, 'o', outputCableStack, 'b', stoneBraceStack, 'g', ironIngotStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier, 1, 1), "bgb", "ico", "bgb", 'c', offenseCoreStack, 'i', inputCableStack, 'o', outputCableStack, 'b', stoneBraceStack, 'g', ironIngotStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier, 1, 2), "bgb", "ico", "bgb", 'c', defensiveCoreStack, 'i', inputCableStack, 'o', outputCableStack, 'b', stoneBraceStack, 'g', ironIngotStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier, 1, 3), "bgb", "ico", "bgb", 'c', environmentalCoreStack, 'i', inputCableStack, 'o', outputCableStack, 'b', stoneBraceStack, 'g', ironIngotStack);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 0), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', woodBraceStack, 'p', crackedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 1), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', stoneBraceStack, 'p', runicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 2), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', obsidianBraceStack, 'p', imbuedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 3), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', livingBraceStack, 'p', soulRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 5), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', woodBraceStack, 'p', crackedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 6), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', stoneBraceStack, 'p', runicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 7), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', obsidianBraceStack, 'p', imbuedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 8), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', livingBraceStack, 'p', soulRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 10), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', woodBraceStack, 'p', crackedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 11), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', stoneBraceStack, 'p', runicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 12), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', obsidianBraceStack, 'p', imbuedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 13), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', livingBraceStack, 'p', soulRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack);
-
- GameRegistry.addRecipe(new ItemStack(ModItems.itemAttunedCrystal), "Sr ", " ar", "s S", 'r', quartzRodStack, 's', new ItemStack(Items.stick, 1, craftingConstant), 'a', strengthenedCatalystStack, 'S', stoneStack);
- GameRegistry.addRecipe(new ItemStack(ModItems.itemTankSegmenter), "gqi", " rq", "q g", 'q', quartzRodStack, 'i', ironIngotStack, 'r', strengthenedCatalystStack, 'g', goldIngotStack);
- GameRegistry.addRecipe(new ItemStack(ModItems.itemDestinationClearer), "qcq", "c c", "qcq", 'q', quartzRodStack, 'c', simpleCatalystStack);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockAlchemicalCalcinator), "pgp", "gsg", "ccc", 'p', crackedRunicPlateStack, 'g', glassStack, 's', strengthenedCatalystStack, 'c', cobblestoneStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystalBelljar), "GGG", "GcG", "www", 'G', glassStack, 'c', concentratedCatalystStack, 'w', new ItemStack(Blocks.wooden_slab, 1, craftingConstant));
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockReagentConduit), "isi", "scs", "isi", 'c', concentratedCatalystStack, 's', stringStack, 'i', ironIngotStack);
-
- GameRegistry.addRecipe(new ItemStack(ModItems.ritualDismantler), "a a", " b ", 'a', Blocks.redstone_torch, 'b', ModItems.itemRitualDiviner);
-
- GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 5, 15), fracturedBoneStack);
-
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemSigilOfSupression), "wtl", "wvl", "wol", 'v', new ItemStack(ModItems.voidSigil), 't', new ItemStack(ModBlocks.blockTeleposer), 'o', masterBloodOrbStack, 'l', lavaBucketStack, 'w', waterBucketStack));
- GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemSigilOfEnderSeverance), "ptp", "ese", "pop", 's', new ItemStack(ModItems.demonicSlate), 't', weakBloodShardStack, 'o', masterBloodOrbStack, 'e', new ItemStack(Items.ender_eye), 'p', new ItemStack(Items.ender_pearl)));
-
- GameRegistry.addShapelessRecipe(enderShardCraftedStack, weakBloodShardStack, new ItemStack(Items.ender_pearl));
-
- GameRegistry.addRecipe(new ItemStack(ModItems.inputRoutingFocus), "sgs", "geg", "sgs", 'e', enderShardStack, 's', stickStack, 'g', glassStack);
- GameRegistry.addRecipe(new ItemStack(ModItems.outputRoutingFocus, 1, 0), "sgs", "geg", "sgs", 'e', enderShardStack, 's', stickStack, 'g', stoneStack);
- GameRegistry.addRecipe(new ItemStack(ModItems.outputRoutingFocus, 1, 1), "sgs", "geg", "sgs", 'e', enderShardStack, 's', stickStack, 'g', new ItemStack(Blocks.sandstone));
- GameRegistry.addRecipe(new ItemStack(ModItems.outputRoutingFocus, 1, 2), "sgs", "geg", "sgs", 'e', enderShardStack, 's', stickStack, 'g', new ItemStack(Items.dye, 1, craftingConstant));
- GameRegistry.addRecipe(new ItemStack(ModItems.outputRoutingFocus, 1, 3), "sgs", "geg", "sgs", 'e', enderShardStack, 's', stickStack, 'g', obsidianStack);
- GameRegistry.addRecipe(new ItemStack(ModItems.outputRoutingFocus, 1, 4), "sgs", "geg", "sgs", 'e', enderShardStack, 's', stickStack, 'g', stringStack);
-
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockStabilityGlyph), "1s1", "grg", "bob", 'o', transcendentBloodOrbStack, 'r', bloodRuneStack, '1', crepitousStack, 'g', etherealSlateStack, 'b', praesidiumStack, 's', magicalesStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockEnchantmentGlyph, 1, 0), "1s1", "grg", "bob", 'o', transcendentBloodOrbStack, 'r', bloodRuneStack, 'g', etherealSlateStack, 'b', magicalesStack, '1', offensaStack, 's', lifeShardStack);
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockEnchantmentGlyph, 1, 1), "1s1", "grg", "bob", 'o', transcendentBloodOrbStack, 'r', bloodRuneStack, 'g', etherealSlateStack, 'b', magicalesStack, '1', virtusStack, 's', soulShardStack);
-
- GameRegistry.addRecipe(dawnRitualDivinerStack, " d ", "srs", " d ", 'd', new ItemStack(ModItems.dawnScribeTool), 's', etherealSlateStack, 'r', duskRitualDivinerStack);
-
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.flint, 2, 0), 1, new ItemStack[]{new ItemStack(Blocks.gravel), new ItemStack(Items.flint)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.grass), 2, new ItemStack[]{new ItemStack(Blocks.dirt), new ItemStack(Items.dye, 1, 15), new ItemStack(Items.wheat_seeds), new ItemStack(Items.wheat_seeds)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.leather, 3, 0), 2, new ItemStack[]{new ItemStack(Items.rotten_flesh), new ItemStack(Items.rotten_flesh), new ItemStack(Items.rotten_flesh), waterBucketStack, new ItemStack(Items.flint)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.bread), 1, new ItemStack[]{new ItemStack(Items.wheat), new ItemStack(Items.sugar)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.fire_charge, 5, 0), 3, new ItemStack[]{new ItemStack(Items.coal), new ItemStack(Items.blaze_powder), gunpowderStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.sand, 2, 0), 1, new ItemStack[]{new ItemStack(Blocks.cobblestone), gunpowderStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.clay, 4, 0), 2, new ItemStack[]{new ItemStack(Blocks.hardened_clay, 1, craftingConstant), new ItemStack(Blocks.hardened_clay, 1, craftingConstant), new ItemStack(Blocks.hardened_clay, 1, craftingConstant), new ItemStack(Blocks.hardened_clay, 1, craftingConstant), waterBucketStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.string, 4, 0), 1, new ItemStack[]{new ItemStack(Blocks.wool, 1, craftingConstant), new ItemStack(Items.flint)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.gravel, 2, 0), 1, new ItemStack[]{new ItemStack(Blocks.stone), gunpowderStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.obsidian), 1, new ItemStack[]{waterBucketStack, lavaBucketStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.paper), 1, new ItemStack[]{new ItemStack(Items.reeds)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.soul_sand, 3, 0), 3, new ItemStack[]{new ItemStack(Blocks.sand), new ItemStack(Blocks.sand), new ItemStack(Blocks.sand), waterBucketStack, weakBloodShardStack}, 3);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.mycelium, 1, 0), 5, new ItemStack[]{new ItemStack(Blocks.grass), new ItemStack(Blocks.brown_mushroom), new ItemStack(Blocks.red_mushroom)}, 2);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.ice), 2, new ItemStack[]{waterBucketStack, new ItemStack(Items.snowball)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.potionitem, 1, 0), 1, new ItemStack[]{new ItemStack(Items.glass_bottle), new ItemStack(Blocks.cactus)}, 1);
- AlchemyRecipeRegistry.registerRecipe(waterBucketStack, 1, new ItemStack[]{emptyBucketStack, new ItemStack(Blocks.cactus)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.glass_bottle, 3), 1, new ItemStack[]{glassStack, glassStack, glassStack}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.ghast_tear, 2), 100, new ItemStack[]{ghastTearStack, concentratedCatalystStack, weakBloodShardStack, new ItemStack(Blocks.soul_sand), new ItemStack(Blocks.soul_sand)}, 5);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.coal, 5), 1, new ItemStack[]{new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1)}, 1);
- AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.clay_ball, 4), 5, new ItemStack[]{new ItemStack(Blocks.sand), waterBucketStack}, 2);
-
- ItemIncense.registerIncenseRecipes();
- GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrucible), "i i", "sis", " S ", 's', new ItemStack(Blocks.stone_slab), 'i', ironIngotStack, 'S', stoneStack);
- }
-
- @EventHandler
- public void postInit(FMLPostInitializationEvent event)
- {
- proxy.registerPostSideObjects();
- //TODO Thaumcraft Integration
-/* if (Loader.isModLoaded("Thaumcraft"))
- {
- isThaumcraftLoaded = true;
-
- try
- {
- //do stuff
- ModItems.sanguineHelmet = new ItemSanguineArmour(0).setUnlocalizedName("sanguineHelmet");
- ModItems.sanguineRobe = new ItemSanguineArmour(1).setUnlocalizedName("sanguineRobe");
- ModItems.sanguinePants = new ItemSanguineArmour(2).setUnlocalizedName("sanguinePants");
- ModItems.sanguineBoots = new ItemSanguineArmour(3).setUnlocalizedName("sanguineBoots");
- GameRegistry.registerItem(ModItems.sanguineHelmet, "sanguineHelmet");
- GameRegistry.registerItem(ModItems.sanguineRobe, "sanguineRobe");
- GameRegistry.registerItem(ModItems.sanguinePants, "sanguinePants");
- GameRegistry.registerItem(ModItems.sanguineBoots, "sanguineBoots");
-
- ItemStack itemGoggles = ItemApi.getItem("itemGoggles", 0);
- Item itemThaumChest = GameRegistry.findItem("Thaumcraft", "ItemChestplateThaumium");
- Item itemThaumLeggings = GameRegistry.findItem("Thaumcraft", "ItemLeggingsThaumium");
- Item itemThaumBoots = GameRegistry.findItem("Thaumcraft", "ItemBootsThaumium");
-
- AspectList aspectList = new AspectList();
- aspectList.add(Aspect.ARMOR, 5).add(Aspect.MAGIC, 5);
-
- ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguineHelmet), aspectList);
- ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguineRobe), aspectList);
- ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguinePants), aspectList);
- ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguineBoots), aspectList);
-
- if (itemGoggles != null)
- {
- BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguineHelmet), itemGoggles);
- }
-
- if (itemThaumChest != null)
- {
- BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguineRobe), new ItemStack(itemThaumChest));
- }
-
- if (itemThaumLeggings != null)
- {
- BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguinePants), new ItemStack(itemThaumLeggings));
- }
-
- if (itemThaumBoots != null)
- {
- BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguineBoots), new ItemStack(itemThaumBoots));
- }
-
- //LogHelper.log(Level.INFO, "Loaded RP2 World addon");
- } catch (Exception e)
- {
- //LogHelper.log(Level.SEVERE, "Could not load RP2 World addon");
- e.printStackTrace(System.err);
- }
- } else
- {
- isThaumcraftLoaded = false;
- }
-
- if(Loader.isModLoaded("guideapi"))
- {
- long initialTime = System.nanoTime();
- RecipeHolder.init();
- long finalTime = System.nanoTime();
- AlchemicalWizardry.logger.info("Recipe Holder initialized: took " + (finalTime - initialTime)/1000000f + "ms.");
-
- ModItems.itemMailCatalogue = new ItemMailOrderCatalogue().setUnlocalizedName("itemMailCatalogue");
- GameRegistry.registerItem(ModItems.itemMailCatalogue, "itemMailCatalogue");
- GameRegistry.addShapelessRecipe(new ItemStack(ModItems.itemMailCatalogue), new ItemStack(Items.book), new ItemStack(Items.dye, 1, 0), new ItemStack(Items.feather), new ItemStack(Blocks.glass, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(Blocks.glass, 1, OreDictionary.WILDCARD_VALUE));
-
- registerBMBook();
- }
-
- if (Loader.isModLoaded("Forestry"))
- {
- isForestryLoaded = true;
-
- ModItems.itemBloodFrame = new ItemBloodFrame().setUnlocalizedName("bloodFrame");
-
- Item provenFrame = GameRegistry.findItem("Forestry", "frameImpregnated");
-
- if(provenFrame !=null)
- {
- AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.itemBloodFrame), new ItemStack(provenFrame, 1), 3, 30000, 20, 20, false);
- }
- } else
- {
- isForestryLoaded = false;
- }
-
- if (Loader.isModLoaded("harvestcraft"))
- {
- PamHarvestCompatRegistry.registerPamHandlers();
- AlchemicalWizardry.logger.info("Loaded Harvestcraft Handlers!");
- }
-
- if(Loader.isModLoaded("MineTweaker3"))
- {
- MineTweakerIntegration.register();
- AlchemicalWizardry.logger.info("Loaded MineTweaker 3 Integration");
- }
-
-// if(Loader.isModLoaded("AgriCraft"))
-// {
-// HarvestRegistry.registerHarvestHandler(new AgriCraftCropHarvestHandler());
-// AlchemicalWizardry.logger.info("Loaded AgriCraft Handlers!");
-// }
-*/
- isThaumcraftLoaded = Loader.isModLoaded("Thaumcraft"); //this is temp.
- isBotaniaLoaded = Loader.isModLoaded("Botania");
- isPneumaticCraftLoaded = Loader.isModLoaded("PneumaticCraft");
- isFMPLoaded = Loader.isModLoaded("ForgeMultipart");
-
- BloodMagicConfiguration.loadBlacklist();
- BloodMagicConfiguration.blacklistRituals();
-
- DemonVillageLootRegistry.init();
-
- this.initCompressionHandlers();
-
-
-// if(parseTextFiles)
-// this.parseTextFile();
-
-// this.createItemTextureFiles();
- }
-
-/* @Optional.Method(modid = "guideapi")
- public static void registerBMBook()
- {
- BloodMagicGuide.registerGuide();
- }
-*/
- public static void blacklistAccelerators()
- {
- if (Loader.isModLoaded("Torcherino"))
- {
- FMLInterModComms.sendMessage("Torcherino", "blacklist-tile", TEAltar.class.getName());
- FMLInterModComms.sendMessage("Torcherino", "blacklist-tile", TEMasterStone.class.getName());
- }
- if (Loader.isModLoaded("ChromatiCraft"))
- {
- try
- {
- Class api = Class.forName("Reika.ChromatiCraft.API.AcceleratorBlacklist");
- Class reason = Class.forName("Reika.ChromatiCraft.API.AcceleratorBlacklist$BlacklistReason");
- Object exploit = Enum.valueOf(reason,"EXPLOIT");
- Method add = api.getMethod("addBlacklist", Class.class, String.class, reason);
- add.invoke(null, TEAltar.class, TEAltar.class.getSimpleName(),exploit);
- add.invoke(null, TEMasterStone.class, TEMasterStone.class.getSimpleName(),exploit);
- } catch (Exception e)
- {
- logger.log(Level.ERROR, "ChromatiCraft Accelerator Blacklist Failure");
- }
-
- }
- }
-
- public static void blacklistDemons()
- {
- String[] mobs = new String[]{"FallenAngel","LowerGuardian","BileDemon","WingedFireDemon","SmallEarthGolem","IceDemon","BoulderFist","Shade","AirElemental",
- "WaterElemental","EarthElemental","FireElemental","ShadeElemental","HolyElemental","MinorDemonGrunt","MinorDemonGruntFire","MinorDemonGruntWind",
- "MinorDemonGruntIce","MinorDemonGruntEarth", "MinorDemonGruntGuardian","MinorDemonGruntGuardianFire","MinorDemonGruntGuardianWind","MinorDemonGruntGuardianIce",
- "MinorDemonGruntGuardianEarth"};
- Class[] mobClasses = new Class[]{EntityFallenAngel.class,EntityLowerGuardian.class,EntityBileDemon.class,EntityWingedFireDemon.class,EntitySmallEarthGolem.class,EntityIceDemon.class,
- EntityBoulderFist.class,EntityShade.class,EntityAirElemental.class,EntityWaterElemental.class,EntityEarthElemental.class,EntityFireElemental.class,EntityShadeElemental.class,
- EntityHolyElemental.class,EntityMinorDemonGrunt.class,EntityMinorDemonGruntFire.class,EntityMinorDemonGruntWind.class,EntityMinorDemonGruntIce.class,
- EntityMinorDemonGruntEarth.class,EntityMinorDemonGruntGuardian.class,EntityMinorDemonGruntGuardianFire.class,EntityMinorDemonGruntGuardianWind.class,
- EntityMinorDemonGruntGuardianIce.class,EntityMinorDemonGruntGuardianEarth.class};
- if (Loader.isModLoaded("MineFactoryReloaded"))
- {
- ModContainer bloodMagic = Loader.instance().activeModContainer();
- Method method = null;
- Constructor constructor = null;
- try
- {
- constructor = FMLInterModComms.IMCMessage.class.getDeclaredConstructor(String.class, Object.class);
- constructor.setAccessible(true);
- method = FMLInterModComms.class.getDeclaredMethod("enqueueMessage", Object.class, String.class, FMLInterModComms.IMCMessage.class);
- method.setAccessible(true);
- }
- catch(Exception e)
- {
- logger.log(Level.ERROR, "Grinder Message reflection failed");
- }
- for (int i = 0; i maxLines)
-// {
-// changePage = true;
-// }
-// if(changePage) //Encode into current entry, then move to next entry
-// {
-// String[] newStrings = new String[currentPage + 1 + 1]; //Just to show that it is increasing
-// for(int i=0; i 3L)
-//// {
-////
-//// }else
-// {
-// PrintWriter writer = new PrintWriter(file);
-// for(String stri : strings)
-// {
-// writer.println(stri);
-// }
-// writer.close();
-// }
-//
-////
-// }
-//
-// Minecraft.getMinecraft().fontRendererObj.setUnicodeFlag(false);
-//
-// } catch (FileNotFoundException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// } catch (IOException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// }
-// }
-// }
-
-// @Mod.EventHandler
-// public void initCommands(FMLServerStartingEvent event)
-// {
-// event.registerServerCommand(new CommandBind());
-// event.registerServerCommand(new CommandUnbind());
-// event.registerServerCommand(new CommandSN());
-// event.registerServerCommand(new CommandDownloadGAPI());
-// }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java
deleted file mode 100644
index 3eed0062..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java
+++ /dev/null
@@ -1,301 +0,0 @@
-package WayofTime.alchemicalWizardry;
-
-import java.io.File;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map.Entry;
-
-import net.minecraft.entity.EntityList;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraftforge.common.config.Configuration;
-import net.minecraftforge.fml.common.FMLCommonHandler;
-import net.minecraftforge.fml.relauncher.Side;
-import WayofTime.alchemicalWizardry.api.rituals.Rituals;
-import WayofTime.alchemicalWizardry.client.renderer.ColourThreshold;
-import WayofTime.alchemicalWizardry.client.renderer.RenderHelper;
-import WayofTime.alchemicalWizardry.common.demonVillage.DemonVillagePath;
-import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.TEDemonPortal;
-import WayofTime.alchemicalWizardry.common.items.armour.BoundArmour;
-import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorParadigm;
-
-/**
- * Created with IntelliJ IDEA.
- * User: Pokefenn
- * Date: 17/01/14
- * Time: 19:50
- */
-public class BloodMagicConfiguration
-{
- private static final String DEFAULT_COLOR_LIST = "100,f; 80,7; 60,e; 40,6; 25,c; 10,4";
- public static final List colorList = new ArrayList();
-
- public static Configuration config;
-
- public static String[] blocksToBeDisabled;
- public static String[] itemsToBeDisabled;
- public static String[] teleposerBlacklist;
- public static String[] blacklist = {};
-
- public static void init(File configFile)
- {
- for (String s : DEFAULT_COLOR_LIST.split(";"))
- {
- String[] ct = s.split(",");
- colorList.add(new ColourThreshold(Integer.valueOf(ct[0].trim()), ct[1].trim()));
- }
-
- config = new Configuration(configFile);
-
- try
- {
- config.load();
- syncConfig();
-
- } catch (Exception e)
- {
- AlchemicalWizardry.logger.error("There has been a problem loading the configuration, go ask on the forums :p");
-
- } finally
- {
- config.save();
- }
- }
-
- public static void syncConfig()
- {
- AlchemicalWizardry.standardBindingAgentDungeonChance = config.get("Dungeon Loot Chances", "standardBindingAgent", 30).getInt();
- AlchemicalWizardry.mundanePowerCatalystDungeonChance = config.get("Dungeon Loot Chances", "mundanePowerCatalyst", 20).getInt();
- AlchemicalWizardry.averagePowerCatalystDungeonChance = config.get("Dungeon Loot Chances", "averagePowerCatalyst", 10).getInt();
- AlchemicalWizardry.greaterPowerCatalystDungeonChance = config.get("Dungeon Loot Chances", "greaterPowerCatalyst", 5).getInt();
- AlchemicalWizardry.mundaneLengtheningCatalystDungeonChance = config.get("Dungeon Loot Chances", "mundaneLengtheningCatalyst", 20).getInt();
- AlchemicalWizardry.averageLengtheningCatalystDungeonChance = config.get("Dungeon Loot Chances", "averageLengtheningCatalyst", 10).getInt();
- AlchemicalWizardry.greaterLengtheningCatalystDungeonChance = config.get("Dungeon Loot Chances", "greaterLengtheningCatalyst", 5).getInt();
- AlchemicalWizardry.customPotionDrowningID = config.get("Potion ID", "Drowning", 100).getInt();
- AlchemicalWizardry.customPotionBoostID = config.get("Potion ID", "Boost", 101).getInt();
- AlchemicalWizardry.customPotionProjProtID = config.get("Potion ID", "ProjProt", 102).getInt();
- AlchemicalWizardry.customPotionInhibitID = config.get("Potion ID", "Inhibit", 103).getInt();
- AlchemicalWizardry.customPotionFlightID = config.get("Potion ID", "Flight", 104).getInt();
- AlchemicalWizardry.customPotionReciprocationID = config.get("Potion ID", "Reciprocation", 105).getInt();
- AlchemicalWizardry.customPotionFlameCloakID = config.get("Potion ID", "FlameCloak", 106).getInt();
- AlchemicalWizardry.customPotionIceCloakID = config.get("Potion ID", "IceCloak", 107).getInt();
- AlchemicalWizardry.customPotionHeavyHeartID = config.get("Potion ID", "HeavyHeart", 108).getInt();
- AlchemicalWizardry.customPotionFireFuseID = config.get("Potion ID", "FireFuse", 109).getInt();
- AlchemicalWizardry.customPotionPlanarBindingID = config.get("Potion ID", "PlanarBinding", 110).getInt();
- AlchemicalWizardry.customPotionSoulFrayID = config.get("Potion ID", "SoulFray", 111).getInt();
- AlchemicalWizardry.customPotionSoulHardenID = config.get("Potion ID", "SoulHarden", 112).getInt();
- AlchemicalWizardry.customPotionDeafID = config.get("Potion ID", "Deaf", 113).getInt();
- AlchemicalWizardry.customPotionFeatherFallID = config.get("Potion ID", "FeatherFall", 114).getInt();
- AlchemicalWizardry.customPotionDemonCloakID = config.get("Potion ID", "DemonCloak", 115).getInt();
- AlchemicalWizardry.customPotionAmphibianID = config.get("Potion ID", "Amphibian", 116).getInt();
-
- MeteorParadigm.maxChance = config.get("meteor", "maxChance", 1000).getInt();
- AlchemicalWizardry.doMeteorsDestroyBlocks = config.get("meteor", "doMeteorsDestroyBlocks", true).getBoolean(true);
- AlchemicalWizardry.diamondMeteorArray = config.get("meteor", "diamondMeteor", new String[]{"oreDiamond", "100", "oreEmerald", "75", "oreCinnabar", "200", "oreAmber", "200"}).getStringList();
- AlchemicalWizardry.diamondMeteorRadius = config.get("meteor", "diamondMeteorRadius", 5).getInt();
- AlchemicalWizardry.stoneMeteorArray = config.get("meteor", "stoneBlockMeteor", new String[]{"oreCoal", "150", "oreApatite", "50", "oreIron", "50"}).getStringList();
- AlchemicalWizardry.stoneMeteorRadius = config.get("meteor", "stoneMeteorRadius", 16).getInt();
- AlchemicalWizardry.ironBlockMeteorArray = config.get("meteor", "ironBlockMeteor", new String[]{"oreIron", "400", "oreGold", "30", "oreCopper", "200", "oreTin", "140", "oreSilver", "70", "oreLead", "80", "oreLapis", "60", "oreRedstone", "100"}).getStringList();
- AlchemicalWizardry.ironBlockMeteorRadius = config.get("meteor", "ironBlockMeteorRadius", 7).getInt();
- AlchemicalWizardry.netherStarMeteorArray = config.get("meteor", "netherStarMeteor", new String[]{"oreDiamond", "150", "oreEmerald", "100", "oreQuartz", "250", "oreSunstone", "5", "oreMoonstone", "50", "oreIridium", "5", "oreCertusQuartz", "150"}).getStringList();
- AlchemicalWizardry.netherStarMeteorRadius = config.get("meteor", "netherStarMeteorRadius", 3).getInt();
-
- AlchemicalWizardry.allowedCrushedOresArray = config.get("oreCrushing", "allowedOres", new String[]{"iron", "gold", "copper", "tin", "lead", "silver", "osmium"}).getStringList();
-
- AlchemicalWizardry.wimpySettings = config.get("WimpySettings", "IDontLikeFun", false).getBoolean(false);
- AlchemicalWizardry.respawnWithDebuff = config.get("WimpySettings", "RespawnWithDebuff", true).getBoolean();
- AlchemicalWizardry.causeHungerWithRegen = config.get("WimpySettings", "causeHungerWithRegen", true).getBoolean();
- AlchemicalWizardry.causeHungerChatMessage = config.get("WimpySettings", "causeHungerChatMessage", true).getBoolean();
-// AlchemicalWizardry.lockdownAltar = config.get("WimpySettings", "LockdownAltarWithRegen", true).getBoolean();
- AlchemicalWizardry.lockdownAltar = false;
-
- AlchemicalWizardry.ritualDisabledWater = config.get("Ritual Blacklist", "Ritual of the Full Spring", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledLava = config.get("Ritual Blacklist", "Serenade of the Nether", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledGreenGrove = config.get("Ritual Blacklist", "Ritual of the Green Grove", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledInterdiction = config.get("Ritual Blacklist", "Interdiction Ritual", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledContainment = config.get("Ritual Blacklist", "Ritual of Containment", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledBinding = config.get("Ritual Blacklist", "Ritual of Binding", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledUnbinding = config.get("Ritual Blacklist", "Ritual of Unbinding", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledHighJump = config.get("Ritual Blacklist", "Ritual of the High Jump", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledMagnetism = config.get("Ritual Blacklist", "Ritual of Magnetism", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledCrusher = config.get("Ritual Blacklist", "Ritual of the Crusher", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledSpeed = config.get("Ritual Blacklist", "Ritual of Speed", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledAnimalGrowth = config.get("Ritual Blacklist", "Ritual of the Shepherd", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledSuffering = config.get("Ritual Blacklist", "Well of Suffering", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledRegen = config.get("Ritual Blacklist", "Ritual of Regeneration", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledFeatheredKnife = config.get("Ritual Blacklist", "Ritual of the Feathered Knife", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledFeatheredEarth = config.get("Ritual Blacklist", "Ritual of the Feathered Earth", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledGaia = config.get("Ritual Blacklist", "Ritual of Gaia's Transformation", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledCondor = config.get("Ritual Blacklist", "Reverence of the Condor", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledFallingTower = config.get("Ritual Blacklist", "Mark of the Falling Tower", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledBalladOfAlchemy = config.get("Ritual Blacklist", "Ballad of Alchemy", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledExpulsion = config.get("Ritual Blacklist", "Aura of Expulsion", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledSuppression = config.get("Ritual Blacklist", "Dome of Supression", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledZephyr = config.get("Ritual Blacklist", "Call of the Zephyr", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledHarvest = config.get("Ritual Blacklist", "Reap of the Harvest Moon", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledConduit = config.get("Ritual Blacklist", "Cry of the Eternal Soul", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledEllipsoid = config.get("Ritual Blacklist", "Focus of the Ellipsoid", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledEvaporation = config.get("Ritual Blacklist", "Song of Evaporation", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledSpawnWard = config.get("Ritual Blacklist", "Ward of Sacrosanctity", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledVeilOfEvil = config.get("Ritual Blacklist", "Veil of Evil", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledFullStomach = config.get("Ritual Blacklist", "Requiem of the Satiated Stomach", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledConvocation = config.get("Ritual Blacklist", "Convocation of the Damned", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledSymmetry = config.get("Ritual Blacklist", "Symmetry of the Omega", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledStalling = config.get("Ritual Blacklist", "Duet of the Fused Souls", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledCrafting = config.get("Ritual Blacklist", "Rhythm of the Beating Anvil", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledPhantomHands = config.get("Ritual Blacklist", "Orchestra of the Phantom Hands", false).getBoolean(false);
- AlchemicalWizardry.ritualDisabledSphereIsland = config.get("Ritual Blacklist", "Birth of the Bastion", false).getBoolean(false);
-
- AlchemicalWizardry.potionDisableRegen = config.get("Alchemy Potion Blacklist", "Regeneration", false).getBoolean(false);
- AlchemicalWizardry.potionDisableNightVision = config.get("Alchemy Potion Blacklist", "Night Vision", false).getBoolean(false);
- AlchemicalWizardry.potionDisableFireResistance = config.get("Alchemy Potion Blacklist", "Fire Resistance", false).getBoolean(false);
- AlchemicalWizardry.potionDisableWaterBreathing = config.get("Alchemy Potion Blacklist", "Water Breathing", false).getBoolean(false);
- AlchemicalWizardry.potionDisableMoveSpeed = config.get("Alchemy Potion Blacklist", "Move Speed", false).getBoolean(false);
- AlchemicalWizardry.potionDisableInstantHealth = config.get("Alchemy Potion Blacklist", "Instant Health", false).getBoolean(false);
- AlchemicalWizardry.potionDisablePoison = config.get("Alchemy Potion Blacklist", "Poison", false).getBoolean(false);
- AlchemicalWizardry.potionDisableBlindness = config.get("Alchemy Potion Blacklist", "Blindness", false).getBoolean(false);
- AlchemicalWizardry.potionDisableWeakness = config.get("Alchemy Potion Blacklist", "Weakness", false).getBoolean(false);
- AlchemicalWizardry.potionDisableStrength = config.get("Alchemy Potion Blacklist", "Strength", false).getBoolean(false);
- AlchemicalWizardry.potionDisableJumpBoost = config.get("Alchemy Potion Blacklist", "Jump Boost", false).getBoolean(false);
- AlchemicalWizardry.potionDisableSlowness = config.get("Alchemy Potion Blacklist", "Slowness", false).getBoolean(false);
- AlchemicalWizardry.potionDisableMining = config.get("Alchemy Potion Blacklist", "Mining Speed", false).getBoolean(false);
- AlchemicalWizardry.potionDisableDrowning = config.get("Alchemy Potion Blacklist", "Drowning", false).getBoolean(false);
- AlchemicalWizardry.potionDisableInvisibility = config.get("Alchemy Potion Blacklist", "Invisibility", false).getBoolean(false);
- AlchemicalWizardry.potionDisableResistance = config.get("Alchemy Potion Blacklist", "Resistance", false).getBoolean(false);
- AlchemicalWizardry.potionDisableSaturation = config.get("Alchemy Potion Blacklist", "Saturation", false).getBoolean(false);
- AlchemicalWizardry.potionDisableHealthBoost = config.get("Alchemy Potion Blacklist", "Health Boost", false).getBoolean(false);
- AlchemicalWizardry.potionDisableAbsorption = config.get("Alchemy Potion Blacklist", "Absorption", false).getBoolean(false);
- AlchemicalWizardry.potionDisableBoost = config.get("Alchemy Potion Blacklist", "Boost", false).getBoolean(false);
- AlchemicalWizardry.potionDisableFlight = config.get("Alchemy Potion Blacklist", "Flight", false).getBoolean(false);
- AlchemicalWizardry.potionDisableReciprocation = config.get("Alchemy Potion Blacklist", "Reciprocation", false).getBoolean(false);
- AlchemicalWizardry.potionDisablePlanarBinding = config.get("Alchemy Potion Blacklist", "Planar Binding", false).getBoolean(false);
- AlchemicalWizardry.potionDisableSoulFray = config.get("Alchemy Potion Blacklist", "Soul Fray", false).getBoolean(false);
- AlchemicalWizardry.potionDisableSoulHarden = config.get("Alchemy Potion Blacklist", "Soul Harden", false).getBoolean(false);
- AlchemicalWizardry.potionDisableDeafness = config.get("Alchemy Potion Blacklist", "Deafness", false).getBoolean(false);
-
- teleposerBlacklist = config.get("Teleposer Blacklist", "Blacklist", blacklist, "Stops specified blocks from being teleposed. Put entries on new lines. Valid syntax is: \nmodid:blockname:meta").getStringList();
-
- String tempDemonConfigs = "Demon Configs";
- TEDemonPortal.buildingGridDelay = config.get(tempDemonConfigs, "Building Grid Delay", 25).getInt();
- TEDemonPortal.roadGridDelay = config.get(tempDemonConfigs, "Road Grid Delay", 10).getInt();
- TEDemonPortal.demonHoardDelay = config.get(tempDemonConfigs, "Demon Hoard Delay", 40).getInt();
- TEDemonPortal.demonRoadChance = (float)(config.get(tempDemonConfigs, "Demon Road Chance", 0.3f).getDouble());
- TEDemonPortal.demonHouseChance = (float)(config.get(tempDemonConfigs, "Demon House Chance", 0.6f).getDouble());
- TEDemonPortal.demonPortalChance = (float)(config.get(tempDemonConfigs, "Demon Portal Chance", 0.5f).getDouble());
- TEDemonPortal.demonHoardChance = (float)(config.get(tempDemonConfigs, "Demon Hoard Chance", 0.8f).getDouble());
- TEDemonPortal.portalTickRate = (float)(config.get(tempDemonConfigs, "Portal Tick Rate", 0.1f).getDouble());
-
- DemonVillagePath.canGoDown = config.get(tempDemonConfigs, "canRoadGoDown", true).getBoolean();
- DemonVillagePath.tunnelIfObstructed = config.get(tempDemonConfigs, "tunnelIfObstructed", false).getBoolean();
- DemonVillagePath.createBridgeInAirIfObstructed = config.get(tempDemonConfigs, "createBridgeInAirIfObstructed", false).getBoolean();
-
- TEDemonPortal.limit = config.get(tempDemonConfigs, "demonGridSpaceLimit", 100).getInt();
- TEDemonPortal.demonLimit = config.get(tempDemonConfigs, "demonHoardLimit", 100).getInt();
-
- AlchemicalWizardry.isDemonRitualCreativeOnly = config.get(tempDemonConfigs, "IsDemonRitualCreativeOnly", false).getBoolean();
-
- BoundArmour.tryComplexRendering = config.get("WimpySettings", "UseFancyBoundArmour", true).getBoolean(true);
-
- blocksToBeDisabled = config.getStringList("Disable blocks here", "WimpySettings", new String[]{""}, "Type in the unlocalized name of the block you want disabled here (separate them using ENTER)");
- itemsToBeDisabled = config.getStringList("Disable items here", "WimpySettings", new String[]{""}, "Type in the unlocalized name of the item you want disabled (separate them using ENTER)");
-
-// ItemIncense.itemDuration = config.get("TestIncenseSettings", "ItemDuration", 100).getInt();
-// ItemIncense.minValue = config.get("TestIncenseSettings", "MinValue", 0).getInt();
-// ItemIncense.maxValue = config.get("TestIncenseSettings", "MaxValue", 100).getInt();
-// PlayerSacrificeHandler.scalingOfSacrifice = (float) config.get("TestIncenseSettings", "ScalingFactor", 0.0025f).getDouble();
-// PlayerSacrificeHandler.soulFrayDuration = config.get("TestIncenseSettings", "SoulFrayDuration", 400).getInt();
-
-
- Side side = FMLCommonHandler.instance().getSide();
- if (side == Side.CLIENT)
- {
- RenderHelper.xOffset = config.get("ClientSettings", "AlchemyHUDxOffset", 50).getInt();
- RenderHelper.yOffset = config.get("ClientSettings", "AlchemyHUDyOffset", 2).getInt();
- RenderHelper.lpBarX = config.get("ClientSettings", "LPHUDxOffset", 12).getInt();
- RenderHelper.lpBarY = config.get("ClientSettings", "LPHUDyOffset", 75).getInt();
- }
-
- config.save();
- }
-
- public static void set(String categoryName, String propertyName, String newValue)
- {
-
- config.load();
- if (config.getCategoryNames().contains(categoryName))
- {
- if (config.getCategory(categoryName).containsKey(propertyName))
- {
- config.getCategory(categoryName).get(propertyName).set(newValue);
- }
- }
- config.save();
-
-
- }
-
- public static void loadBlacklist()
- {
- AlchemicalWizardry.wellBlacklist = new ArrayList();
- for (Object o : EntityList.stringToClassMapping.entrySet())
- {
- Entry entry = (Entry) o;
- Class curClass = (Class) entry.getValue();
- boolean valid = EntityLivingBase.class.isAssignableFrom(curClass) && !Modifier.isAbstract(curClass.getModifiers());
- if (valid)
- {
- boolean blacklisted = config.get("wellOfSufferingBlackList", entry.getKey().toString(), false).getBoolean();
- if (blacklisted)
- AlchemicalWizardry.wellBlacklist.add(curClass);
- }
-
- }
- config.save();
- }
-
- public static void blacklistRituals()
- {
- if (AlchemicalWizardry.ritualDisabledWater) r("AW001Water");
- if (AlchemicalWizardry.ritualDisabledLava) r("AW002Lava");
- if (AlchemicalWizardry.ritualDisabledGreenGrove) r("AW003GreenGrove");
- if (AlchemicalWizardry.ritualDisabledInterdiction) r("AW004Interdiction");
- if (AlchemicalWizardry.ritualDisabledContainment) r("AW005Containment");
- if (AlchemicalWizardry.ritualDisabledBinding) r("AW006Binding");
- if (AlchemicalWizardry.ritualDisabledUnbinding) r("AW007Unbinding"); // "A medium dry martini, lemon peel. Shaken, not stirred."
- if (AlchemicalWizardry.ritualDisabledHighJump) r("AW008HighJump");
- if (AlchemicalWizardry.ritualDisabledMagnetism) r("AW009Magnetism");
- if (AlchemicalWizardry.ritualDisabledCrusher) r("AW010Crusher");
- if (AlchemicalWizardry.ritualDisabledSpeed) r("AW011Speed");
- if (AlchemicalWizardry.ritualDisabledAnimalGrowth) r("AW012AnimalGrowth");
- if (AlchemicalWizardry.ritualDisabledSuffering) r("AW013Suffering");
- if (AlchemicalWizardry.ritualDisabledRegen) r("AW014Regen");
- if (AlchemicalWizardry.ritualDisabledFeatheredKnife) r("AW015FeatheredKnife");
- if (AlchemicalWizardry.ritualDisabledFeatheredEarth) r("AW016FeatheredEarth");
- if (AlchemicalWizardry.ritualDisabledGaia) r("AW017Gaia");
- if (AlchemicalWizardry.ritualDisabledCondor) r("AW018Condor");
- if (AlchemicalWizardry.ritualDisabledFallingTower) r("AW019FallingTower");
- if (AlchemicalWizardry.ritualDisabledBalladOfAlchemy) r("AW020BalladOfAlchemy");
- if (AlchemicalWizardry.ritualDisabledExpulsion) r("AW021Expulsion");
- if (AlchemicalWizardry.ritualDisabledSuppression) r("AW022Suppression");
- if (AlchemicalWizardry.ritualDisabledZephyr) r("AW023Zephyr");
- if (AlchemicalWizardry.ritualDisabledHarvest) r("AW024Harvest");
- if (AlchemicalWizardry.ritualDisabledConduit) r("AW025Conduit");
- if (AlchemicalWizardry.ritualDisabledEllipsoid) r("AW026Ellipsoid");
- if (AlchemicalWizardry.ritualDisabledEvaporation) r("AW027Evaporation");
- if (AlchemicalWizardry.ritualDisabledSpawnWard) r("AW028SpawnWard");
- if (AlchemicalWizardry.ritualDisabledVeilOfEvil) r("AW029VeilOfEvil");
- if (AlchemicalWizardry.ritualDisabledFullStomach) r("AW030FullStomach");
- if (AlchemicalWizardry.ritualDisabledConvocation) r("AW031Convocation");
- if (AlchemicalWizardry.ritualDisabledSymmetry) r("AW032Symmetry");
- if (AlchemicalWizardry.ritualDisabledStalling) r("AW033Stalling");
- if (AlchemicalWizardry.ritualDisabledCrafting) r("AW034Crafting");
- if (AlchemicalWizardry.ritualDisabledPhantomHands) r("AW035PhantomHands");
- if (AlchemicalWizardry.ritualDisabledSphereIsland) r("AW036SphereIsland");
- }
-
- private static void r(String ritualID)
- {
- Rituals.ritualMap.remove(ritualID);
- Rituals.keyList.remove(ritualID);
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java b/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java
deleted file mode 100644
index a3f6e5c6..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package WayofTime.alchemicalWizardry;
-
-import WayofTime.alchemicalWizardry.client.BlockRenderer;
-import net.minecraft.block.Block;
-import net.minecraft.item.ItemBlock;
-import net.minecraftforge.fml.common.registry.GameRegistry;
-import WayofTime.alchemicalWizardry.common.block.BlockArmourForge;
-import WayofTime.alchemicalWizardry.common.block.BlockAlchemicalCalcinator;
-import WayofTime.alchemicalWizardry.common.block.BlockAltar;
-import WayofTime.alchemicalWizardry.common.block.BlockBelljar;
-import WayofTime.alchemicalWizardry.common.block.BlockBloodLightSource;
-import WayofTime.alchemicalWizardry.common.block.BlockConduit;
-import WayofTime.alchemicalWizardry.common.block.BlockIncenseCrucible;
-import WayofTime.alchemicalWizardry.common.block.BlockCrystal;
-import WayofTime.alchemicalWizardry.common.block.BlockDemonPortal;
-import WayofTime.alchemicalWizardry.common.block.BlockEnchantmentGlyph;
-import WayofTime.alchemicalWizardry.common.block.BlockSpellTable;
-import WayofTime.alchemicalWizardry.common.block.BlockMasterStone;
-import WayofTime.alchemicalWizardry.common.block.BlockPedestal;
-import WayofTime.alchemicalWizardry.common.block.BlockPlinth;
-import WayofTime.alchemicalWizardry.common.block.BlockReagentConduit;
-import WayofTime.alchemicalWizardry.common.block.BlockSchematicSaver;
-import WayofTime.alchemicalWizardry.common.block.BlockFilledSocket;
-import WayofTime.alchemicalWizardry.common.block.BlockSpectralContainer;
-import WayofTime.alchemicalWizardry.common.block.BlockSpellEffect;
-import WayofTime.alchemicalWizardry.common.block.BlockSpellEnhancement;
-import WayofTime.alchemicalWizardry.common.block.BlockSpellModifier;
-import WayofTime.alchemicalWizardry.common.block.BlockSpellParadigm;
-import WayofTime.alchemicalWizardry.common.block.BlockStabilityGlyph;
-import WayofTime.alchemicalWizardry.common.block.BlockTeleposer;
-import WayofTime.alchemicalWizardry.common.block.BlockChemistrySet;
-import WayofTime.alchemicalWizardry.common.block.BlockBloodRune;
-import WayofTime.alchemicalWizardry.common.block.BlockBloodStoneBrick;
-import WayofTime.alchemicalWizardry.common.block.BlockEfficiencyRune;
-import WayofTime.alchemicalWizardry.common.block.BlockEmptySocket;
-import WayofTime.alchemicalWizardry.common.block.BlockImperfectRitualStone;
-import WayofTime.alchemicalWizardry.common.block.BlockLargeBloodStoneBrick;
-import WayofTime.alchemicalWizardry.common.block.BlockLifeEssence;
-import WayofTime.alchemicalWizardry.common.block.BlockMimic;
-import WayofTime.alchemicalWizardry.common.block.BlockRitualStone;
-import WayofTime.alchemicalWizardry.common.block.BlockRuneOfSacrifice;
-import WayofTime.alchemicalWizardry.common.block.BlockRuneOfSelfSacrifice;
-import WayofTime.alchemicalWizardry.common.block.BlockSpectral;
-import WayofTime.alchemicalWizardry.common.block.BlockSpeedRune;
-import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.BlockDemonChest;
-import WayofTime.alchemicalWizardry.common.items.ItemBlockCrystalBelljar;
-import WayofTime.alchemicalWizardry.common.items.ItemBloodRuneBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemCrystalBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemEnchantmentGlyphBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemSpellEffectBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemSpellEnhancementBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemSpellModifierBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemSpellParadigmBlock;
-import WayofTime.alchemicalWizardry.common.items.ItemStabilityGlyphBlock;
-
-import java.util.ArrayList;
-
-/**
- * Created with IntelliJ IDEA.
- * User: Pokefenn
- * Date: 17/01/14
- * Time: 19:48
- */
-public class ModBlocks
-{
- public static Block bloodStoneBrick;
- public static Block largeBloodStoneBrick;
- public static BlockAltar blockAltar;
- public static BlockBloodRune bloodRune;
- public static BlockSpeedRune speedRune;
- public static BlockEfficiencyRune efficiencyRune;
- public static BlockRuneOfSacrifice runeOfSacrifice;
- public static BlockRuneOfSelfSacrifice runeOfSelfSacrifice;
- public static Block blockMasterStone;
- public static Block ritualStone;
- public static Block imperfectRitualStone;
- public static Block bloodSocket;
- public static Block emptySocket;
- public static Block armourForge;
- public static Block blockWritingTable;
- public static Block blockSpellTable;
- public static Block blockPedestal;
- public static Block blockPlinth;
- public static Block blockLifeEssence;
- public static Block blockTeleposer;
- public static Block spectralBlock;
- public static Block blockConduit;
- public static Block blockBloodLight;
- public static Block blockSpellEffect;
- public static Block blockSpellParadigm;
- public static Block blockSpellModifier;
- public static Block blockSpellEnhancement;
- public static Block blockSpectralContainer;
- public static Block blockBuildingSchematicSaver;
- public static Block blockDemonPortal;
- public static Block blockReagentConduit;
- public static Block blockAlchemicalCalcinator;
- public static Block blockCrystalBelljar;
- public static Block blockDemonChest;
- public static Block blockCrystal;
- public static Block blockMimic;
- public static Block blockEnchantmentGlyph;
- public static Block blockStabilityGlyph;
- public static Block blockCrucible;
-
- public static ArrayList blocksNotToBeRegistered = new ArrayList();
-
- public static void init()
- {
-/* blockAltar = (BlockAltar) registerBlock(new BlockAltar(), "altar");
- bloodRune = (BlockBloodRune) registerBlock(new BlockBloodRune(), ItemBloodRuneBlock.class, "base_rune");
- speedRune = (BlockSpeedRune) registerBlock(new BlockSpeedRune(), "speed_rune");
- efficiencyRune = (BlockEfficiencyRune) registerBlock(new BlockEfficiencyRune(), "efficiency_rune");
- runeOfSacrifice = (BlockRuneOfSacrifice) registerBlock(new BlockRuneOfSacrifice(), "sacrifice_rune");
- runeOfSelfSacrifice = (BlockRuneOfSelfSacrifice) registerBlock(new BlockRuneOfSelfSacrifice(), "self_sacrifice_rune");
- */ blockTeleposer = registerBlock(new BlockTeleposer(), "teleposer");
- spectralBlock = registerBlock(new BlockSpectral(), "spectral_block");
- ritualStone = registerBlock(new BlockRitualStone(), "ritual_stone");
- blockMasterStone = registerBlock(new BlockMasterStone(), "master_ritual_stone");
- imperfectRitualStone = registerBlock(new BlockImperfectRitualStone(), "imperfect_ritual_stone");
- emptySocket = registerBlock(new BlockEmptySocket(), "empty_socket");
- bloodSocket = registerBlock(new BlockFilledSocket(), "filled_socket");
- armourForge = registerBlock(new BlockArmourForge(), "soul_armour_forge");
- largeBloodStoneBrick = registerBlock(new BlockLargeBloodStoneBrick(), "large_bloodstone_brick");
- bloodStoneBrick = registerBlock(new BlockBloodStoneBrick(), "bloodstone_brick");
- blockWritingTable = registerBlock(new BlockChemistrySet(), "chemistry_set");
- blockSpellTable = registerBlock(new BlockSpellTable(), "spell_table");
- blockPedestal = registerBlock(new BlockPedestal(), "pedestal");
- blockPlinth = registerBlock(new BlockPlinth(), "plinth");
- blockConduit = registerBlock(new BlockConduit(), "spell_conduit");
- blockBloodLight = registerBlock(new BlockBloodLightSource(), "blood_light");
- blockSpellEffect = registerBlock(new BlockSpellEffect(), "spell_effect");
- blockSpellParadigm = registerBlock(new BlockSpellParadigm(), ItemSpellParadigmBlock.class, "spell_paradigm");
- blockSpellModifier = registerBlock(new BlockSpellModifier(), ItemSpellEnhancementBlock.class, "spell_modifier");
- blockSpellEnhancement = registerBlock(new BlockSpellEnhancement(), ItemSpellModifierBlock.class, "spell_enhancement");
- blockSpectralContainer = registerBlock(new BlockSpectralContainer(), ItemSpellEffectBlock.class, "spectral_container");
- blockDemonPortal = registerBlock(new BlockDemonPortal(), "demon_portal");
- blockBuildingSchematicSaver = registerBlock(new BlockSchematicSaver(), "schematic_saver");
- blockReagentConduit = registerBlock(new BlockReagentConduit(), "reagent_conduit");
- blockAlchemicalCalcinator = registerBlock(new BlockAlchemicalCalcinator(), "alchemical_calcinator");
- blockCrystalBelljar = registerBlock(new BlockBelljar(), ItemBlockCrystalBelljar.class, "belljar");
- blockDemonChest = registerBlock(new BlockDemonChest(), "demon_chest");
- blockCrystal = registerBlock(new BlockCrystal(), ItemCrystalBlock.class, "crystal_block");
- blockMimic = registerBlock(new BlockMimic(), "mimic_block");
-
- blockLifeEssence = registerBlock(new BlockLifeEssence(), "life_essence");
- blockEnchantmentGlyph = registerBlock(new BlockEnchantmentGlyph(), ItemEnchantmentGlyphBlock.class, "enchantment_glyph");
- blockStabilityGlyph = registerBlock(new BlockStabilityGlyph(), ItemStabilityGlyphBlock.class, "stability_glyph");
- blockCrucible = registerBlock(new BlockIncenseCrucible(), "incense_crucible");
- }
-
- public static Block registerBlock(Block block, String unlocalizedName)
- {
- //TODO Insert Model Code here
- block.setUnlocalizedName(unlocalizedName);
-
-// if (!) //creative tab blacklist
- {
- block.setCreativeTab(AlchemicalWizardry.tabBloodMagic);
- }
-
-// blocksNotToBeRegistered.clear();
-// for (String unlocName : BloodMagicConfiguration.blocksToBeDisabled)
- {
-// if (unlocName.equals(unlocalizedName))
- {
-// blocksNotToBeRegistered.add(unlocName);
- }
- }
- // if (!blocksNotToBeRegistered.contains(unlocalizedName))
- {
-// GameRegistry.registerBlock(block, unlocalizedName);
- }
-
-// BlockRenderer.registerBlock(block);
-
- GameRegistry.registerBlock(block, unlocalizedName);
- return block;
- }
-
- public static Block registerBlock(Block block, Class extends ItemBlock> itemBlockClass, String unlocalizedName)
- {
- block.setCreativeTab(AlchemicalWizardry.tabBloodMagic);
-
-// for (String unlocName : BloodMagicConfiguration.blocksToBeDisabled)
- {
-// if (unlocName.equals(unlocalizedName))
- {
-// blocksNotToBeRegistered.add(unlocName);
- }
- }
-// if (!blocksNotToBeRegistered.contains(unlocalizedName))
- {
- GameRegistry.registerBlock(block, itemBlockClass, unlocalizedName);
- }
-
-// BlockRenderer.registerBlock(block);
-
- return block;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/ModItems.java b/src/main/java/WayofTime/alchemicalWizardry/ModItems.java
deleted file mode 100644
index edfcf081..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/ModItems.java
+++ /dev/null
@@ -1,404 +0,0 @@
-package WayofTime.alchemicalWizardry;
-
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
-import net.minecraftforge.fml.common.registry.GameRegistry;
-import WayofTime.alchemicalWizardry.api.items.ItemSpellMultiTool;
-import WayofTime.alchemicalWizardry.api.spell.SpellParadigmTool;
-import WayofTime.alchemicalWizardry.common.items.BaseItems;
-import WayofTime.alchemicalWizardry.common.items.ActivationCrystal;
-import WayofTime.alchemicalWizardry.common.items.AirScribeTool;
-import WayofTime.alchemicalWizardry.common.items.ApprenticeBloodOrb;
-import WayofTime.alchemicalWizardry.common.items.ArchmageBloodOrb;
-import WayofTime.alchemicalWizardry.common.items.ArmourInhibitor;
-import WayofTime.alchemicalWizardry.common.items.BlankSpell;
-import WayofTime.alchemicalWizardry.common.items.BloodShard;
-import WayofTime.alchemicalWizardry.common.items.BoundAxe;
-import WayofTime.alchemicalWizardry.common.items.BoundPickaxe;
-import WayofTime.alchemicalWizardry.common.items.BoundShovel;
-import WayofTime.alchemicalWizardry.common.items.CreativeOrb;
-import WayofTime.alchemicalWizardry.common.items.CreativeDagger;
-import WayofTime.alchemicalWizardry.common.items.DaggerOfSacrifice;
-import WayofTime.alchemicalWizardry.common.items.DawnScribeTool;
-import WayofTime.alchemicalWizardry.common.items.DemonCrystal;
-import WayofTime.alchemicalWizardry.common.items.DemonicTelepositionFocus;
-import WayofTime.alchemicalWizardry.common.items.DuskScribeTool;
-import WayofTime.alchemicalWizardry.common.items.EarthScribeTool;
-import WayofTime.alchemicalWizardry.common.items.Orb;
-import WayofTime.alchemicalWizardry.common.items.EnergyBazooka;
-import WayofTime.alchemicalWizardry.common.items.EnergyBlaster;
-import WayofTime.alchemicalWizardry.common.items.BoundBlade;
-import WayofTime.alchemicalWizardry.common.items.EnhancedTelepositionFocus;
-import WayofTime.alchemicalWizardry.common.items.FireScribeTool;
-import WayofTime.alchemicalWizardry.common.items.ItemAlchemyBase;
-import WayofTime.alchemicalWizardry.common.items.ItemBloodLetterPack;
-import WayofTime.alchemicalWizardry.common.items.ItemComplexSpellCrystal;
-import WayofTime.alchemicalWizardry.common.items.ItemComponents;
-import WayofTime.alchemicalWizardry.common.items.KeyOfBinding;
-import WayofTime.alchemicalWizardry.common.items.ItemIncense;
-import WayofTime.alchemicalWizardry.common.items.ItemRitualDismantler;
-import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner;
-import WayofTime.alchemicalWizardry.common.items.LavaCrystal;
-import WayofTime.alchemicalWizardry.common.items.LifeBucket;
-import WayofTime.alchemicalWizardry.common.items.MagicianBloodOrb;
-import WayofTime.alchemicalWizardry.common.items.MasterBloodOrb;
-import WayofTime.alchemicalWizardry.common.items.ReinforcedTelepositionFocus;
-import WayofTime.alchemicalWizardry.common.items.SacrificialDagger;
-import WayofTime.alchemicalWizardry.common.items.TelepositionFocus;
-import WayofTime.alchemicalWizardry.common.items.TranscendentBloodOrb;
-import WayofTime.alchemicalWizardry.common.items.WaterScribeTool;
-import WayofTime.alchemicalWizardry.common.items.armour.BoundArmour;
-import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmourEarth;
-import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmourFire;
-import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmourWater;
-import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmourWind;
-import WayofTime.alchemicalWizardry.common.items.energy.AlchemicalRouter;
-import WayofTime.alchemicalWizardry.common.items.energy.AlchemicalCleanser;
-import WayofTime.alchemicalWizardry.common.items.energy.AlchemicalSegmenter;
-import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask;
-import WayofTime.alchemicalWizardry.common.items.potion.AlchemyReagent;
-import WayofTime.alchemicalWizardry.common.items.potion.AverageLengtheningCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.AveragePowerCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.CombinationalCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.EnhancedFillingAgent;
-import WayofTime.alchemicalWizardry.common.items.potion.GreaterLengtheningCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.GreaterPowerCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.MundaneLengtheningCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.MundanePowerCatalyst;
-import WayofTime.alchemicalWizardry.common.items.potion.StandardBindingAgent;
-import WayofTime.alchemicalWizardry.common.items.potion.StandardFillingAgent;
-import WayofTime.alchemicalWizardry.common.items.potion.WeakBindingAgent;
-import WayofTime.alchemicalWizardry.common.items.potion.WeakFillingAgent;
-import WayofTime.alchemicalWizardry.common.items.routing.InputRoutingFocus;
-import WayofTime.alchemicalWizardry.common.items.routing.OutputRoutingFocus;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilAir;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilBloodLight;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilDivination;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilFluid;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilHarvest;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilLava;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfElementalAffinity;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfEnderSeverance;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfGrowth;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHaste;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfMagnetism;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfSupression;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheAssassin;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheBridge;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheFastMiner;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfWind;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilCompress;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilSeer;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilVoid;
-import WayofTime.alchemicalWizardry.common.items.sigil.SigilWater;
-import WayofTime.alchemicalWizardry.common.items.sigil.holding.SigilOfHolding;
-
-import java.util.ArrayList;
-
-/**
- * Created with IntelliJ IDEA.
- * User: Pokefenn
- * Date: 17/01/14
- * Time: 19:48
- */
-public class ModItems
-{
- public static Item weakBloodOrb;
- public static Item apprenticeBloodOrb;
- public static Item magicianBloodOrb;
- public static Item energyBlaster;
- public static Item energySword;
- public static Item lavaCrystal;
- public static Item waterSigil;
- public static Item lavaSigil;
- public static Item voidSigil;
- public static Item blankSlate;
- public static Item reinforcedSlate;
- public static Item sacrificialDagger;
- public static Item daggerOfSacrifice;
- public static Item airSigil;
- public static Item sigilOfTheFastMiner;
- public static Item sigilOfElementalAffinity;
- public static Item sigilOfHaste;
- public static Item sigilOfHolding;
- public static Item divinationSigil;
- public static Item waterScribeTool;
- public static Item fireScribeTool;
- public static Item earthScribeTool;
- public static Item airScribeTool;
- public static Item dawnScribeTool;
- public static Item activationCrystal;
- public static Item boundPickaxe;
- public static Item boundAxe;
- public static Item boundShovel;
- public static Item boundHelmet;
- public static Item boundChestplate;
- public static Item boundLeggings;
- public static Item boundBoots;
- public static Item weakBloodShard;
- public static Item growthSigil;
- public static Item blankSpell;
- public static Item masterBloodOrb;
- public static Item alchemyFlask;
- public static Item standardBindingAgent;
- public static Item mundanePowerCatalyst;
- public static Item averagePowerCatalyst;
- public static Item greaterPowerCatalyst;
- public static Item mundaneLengtheningCatalyst;
- public static Item averageLengtheningCatalyst;
- public static Item greaterLengtheningCatalyst;
- public static Item incendium;
- public static Item magicales;
- public static Item sanctus;
- public static Item aether;
- public static Item simpleCatalyst;
- public static Item crepitous;
- public static Item crystallos;
- public static Item terrae;
- public static Item aquasalus;
- public static Item tennebrae;
- public static Item demonBloodShard;
- public static Item archmageBloodOrb;
- public static Item sigilOfWind;
- public static Item telepositionFocus;
- public static Item enhancedTelepositionFocus;
- public static Item reinforcedTelepositionFocus;
- public static Item demonicTelepositionFocus;
- public static Item imbuedSlate;
- public static Item demonicSlate;
- public static Item duskScribeTool;
- public static Item sigilOfTheBridge;
- public static Item armourInhibitor;
- public static Item creativeFiller;
- public static Item demonPlacer;
- public static Item creativeDagger;
-
- public static Item baseItems;
- public static Item baseAlchemyItems;
-
- public static Item weakFillingAgent;
- public static Item standardFillingAgent;
- public static Item enhancedFillingAgent;
- public static Item weakBindingAgent;
- public static Item itemRitualDiviner;
- public static Item sanguineHelmet;
- public static Item sanguineRobe;
- public static Item sanguinePants;
- public static Item sanguineBoots;
- public static Item focusBloodBlast;
- public static Item focusGravityWell;
- public static Item sigilOfMagnetism;
- public static Item itemKeyOfDiablo;
- public static Item energyBazooka;
- public static Item itemBloodLightSigil;
- public static Item itemComplexSpellCrystal;
- public static Item itemBloodFrame;
-
- public static Item itemSigilOfEnderSeverance;
- public static Item itemSigilOfSupression;
- public static Item itemFluidSigil;
- public static Item itemSeerSigil;
- public static Item itemCombinationalCatalyst;
-
- public static ItemSpellMultiTool customTool;
-
- public static Item itemAttunedCrystal;
- public static Item itemTankSegmenter;
- public static Item itemDestinationClearer;
-
- public static Item itemHarvestSigil;
- public static Item itemCompressionSigil;
-
- public static Item bucketLife;
-
- public static Item itemBloodPack;
-
- public static Item transcendentBloodOrb;
- public static Item itemAssassinSigil;
-
- public static Item boundHelmetWater;
- public static Item boundChestplateWater;
- public static Item boundLeggingsWater;
- public static Item boundBootsWater;
-
- public static Item boundHelmetEarth;
- public static Item boundChestplateEarth;
- public static Item boundLeggingsEarth;
- public static Item boundBootsEarth;
-
- public static Item boundHelmetWind;
- public static Item boundChestplateWind;
- public static Item boundLeggingsWind;
- public static Item boundBootsWind;
-
- public static Item boundHelmetFire;
- public static Item boundChestplateFire;
- public static Item boundLeggingsFire;
- public static Item boundBootsFire;
-
- public static Item inputRoutingFocus;
- public static Item outputRoutingFocus;
-
- public static Item itemMailCatalogue;
-
- public static Item itemIncense;
-
- public static Item ritualDismantler;
-
- public static ArrayList itemsNotToBeRegistered = new ArrayList();
-
- public static void init()
- {
- weakBloodOrb = registerItem(new Orb(5000), "weak_blood_orb");
- apprenticeBloodOrb = registerItem(new ApprenticeBloodOrb(25000), "apprentice_blood_orb");
- magicianBloodOrb = registerItem(new MagicianBloodOrb(150000), "magician_blood_orb");
- masterBloodOrb = registerItem(new MasterBloodOrb(1000000), "master_blood_orb");
- archmageBloodOrb = registerItem(new ArchmageBloodOrb(10000000), "archmage_blood_orb");
- transcendentBloodOrb = registerItem(new TranscendentBloodOrb(30000000), "transcendent_blood_orb");
- energyBlaster = registerItem(new EnergyBlaster(), "energy_blaster");
- energySword = registerItem(new BoundBlade(), "bound_blade");
- lavaCrystal = registerItem(new LavaCrystal(), "lava_crystal");
- waterSigil = registerItem(new SigilWater(), "water_sigil");
- lavaSigil = registerItem(new SigilLava(), "lava_sigil");
- voidSigil = registerItem(new SigilVoid(), "void_sigil");
- blankSlate = registerItem(new BaseItems(), "blank_slate");
- reinforcedSlate = registerItem(new BaseItems(), "reinforced_slate");
- sacrificialDagger = registerItem(new SacrificialDagger(), "sacrificial_agger");
- daggerOfSacrifice = registerItem(new DaggerOfSacrifice(), "dagger_of_sacrifice");
- airSigil = registerItem(new SigilAir(), "air_sigil");
- sigilOfTheFastMiner = registerItem(new SigilOfTheFastMiner(), "sigil_of_the_fast_miner");
- sigilOfElementalAffinity = registerItem(new SigilOfElementalAffinity(), "sigil_of_elemental_affinity");
- sigilOfHaste = registerItem(new SigilOfHaste(), "sigil_of_haste");
- sigilOfHolding = registerItem(new SigilOfHolding(), "sigil_of_holding");
- divinationSigil = registerItem(new SigilDivination(), "divination_sigil");
- waterScribeTool = registerItem(new WaterScribeTool(), "water_scribe_tool");
- fireScribeTool = registerItem(new FireScribeTool(), "fire_scribe_tool");
- earthScribeTool = registerItem(new EarthScribeTool(), "earth_scribe_tool");
- airScribeTool = registerItem(new AirScribeTool(), "air_scribe_tool");
- activationCrystal = registerItem(new ActivationCrystal(), "activation_crystal");
- boundPickaxe = registerItem(new BoundPickaxe(), "bound_pickaxe");
- boundAxe = registerItem(new BoundAxe(), "bound_axe");
- boundShovel = registerItem(new BoundShovel(), "bound_shovel");
- boundHelmet = registerItem(new BoundArmour(0), "bound_helmet");
- boundChestplate = registerItem(new BoundArmour(1), "bound_chestplate");
- boundLeggings = registerItem(new BoundArmour(2), "bound_leggings");
- boundBoots = registerItem(new BoundArmour(3), "bound_boots");
- weakBloodShard = registerItem(new BloodShard(), "weak_blood_shard");
- growthSigil = registerItem(new SigilOfGrowth(), "growth_sigil");
- blankSpell = registerItem(new BlankSpell(), "blank_spell");
- alchemyFlask = registerItem(new AlchemyFlask(), "alchemy_flask");
- standardBindingAgent = registerItem(new StandardBindingAgent(), "standard_binding_agent");
- mundanePowerCatalyst = registerItem(new MundanePowerCatalyst(), "mundane_power_catalyst");
- averagePowerCatalyst = registerItem(new AveragePowerCatalyst(), "average_power_catalyst");
- greaterPowerCatalyst = registerItem(new GreaterPowerCatalyst(), "greater_power_catalyst");
- mundaneLengtheningCatalyst = registerItem(new MundaneLengtheningCatalyst(), "mundane_lengthening_catalyst");
- averageLengtheningCatalyst = registerItem(new AverageLengtheningCatalyst(), "average_lengthening_catalyst");
- greaterLengtheningCatalyst = registerItem(new GreaterLengtheningCatalyst(), "greater_lengthening_catalyst");
- incendium = registerItem(new AlchemyReagent(), "incendium");
- magicales = registerItem(new AlchemyReagent(), "magicales");
- sanctus = registerItem(new AlchemyReagent(), "sanctus");
- aether = registerItem(new AlchemyReagent(), "aether");
- simpleCatalyst = registerItem(new AlchemyReagent(), "simple_catalyst");
- crepitous = registerItem(new AlchemyReagent(), "crepitous");
- crystallos = registerItem(new AlchemyReagent(), "crystallos");
- terrae = registerItem(new AlchemyReagent(), "terrae");
- aquasalus = registerItem(new AlchemyReagent(), "aquasalus");
- tennebrae = registerItem(new AlchemyReagent(), "tennebrae");
- demonBloodShard = registerItem(new BloodShard(), "demon_blood_shard");
- sigilOfWind = registerItem(new SigilOfWind(), "sigil_of_wind");
- telepositionFocus = registerItem(new TelepositionFocus(1), "teleposition_focus");
- enhancedTelepositionFocus = registerItem(new EnhancedTelepositionFocus(), "enhanced_teleposition_focus");
- reinforcedTelepositionFocus = registerItem(new ReinforcedTelepositionFocus(), "reinforced_teleposition_focus");
- demonicTelepositionFocus = registerItem(new DemonicTelepositionFocus(), "demonic_teleposition_focus");
- imbuedSlate = registerItem(new BaseItems(), "imbued_slate");
- demonicSlate = registerItem(new BaseItems(), "demonic_slate");
- duskScribeTool = registerItem(new DuskScribeTool(), "dusk_scribe_tool");
- sigilOfTheBridge = registerItem(new SigilOfTheBridge(), "sigil_of_the_bridge");
- armourInhibitor = registerItem(new ArmourInhibitor(), "armour_inhibitor");
- creativeFiller = registerItem(new CreativeOrb(), "creative_orb");
- demonPlacer = registerItem(new DemonCrystal(), "demon_crystal");
- creativeDagger = registerItem(new CreativeDagger(), "creative_dagger");
- weakFillingAgent = registerItem(new WeakFillingAgent(), "weak_filling_agent");
- standardFillingAgent = registerItem(new StandardFillingAgent(), "standard_filling_agent");
- enhancedFillingAgent = registerItem(new EnhancedFillingAgent(), "enhanced_filling_agent");
- weakBindingAgent = registerItem(new WeakBindingAgent(), "weak_binding_agent");
- itemRitualDiviner = registerItem(new ItemRitualDiviner(), "ritual_diviner");
- sigilOfMagnetism = registerItem(new SigilOfMagnetism(), "sigil_of_magnetism");
- itemKeyOfDiablo = registerItem(new KeyOfBinding(), "key_of_binding");
- energyBazooka = registerItem(new EnergyBazooka(), "energy_bazooka");
- itemBloodLightSigil = registerItem(new SigilBloodLight(), "blood_light_sigil");
- itemComplexSpellCrystal = registerItem(new ItemComplexSpellCrystal(), "complex_spell_crystal");
- bucketLife = registerItem(new LifeBucket(ModBlocks.blockLifeEssence), "bucket_life").setContainerItem(Items.bucket).setCreativeTab(CreativeTabs.tabMisc);
- itemSigilOfEnderSeverance = registerItem(new SigilOfEnderSeverance(), "sigil_of_ender_severance");
- baseItems = registerItem(new ItemComponents(), "base_items");
- baseAlchemyItems = registerItem(new ItemAlchemyBase(), "base_alchemy_items");
- itemSigilOfSupression = registerItem(new SigilOfSupression(), "sigil_of_suppression");
- itemFluidSigil = registerItem(new SigilFluid(), "fluid_sigil");
- itemSeerSigil = registerItem(new SigilSeer(), "sigil_of_sight");
- customTool = (ItemSpellMultiTool) registerItem(new ItemSpellMultiTool(), "multi_tool");
-
- SpellParadigmTool.customTool = customTool;
-
- itemCombinationalCatalyst = registerItem(new CombinationalCatalyst(), "combinational_catalyst");
- itemAttunedCrystal = registerItem(new AlchemicalRouter(), "alchemical_router");
- itemTankSegmenter = registerItem(new AlchemicalSegmenter(), "alchemical_segmenter");
- itemDestinationClearer = registerItem(new AlchemicalCleanser(), "alchemical_cleanser");
-
- dawnScribeTool = registerItem(new DawnScribeTool(), "dawn_scribe_tool");
-
- itemBloodPack = registerItem(new ItemBloodLetterPack(), "blood_pack");
- itemHarvestSigil = registerItem(new SigilHarvest(), "harvest_sigil");
- itemCompressionSigil = registerItem(new SigilCompress(), "compression_sigil");
- itemAssassinSigil = registerItem(new SigilOfTheAssassin(), "assassin_sigil");
-
- boundHelmetWater = registerItem(new OmegaArmourWater(0), "bound_helmet_water");
- boundChestplateWater = registerItem(new OmegaArmourWater(1), "bound_chestplate_water");
- boundLeggingsWater = registerItem(new OmegaArmourWater(2), "bound_leggings_water");
- boundBootsWater = registerItem(new OmegaArmourWater(3), "bound_boots_water");
-
- boundHelmetEarth = registerItem(new OmegaArmourEarth(0), "bound_helmet_earth");
- boundChestplateEarth = registerItem(new OmegaArmourEarth(1), "bound_chestplate_earth");
- boundLeggingsEarth = registerItem(new OmegaArmourEarth(2), "bound_leggings_earth");
- boundBootsEarth = registerItem(new OmegaArmourEarth(3), "bound_boots_earth");
-
- boundHelmetWind = registerItem(new OmegaArmourWind(0), "bound_helmet_wind");
- boundChestplateWind = registerItem(new OmegaArmourWind(1), "bound_chestplate_wind");
- boundLeggingsWind = registerItem(new OmegaArmourWind(2), "bound_leggings_wind");
- boundBootsWind = registerItem(new OmegaArmourWind(3), "bound_boots_wind");
-
- boundHelmetFire = registerItem(new OmegaArmourFire(0), "bound_helmet_fire");
- boundChestplateFire = registerItem(new OmegaArmourFire(1), "bound_chestplate_fire");
- boundLeggingsFire = registerItem(new OmegaArmourFire(2), "bound_leggings_fire");
- boundBootsFire = registerItem(new OmegaArmourFire(3), "bound_boots_fire");
-
- inputRoutingFocus = registerItem(new InputRoutingFocus(), "input_routing_focus");
- outputRoutingFocus = registerItem(new OutputRoutingFocus(), "output_routing_focus");
-
- itemIncense = registerItem(new ItemIncense(), "incense");
-
- ritualDismantler = registerItem(new ItemRitualDismantler(), "ritual_dismantler");
- }
-
- public static Item registerItem(Item item, String unlocalizedName)
- {
- item.setUnlocalizedName(unlocalizedName);
- item.setCreativeTab(AlchemicalWizardry.tabBloodMagic);
-// itemsNotToBeRegistered.clear();
-
-// for (String unlocName : BloodMagicConfiguration.itemsToBeDisabled)
- {
-// if (unlocName.equals(unlocalizedName))
- {
-// itemsNotToBeRegistered.add(unlocName);
- }
- }
-
-// if (!itemsNotToBeRegistered.contains(unlocalizedName))
- {
- GameRegistry.registerItem(item, unlocalizedName);
- }
-
- return item;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java b/src/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java
deleted file mode 100644
index d34dd413..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-import net.minecraft.nbt.NBTTagCompound;
-
-public class ColourAndCoords
-{
- public int colourRed;
- public int colourGreen;
- public int colourBlue;
- public int colourIntensity;
-
- public int xCoord;
- public int yCoord;
- public int zCoord;
-
- public ColourAndCoords(int red, int green, int blue, int intensity, int x, int y, int z)
- {
- this.colourRed = red;
- this.colourGreen = green;
- this.colourBlue = blue;
- this.colourIntensity = intensity;
-
- this.xCoord = x;
- this.yCoord = y;
- this.zCoord = z;
- }
-
- public static ColourAndCoords readFromNBT(NBTTagCompound tag)
- {
- return new ColourAndCoords(tag.getInteger("colourRed"), tag.getInteger("colourGreen"), tag.getInteger("colourBlue"), tag.getInteger("colourIntensity"), tag.getInteger("xCoord"), tag.getInteger("yCoord"), tag.getInteger("zCoord"));
- }
-
- public NBTTagCompound writeToNBT(NBTTagCompound tag)
- {
- tag.setInteger("colourRed", colourRed);
- tag.setInteger("colourGreen", colourGreen);
- tag.setInteger("colourBlue", colourBlue);
- tag.setInteger("colourIntensity", colourIntensity);
- tag.setInteger("xCoord", xCoord);
- tag.setInteger("yCoord", yCoord);
- tag.setInteger("zCoord", zCoord);
-
- return tag;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/ILimitingLogic.java b/src/main/java/WayofTime/alchemicalWizardry/api/ILimitingLogic.java
deleted file mode 100644
index 2d7a4912..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/ILimitingLogic.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-public interface ILimitingLogic
-{
- int getRoutingLimit();
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java b/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java
deleted file mode 100644
index 7c8fa226..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/Int3.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.BlockPos;
-
-public class Int3
-{
- public int xCoord;
- public int yCoord;
- public int zCoord;
-
- public Int3(BlockPos pos)
- {
- this(pos.getX(), pos.getY(), pos.getZ());
- }
-
- public Int3(int xCoord, int yCoord, int zCoord)
- {
- this.xCoord = xCoord;
- this.yCoord = yCoord;
- this.zCoord = zCoord;
- }
-
- public static Int3 readFromNBT(NBTTagCompound tag)
- {
- return new Int3(tag.getInteger("xCoord"), tag.getInteger("yCoord"), tag.getInteger("zCoord"));
- }
-
- public NBTTagCompound writeToNBT(NBTTagCompound tag)
- {
- tag.setInteger("xCoord", xCoord);
- tag.setInteger("yCoord", yCoord);
- tag.setInteger("zCoord", zCoord);
-
- return tag;
- }
-
- @Override
- public boolean equals(Object o)
- {
- return o instanceof Int3 ? ((Int3) o).xCoord == this.xCoord && ((Int3) o).yCoord == this.yCoord && ((Int3) o).zCoord == this.zCoord : false;
- }
-
- @Override
- public int hashCode()
- {
- return this.xCoord + this.yCoord << 8 + this.zCoord << 16;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusLogic.java b/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusLogic.java
deleted file mode 100644
index a3f0a3e1..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusLogic.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-import net.minecraft.item.ItemStack;
-
-public class RoutingFocusLogic
-{
- public boolean getDefaultMatch(ItemStack keyStack, ItemStack checkedStack)
- {
- return (keyStack != null ? checkedStack != null && keyStack.getItem() == checkedStack.getItem() && (keyStack.getItem().getHasSubtypes() ? keyStack.getItemDamage() == checkedStack.getItemDamage() : true) : false);
- }
-
- public boolean doesItemMatch(boolean previous, ItemStack keyStack, ItemStack checkedStack)
- {
- return previous || this.getDefaultMatch(keyStack, checkedStack);
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java b/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java
deleted file mode 100644
index d77a2e1a..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusParadigm.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import net.minecraft.item.ItemStack;
-
-public class RoutingFocusParadigm
-{
- public List logicList = new LinkedList();
-
- public List locationList = new LinkedList();
-
- public int maximumAmount = 0;
-
- public void addRoutingFocusPosAndFacing(RoutingFocusPosAndFacing facing)
- {
- locationList.add(facing);
- }
-
- public void addLogic(RoutingFocusLogic logic)
- {
- if(logic instanceof ILimitingLogic)
- {
- maximumAmount += ((ILimitingLogic)logic).getRoutingLimit();
- }
- logicList.add(logic);
- }
-
- public boolean doesItemMatch(ItemStack keyStack, ItemStack checkedStack)
- {
- boolean isGood = false;
- boolean isFirst = true;
- for(RoutingFocusLogic logic : logicList)
- {
- if(isFirst)
- {
- isGood = logic.getDefaultMatch(keyStack, checkedStack);
- isFirst = false;
- continue;
- }
- isGood = logic.doesItemMatch(isGood, keyStack, checkedStack);
- }
-
- return isGood;
- }
-
- public void clear()
- {
- logicList.clear();
- locationList.clear();
- maximumAmount = 0;
- }
-
- public void setMaximumAmount(int amt)
- {
- this.maximumAmount = amt;
- }
-
- public int getMaximumAmount()
- {
- return this.maximumAmount;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusPosAndFacing.java b/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusPosAndFacing.java
deleted file mode 100644
index a49ffee1..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/RoutingFocusPosAndFacing.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-import net.minecraft.util.EnumFacing;
-
-public class RoutingFocusPosAndFacing
-{
- public Int3 location;
- public EnumFacing facing;
-
- public RoutingFocusPosAndFacing(Int3 location, EnumFacing facing)
- {
- this.location = location;
- this.facing = facing;
- }
-
- @Override
- public boolean equals(Object obj)
- {
- return obj instanceof RoutingFocusPosAndFacing ? facing.equals(((RoutingFocusPosAndFacing)obj).facing) && location.equals(((RoutingFocusPosAndFacing)obj).location) : false;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/Vector3.java b/src/main/java/WayofTime/alchemicalWizardry/api/Vector3.java
deleted file mode 100644
index 645d97e6..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/Vector3.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package WayofTime.alchemicalWizardry.api;
-
-/*
- * Created in Scala by Alex-Hawks
- * Translated and implemented by Arcaratus
- */
-public class Vector3
-{
- public int x, y, z;
-
- public Vector3(int x, int y, int z)
- {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- public Vector3 add(Vector3 vec1)
- {
- return new Vector3(this.x + vec1.x, this.y + vec1.y, this.z + vec1.z);
- }
-
- @Override
- public String toString()
- {
- return "V3(" + x + "}, " + y + "}," + z + "})";
- }
-
- private boolean canEqual(Object object)
- {
- return object instanceof Vector3;
- }
-
- @Override
- public boolean equals(Object object)
- {
- return object == this || object instanceof Vector3 && canEqual(this) && this.x == ((Vector3) object).x && this.y == ((Vector3) object).y && this.z == ((Vector3) object).z;
- }
-
- @Override
- public int hashCode()
- {
- return 48131 * x - 95021 * y + z;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java
deleted file mode 100644
index a6ca090d..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy;
-
-import net.minecraft.item.ItemStack;
-
-import java.util.ArrayList;
-
-public class AlchemicalPotionCreationHandler
-{
- public static ArrayList registeredPotionEffects = new ArrayList();
-
- public static void addPotion(ItemStack itemStack, int potionID, int tickDuration)
- {
- registeredPotionEffects.add(new AlchemyPotionHandlerComponent(itemStack, potionID, tickDuration));
- }
-
- public static int getPotionIDForStack(ItemStack itemStack)
- {
- for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects)
- {
- if (aphc.compareItemStack(itemStack))
- {
- return aphc.getPotionID();
- }
- }
-
- return -1;
- }
-
- public static int getPotionTickDurationForStack(ItemStack itemStack)
- {
- {
- for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects)
- {
- if (aphc.compareItemStack(itemStack))
- {
- return aphc.getTickDuration();
- }
- }
-
- return -1;
- }
- }
-
- public static boolean containsRegisteredPotionIngredient(ItemStack[] stackList)
- {
- for (ItemStack is : stackList)
- {
- for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects)
- {
- if (aphc.compareItemStack(is))
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- public static int getRegisteredPotionIngredientPosition(ItemStack[] stackList)
- {
- int i = 0;
-
- for (ItemStack is : stackList)
- {
- for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects)
- {
- if (aphc.compareItemStack(is))
- {
- return i;
- }
- }
-
- i++;
- }
-
- return -1;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java
deleted file mode 100644
index 6f0d461d..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy;
-
-import net.minecraft.item.ItemBlock;
-import net.minecraft.item.ItemStack;
-
-public class AlchemyPotionHandlerComponent
-{
- private ItemStack itemStack;
- private int potionID;
- private int tickDuration;
-
- public AlchemyPotionHandlerComponent(ItemStack itemStack, int potionID, int tickDuration)
- {
- this.itemStack = itemStack;
- this.potionID = potionID;
- this.tickDuration = tickDuration;
- }
-
- public boolean compareItemStack(ItemStack comparedStack)
- {
- if (comparedStack != null && itemStack != null)
- {
- if (comparedStack.getItem() instanceof ItemBlock)
- {
- if (itemStack.getItem() instanceof ItemBlock)
- {
- return comparedStack.getItem().equals(itemStack.getItem()) && comparedStack.getItemDamage() == itemStack.getItemDamage();
- }
- } else if (!(itemStack.getItem() instanceof ItemBlock))
- {
- return comparedStack.getItem().equals(itemStack.getItem()) && comparedStack.getItemDamage() == itemStack.getItemDamage();
- }
- }
-
- return false;
- }
-
- public ItemStack getItemStack()
- {
- return itemStack;
- }
-
- public int getPotionID()
- {
- return this.potionID;
- }
-
- public int getTickDuration()
- {
- return this.tickDuration;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java
deleted file mode 100644
index d3462552..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy;
-
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
-
-public class AlchemyPotionHelper
-{
- private int potionID;
- private int tickDuration;
- private int concentration;
- private int durationFactor;
-
- public AlchemyPotionHelper(int potionID, int tickDuration, int concentration, int durationFactor)
- {
- this.potionID = potionID;
- this.tickDuration = tickDuration;
- this.concentration = concentration;
- this.durationFactor = durationFactor;
- }
-
- public void setConcentration(int concentration)
- {
- this.concentration = concentration;
- }
-
- public void setDurationFactor(int durationFactor)
- {
- this.durationFactor = durationFactor;
- }
-
- public int getPotionID()
- {
- return this.potionID;
- }
-
- public int getTickDuration()
- {
- return this.tickDuration;
- }
-
- public int getConcentration()
- {
- return this.concentration;
- }
-
- public int getdurationFactor()
- {
- return this.durationFactor;
- }
-
- public PotionEffect getPotionEffect()
- {
- if (potionID == Potion.heal.id || potionID == Potion.harm.id)
- {
- return (new PotionEffect(potionID, 1, concentration));
- }
-
- return (new PotionEffect(potionID, (int) (tickDuration * Math.pow(0.5f, concentration) * Math.pow(8.0f / 3.0f, durationFactor)), concentration));
- }
-
- public static AlchemyPotionHelper readEffectFromNBT(NBTTagCompound tagCompound)
- {
- return new AlchemyPotionHelper(tagCompound.getInteger("potionID"), tagCompound.getInteger("tickDuration"), tagCompound.getInteger("concentration"), tagCompound.getInteger("durationFactor"));
- }
-
- public static NBTTagCompound setEffectToNBT(AlchemyPotionHelper aph)
- {
- NBTTagCompound tagCompound = new NBTTagCompound();
- tagCompound.setInteger("potionID", aph.getPotionID());
- tagCompound.setInteger("tickDuration", aph.getTickDuration());
- tagCompound.setInteger("concentration", aph.getConcentration());
- tagCompound.setInteger("durationFactor", aph.getdurationFactor());
- return tagCompound;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java
deleted file mode 100644
index 17465b72..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy;
-
-import net.minecraft.item.ItemBlock;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.oredict.OreDictionary;
-
-public class AlchemyRecipe
-{
- private ItemStack output;
- private ItemStack[] recipe;
- private int bloodOrbLevel;
- private int amountNeeded;
-
- public AlchemyRecipe(ItemStack output, int amountNeeded, ItemStack[] recipe, int bloodOrbLevel)
- {
- this.output = output;
- this.recipe = recipe;
- this.amountNeeded = amountNeeded;
- this.bloodOrbLevel = bloodOrbLevel;
- }
-
- public boolean doesRecipeMatch(ItemStack[] items, int slottedBloodOrbLevel)
- {
- if (slottedBloodOrbLevel < bloodOrbLevel)
- {
- return false;
- }
-
- ItemStack[] recipe;
-
- if (items.length < 5)
- {
- return false;
- }
-
- if (this.recipe.length != 5)
- {
- ItemStack[] newRecipe = new ItemStack[5];
-
- for (int i = 0; i < 5; i++)
- {
- if (i + 1 > this.recipe.length)
- {
- newRecipe[i] = null;
- } else
- {
- newRecipe[i] = this.recipe[i];
- }
- }
-
- recipe = newRecipe;
- } else
- {
- recipe = this.recipe;
- }
-
- boolean[] checkList = new boolean[5];
-
- for (int i = 0; i < 5; i++)
- {
- checkList[i] = false;
- }
-
- for (int i = 0; i < 5; i++)
- {
- ItemStack recipeItemStack = recipe[i];
-
- if (recipeItemStack == null)
- {
- continue;
- }
-
- boolean test = false;
-
- for (int j = 0; j < 5; j++)
- {
- if (checkList[j])
- {
- continue;
- }
-
- ItemStack checkedItemStack = items[j];
-
- if (checkedItemStack == null)
- {
- continue;
- }
-
- boolean quickTest = false;
-
- if (recipeItemStack.getItem() instanceof ItemBlock)
- {
- if (checkedItemStack.getItem() instanceof ItemBlock)
- {
- quickTest = true;
- }
- } else if (!(checkedItemStack.getItem() instanceof ItemBlock))
- {
- quickTest = true;
- }
-
- if (!quickTest)
- {
- continue;
- }
-
- if ((checkedItemStack.getItemDamage() == recipeItemStack.getItemDamage() || OreDictionary.WILDCARD_VALUE == recipeItemStack.getItemDamage()) && checkedItemStack.getItem() == recipeItemStack.getItem())
- {
- test = true;
- checkList[j] = true;
- break;
- }
- }
-
- if (!test)
- {
- return false;
- }
- }
-
- return true;
- }
-
- public ItemStack getResult()
- {
- return output.copy();
- }
-
- public int getAmountNeeded()
- {
- return this.amountNeeded;
- }
-
- public ItemStack[] getRecipe()
- {
- return this.recipe;
- }
-
- public int getOrbLevel()
- {
- return this.bloodOrbLevel;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java
deleted file mode 100644
index 99ad2868..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy;
-
-import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb;
-import net.minecraft.item.ItemStack;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class AlchemyRecipeRegistry
-{
- public static List recipes = new ArrayList();
-
- public static void registerRecipe(ItemStack output, int amountNeeded, ItemStack[] recipe, int bloodOrbLevel)
- {
- recipes.add(new AlchemyRecipe(output, amountNeeded, recipe, bloodOrbLevel));
- }
-
- public static ItemStack getResult(ItemStack[] recipe, ItemStack bloodOrb)
- {
- if (bloodOrb == null)
- {
- return null;
- }
-
- if (!(bloodOrb.getItem() instanceof IBloodOrb))
- {
- return null;
- }
-
- int bloodOrbLevel = ((IBloodOrb) bloodOrb.getItem()).getOrbLevel();
-
- for (AlchemyRecipe ar : recipes)
- {
- if (ar.doesRecipeMatch(recipe, bloodOrbLevel))
- {
- return (ar.getResult());
- }
- }
-
- return null;
- }
-
- public static int getAmountNeeded(ItemStack[] recipe, ItemStack bloodOrb)
- {
- if (bloodOrb == null)
- {
- return 0;
- }
-
- if (!(bloodOrb.getItem() instanceof IBloodOrb))
- {
- return 0;
- }
-
- int bloodOrbLevel = ((IBloodOrb) bloodOrb.getItem()).getOrbLevel();
-
- for (AlchemyRecipe ar : recipes)
- {
- if (ar.doesRecipeMatch(recipe, bloodOrbLevel))
- {
- return (ar.getAmountNeeded());
- }
- }
-
- return 0;
- }
-
- public static ItemStack[] getRecipeForItemStack(ItemStack itemStack)
- {
- for (AlchemyRecipe ar : recipes)
- {
- ItemStack result = ar.getResult();
-
- if (result != null)
- {
- if (result.isItemEqual(itemStack))
- {
- return ar.getRecipe();
- }
- }
- }
-
- return null;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java
deleted file mode 100644
index 3d6ca980..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-
-public interface IAlchemyGoggles
-{
- boolean showIngameHUD(World world, ItemStack stack, EntityPlayer player);
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java
deleted file mode 100644
index e4d4d9dc..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-public interface IReagentContainer
-{
- ReagentStack getReagent();
-
- int getReagentStackAmount();
-
- int getCapacity();
-
- int fill(ReagentStack resource, boolean doFill);
-
- ReagentStack drain(int maxDrain, boolean doDrain);
-
- ReagentContainerInfo getInfo();
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java
deleted file mode 100644
index cf1a3fdf..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import net.minecraft.util.EnumFacing;
-
-public interface IReagentHandler
-{
- int fill(EnumFacing from, ReagentStack resource, boolean doFill);
-
- ReagentStack drain(EnumFacing from, ReagentStack resource, boolean doDrain);
-
- ReagentStack drain(EnumFacing from, int maxDrain, boolean doDrain);
-
- boolean canFill(EnumFacing from, Reagent reagent);
-
- boolean canDrain(EnumFacing from, Reagent reagent);
-
- ReagentContainerInfo[] getContainerInfo(EnumFacing from);
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java
deleted file mode 100644
index 52be7b9f..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import java.util.Map;
-
-public interface ISegmentedReagentHandler extends IReagentHandler
-{
- int getNumberOfTanks();
-
- int getTanksTunedToReagent(Reagent reagent);
-
- void setTanksTunedToReagent(Reagent reagent, int total);
-
- Map getAttunedTankMap();
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java
deleted file mode 100644
index 4cc88bcb..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-public class Reagent
-{
- public final String name;
-
- public static final int REAGENT_SIZE = 1000;
-
- private int colourRed = 0;
- private int colourGreen = 0;
- private int colourBlue = 0;
- private int colourIntensity = 255;
-
- public Reagent(String name)
- {
- this.name = name;
- }
-
- public void setColour(int red, int green, int blue, int intensity)
- {
- this.colourRed = red;
- this.colourGreen = green;
- this.colourBlue = blue;
- this.colourIntensity = intensity;
- }
-
- public int getColourRed()
- {
- return colourRed;
- }
-
- public int getColourGreen()
- {
- return colourGreen;
- }
-
- public int getColourBlue()
- {
- return colourBlue;
- }
-
- public int getColourIntensity()
- {
- return colourIntensity;
- }
-
- @Override
- public boolean equals(Object o)
- {
- return o instanceof Reagent && this == o && name.equals(((Reagent) o).name);
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java
deleted file mode 100644
index c1352746..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import net.minecraft.nbt.NBTTagCompound;
-
-public class ReagentContainer implements IReagentContainer
-{
- protected ReagentStack reagentStack;
- protected int capacity;
-
- public ReagentContainer(int capacity)
- {
- this(null, capacity);
- }
-
- public ReagentContainer(ReagentStack stack, int capacity)
- {
- this.reagentStack = stack;
- this.capacity = capacity;
- }
-
- public ReagentContainer(Reagent reagent, int amount, int capacity)
- {
- this(new ReagentStack(reagent, amount), capacity);
- }
-
- public static ReagentContainer readFromNBT(NBTTagCompound nbt)
- {
- ReagentStack reagent = ReagentStack.loadReagentStackFromNBT(nbt);
- int capacity = nbt.getInteger("capacity");
-
- if (reagent != null)
- {
- return new ReagentContainer(reagent, capacity);
- } else
- {
- return new ReagentContainer(null, capacity);
- }
- }
-
- public NBTTagCompound writeToNBT(NBTTagCompound nbt)
- {
- if (reagentStack != null)
- {
- reagentStack.writeToNBT(nbt);
- }
-
- nbt.setInteger("capacity", capacity);
-
- return nbt;
- }
-
- @Override
- public ReagentStack getReagent()
- {
- return reagentStack;
- }
-
- @Override
- public int getReagentStackAmount()
- {
- if (reagentStack == null)
- {
- return 0;
- }
- return reagentStack.amount;
- }
-
- @Override
- public int getCapacity()
- {
- return capacity;
- }
-
- @Override
- public int fill(ReagentStack resource, boolean doFill)
- {
- if (resource == null)
- {
- return 0;
- }
-
- if (!doFill)
- {
- if (reagentStack == null)
- {
- return Math.min(capacity, resource.amount);
- }
-
- if (!reagentStack.isReagentEqual(resource))
- {
- return 0;
- }
-
- return Math.min(capacity - reagentStack.amount, resource.amount);
- }
-
- if (reagentStack == null)
- {
- reagentStack = new ReagentStack(resource, Math.min(capacity, resource.amount));
-
- return reagentStack.amount;
- }
-
- if (!reagentStack.isReagentEqual(resource))
- {
- return 0;
- }
- int filled = capacity - reagentStack.amount;
-
- if (resource.amount < filled)
- {
- reagentStack.amount += resource.amount;
- filled = resource.amount;
- } else
- {
- reagentStack.amount = capacity;
- }
-
- return filled;
- }
-
- @Override
- public ReagentStack drain(int maxDrain, boolean doDrain)
- {
- if (reagentStack == null)
- {
- return null;
- }
-
- int drained = maxDrain;
- if (reagentStack.amount < drained)
- {
- drained = reagentStack.amount;
- }
-
- ReagentStack stack = new ReagentStack(reagentStack, drained);
- if (doDrain)
- {
- reagentStack.amount -= drained;
- if (reagentStack.amount <= 0)
- {
- reagentStack = null;
- }
- }
- return stack;
- }
-
- @Override
- public ReagentContainerInfo getInfo()
- {
- return new ReagentContainerInfo(this);
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java
deleted file mode 100644
index 99521dce..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-public final class ReagentContainerInfo
-{
- public final ReagentStack reagent;
- public final int capacity;
-
- public ReagentContainerInfo(ReagentStack reagent, int capacity)
- {
- this.reagent = reagent;
- this.capacity = capacity;
- }
-
- public ReagentContainerInfo(IReagentContainer tank)
- {
- this.reagent = tank.getReagent();
- this.capacity = tank.getCapacity();
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java
deleted file mode 100644
index 429587a1..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import net.minecraft.item.ItemStack;
-
-public class ReagentRegistry
-{
- public static Map reagentList = new HashMap();
- public static Map itemToReagentMap = new HashMap();
-
- public static Reagent sanctusReagent;
- public static Reagent incendiumReagent;
- public static Reagent aquasalusReagent;
- public static Reagent magicalesReagent;
- public static Reagent aetherReagent;
- public static Reagent crepitousReagent;
- public static Reagent crystallosReagent;
- public static Reagent terraeReagent;
- public static Reagent tenebraeReagent;
-
- public static Reagent offensaReagent;
- public static Reagent praesidiumReagent;
- public static Reagent orbisTerraeReagent;
- public static Reagent virtusReagent;
- public static Reagent reductusReagent;
- public static Reagent potentiaReagent;
-
- public static void initReagents()
- {
- sanctusReagent = new Reagent("sanctus");
- incendiumReagent = new Reagent("incendium");
- aquasalusReagent = new Reagent("aquasalus");
- magicalesReagent = new Reagent("magicales");
- aetherReagent = new Reagent("aether");
- crepitousReagent = new Reagent("crepitous");
- crystallosReagent = new Reagent("crystallos");
- terraeReagent = new Reagent("terrae");
- tenebraeReagent = new Reagent("tenebrae");
- offensaReagent = new Reagent("offensa");
- praesidiumReagent = new Reagent("praesidium");
- orbisTerraeReagent = new Reagent("orbisTerrae");
- virtusReagent = new Reagent("virtus");
- reductusReagent = new Reagent("reductus");
- potentiaReagent = new Reagent("potentia");
-
- sanctusReagent.setColour(255, 255, 0, 255);
- incendiumReagent.setColour(255, 0, 0, 255);
- aquasalusReagent.setColour(0, 0, 255, 255);
- magicalesReagent.setColour(150, 0, 146, 255);
- aetherReagent.setColour(105, 223, 86, 255);
- crepitousReagent.setColour(145, 145, 145, 255);
- crystallosReagent.setColour(135, 255, 231, 255);
- terraeReagent.setColour(147, 48, 13, 255);
- tenebraeReagent.setColour(86, 86, 86, 255);
- offensaReagent.setColour(126, 0, 0, 255);
- praesidiumReagent.setColour(135, 135, 135, 255);
- orbisTerraeReagent.setColour(32, 94, 14, 255);
- virtusReagent.setColour(180, 0, 0, 255);
- reductusReagent.setColour(20, 93, 2, 255);
- potentiaReagent.setColour(64, 81, 208, 255);
-
- registerReagent("sanctus", sanctusReagent);
- registerReagent("incendium", incendiumReagent);
- registerReagent("aquasalus", aquasalusReagent);
- registerReagent("magicales", magicalesReagent);
- registerReagent("aether", aetherReagent);
- registerReagent("crepitous", crepitousReagent);
- registerReagent("crystallos", crystallosReagent);
- registerReagent("terrae", terraeReagent);
- registerReagent("tenebrae", tenebraeReagent);
- registerReagent("offensa", offensaReagent);
- registerReagent("praesidium", praesidiumReagent);
- registerReagent("orbisTerrae", orbisTerraeReagent);
- registerReagent("virtus", virtusReagent);
- registerReagent("reductus", reductusReagent);
- registerReagent("potentia", potentiaReagent);
- }
-
- public static boolean registerReagent(String key, Reagent reagent)
- {
- if (reagentList.containsKey(key) || reagent == null)
- {
- return false;
- }
-
- reagentList.put(key, reagent);
-
- return true;
- }
-
- public static Reagent getReagentForKey(String key)
- {
- if (reagentList.containsKey(key))
- {
- return reagentList.get(key);
- }
-
- return null;
- }
-
- public static String getKeyForReagent(Reagent reagent)
- {
- if (reagentList.containsValue(reagent))
- {
- Set> set = reagentList.entrySet();
- for (Entry entry : set)
- {
- if (entry.getValue().equals(reagent))
- {
- return entry.getKey();
- }
- }
- }
-
- return "";
- }
-
- public static void registerItemAndReagent(ItemStack stack, ReagentStack reagentStack)
- {
- itemToReagentMap.put(stack, reagentStack);
- }
-
- public static ReagentStack getReagentStackForItem(ItemStack stack)
- {
- if (stack == null)
- {
- return null;
- }
-
- for (Entry entry : itemToReagentMap.entrySet())
- {
- if (entry.getKey() != null && entry.getKey().isItemEqual(stack))
- {
- if (entry.getValue() == null)
- {
- return null;
- } else
- {
- return entry.getValue().copy();
- }
- }
- }
-
- return null;
- }
-
- public static ItemStack getItemForReagent(Reagent reagent)
- {
- if (reagent == null)
- {
- return null;
- }
-
- for (Entry entry : itemToReagentMap.entrySet())
- {
- if (entry.getValue() != null && entry.getValue().reagent == reagent)
- {
- if (entry.getKey() == null)
- {
- return null;
- } else
- {
- return entry.getKey().copy();
- }
- }
- }
-
- return null;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java
deleted file mode 100644
index 8923f3d3..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import net.minecraft.nbt.NBTTagCompound;
-
-public class ReagentStack
-{
- public Reagent reagent;
- public int amount;
-
- public ReagentStack(Reagent reagent, int amount)
- {
- this.reagent = reagent;
- this.amount = amount;
- }
-
- public ReagentStack(ReagentStack reagentStack, int amount)
- {
- this(reagentStack.reagent, amount);
- }
-
- public static ReagentStack loadReagentStackFromNBT(NBTTagCompound tag)
- {
- Reagent reagent = ReagentRegistry.getReagentForKey(tag.getString("Reagent"));
-
- if (reagent == null)
- {
- return null;
- }
-
- int amount = tag.getInteger("amount");
-
- return new ReagentStack(reagent, amount);
- }
-
- public NBTTagCompound writeToNBT(NBTTagCompound tag)
- {
- tag.setString("Reagent", ReagentRegistry.getKeyForReagent(this.reagent));
- tag.setInteger("amount", this.amount);
-
- return tag;
- }
-
- public ReagentStack splitStack(int amount)
- {
- ReagentStack copyStack = this.copy();
- int splitAmount = Math.min(amount, this.amount);
- copyStack.amount = splitAmount;
- this.amount -= splitAmount;
-
- return copyStack;
- }
-
- public ReagentStack copy()
- {
- return new ReagentStack(this.reagent, this.amount);
- }
-
- public boolean isReagentEqual(ReagentStack other)
- {
- return other != null && this.reagent == other.reagent;
- }
-}
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java
deleted file mode 100644
index 5a841651..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java
+++ /dev/null
@@ -1,66 +0,0 @@
-
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.EnumFacing;
-
-public class TileReagentHandler extends TileEntity implements IReagentHandler
-{
- protected ReagentContainer tank = new ReagentContainer(4000);
-
- @Override
- public void readFromNBT(NBTTagCompound tag)
- {
- super.readFromNBT(tag);
- tank.readFromNBT(tag);
- }
-
- @Override
- public void writeToNBT(NBTTagCompound tag)
- {
- super.writeToNBT(tag);
- tank.writeToNBT(tag);
- }
-
- /* IReagentHandler */
- @Override
- public int fill(EnumFacing from, ReagentStack resource, boolean doFill)
- {
- return tank.fill(resource, doFill);
- }
-
- @Override
- public ReagentStack drain(EnumFacing from, ReagentStack resource, boolean doDrain)
- {
- if (resource == null || !resource.isReagentEqual(tank.getReagent()))
- {
- return null;
- }
- return tank.drain(resource.amount, doDrain);
- }
-
- @Override
- public ReagentStack drain(EnumFacing from, int maxDrain, boolean doDrain)
- {
- return tank.drain(maxDrain, doDrain);
- }
-
- @Override
- public boolean canFill(EnumFacing from, Reagent reagent)
- {
- return true;
- }
-
- @Override
- public boolean canDrain(EnumFacing from, Reagent reagent)
- {
- return true;
- }
-
- @Override
- public ReagentContainerInfo[] getContainerInfo(EnumFacing from)
- {
- return new ReagentContainerInfo[]{tank.getInfo()};
- }
-}
\ No newline at end of file
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java
deleted file mode 100644
index f965ab7a..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java
+++ /dev/null
@@ -1,283 +0,0 @@
-
-package WayofTime.alchemicalWizardry.api.alchemy.energy;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.nbt.NBTTagList;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.util.Constants;
-
-public class TileSegmentedReagentHandler extends TileEntity implements ISegmentedReagentHandler
-{
- protected ReagentContainer[] tanks;
- protected Map attunedTankMap;
-
- public TileSegmentedReagentHandler()
- {
- this(1);
- }
-
- public TileSegmentedReagentHandler(int numberOfTanks)
- {
- this(numberOfTanks, 1000);
- }
-
- public TileSegmentedReagentHandler(int numberOfTanks, int tankSize)
- {
- super();
-
- this.attunedTankMap = new HashMap();
- this.tanks = new ReagentContainer[numberOfTanks];
- for (int i = 0; i < numberOfTanks; i++)
- {
- this.tanks[i] = new ReagentContainer(tankSize);
- }
- }
-
- @Override
- public void readFromNBT(NBTTagCompound tag)
- {
- super.readFromNBT(tag);
-
- NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND);
-
- int size = tagList.tagCount();
- this.tanks = new ReagentContainer[size];
-
- for (int i = 0; i < size; i++)
- {
- NBTTagCompound savedTag = tagList.getCompoundTagAt(i);
- this.tanks[i] = ReagentContainer.readFromNBT(savedTag);
- }
-
- NBTTagList attunedTagList = tag.getTagList("attunedTankMap", Constants.NBT.TAG_COMPOUND);
-
- for (int i = 0; i < attunedTagList.tagCount(); i++)
- {
- NBTTagCompound savedTag = attunedTagList.getCompoundTagAt(i);
- Reagent reagent = ReagentRegistry.getReagentForKey(savedTag.getString("reagent"));
- this.attunedTankMap.put(reagent, savedTag.getInteger("amount"));
- }
- }
-
- @Override
- public void writeToNBT(NBTTagCompound tag)
- {
- super.writeToNBT(tag);
-
- NBTTagList tagList = new NBTTagList();
-
- for (int i = 0; i < this.tanks.length; i++)
- {
- NBTTagCompound savedTag = new NBTTagCompound();
- if (this.tanks[i] != null)
- {
- this.tanks[i].writeToNBT(savedTag);
- }
- tagList.appendTag(savedTag);
- }
-
- tag.setTag("reagentTanks", tagList);
-
- NBTTagList attunedTagList = new NBTTagList();
-
- for (Entry entry : this.attunedTankMap.entrySet())
- {
- NBTTagCompound savedTag = new NBTTagCompound();
- savedTag.setString("reagent", ReagentRegistry.getKeyForReagent(entry.getKey()));
- savedTag.setInteger("amount", entry.getValue());
- attunedTagList.appendTag(savedTag);
- }
-
- tag.setTag("attunedTankMap", attunedTagList);
- }
-
- /* ISegmentedReagentHandler */
- @Override
- public int fill(EnumFacing from, ReagentStack resource, boolean doFill)
- {
- int totalFill = 0;
-
- boolean useTankLimit = !this.attunedTankMap.isEmpty();
-
- if (resource != null)
- {
- int totalTanksFillable = useTankLimit ? this.getTanksTunedToReagent(resource.reagent) : this.tanks.length;
- int tanksFilled = 0;
-
- int maxFill = resource.amount;
-
- for (int i = this.tanks.length - 1; i >= 0; i--)
- {
- ReagentStack remainingStack = resource.copy();
- remainingStack.amount = maxFill - totalFill;
-
- boolean doesReagentMatch = tanks[i].getReagent() != null && tanks[i].getReagent().isReagentEqual(remainingStack);
-
- if (doesReagentMatch)
- {
- totalFill += tanks[i].fill(remainingStack, doFill);
- tanksFilled++;
- } else
- {
- continue;
- }
-
- if (totalFill >= maxFill || tanksFilled >= totalTanksFillable)
- {
- return totalFill;
- }
- }
-
- if (tanksFilled >= totalTanksFillable)
- {
- return totalFill;
- }
-
- for (int i = this.tanks.length - 1; i >= 0; i--)
- {
- ReagentStack remainingStack = resource.copy();
- remainingStack.amount = maxFill - totalFill;
-
- boolean isTankEmpty = tanks[i].getReagent() == null;
-
- if (isTankEmpty)
- {
- totalFill += tanks[i].fill(remainingStack, doFill);
- tanksFilled++;
- } else
- {
- continue;
- }
-
- if (totalFill >= maxFill || tanksFilled >= totalTanksFillable)
- {
- return totalFill;
- }
- }
- }
- return totalFill;
- }
-
- @Override
- public ReagentStack drain(EnumFacing from, ReagentStack resource, boolean doDrain)
- {
- if (resource == null)
- {
- return null;
- }
-
- int maxDrain = resource.amount;
- Reagent reagent = resource.reagent;
- int drained = 0;
-
- for (int i = 0; i < tanks.length; i++)
- {
- if (drained >= maxDrain)
- {
- break;
- }
-
- if (resource.isReagentEqual(tanks[i].getReagent()))
- {
- ReagentStack drainStack = tanks[i].drain(maxDrain - drained, doDrain);
- if (drainStack != null)
- {
- drained += drainStack.amount;
- }
- }
- }
-
- return new ReagentStack(reagent, drained);
- }
-
- /* Only returns the amount from the first available tank */
- @Override
- public ReagentStack drain(EnumFacing from, int maxDrain, boolean doDrain)
- {
- for (int i = 0; i < tanks.length; i++)
- {
- ReagentStack stack = tanks[i].drain(maxDrain, doDrain);
- if (stack != null)
- {
- return stack;
- }
- }
-
- return null;
- }
-
- @Override
- public boolean canFill(EnumFacing from, Reagent reagent)
- {
- return true;
- }
-
- @Override
- public boolean canDrain(EnumFacing from, Reagent reagent)
- {
- return true;
- }
-
- @Override
- public ReagentContainerInfo[] getContainerInfo(EnumFacing from)
- {
- ReagentContainerInfo[] info = new ReagentContainerInfo[this.getNumberOfTanks()];
- for (int i = 0; i < this.getNumberOfTanks(); i++)
- {
- info[i] = tanks[i].getInfo();
- }
- return info;
- }
-
- @Override
- public int getNumberOfTanks()
- {
- return tanks.length;
- }
-
- @Override
- public int getTanksTunedToReagent(Reagent reagent)
- {
- if (this.attunedTankMap.containsKey(reagent) && this.attunedTankMap.get(reagent) != null)
- {
- return this.attunedTankMap.get(reagent);
- }
- return 0;
- }
-
- @Override
- public void setTanksTunedToReagent(Reagent reagent, int total)
- {
- if (total == 0 && this.attunedTankMap.containsKey(reagent))
- {
- this.attunedTankMap.remove(reagent);
- return;
- }
-
- this.attunedTankMap.put(reagent, total);
- }
-
- @Override
- public Map getAttunedTankMap()
- {
- return this.attunedTankMap;
- }
-
- public boolean areTanksEmpty()
- {
- for (int i = 0; i < this.tanks.length; i++)
- {
- if (tanks[i] != null && tanks[i].reagentStack != null)
- {
- return false;
- }
- }
-
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipe.java b/src/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipe.java
deleted file mode 100644
index bb581251..00000000
--- a/src/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipe.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package WayofTime.alchemicalWizardry.api.altarRecipeRegistry;
-
-import java.util.ArrayList;
-import java.util.Set;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTTagCompound;
-
-public class AltarRecipe
-{
- public int minTier;
- public int liquidRequired;
- public boolean canBeFilled; //Tells the system that the item is an orb
- public int consumptionRate;
- public int drainRate;
- public ItemStack requiredItem;
- public ItemStack result;
- public boolean useTag;
- public ArrayList