This commit is contained in:
2026-01-07 13:29:10 -05:00
commit 686541e399
1629 changed files with 317473 additions and 0 deletions
+526
View File
@@ -0,0 +1,526 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = tab
insert_final_newline = false
max_line_length = 120
tab_width = 4
ij_continuation_indent_size = 4
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = false
ij_smart_tabs = false
ij_visual_guides = none
ij_wrap_on_typing = false
[*.java]
ij_java_align_consecutive_assignments = false
ij_java_align_consecutive_variable_declarations = false
ij_java_align_group_field_declarations = false
ij_java_align_multiline_annotation_parameters = false
ij_java_align_multiline_array_initializer_expression = false
ij_java_align_multiline_assignment = true
ij_java_align_multiline_binary_operation = true
ij_java_align_multiline_chained_methods = false
ij_java_align_multiline_extends_list = false
ij_java_align_multiline_for = true
ij_java_align_multiline_method_parentheses = false
ij_java_align_multiline_parameters = false
ij_java_align_multiline_parameters_in_calls = false
ij_java_align_multiline_parenthesized_expression = false
ij_java_align_multiline_records = true
ij_java_align_multiline_resources = true
ij_java_align_multiline_ternary_operation = false
ij_java_align_multiline_text_blocks = false
ij_java_align_multiline_throws_list = false
ij_java_align_subsequent_simple_methods = false
ij_java_align_throws_keyword = false
ij_java_annotation_parameter_wrap = off
ij_java_array_initializer_new_line_after_left_brace = false
ij_java_array_initializer_right_brace_on_new_line = false
ij_java_array_initializer_wrap = off
ij_java_assert_statement_colon_on_next_line = false
ij_java_assert_statement_wrap = off
ij_java_assignment_wrap = off
ij_java_binary_operation_sign_on_next_line = false
ij_java_binary_operation_wrap = off
ij_java_blank_lines_after_anonymous_class_header = 0
ij_java_blank_lines_after_class_header = 0
ij_java_blank_lines_after_imports = 1
ij_java_blank_lines_after_package = 1
ij_java_blank_lines_around_class = 1
ij_java_blank_lines_around_field = 0
ij_java_blank_lines_around_field_in_interface = 0
ij_java_blank_lines_around_initializer = 1
ij_java_blank_lines_around_method = 1
ij_java_blank_lines_around_method_in_interface = 1
ij_java_blank_lines_before_class_end = 0
ij_java_blank_lines_before_imports = 1
ij_java_blank_lines_before_method_body = 0
ij_java_blank_lines_before_package = 0
ij_java_block_brace_style = end_of_line
ij_java_block_comment_at_first_column = true
ij_java_builder_methods = none
ij_java_call_parameters_new_line_after_left_paren = false
ij_java_call_parameters_right_paren_on_new_line = false
ij_java_call_parameters_wrap = off
ij_java_case_statement_on_separate_line = true
ij_java_catch_on_new_line = false
ij_java_class_annotation_wrap = split_into_lines
ij_java_class_brace_style = next_line
ij_java_class_count_to_use_import_on_demand = 5
ij_java_class_names_in_javadoc = 1
ij_java_do_not_indent_top_level_class_members = false
ij_java_do_not_wrap_after_single_annotation = false
ij_java_do_while_brace_force = never
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = true
ij_java_doc_align_exception_comments = true
ij_java_doc_align_param_comments = true
ij_java_doc_do_not_wrap_if_one_line = false
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = false
ij_java_doc_keep_empty_lines = true
ij_java_doc_keep_empty_parameter_tag = true
ij_java_doc_keep_empty_return_tag = true
ij_java_doc_keep_empty_throws_tag = true
ij_java_doc_keep_invalid_tags = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_preserve_line_breaks = false
ij_java_doc_use_throws_not_exception_tag = true
ij_java_else_on_new_line = false
ij_java_enum_constants_wrap = off
ij_java_extends_keyword_wrap = off
ij_java_extends_list_wrap = off
ij_java_field_annotation_wrap = split_into_lines
ij_java_finally_on_new_line = false
ij_java_for_brace_force = never
ij_java_for_statement_new_line_after_left_paren = false
ij_java_for_statement_right_paren_on_new_line = false
ij_java_for_statement_wrap = off
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false
ij_java_if_brace_force = never
ij_java_imports_layout = *, |, javax.**, java.**, |, $*
ij_java_indent_case_from_switch = true
ij_java_insert_inner_class_imports = false
ij_java_insert_override_annotation = true
ij_java_keep_blank_lines_before_right_brace = 2
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
ij_java_keep_blank_lines_in_code = 2
ij_java_keep_blank_lines_in_declarations = 2
ij_java_keep_builder_methods_indents = false
ij_java_keep_control_statement_in_one_line = true
ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = false
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_classes_in_one_line = false
ij_java_keep_simple_lambdas_in_one_line = false
ij_java_keep_simple_methods_in_one_line = false
ij_java_label_indent_absolute = false
ij_java_label_indent_size = 0
ij_java_lambda_brace_style = end_of_line
ij_java_layout_static_imports_separately = true
ij_java_line_comment_add_space = false
ij_java_line_comment_at_first_column = true
ij_java_method_annotation_wrap = split_into_lines
ij_java_method_brace_style = end_of_line
ij_java_method_call_chain_wrap = off
ij_java_method_parameters_new_line_after_left_paren = true
ij_java_method_parameters_right_paren_on_new_line = true
ij_java_method_parameters_wrap = on_every_item
ij_java_modifier_list_wrap = false
ij_java_names_count_to_use_import_on_demand = 3
ij_java_new_line_after_lparen_in_record_header = false
ij_java_packages_to_use_import_on_demand = java.awt.*, javax.swing.*
ij_java_parameter_annotation_wrap = off
ij_java_parentheses_expression_new_line_after_left_paren = false
ij_java_parentheses_expression_right_paren_on_new_line = false
ij_java_place_assignment_sign_on_next_line = false
ij_java_prefer_longer_names = true
ij_java_prefer_parameters_wrap = false
ij_java_record_components_wrap = normal
ij_java_repeat_synchronized = true
ij_java_replace_instanceof_and_cast = false
ij_java_replace_null_check = true
ij_java_replace_sum_lambda_with_method_ref = true
ij_java_resource_list_new_line_after_left_paren = false
ij_java_resource_list_right_paren_on_new_line = false
ij_java_resource_list_wrap = off
ij_java_rparen_on_new_line_in_record_header = false
ij_java_space_after_closing_angle_bracket_in_type_argument = false
ij_java_space_after_colon = false
ij_java_space_after_comma = true
ij_java_space_after_comma_in_type_arguments = true
ij_java_space_after_for_semicolon = true
ij_java_space_after_quest = true
ij_java_space_after_type_cast = true
ij_java_space_before_annotation_array_initializer_left_brace = false
ij_java_space_before_annotation_parameter_list = false
ij_java_space_before_array_initializer_left_brace = false
ij_java_space_before_catch_keyword = true
ij_java_space_before_catch_left_brace = true
ij_java_space_before_catch_parentheses = true
ij_java_space_before_class_left_brace = true
ij_java_space_before_colon = false
ij_java_space_before_colon_in_foreach = true
ij_java_space_before_comma = false
ij_java_space_before_do_left_brace = true
ij_java_space_before_else_keyword = true
ij_java_space_before_else_left_brace = true
ij_java_space_before_finally_keyword = true
ij_java_space_before_finally_left_brace = true
ij_java_space_before_for_left_brace = true
ij_java_space_before_for_parentheses = true
ij_java_space_before_for_semicolon = false
ij_java_space_before_if_left_brace = true
ij_java_space_before_if_parentheses = true
ij_java_space_before_method_call_parentheses = false
ij_java_space_before_method_left_brace = true
ij_java_space_before_method_parentheses = false
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
ij_java_space_before_quest = true
ij_java_space_before_switch_left_brace = true
ij_java_space_before_switch_parentheses = true
ij_java_space_before_synchronized_left_brace = true
ij_java_space_before_synchronized_parentheses = true
ij_java_space_before_try_left_brace = true
ij_java_space_before_try_parentheses = true
ij_java_space_before_type_parameter_list = false
ij_java_space_before_while_keyword = true
ij_java_space_before_while_left_brace = true
ij_java_space_before_while_parentheses = true
ij_java_space_inside_one_line_enum_braces = false
ij_java_space_within_empty_array_initializer_braces = false
ij_java_space_within_empty_method_call_parentheses = false
ij_java_space_within_empty_method_parentheses = false
ij_java_spaces_around_additive_operators = true
ij_java_spaces_around_assignment_operators = true
ij_java_spaces_around_bitwise_operators = true
ij_java_spaces_around_equality_operators = true
ij_java_spaces_around_lambda_arrow = true
ij_java_spaces_around_logical_operators = true
ij_java_spaces_around_method_ref_dbl_colon = false
ij_java_spaces_around_multiplicative_operators = true
ij_java_spaces_around_relational_operators = true
ij_java_spaces_around_shift_operators = true
ij_java_spaces_around_type_bounds_in_type_parameters = true
ij_java_spaces_around_unary_operator = false
ij_java_spaces_within_angle_brackets = false
ij_java_spaces_within_annotation_parentheses = false
ij_java_spaces_within_array_initializer_braces = false
ij_java_spaces_within_braces = false
ij_java_spaces_within_brackets = false
ij_java_spaces_within_cast_parentheses = false
ij_java_spaces_within_catch_parentheses = false
ij_java_spaces_within_for_parentheses = false
ij_java_spaces_within_if_parentheses = false
ij_java_spaces_within_method_call_parentheses = false
ij_java_spaces_within_method_parentheses = false
ij_java_spaces_within_parentheses = false
ij_java_spaces_within_record_header = false
ij_java_spaces_within_switch_parentheses = false
ij_java_spaces_within_synchronized_parentheses = false
ij_java_spaces_within_try_parentheses = false
ij_java_spaces_within_while_parentheses = false
ij_java_special_else_if_treatment = true
ij_java_subclass_name_suffix = Impl
ij_java_ternary_operation_signs_on_next_line = false
ij_java_ternary_operation_wrap = off
ij_java_test_name_suffix = Test
ij_java_throws_keyword_wrap = off
ij_java_throws_list_wrap = off
ij_java_use_external_annotations = false
ij_java_use_fq_class_names = false
ij_java_use_relative_indents = false
ij_java_use_single_class_imports = true
ij_java_variable_annotation_wrap = off
ij_java_visibility = public
ij_java_while_brace_force = never
ij_java_while_on_new_line = false
ij_java_wrap_comments = false
ij_java_wrap_first_method_in_call_chain = false
ij_java_wrap_long_lines = false
[*.nbtt]
max_line_length = 150
ij_continuation_indent_size = 4
ij_nbtt_keep_indents_on_empty_lines = false
ij_nbtt_space_after_colon = true
ij_nbtt_space_after_comma = true
ij_nbtt_space_before_colon = true
ij_nbtt_space_before_comma = false
ij_nbtt_spaces_within_brackets = false
ij_nbtt_spaces_within_parentheses = false
[*.properties]
ij_properties_align_group_field_declarations = false
ij_properties_keep_blank_lines = false
ij_properties_key_value_delimiter = equals
ij_properties_spaces_around_key_value_delimiter = false
[.editorconfig]
ij_editorconfig_align_group_field_declarations = false
ij_editorconfig_space_after_colon = false
ij_editorconfig_space_after_comma = true
ij_editorconfig_space_before_colon = false
ij_editorconfig_space_before_comma = false
ij_editorconfig_spaces_around_assignment_operators = true
[{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.jspx,*.pom,*.rng,*.tagx,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}]
ij_xml_align_attributes = true
ij_xml_align_text = false
ij_xml_attribute_wrap = normal
ij_xml_block_comment_at_first_column = true
ij_xml_keep_blank_lines = 2
ij_xml_keep_indents_on_empty_lines = false
ij_xml_keep_line_breaks = true
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_whitespaces = false
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false
ij_xml_line_comment_at_first_column = true
ij_xml_space_after_tag_name = false
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_inside_empty_tag = false
ij_xml_text_wrap = normal
[{*.gant,*.gradle,*.groovy,*.gy}]
ij_groovy_align_group_field_declarations = false
ij_groovy_align_multiline_array_initializer_expression = false
ij_groovy_align_multiline_assignment = false
ij_groovy_align_multiline_binary_operation = false
ij_groovy_align_multiline_chained_methods = false
ij_groovy_align_multiline_extends_list = false
ij_groovy_align_multiline_for = true
ij_groovy_align_multiline_list_or_map = true
ij_groovy_align_multiline_method_parentheses = false
ij_groovy_align_multiline_parameters = true
ij_groovy_align_multiline_parameters_in_calls = false
ij_groovy_align_multiline_resources = true
ij_groovy_align_multiline_ternary_operation = false
ij_groovy_align_multiline_throws_list = false
ij_groovy_align_named_args_in_map = true
ij_groovy_align_throws_keyword = false
ij_groovy_array_initializer_new_line_after_left_brace = false
ij_groovy_array_initializer_right_brace_on_new_line = false
ij_groovy_array_initializer_wrap = off
ij_groovy_assert_statement_wrap = off
ij_groovy_assignment_wrap = off
ij_groovy_binary_operation_wrap = off
ij_groovy_blank_lines_after_class_header = 0
ij_groovy_blank_lines_after_imports = 1
ij_groovy_blank_lines_after_package = 1
ij_groovy_blank_lines_around_class = 1
ij_groovy_blank_lines_around_field = 0
ij_groovy_blank_lines_around_field_in_interface = 0
ij_groovy_blank_lines_around_method = 1
ij_groovy_blank_lines_around_method_in_interface = 1
ij_groovy_blank_lines_before_imports = 1
ij_groovy_blank_lines_before_method_body = 0
ij_groovy_blank_lines_before_package = 0
ij_groovy_block_brace_style = end_of_line
ij_groovy_block_comment_at_first_column = true
ij_groovy_call_parameters_new_line_after_left_paren = false
ij_groovy_call_parameters_right_paren_on_new_line = false
ij_groovy_call_parameters_wrap = off
ij_groovy_catch_on_new_line = false
ij_groovy_class_annotation_wrap = split_into_lines
ij_groovy_class_brace_style = next_line
ij_groovy_class_count_to_use_import_on_demand = 5
ij_groovy_do_while_brace_force = never
ij_groovy_else_on_new_line = false
ij_groovy_enum_constants_wrap = off
ij_groovy_extends_keyword_wrap = off
ij_groovy_extends_list_wrap = off
ij_groovy_field_annotation_wrap = split_into_lines
ij_groovy_finally_on_new_line = false
ij_groovy_for_brace_force = never
ij_groovy_for_statement_new_line_after_left_paren = false
ij_groovy_for_statement_right_paren_on_new_line = false
ij_groovy_for_statement_wrap = off
ij_groovy_if_brace_force = never
ij_groovy_import_annotation_wrap = 2
ij_groovy_imports_layout = *, |, javax.**, java.**, |, $*
ij_groovy_indent_case_from_switch = true
ij_groovy_indent_label_blocks = true
ij_groovy_insert_inner_class_imports = false
ij_groovy_keep_blank_lines_before_right_brace = 2
ij_groovy_keep_blank_lines_in_code = 2
ij_groovy_keep_blank_lines_in_declarations = 2
ij_groovy_keep_control_statement_in_one_line = true
ij_groovy_keep_first_column_comment = true
ij_groovy_keep_indents_on_empty_lines = false
ij_groovy_keep_line_breaks = true
ij_groovy_keep_multiple_expressions_in_one_line = false
ij_groovy_keep_simple_blocks_in_one_line = false
ij_groovy_keep_simple_classes_in_one_line = true
ij_groovy_keep_simple_lambdas_in_one_line = true
ij_groovy_keep_simple_methods_in_one_line = true
ij_groovy_label_indent_absolute = false
ij_groovy_label_indent_size = 0
ij_groovy_lambda_brace_style = end_of_line
ij_groovy_layout_static_imports_separately = true
ij_groovy_line_comment_add_space = false
ij_groovy_line_comment_at_first_column = true
ij_groovy_method_annotation_wrap = split_into_lines
ij_groovy_method_brace_style = end_of_line
ij_groovy_method_call_chain_wrap = off
ij_groovy_method_parameters_new_line_after_left_paren = false
ij_groovy_method_parameters_right_paren_on_new_line = false
ij_groovy_method_parameters_wrap = off
ij_groovy_modifier_list_wrap = false
ij_groovy_names_count_to_use_import_on_demand = 3
ij_groovy_parameter_annotation_wrap = off
ij_groovy_parentheses_expression_new_line_after_left_paren = false
ij_groovy_parentheses_expression_right_paren_on_new_line = false
ij_groovy_prefer_parameters_wrap = false
ij_groovy_resource_list_new_line_after_left_paren = false
ij_groovy_resource_list_right_paren_on_new_line = false
ij_groovy_resource_list_wrap = off
ij_groovy_space_after_assert_separator = true
ij_groovy_space_after_colon = true
ij_groovy_space_after_comma = true
ij_groovy_space_after_comma_in_type_arguments = true
ij_groovy_space_after_for_semicolon = true
ij_groovy_space_after_quest = true
ij_groovy_space_after_type_cast = true
ij_groovy_space_before_annotation_parameter_list = false
ij_groovy_space_before_array_initializer_left_brace = false
ij_groovy_space_before_assert_separator = false
ij_groovy_space_before_catch_keyword = true
ij_groovy_space_before_catch_left_brace = true
ij_groovy_space_before_catch_parentheses = true
ij_groovy_space_before_class_left_brace = true
ij_groovy_space_before_closure_left_brace = true
ij_groovy_space_before_colon = true
ij_groovy_space_before_comma = false
ij_groovy_space_before_do_left_brace = true
ij_groovy_space_before_else_keyword = true
ij_groovy_space_before_else_left_brace = true
ij_groovy_space_before_finally_keyword = true
ij_groovy_space_before_finally_left_brace = true
ij_groovy_space_before_for_left_brace = true
ij_groovy_space_before_for_parentheses = true
ij_groovy_space_before_for_semicolon = false
ij_groovy_space_before_if_left_brace = true
ij_groovy_space_before_if_parentheses = true
ij_groovy_space_before_method_call_parentheses = false
ij_groovy_space_before_method_left_brace = true
ij_groovy_space_before_method_parentheses = false
ij_groovy_space_before_quest = true
ij_groovy_space_before_switch_left_brace = true
ij_groovy_space_before_switch_parentheses = true
ij_groovy_space_before_synchronized_left_brace = true
ij_groovy_space_before_synchronized_parentheses = true
ij_groovy_space_before_try_left_brace = true
ij_groovy_space_before_try_parentheses = true
ij_groovy_space_before_while_keyword = true
ij_groovy_space_before_while_left_brace = true
ij_groovy_space_before_while_parentheses = true
ij_groovy_space_in_named_argument = true
ij_groovy_space_in_named_argument_before_colon = false
ij_groovy_space_within_empty_array_initializer_braces = false
ij_groovy_space_within_empty_method_call_parentheses = false
ij_groovy_spaces_around_additive_operators = true
ij_groovy_spaces_around_assignment_operators = true
ij_groovy_spaces_around_bitwise_operators = true
ij_groovy_spaces_around_equality_operators = true
ij_groovy_spaces_around_lambda_arrow = true
ij_groovy_spaces_around_logical_operators = true
ij_groovy_spaces_around_multiplicative_operators = true
ij_groovy_spaces_around_regex_operators = true
ij_groovy_spaces_around_relational_operators = true
ij_groovy_spaces_around_shift_operators = true
ij_groovy_spaces_within_annotation_parentheses = false
ij_groovy_spaces_within_array_initializer_braces = false
ij_groovy_spaces_within_braces = true
ij_groovy_spaces_within_brackets = false
ij_groovy_spaces_within_cast_parentheses = false
ij_groovy_spaces_within_catch_parentheses = false
ij_groovy_spaces_within_for_parentheses = false
ij_groovy_spaces_within_gstring_injection_braces = false
ij_groovy_spaces_within_if_parentheses = false
ij_groovy_spaces_within_list_or_map = false
ij_groovy_spaces_within_method_call_parentheses = false
ij_groovy_spaces_within_method_parentheses = false
ij_groovy_spaces_within_parentheses = false
ij_groovy_spaces_within_switch_parentheses = false
ij_groovy_spaces_within_synchronized_parentheses = false
ij_groovy_spaces_within_try_parentheses = false
ij_groovy_spaces_within_tuple_expression = false
ij_groovy_spaces_within_while_parentheses = false
ij_groovy_special_else_if_treatment = true
ij_groovy_ternary_operation_wrap = off
ij_groovy_throws_keyword_wrap = off
ij_groovy_throws_list_wrap = off
ij_groovy_use_flying_geese_braces = false
ij_groovy_use_fq_class_names = false
ij_groovy_use_fq_class_names_in_javadoc = true
ij_groovy_use_relative_indents = false
ij_groovy_use_single_class_imports = true
ij_groovy_variable_annotation_wrap = off
ij_groovy_while_brace_force = never
ij_groovy_while_on_new_line = false
ij_groovy_wrap_chain_calls_after_dot = false
ij_groovy_wrap_long_lines = false
[{*.har,*.json}]
ij_json_keep_blank_lines_in_code = 0
ij_json_keep_indents_on_empty_lines = false
ij_json_keep_line_breaks = true
ij_json_space_after_colon = true
ij_json_space_after_comma = true
ij_json_space_before_colon = false
ij_json_space_before_comma = false
ij_json_spaces_within_braces = false
ij_json_spaces_within_brackets = false
ij_json_wrap_long_lines = false
[{*.htm,*.html,*.sht,*.shtm,*.shtml}]
ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3
ij_html_align_attributes = true
ij_html_align_text = false
ij_html_attribute_wrap = normal
ij_html_block_comment_at_first_column = true
ij_html_do_not_align_children_of_min_lines = 0
ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p
ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot
ij_html_enforce_quotes = false
ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var
ij_html_keep_blank_lines = 2
ij_html_keep_indents_on_empty_lines = false
ij_html_keep_line_breaks = true
ij_html_keep_line_breaks_in_text = true
ij_html_keep_whitespaces = false
ij_html_keep_whitespaces_inside = span, pre, textarea
ij_html_line_comment_at_first_column = true
ij_html_new_line_after_last_attribute = never
ij_html_new_line_before_first_attribute = never
ij_html_quote_style = double
ij_html_remove_new_line_before_tags = br
ij_html_space_after_tag_name = false
ij_html_space_around_equality_in_attribute = false
ij_html_space_inside_empty_tag = false
ij_html_text_wrap = normal
[{*.markdown,*.md}]
ij_markdown_force_one_space_after_blockquote_symbol = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_between_words = true
ij_markdown_keep_indents_on_empty_lines = false
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_between_paragraphs = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_between_paragraphs = 1
+32
View File
@@ -0,0 +1,32 @@
---
name: Bug report
about: Create a report to help us improve
title: "[BUG}"
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Modloader and Version [e.g. Neoforge 21.1.211]
- Mod Version [e.g. Forge 1.20.1 0.101.0]
**Additional context**
Add any other context about the problem here.
+20
View File
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+23
View File
@@ -0,0 +1,23 @@
build/
*.ipr
run/
*.iws
out/
*.iml
.gradle/
output/
bin/
libs/
.kotlin
.classpath
.project
.idea/
classes/
.metadata
.vscode
.settings
*.launch
.architectury-transformer
gradle_client_output.txt
gradle_server_output.txt
+121
View File
@@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
+71
View File
@@ -0,0 +1,71 @@
![Jurassic Revived](/assets/images/banner-logo.png)
See https://github.com/classic-mods-revived/Jurassic-Revived-1.21.1-Neoforge for the source for the 1.21.1 version and https://github.com/classic-mods-revived/Jurassic-Revived-1.20.1-Forge for the 1.20.1 version
## A free dinosaur mod for 1.20.1 and 1.21.1, inspired by the classic JurassiCraft experience no paywalls, no nonsense.
## 📦 About the Mod:
Jurassic Revived is a fan-made dinosaur mod for Minecraft 1.20.1 and 1.21.1, inspired by the gameplay and features of the original JurassiCraft mod.
## 🧬 Core Features:
- 🦴 Fossil & DNA System Dig up fossils, extract DNA, and bring dinosaurs back to life using high-tech machines.
- 🧠 Dynamic Dinosaur AI Species-specific behaviors such as aggression, fleeing, roaming, and herding.
- 🏞️ Park-Building Tools Create enclosures, labs, research zones, and viewing areas.
## 🦕 Dinosaurs (with more to come in the future):
- Albertosaurus
- Apatosaurus
- Baryonyx
- Brachiosaurus
- Carnotaurus
- Ceratosaurus
- Compsognathus
- Concavenator
- Deinonychus
- Dilophosaurus
- Diplodocus
- D Rex
- Edmontosaurus
- Gallimimus
- Giganotosuarus
- Guanlong
- Herrerasaurus
- Indominus Rex
- Majungasaurus
- Ouranosaurus
- Parasaurolophus
- Procompsognathus
- Protoceratops
- Rugops
- Shantungosaurus
- Spinosaurus
- Stegosaurus
- Styracosaurus
- Theriznosarus
- Triceratops
- Tyrannosaurus Rex
- Velociraptor
More species may be added over time.
## 💡 Why Jurassic Revived?
When JurassiCraft went private and its downloads disappeared, this mod was made to continue the legacy — for the community, by the community. Jurassic Revived offers the same immersive dinosaur gameplay — without restrictions.
⚠️ Disclaimer:
This is a fan project and is not affiliated with the newer JurassiCraft team (everything that appears in this mod comes either from the assets that the former team members have provided us with or was directly created by us) or any associated franchises. The mod is non-commercial and only inspired by the legacy of JurassiCraft.
## 💾 Installation (if not using a launcher):
Requires Minecraft Forge for 1.20.1 or Neoforge for 1.21.1
Download the mod
- Download Geckolib for your chosen version
- As with any mod/modpack a mod like JEI or EMI is recommended, again, download for your chosen version
- Drop all downloaded mods into the mods folder
- Compatible with most Forge/Neoforge-based modpacks for 1.20.1 and most Neoforge-based modpacks for 1.21.1
![Jurassic Revived](/assets/images/spino-posed.png)
## 🚧 Early Development Warning
⚠️ This mod is in a VERY early stage of development. Expect bugs, missing features, and frequent changes. Feedback is welcome, but please be patient!
is mod is in a VERY early stage of development. Expect bugs, missing features, and frequent changes. Feedback is welcome, but please be patient!
+14
View File
@@ -0,0 +1,14 @@
plugins {
`kotlin-dsl`
kotlin("jvm") version "2.2.21"
}
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://maven.kikugie.dev/snapshots")
}
dependencies {
implementation("dev.kikugie:stonecutter:0.7.11")
}
@@ -0,0 +1,39 @@
import dev.kikugie.stonecutter.build.StonecutterBuildExtension
import dev.kikugie.stonecutter.controller.StonecutterControllerExtension
import org.gradle.api.Project
import org.gradle.kotlin.dsl.*
val Project.mod: ModData get() = ModData(this)
fun Project.prop(key: String): String? = findProperty(key)?.toString()
val Project.stonecutterBuild get() = extensions.getByType<StonecutterBuildExtension>()
val Project.stonecutterController get() = extensions.getByType<StonecutterControllerExtension>()
val Project.common
get() = requireNotNull(stonecutterBuild.node.sibling("common")) {
"No common project for $project"
}
val Project.commonProject get() = rootProject.project(stonecutterBuild.current.project)
val Project.commonMod get() = commonProject.mod
val Project.loader: String? get() = prop("loader")
@JvmInline
value class ModData(private val project: Project) {
val id: String get() = modProp("id")
val name: String get() = modProp("name")
val version: String get() = modProp("version")
val group: String get() = modProp("group")
val author: String get() = modProp("author")
val description: String get() = modProp("description")
val license: String get() = modProp("license")
val credits: String get() = modProp("credits")
val minecraft_version: String get() = propOrNull("minecraft_version") ?: project.stonecutterBuild.current.version
fun propOrNull(key: String) = project.prop(key)
fun prop(key: String) = requireNotNull(propOrNull(key)) { "Missing '$key'" }
fun modPropOrNull(key: String) = project.prop("mod.$key")
fun modProp(key: String) = requireNotNull(modPropOrNull(key)) { "Missing 'mod.$key'" }
fun modrinth(name: String, version: String) = "maven.modrinth:$name:$version"
}
@@ -0,0 +1,101 @@
plugins {
id("java-library")
id("idea")
}
version = "${loader}-${commonMod.version}+mc${stonecutterBuild.current.version}"
base {
archivesName = commonMod.id
}
java {
toolchain.languageVersion = JavaLanguageVersion.of(commonProject.prop("java.version")!!)
// withSourcesJar()
// withJavadocJar()
}
repositories {
maven("https://libraries.minecraft.net") { name = "Mojang" }
mavenCentral()
exclusiveContent {
forRepository {
maven("https://repo.spongepowered.org/repository/maven-public") { name = "Sponge" }
}
filter { includeGroupAndSubgroups("org.spongepowered") }
}
exclusiveContent {
forRepositories(
maven("https://maven.parchmentmc.org") { name = "ParchmentMC" },
maven("https://maven.neoforged.net/releases") { name = "NeoForge" }
)
filter { includeGroup("org.parchmentmc.data") }
}
maven("https://maven.quiltmc.org/repository/release/") { name = "QuiltMC" }
maven("https://maven.fabricmc.net/") { name = "FabricMC" }
maven("https://maven.neoforged.net/releases") { name = "NeoForge" }
maven("https://maven.minecraftforge.net") { name = "MinecraftForge" }
}
tasks {
processResources {
val clothConfigVersion = when {
stonecutterBuild.current.version.startsWith("1.20") ->
commonMod.propOrNull("cloth_config_version_1_20_1")
stonecutterBuild.current.version.startsWith("1.21") ->
commonMod.propOrNull("cloth_config_version_1_21_1")
else -> null
}
val expandProps = mapOf(
"java_version" to commonMod.propOrNull("java.version"),
"version" to commonMod.version,
"group" to commonMod.group,
"mod_name" to commonMod.name,
"mod_author" to commonMod.author,
"mod_id" to commonMod.id,
"license" to commonMod.license,
"description" to commonMod.description,
"credits" to commonMod.credits,
"minecraft_version" to commonMod.propOrNull("minecraft_version"),
"minecraft_version_range" to commonMod.propOrNull("minecraft_version_range"),
"fabric_api_version" to commonMod.propOrNull("fabric_api_version"),
"fabric_loader_version" to commonMod.propOrNull("fabric_loader_version"),
"neoforge_version" to commonMod.propOrNull("neoforge_version"),
"neoforge_version_range" to commonMod.propOrNull("neoforge_version_range"),
"neoforge_loader_version_range" to commonMod.propOrNull("neoforge_loader_version_range"),
"minecraftforge_version" to commonMod.propOrNull("minecraftforge_version"),
"minecraftforge_version_range" to commonMod.propOrNull("minecraftforge_version_range"),
"minecraftforge_eventbus_validator_version" to
commonMod.propOrNull("minecraftforge_eventbus_validator_version"),
"quilted_fabric_api_version" to commonMod.propOrNull("quilted_fabric_api_version"),
"quilt_loader_version" to commonMod.propOrNull("quilt_loader_version"),
"architectury_version" to commonMod.propOrNull("architectury_version"),
"geckolib_version" to commonMod.propOrNull("geckolib_version"),
"modmenu_version" to commonMod.propOrNull("modmenu_version"),
"jei_version" to commonMod.propOrNull("jei_version"),
"cloth_config_version_1_20_1" to commonMod.propOrNull("cloth_config_version_1_20_1"),
"cloth_config_version_1_21_1" to commonMod.propOrNull("cloth_config_version_1_21_1"),
// add this:
"cloth_config_version" to clothConfigVersion,
).filterValues { it?.isNotEmpty() == true }.mapValues { (_, v) -> v!! }
val jsonExpandProps = expandProps.mapValues { (_, v) -> v.replace("\n", "\\\\n") }
filesMatching(listOf("META-INF/mods.toml", "META-INF/neoforge.mods.toml")) {
expand(expandProps)
}
filesMatching(listOf("pack.mcmeta", "fabric.mod.json", "quilt.mod.json", "*.mixins.json")) {
expand(jsonExpandProps)
}
inputs.properties(expandProps)
}
}
tasks.named("processResources") {
dependsOn(":common:${commonMod.propOrNull("minecraft_version")}:stonecutterGenerate")
}
@@ -0,0 +1,33 @@
plugins {
id("multiloader-common")
}
val commonJava: Configuration by configurations.creating {
isCanBeResolved = true
}
val commonResources: Configuration by configurations.creating {
isCanBeResolved = true
}
dependencies {
val commonPath = common.hierarchy.toString()
compileOnly(project(path = commonPath))
commonJava(project(path = commonPath, configuration = "commonJava"))
commonResources(project(path = commonPath, configuration = "commonResources"))
}
tasks {
compileJava {
dependsOn(commonJava)
source(commonJava)
}
processResources {
dependsOn(commonResources)
from(commonResources)
}
jar {
exclude("accesswideners/**")
}
}
+84
View File
@@ -0,0 +1,84 @@
plugins {
id("multiloader-common")
id("dev.architectury.loom")
id("architectury-plugin") version "3.4.162"
}
val is120 = project.path.contains("1.20")
val targetBytecode = if (is120) 17 else 21
println("DEBUG: Project ${project.path} -> Compiler: JDK 21 (Fixed), Bytecode Target: $targetBytecode")
java {
// TRICK: Always use the Java 21 Toolchain to run the build.
// This stops Gradle from complaining about Architectury 13 requiring Java 21,
// even when we are currently focused on 1.20.1.
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
withSourcesJar()
}
tasks.withType<JavaCompile>().configureEach {
// TRICK: Even though we are using JDK 21 to compile, we force the output
// to be compatible with Java 17 when building for 1.20.1.
options.release.set(targetBytecode)
options.encoding = "UTF-8"
}
loom {
accessWidenerPath =
common.project.file("../../src/main/resources/accesswideners/${commonMod.minecraft_version}-${mod.id}.accesswidener")
}
repositories {
mavenCentral()
maven("https://maven.architectury.dev/")
maven("https://maven.terraformersmc.com/releases/")
maven("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/")
maven("https://maven.blamejared.com/")
}
dependencies {
minecraft("com.mojang:minecraft:${commonMod.minecraft_version}")
mappings(loom.layered {
officialMojangMappings()
commonMod.propOrNull("parchment_mappings")?.let { parchmentVersion ->
if (parchmentVersion != "") parchment("org.parchmentmc.data:parchment-${commonMod.minecraft_version}:$parchmentVersion@zip")
}
})
compileOnly("org.spongepowered:mixin:0.8.5")
"io.github.llamalad7:mixinextras-common:0.5.0".let {
compileOnly(it)
annotationProcessor(it)
}
// Architectury & GeckoLib
modImplementation("dev.architectury:architectury:${commonMod.prop("architectury_version")}")
modImplementation("software.bernie.geckolib:geckolib-fabric-${commonMod.minecraft_version}:${commonMod.prop("geckolib_version")}")
// JEI (Common API)
// We use "modCompileOnly" because we only need the API to write code, not the full mod
modCompileOnly("mezz.jei:jei-${commonMod.minecraft_version}-common-api:${commonMod.prop("jei_version")}")
}
val commonJava: Configuration by configurations.creating {
isCanBeResolved = false
isCanBeConsumed = true
}
val commonResources: Configuration by configurations.creating {
isCanBeResolved = false
isCanBeConsumed = true
}
artifacts {
afterEvaluate {
val mainSourceSet = sourceSets.main.get()
mainSourceSet.java.sourceDirectories.files.forEach {
add(commonJava.name, it)
}
mainSourceSet.resources.sourceDirectories.files.forEach {
add(commonResources.name, it)
}
}
}
+1
View File
@@ -0,0 +1 @@
loader=common
@@ -0,0 +1,45 @@
package net.cmr.jurassicrevived;
import net.cmr.jurassicrevived.block.ModBlocks;
import net.cmr.jurassicrevived.config.JRConfigManager;
import net.cmr.jurassicrevived.entity.ModEntities;
import net.cmr.jurassicrevived.item.ModCreativeTabs;
import net.cmr.jurassicrevived.item.ModItems;
import net.cmr.jurassicrevived.platform.Services;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.item.Items;
// This class is part of the common project meaning it is shared between all supported loaders. Code written here can only
// import and access the vanilla codebase, libraries used by vanilla, and optionally third party libraries that provide
// common compatible binaries. This means common code can not directly use loader specific concepts such as Forge events
// however it will be compatible with all supported mod loaders.
public class CommonClass
{
// The loader specific projects are able to import and use any code from the common project. This allows you to
// write the majority of your code here and load it from your loader specific projects. This example has some
// code that gets invoked by the entry point of the loader specific projects.
public static void init() {
Constants.LOG.info("Hello from Common init on {}! we are currently in a {} environment!", Services.PLATFORM.getPlatformName(), Services.PLATFORM.getEnvironmentName());
Constants.LOG.info("The ID for diamonds is {}", BuiltInRegistries.ITEM.getKey(Items.DIAMOND));
// It is common for all supported loaders to provide a similar feature that can not be used directly in the
// common code. A popular way to get around this is using Java's built-in service loader feature to create
// your own abstraction layer. You can learn more about this in our provided services class. In this example
// we have an interface in the common code and use a loader specific implementation to delegate our call to
// the platform specific approach.
if (Services.PLATFORM.isModLoaded("examplemod")) {
Constants.LOG.info("Hello to examplemod");
}
// Load config from the loader-specific config dir
JRConfigManager.load(Services.PLATFORM.getConfigDir());
ModBlocks.register();
ModItems.register();
ModCreativeTabs.register();
ModEntities.register();
}
}
@@ -0,0 +1,12 @@
package net.cmr.jurassicrevived;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Constants
{
public static final String MOD_ID = "jurassicrevived";
public static final String MOD_NAME = "JurassicRevived";
public static final Logger LOG = LoggerFactory.getLogger(MOD_NAME);
}
@@ -0,0 +1,43 @@
package net.cmr.jurassicrevived.block;
import dev.architectury.registry.registries.DeferredRegister;
import dev.architectury.registry.registries.RegistrySupplier;
import net.cmr.jurassicrevived.Constants;
import net.cmr.jurassicrevived.item.ModItems;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import java.util.function.Supplier;
public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS =
DeferredRegister.create(Constants.MOD_ID, Registries.BLOCK);
// --- Examples ---
public static final RegistrySupplier<Block> FOSSIL_ORE = registerBlock("fossil_ore",
() -> new Block(BlockBehaviour.Properties.of().strength(3.0f)));
// --- Helper Methods ---
/**
* Registers a block and a corresponding BlockItem.
*/
private static <T extends Block> RegistrySupplier<T> registerBlock(String name, Supplier<T> block) {
RegistrySupplier<T> toReturn = BLOCKS.register(name, block);
registerBlockItem(name, toReturn);
return toReturn;
}
private static <T extends Block> void registerBlockItem(String name, RegistrySupplier<T> block) {
ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties()));
}
public static void register() {
BLOCKS.register();
}
}
@@ -0,0 +1,10 @@
package net.cmr.jurassicrevived.config;
public final class JRConfig {
// Example options (replace with your real ones)
public boolean enableDinosaurs = true;
public int spawnWeight = 10;
public JRConfig() {
}
}
@@ -0,0 +1,54 @@
package net.cmr.jurassicrevived.config;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public final class JRConfigManager {
private static JRConfig config = new JRConfig();
private JRConfigManager() {}
public static JRConfig get() {
return config;
}
/**
* Loader modules should call this with the platform's config directory.
*/
public static void load(Path configDir) {
Path file = configDir.resolve("jurassicrevived.json");
if (!Files.exists(file)) {
save(configDir);
return;
}
// Minimal placeholder IO (swap to Gson/Jackson later if you want)
// For now: keep it simple and non-fatal.
try {
String text = Files.readString(file, StandardCharsets.UTF_8);
// TODO: parse JSON into config (Gson recommended)
// config = parsed;
} catch (IOException e) {
// Keep defaults if load fails
}
}
public static void save(Path configDir) {
try {
Files.createDirectories(configDir);
Path file = configDir.resolve("jurassicrevived.json");
// TODO: write JSON (Gson recommended)
String text = "{\n" +
" \"enableDinosaurs\": " + config.enableDinosaurs + ",\n" +
" \"spawnWeight\": " + config.spawnWeight + "\n" +
"}\n";
Files.writeString(file, text, StandardCharsets.UTF_8);
} catch (IOException e) {
// ignore / log via your logger if desired
}
}
}
@@ -0,0 +1,24 @@
package net.cmr.jurassicrevived.entity;
import dev.architectury.registry.registries.DeferredRegister;
import net.cmr.jurassicrevived.Constants;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.entity.EntityType;
public class ModEntities {
public static final DeferredRegister<EntityType<?>> ENTITIES =
DeferredRegister.create(Constants.MOD_ID, Registries.ENTITY_TYPE);
// --- Example (Generic Entity) ---
// You will need your own Entity class (e.g., VelociraptorEntity::new)
/*
public static final RegistrySupplier<EntityType<VelociraptorEntity>> VELOCIRAPTOR = ENTITIES.register("velociraptor",
() -> EntityType.Builder.of(VelociraptorEntity::new, MobCategory.CREATURE)
.sized(1.0f, 2.0f)
.build(Constants.MOD_ID + ":velociraptor"));
*/
public static void register() {
ENTITIES.register();
}
}
@@ -0,0 +1,29 @@
package net.cmr.jurassicrevived.item;
import dev.architectury.registry.CreativeTabRegistry;
import dev.architectury.registry.registries.DeferredRegister;
import dev.architectury.registry.registries.RegistrySupplier;
import net.cmr.jurassicrevived.Constants;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
public class ModCreativeTabs {
public static final DeferredRegister<CreativeModeTab> TABS =
DeferredRegister.create(Constants.MOD_ID, Registries.CREATIVE_MODE_TAB);
public static final RegistrySupplier<CreativeModeTab> JURASSIC_TAB = TABS.register("jurassic_tab",
() -> CreativeTabRegistry.create(
Component.translatable("itemGroup." + Constants.MOD_ID + ".jurassic_tab"),
() -> new ItemStack(ModItems.AMBER_SHARD.get()) // Tab Icon
));
public static void register() {
// Items must be explicitly added to tabs in 1.20+
// This usually goes in your Common setup, but you can trigger it here if your
// loader-specific entry points call this method.
TABS.register();
}
}
@@ -0,0 +1,23 @@
package net.cmr.jurassicrevived.item;
import dev.architectury.registry.registries.DeferredRegister;
import dev.architectury.registry.registries.RegistrySupplier;
import net.cmr.jurassicrevived.Constants;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.Item;
public class ModItems {
public static final DeferredRegister<Item> ITEMS =
DeferredRegister.create(Constants.MOD_ID, Registries.ITEM);
// --- Examples ---
public static final RegistrySupplier<Item> AMBER_SHARD = ITEMS.register("amber_shard",
() -> new Item(new Item.Properties()));
public static final RegistrySupplier<Item> DNA_SYRINGE = ITEMS.register("dna_syringe",
() -> new Item(new Item.Properties().stacksTo(1)));
public static void register() {
ITEMS.register();
}
}
@@ -0,0 +1,20 @@
package net.cmr.jurassicrevived.mixin;
import net.cmr.jurassicrevived.Constants;
import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Minecraft.class)
public class MixinMinecraft
{
@Inject(at = @At("TAIL"), method = "<init>")
private void init(CallbackInfo info) {
Constants.LOG.info("This line is printed by an example mod common mixin!");
Constants.LOG.info("MC Version: {}", Minecraft.getInstance().getVersionType());
}
}
@@ -0,0 +1,32 @@
package net.cmr.jurassicrevived.platform;
import net.cmr.jurassicrevived.Constants;
import net.cmr.jurassicrevived.platform.services.IPlatformHelper;
import java.util.ServiceLoader;
// Service loaders are a built-in Java feature that allow us to locate implementations of an interface that vary from one
// environment to another. In the context of MultiLoader we use this feature to access a mock API in the common code that
// is swapped out for the platform specific implementation at runtime.
public class Services
{
// In this example we provide a platform helper which provides information about what platform the mod is running on.
// For example this can be used to check if the code is running on Forge vs Fabric, or to ask the modloader if another
// mod is loaded.
public static final IPlatformHelper PLATFORM = load(IPlatformHelper.class);
// This code is used to load a service for the current environment. Your implementation of the service must be defined
// manually by including a text file in META-INF/services named with the fully qualified class name of the service.
// Inside the file you should write the fully qualified class name of the implementation to load for the platform. For
// example our file on Forge points to ForgePlatformHelper while Fabric points to FabricPlatformHelper.
public static <T> T load(Class<T> clazz) {
final T loadedService = ServiceLoader.load(clazz)
.findFirst()
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
Constants.LOG.debug("Loaded {} for service {}", loadedService, clazz);
return loadedService;
}
}
@@ -0,0 +1,41 @@
package net.cmr.jurassicrevived.platform.services;
import java.nio.file.Path;
public interface IPlatformHelper
{
/**
* Gets the name of the current platform
*
* @return The name of the current platform.
*/
String getPlatformName();
/**
* Checks if a mod with the given id is loaded.
*
* @param modId The mod to check if it is loaded.
* @return True if the mod is loaded, false otherwise.
*/
boolean isModLoaded(String modId);
/**
* Check if the game is currently in a development environment.
*
* @return True if in a development environment, false otherwise.
*/
boolean isDevelopmentEnvironment();
/**
* Gets the name of the environment type as a string.
*
* @return The name of the environment type.
*/
default String getEnvironmentName() {
return isDevelopmentEnvironment() ? "development":"production";
}
Path getConfigDir();
}
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
@@ -0,0 +1 @@
accessWidener v2 named
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More