Use live TrueOG Network config files
This commit is contained in:
1 parent
4246516a26
commit
782cde0182
176 files changed
+10481
-3796
No files matched your search
+18
-4
@@ -2,8 +2,8 @@
|
||||
plugins {
|
||||
id("java") // Import Java plugin.
|
||||
id("java-library") // Import Java Library plugin.
|
||||
id("com.diffplug.spotless") version "7.0.4" // Import Spotless plugin.
|
||||
id("com.gradleup.shadow") version "8.3.6" // Import Shadow plugin.
|
||||
id("com.diffplug.spotless") version "8.1.0" // Import Spotless plugin.
|
||||
id("com.gradleup.shadow") version "8.3.9" // Import Shadow plugin.
|
||||
id("checkstyle") // Import Checkstyle plugin.
|
||||
eclipse // Import Eclipse plugin.
|
||||
kotlin("jvm") version "2.1.21" // Import Kotlin JVM plugin.
|
||||
@@ -40,7 +40,7 @@ repositories {
|
||||
mavenCentral() // Import the Maven Central Maven Repository.
|
||||
gradlePluginPortal() // Import the Gradle Plugin Portal Maven Repository.
|
||||
maven { url = uri("https://repo.purpurmc.org/snapshots") } // Import the PurpurMC Maven Repository.
|
||||
maven { url = uri("https://jitpack.io") } // Import Jitpack Maven Repository.
|
||||
maven { url = uri("https://jitpack.io") } // Import the Jitpack Maven Repository.
|
||||
}
|
||||
|
||||
/* ---------------------- Java project deps ---------------------------- */
|
||||
@@ -62,6 +62,8 @@ tasks.withType<AbstractArchiveTask>().configureEach { // Ensure reproducible .ja
|
||||
tasks.shadowJar {
|
||||
exclude("org.bstats.*") // Exclude the bStats package from being shadowed.
|
||||
exclude("io.github.miniplaceholders.*") // Exclude the MiniPlaceholders package from being shadowed.
|
||||
isEnableRelocation = true
|
||||
relocationPrefix = "${project.group}.shadow"
|
||||
archiveClassifier.set("") // Use empty string instead of null.
|
||||
minimize()
|
||||
}
|
||||
@@ -78,7 +80,19 @@ tasks.withType<JavaCompile>().configureEach {
|
||||
options.encoding = "UTF-8" // Use UTF-8 file encoding.
|
||||
}
|
||||
|
||||
/* ------------------------------- Checkstyle --------------------------- */
|
||||
/* ----------------------------- Auto Formatting ------------------------ */
|
||||
spotless {
|
||||
java {
|
||||
eclipse().configFile("config/formatter/eclipse-java-formatter.xml") // Eclipse java formatting.
|
||||
leadingTabsToSpaces() // Convert leftover leading tabs to spaces.
|
||||
removeUnusedImports() // Remove imports that aren't being called.
|
||||
}
|
||||
kotlinGradle {
|
||||
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(120) } // JetBrains Kotlin formatting.
|
||||
target("build.gradle.kts", "settings.gradle.kts") // Gradle files to format.
|
||||
}
|
||||
}
|
||||
|
||||
checkstyle {
|
||||
toolVersion = "10.18.1" // Declare checkstyle version to use.
|
||||
configFile = file("config/checkstyle/checkstyle.xml") // Point checkstyle to config file.
|
||||
|
||||
@@ -0,0 +1,404 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<profiles version="23">
|
||||
<profile kind="CodeFormatterProfile" name="TrueOG Network Formatting" version="23">
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_record_components" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant" value="49"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.text_block_indentation" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_annotations" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_not_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package" value="49"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_permitted_types_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_constructor" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case_after_arrow" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_arrows_in_switch_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type" value="49"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable" value="49"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field" value="49"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.join_line_comments" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow" value="20"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method" value="49"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assertion_message" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
|
||||
</profile>
|
||||
</profiles>
|
||||
@@ -12,121 +12,173 @@ import org.bukkit.entity.Player;
|
||||
public class HatAPI extends ParticleHatsAPI {
|
||||
|
||||
public HatAPI(final CosmeticsOG core) {
|
||||
|
||||
super(core);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean labelExists(String label) {
|
||||
|
||||
return core.getDatabase().getLabels(false).contains(label);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void equipHatFromLabel(Player player, String label, boolean tellPlayer, boolean permanent)
|
||||
throws InvalidLabelException, IllegalArgumentException {
|
||||
throws InvalidLabelException, IllegalArgumentException
|
||||
{
|
||||
|
||||
if (player == null) {
|
||||
|
||||
throw new IllegalArgumentException("player cannot be null!");
|
||||
|
||||
}
|
||||
|
||||
if (label == null) {
|
||||
|
||||
throw new InvalidLabelException("label cannot be null!");
|
||||
|
||||
}
|
||||
|
||||
Database database = core.getDatabase();
|
||||
Hat hat = database.getHatFromLabel(label);
|
||||
|
||||
if (hat == null) {
|
||||
|
||||
throw new InvalidLabelException("Unable to find valid label: " + label);
|
||||
|
||||
}
|
||||
|
||||
hat.setPermanent(permanent);
|
||||
core.getParticleManager().equipHat(player, hat, false);
|
||||
|
||||
if (tellPlayer) {
|
||||
|
||||
player.sendMessage(Message.COMMAND_SET_SUCCESS.getValue().replace("{1}", hat.getDisplayName()));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void equipHatFromLabel(Player player, String label, boolean tellPlayer)
|
||||
throws InvalidLabelException, IllegalArgumentException {
|
||||
throws InvalidLabelException, IllegalArgumentException
|
||||
{
|
||||
|
||||
equipHatFromLabel(player, label, tellPlayer, true);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void equipHatFromLabel(Player player, String label) throws InvalidLabelException, IllegalArgumentException {
|
||||
|
||||
equipHatFromLabel(player, label, false, true);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHatCount(Player player) {
|
||||
|
||||
return core.getPlayerState(player).getHatCount();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toggleHat(Player player, int index, boolean toggleStatus) throws IndexOutOfBoundsException {
|
||||
|
||||
Hat hat = core.getPlayerState(player).getActiveHats().get(index);
|
||||
hat.setHidden(toggleStatus);
|
||||
hat.setIsDisplaying(!toggleStatus, player);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toggleAllHats(Player player, boolean toggleStatus) {
|
||||
|
||||
for (Hat hat : core.getPlayerState(player).getActiveHats()) {
|
||||
|
||||
hat.setHidden(toggleStatus);
|
||||
hat.setIsDisplaying(!toggleStatus, player);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean equipFromLabel(UUID playerID, String label, boolean tellPlayer) {
|
||||
|
||||
if (playerID == null) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
Player player = Bukkit.getPlayer(playerID);
|
||||
equipHatFromLabel(player, label, tellPlayer);
|
||||
|
||||
return true;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean equipFromLabel(UUID playerID, String label) {
|
||||
|
||||
return equipFromLabel(playerID, label, false);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void toggleHat(UUID playerID, boolean vanished) {
|
||||
|
||||
Player player = Bukkit.getPlayer(playerID);
|
||||
if (player != null) {
|
||||
|
||||
toggleHat(player, 0, vanished);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void toggleHat(UUID playerID) {
|
||||
|
||||
Player player = Bukkit.getPlayer(playerID);
|
||||
if (player != null) {
|
||||
|
||||
Hat hat = core.getPlayerState(player).getActiveHats().get(0);
|
||||
hat.setHidden(!hat.isHidden());
|
||||
hat.setIsDisplaying(!hat.isHidden(), player);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean isWearingHat(UUID playerID) {
|
||||
|
||||
Player player = Bukkit.getPlayer(playerID);
|
||||
if (player != null) {
|
||||
|
||||
return getHatCount(player) > 0;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,7 +11,9 @@ public abstract class ParticleHatsAPI {
|
||||
protected final CosmeticsOG core;
|
||||
|
||||
public ParticleHatsAPI(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -25,11 +27,12 @@ public abstract class ParticleHatsAPI {
|
||||
/**
|
||||
* Creates a new hat from the given label and equips it
|
||||
*
|
||||
* @param player The player this new hat will be given to
|
||||
* @param label The unique label that defines this hat
|
||||
* @param player The player this new hat will be given to
|
||||
* @param label The unique label that defines this hat
|
||||
* @param tellPlayer Shows the player the HAT_EQUIPPED message
|
||||
* @param permanent You can decide whether to equip this hat temporarily or permanently
|
||||
* @throws InvalidLabelException If label doesn't not exist
|
||||
* @param permanent You can decide whether to equip this hat temporarily or
|
||||
* permanently
|
||||
* @throws InvalidLabelException If label doesn't not exist
|
||||
* @throws IllegalArgumentException If any arguments are invalid
|
||||
*/
|
||||
public abstract void equipHatFromLabel(Player player, String label, boolean tellPlayer, boolean permanent)
|
||||
@@ -38,10 +41,10 @@ public abstract class ParticleHatsAPI {
|
||||
/**
|
||||
* Creates a new hat from the given label and equips it
|
||||
*
|
||||
* @param player The player this new hat will be given to
|
||||
* @param label The unique label that defines this hat
|
||||
* @param player The player this new hat will be given to
|
||||
* @param label The unique label that defines this hat
|
||||
* @param tellPlayer Shows the player the HAT_EQUIPPED message
|
||||
* @throws InvalidLabelException If label doesn't not exist
|
||||
* @throws InvalidLabelException If label doesn't not exist
|
||||
* @throws IllegalArgumentException If any arguments are invalid
|
||||
*/
|
||||
public abstract void equipHatFromLabel(Player player, String label, boolean tellPlayer)
|
||||
@@ -51,8 +54,8 @@ public abstract class ParticleHatsAPI {
|
||||
* Creates a new hat from the given label and equips it
|
||||
*
|
||||
* @param player The player this new hat will be given to
|
||||
* @param label The unique label that defines this hat
|
||||
* @throws InvalidLabelException If label doesn't not exist
|
||||
* @param label The unique label that defines this hat
|
||||
* @throws InvalidLabelException If label doesn't not exist
|
||||
* @throws IllegalArgumentException If any arguments are invalid
|
||||
*/
|
||||
public abstract void equipHatFromLabel(Player player, String label)
|
||||
@@ -69,8 +72,8 @@ public abstract class ParticleHatsAPI {
|
||||
/**
|
||||
* Toggles a players active hat
|
||||
*
|
||||
* @param player The player we want to toggle hats for
|
||||
* @param index The hat
|
||||
* @param player The player we want to toggle hats for
|
||||
* @param index The hat
|
||||
* @param toggleStatus
|
||||
* @throws InvalidHatException
|
||||
*/
|
||||
@@ -134,4 +137,5 @@ public abstract class ParticleHatsAPI {
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract boolean isWearingHat(UUID playerID);
|
||||
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
package cosmeticsOG;
|
||||
|
||||
public enum BuildType {
|
||||
RELEASE,
|
||||
RELEASE_CANDIDATE,
|
||||
SNAPSHOT;
|
||||
RELEASE, RELEASE_CANDIDATE, SNAPSHOT;
|
||||
}
|
||||
@@ -54,9 +54,11 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
|
||||
// TODO: [?] Enjin economy support?
|
||||
// TODO: [?] Custom Player Head support? (Head Database, Heads Plugin)
|
||||
// TODO: [?] Type texture support? Lets built-in types display custom images (eg. capes)
|
||||
// TODO: [?] Type texture support? Lets built-in types display custom images
|
||||
// (eg. capes)
|
||||
// TODO: [?] More flexible mode support?
|
||||
// Similar to tags, Have a list of tags that will trigger particles displaying / disabling
|
||||
// Similar to tags, Have a list of tags that will trigger particles displaying /
|
||||
// disabling
|
||||
// Display when: (running, walking, flying, etc)
|
||||
// Disable when: (pvp, swimming, etc)
|
||||
|
||||
@@ -64,7 +66,8 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
// TODO: [Future] Allow adding custom types images as frames to an animation
|
||||
// TODO: [Future] Re-implement text particle type
|
||||
// TODO: [Future] Let particles be attached to blocks...
|
||||
// Have a separate block menu that shows nearby particles for the player to edit.
|
||||
// Have a separate block menu that shows nearby particles for the player to
|
||||
// edit.
|
||||
|
||||
public static CosmeticsOG instance;
|
||||
public static double serverVersion;
|
||||
@@ -110,6 +113,7 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
||||
instance = this;
|
||||
serverVersion = getServerVersion();
|
||||
logger = instance.getLogger();
|
||||
@@ -117,9 +121,11 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
|
||||
// Make sure we're running on a supported version
|
||||
if (serverVersion < 13) {
|
||||
|
||||
particleRenderer = new LegacyParticleRenderer();
|
||||
|
||||
if (serverVersion < 8) {
|
||||
|
||||
Utils.logToConsole("-----------------------------------------------------------------------");
|
||||
Utils.logToConsole("This version of ParticleHats is not compatible with your server version");
|
||||
Utils.logToConsole("Download version 3.7.5 if your server is on a version older than 1.8");
|
||||
@@ -127,16 +133,24 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
|
||||
getServer().getPluginManager().disablePlugin(this);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
particleRenderer = new SpigotParticleRenderer();
|
||||
|
||||
}
|
||||
|
||||
// Check to see if we're running on Spigot
|
||||
try {
|
||||
|
||||
Class.forName("net.md_5.bungee.api.chat.BaseComponent");
|
||||
|
||||
} catch (ClassNotFoundException e) {
|
||||
|
||||
supportsBaseComponent = false;
|
||||
|
||||
}
|
||||
|
||||
// Save default config
|
||||
@@ -145,33 +159,45 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
Utils.logToConsole("Loading ParticleHats v" + getPluginMeta().getVersion());
|
||||
Utils.logToConsole("");
|
||||
{
|
||||
|
||||
// Create our menu manager factory
|
||||
menuManagerFactory = new MenuManagerFactory(this);
|
||||
|
||||
if (YamlUtil.checkConfigForUpdates(getConfig())) {
|
||||
|
||||
if (SettingsManager.CONFIG_AUTO_UPDATE.getBoolean()) {
|
||||
|
||||
Utils.logToConsole("Updating config.yml");
|
||||
YamlUtil.updateConfig(this, getConfig());
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole("There is an update for config.yml, auto updates are disabled.");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Load our database
|
||||
databaseType = DatabaseType.fromAlias(SettingsManager.DATABASE_TYPE.getString());
|
||||
database = databaseType.getDatabase(this);
|
||||
|
||||
// yaml always returns true, mysql will return false if the connection could not be made
|
||||
// yaml always returns true, mysql will return false if the connection could not
|
||||
// be made
|
||||
if (!database.isEnabled()) {
|
||||
|
||||
Utils.logToConsole("---------------------------------------------------");
|
||||
Utils.logToConsole("There was an error connecting to the MySQL database");
|
||||
|
||||
if (database.getException() != null) {
|
||||
Utils.logToConsole(
|
||||
"Error: " + database.getException().getClass().getSimpleName());
|
||||
|
||||
Utils.logToConsole("Error: " + database.getException().getClass().getSimpleName());
|
||||
if (debugging) {
|
||||
|
||||
database.getException().printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Utils.logToConsole("Switching to yaml");
|
||||
@@ -180,6 +206,7 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
|
||||
databaseType = DatabaseType.YAML;
|
||||
database = databaseType.getDatabase(this);
|
||||
|
||||
}
|
||||
|
||||
// Initialize our player state map
|
||||
@@ -197,9 +224,13 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
hookManager = new HookManager(this);
|
||||
|
||||
if (SettingsManager.EDITOR_USE_ACTION_BAR.getBoolean() && supportsBaseComponent) {
|
||||
|
||||
prompt = new SpigotPrompt();
|
||||
|
||||
} else {
|
||||
|
||||
prompt = new BukkitPrompt();
|
||||
|
||||
}
|
||||
|
||||
// Handles menu updates
|
||||
@@ -213,45 +244,62 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
// Handles displaying particles
|
||||
entityTask = new EntityTask(this);
|
||||
entityTask.runTaskTimer(this, 0, 4);
|
||||
|
||||
}
|
||||
|
||||
Utils.logToConsole("");
|
||||
Utils.logToConsole("Done :)");
|
||||
|
||||
enabled = true;
|
||||
|
||||
}
|
||||
|
||||
public static CosmeticsOG getInstance() {
|
||||
|
||||
return instance;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
|
||||
if (enabled) {
|
||||
|
||||
database.onDisable();
|
||||
|
||||
menuTask.cancel();
|
||||
promptTask.cancel();
|
||||
entityTask.cancel();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onReload() {
|
||||
|
||||
// locale.reload();
|
||||
reloadConfig();
|
||||
|
||||
SettingsManager.onReload();
|
||||
|
||||
if (langFile == null || !(langFile.getName().equals(SettingsManager.LANG.getString()))) {
|
||||
|
||||
loadLang();
|
||||
|
||||
}
|
||||
|
||||
lang = YamlConfiguration.loadConfiguration(langFile);
|
||||
|
||||
Message.onReload();
|
||||
|
||||
if (SettingsManager.EDITOR_USE_ACTION_BAR.getBoolean() && supportsBaseComponent) {
|
||||
|
||||
prompt = new SpigotPrompt();
|
||||
|
||||
} else {
|
||||
|
||||
prompt = new BukkitPrompt();
|
||||
|
||||
}
|
||||
|
||||
eventManager.onReload();
|
||||
@@ -262,258 +310,362 @@ public class CosmeticsOG extends JavaPlugin {
|
||||
|
||||
// Reload each equipped hats async task
|
||||
entityState.values().forEach(EntityState::reload);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the ParticleHats Hat API
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public ParticleHatsAPI getAPI() {
|
||||
|
||||
return hatAPI;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Database this plugin is using
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Database getDatabase() {
|
||||
|
||||
return database;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of database this server is using
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public DatabaseType getDatabaseType() {
|
||||
|
||||
return databaseType;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the MenuManagerFactory class
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public MenuManagerFactory getMenuManagerFactory() {
|
||||
|
||||
return menuManagerFactory;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the ParticleRenderer for this server version
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public ParticleRenderer getParticleRenderer() {
|
||||
|
||||
return particleRenderer;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the ResourceManager class
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public ResourceManager getResourceManager() {
|
||||
|
||||
return resourceManager;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the ParticleManager class
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public ParticleManager getParticleManager() {
|
||||
|
||||
return particleManager;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the HookManager class
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public HookManager getHookManager() {
|
||||
|
||||
return hookManager;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the PlayerState object that belongs to this player
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public PlayerState getPlayerState(Player player) {
|
||||
|
||||
return (PlayerState) getEntityState(player);
|
||||
|
||||
}
|
||||
|
||||
public PlayerState getNewPlayerState(Player player) {
|
||||
|
||||
UUID id = player.getUniqueId();
|
||||
removePlayerState(id);
|
||||
|
||||
return (PlayerState) getEntityState(player);
|
||||
|
||||
}
|
||||
|
||||
public EntityState getEntityState(Entity entity, int entityID) {
|
||||
|
||||
UUID id = entity.getUniqueId();
|
||||
|
||||
if (entityState.containsKey(id)) {
|
||||
|
||||
return entityState.get(id);
|
||||
|
||||
}
|
||||
|
||||
if (entity instanceof Player) {
|
||||
|
||||
EntityState eState;
|
||||
|
||||
if (entity.hasMetadata("NPC")) {
|
||||
|
||||
eState = new EntityState(entity, entityID);
|
||||
|
||||
} else {
|
||||
|
||||
eState = new PlayerState((Player) entity);
|
||||
|
||||
}
|
||||
|
||||
entityState.put(id, eState);
|
||||
return eState;
|
||||
|
||||
}
|
||||
|
||||
EntityState eState = new EntityState(entity, entityID);
|
||||
|
||||
entityState.put(id, eState);
|
||||
return eState;
|
||||
|
||||
}
|
||||
|
||||
public EntityState getEntityState(Entity entity) {
|
||||
|
||||
return getEntityState(entity, -1);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if this entity has an EntityState object loaded
|
||||
*
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
public boolean hasEntityState(Entity entity) {
|
||||
|
||||
return entityState.containsKey(entity.getUniqueId());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all currently active player states
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Collection<EntityState> getEntityStates() {
|
||||
|
||||
return entityState.values();
|
||||
|
||||
}
|
||||
|
||||
public void removePlayerState(UUID id) {
|
||||
|
||||
EntityState es = entityState.remove(id);
|
||||
if (es != null) {
|
||||
|
||||
es.clearActiveHats();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if we can use the bungee BaseComponent class
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Boolean canUseBungee() {
|
||||
|
||||
return supportsBaseComponent;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current server version
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public double getServerVersion() {
|
||||
|
||||
String version = Bukkit.getBukkitVersion().split("-")[0].substring(2);
|
||||
return Double.parseDouble(version);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this plugins CommandManager
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public CommandManager getCommandManager() {
|
||||
|
||||
return commandManager;
|
||||
|
||||
}
|
||||
|
||||
public YamlConfiguration getLocale() {
|
||||
|
||||
return lang;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the player a message using their Action Bar
|
||||
*
|
||||
* @param player
|
||||
* @param message
|
||||
*/
|
||||
public void prompt(Player player, MetaState message) {
|
||||
|
||||
prompt.prompt(player, message);
|
||||
|
||||
}
|
||||
|
||||
public Prompt getPrompt() {
|
||||
|
||||
return prompt;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if a file exists with this name in the given folder
|
||||
*
|
||||
* @param folderName
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
public boolean fileExists(String folderName, String fileName) {
|
||||
|
||||
String directory = getDataFolder() + File.separator + folderName + File.separator + fileName;
|
||||
File file = new File(directory);
|
||||
|
||||
return file.exists();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs a debug message to the server console if debugging is enabled
|
||||
*
|
||||
* @param obj
|
||||
*/
|
||||
public static void debug(Object obj) {
|
||||
|
||||
if (debugging) {
|
||||
|
||||
logger.log(Level.INFO, "[ParticleHats Debug] " + obj.toString());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void loadLang() {
|
||||
|
||||
String targetLang = SettingsManager.LANG.getString();
|
||||
|
||||
File langFile = new File(getDataFolder() + File.separator + "lang" + File.separator + targetLang);
|
||||
if (!langFile.exists()) {
|
||||
|
||||
if (targetLang.equals("en_US.lang")) {
|
||||
|
||||
Utils.logToConsole("Creating en_US.lang");
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole("Could not find locale " + targetLang + ", switching to en_US.lang");
|
||||
|
||||
}
|
||||
|
||||
// Create our default .lang file since the specified one doesn't exist
|
||||
createDefaultLang();
|
||||
targetLang = "en_US.lang";
|
||||
|
||||
}
|
||||
|
||||
Utils.logToConsole("Loaded locale " + targetLang);
|
||||
this.langFile = new File(getDataFolder() + File.separator + "lang" + File.separator + targetLang);
|
||||
this.lang = YamlConfiguration.loadConfiguration(this.langFile);
|
||||
|
||||
}
|
||||
|
||||
private void createDefaultLang() {
|
||||
|
||||
File langFolder = new File(getDataFolder() + File.separator + "lang");
|
||||
if (!langFolder.exists()) {
|
||||
|
||||
langFolder.mkdirs();
|
||||
|
||||
}
|
||||
|
||||
InputStream langStream = getResource("lang/en_US.lang");
|
||||
if (langStream != null) {
|
||||
|
||||
File langFile = new File(getDataFolder() + File.separator + "lang" + File.separator + "en_US.lang");
|
||||
|
||||
if (langFile.exists()) {
|
||||
|
||||
langFile.delete();
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
Files.copy(langStream, Paths.get(langFile.getPath()));
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkDefaultLang() {
|
||||
|
||||
File langFile = new File(getDataFolder() + File.separator + "lang" + File.separator + "en_US.lang");
|
||||
if (!langFile.exists()) {
|
||||
|
||||
createDefaultLang();
|
||||
|
||||
} else {
|
||||
|
||||
YamlConfiguration tempLangConfig = YamlConfiguration.loadConfiguration(langFile);
|
||||
if (tempLangConfig.getDouble("version", 1.0) != LANG_VERSION) {
|
||||
|
||||
Utils.logToConsole("Updating en_US.lang");
|
||||
createDefaultLang();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,6 +17,7 @@ public class Utils {
|
||||
public static void cosmeticsOGPlaceholderMessage(Player p, String message) {
|
||||
|
||||
p.sendMessage(legacySerializerAnyCase((message)));
|
||||
|
||||
}
|
||||
|
||||
public static void logToConsole(Component component) {
|
||||
@@ -25,6 +26,7 @@ public class Utils {
|
||||
String stripped = stripColors(serialized);
|
||||
|
||||
CosmeticsOG.getInstance().getLogger().info("Cosmetics-OG " + stripped);
|
||||
|
||||
}
|
||||
|
||||
public static void logToConsole(String message) {
|
||||
@@ -35,6 +37,7 @@ public class Utils {
|
||||
String stripped = stripColors(serialized);
|
||||
|
||||
CosmeticsOG.getInstance().getLogger().info("Cosmetics-OG " + stripped);
|
||||
|
||||
}
|
||||
|
||||
public static TextComponent legacySerializerAnyCase(String subject) {
|
||||
@@ -46,7 +49,9 @@ public class Utils {
|
||||
if (c == '&') {
|
||||
|
||||
count++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Create an array to store the positions of '&' characters
|
||||
@@ -60,30 +65,38 @@ public class Utils {
|
||||
if (isUpperBukkitCode(subject.charAt(i + 1))) {
|
||||
|
||||
subject = replaceCharAtIndex(subject, (i + 1), Character.toLowerCase(subject.charAt(i + 1)));
|
||||
|
||||
}
|
||||
|
||||
positions[index++] = i;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return LegacyComponentSerializer.legacyAmpersand().deserialize(subject);
|
||||
|
||||
}
|
||||
|
||||
private static boolean isUpperBukkitCode(char input) {
|
||||
|
||||
char[] bukkitColorCodes = {'A', 'B', 'C', 'D', 'E', 'F', 'K', 'L', 'M', 'N', 'O', 'R'};
|
||||
char[] bukkitColorCodes = { 'A', 'B', 'C', 'D', 'E', 'F', 'K', 'L', 'M', 'N', 'O', 'R' };
|
||||
boolean match = false;
|
||||
|
||||
// Loop through each character in the array.
|
||||
for (char c : bukkitColorCodes) {
|
||||
|
||||
// Check if the current character in the array is equal to the input character.
|
||||
if (c == input) {
|
||||
|
||||
match = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return match;
|
||||
|
||||
}
|
||||
|
||||
private static String replaceCharAtIndex(String original, int index, char newChar) {
|
||||
@@ -93,14 +106,18 @@ public class Utils {
|
||||
|
||||
// Create a new string with the replaced character
|
||||
return original.substring(0, index) + newChar + original.substring(index + 1);
|
||||
|
||||
}
|
||||
|
||||
// If the index is invalid, return the original string
|
||||
return original;
|
||||
|
||||
}
|
||||
|
||||
public static String stripColors(String input) {
|
||||
if (input == null) return null;
|
||||
|
||||
if (input == null)
|
||||
return null;
|
||||
|
||||
// Remove MiniMessage tags
|
||||
String stripped = MINIMESSAGE_TAG_PATTERN.matcher(input).replaceAll("");
|
||||
@@ -109,5 +126,7 @@ public class Utils {
|
||||
stripped = LEGACY_COLOR_PATTERN.matcher(stripped).replaceAll("");
|
||||
|
||||
return stripped;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,11 +32,14 @@ public abstract class Command {
|
||||
protected Map<String, Command> subCommands;
|
||||
|
||||
public Command() {
|
||||
|
||||
subCommands = new LinkedHashMap<String, Command>();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic command execute method
|
||||
*
|
||||
* @param plugin
|
||||
* @param sender
|
||||
* @param label
|
||||
@@ -46,8 +49,9 @@ public abstract class Command {
|
||||
public abstract boolean execute(CosmeticsOG core, Sender sender, String label, ArrayList<String> args);
|
||||
|
||||
/**
|
||||
* Handles this commands onCommand
|
||||
* Checks permission before passing command along
|
||||
* Handles this commands onCommand Checks permission before passing command
|
||||
* along
|
||||
*
|
||||
* @param core
|
||||
* @param sender
|
||||
* @param label
|
||||
@@ -55,14 +59,19 @@ public abstract class Command {
|
||||
* @return
|
||||
*/
|
||||
public boolean onCommand(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
if (!sender.isPlayer() && isPlayerOnly()) {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_PLAYER_ONLY.getValue());
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String argument = "";
|
||||
if (args.size() >= 1) {
|
||||
|
||||
argument = args.get(0);
|
||||
|
||||
}
|
||||
|
||||
if (!hasPermission(sender, argument)) {
|
||||
@@ -74,16 +83,20 @@ public abstract class Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_NO_PERMISSION.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
return execute(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic tab complete method
|
||||
*
|
||||
* @param plugin
|
||||
* @param sender
|
||||
* @param label
|
||||
@@ -91,239 +104,333 @@ public abstract class Command {
|
||||
* @return
|
||||
*/
|
||||
public List<String> tabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
if (hasPermission(sender)) {
|
||||
|
||||
if (args.size() == 1) {
|
||||
|
||||
List<String> arguments = new ArrayList<String>();
|
||||
for (Entry<String, Command> entry : subCommands.entrySet()) {
|
||||
|
||||
if (entry.getValue().hasPermission(sender)) {
|
||||
|
||||
arguments.add(entry.getKey());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return arguments;
|
||||
|
||||
} else {
|
||||
|
||||
String cmd = args.get(0);
|
||||
if (subCommands.containsKey(cmd)) {
|
||||
|
||||
args.remove(0);
|
||||
return subCommands.get(cmd).onTabComplete(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
public List<String> onTabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
if (hasPermission(sender)) {
|
||||
|
||||
return tabComplete(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Return this commands name
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract String getName();
|
||||
|
||||
/**
|
||||
* Returns the argument name this command starts off with
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract String getArgumentName();
|
||||
|
||||
/**
|
||||
* Returns this commands arguments
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract Message getUsage();
|
||||
|
||||
/**
|
||||
* Returns a brief description of what this command does
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract Message getDescription();
|
||||
|
||||
/**
|
||||
* Returns this commands permission
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract Permission getPermission();
|
||||
|
||||
/**
|
||||
* Returns true if this command will appear in the help menu
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract boolean showInHelp();
|
||||
|
||||
/**
|
||||
* Checks to see if consoles can run this command
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract boolean isPlayerOnly();
|
||||
|
||||
/**
|
||||
* Checks to see if this command has a permission value
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean hasPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if this command has a wild card permission
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns this command's wild card permission
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.NONE;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a sub-command under this command
|
||||
*
|
||||
* @param command
|
||||
*/
|
||||
public void register(Command command) {
|
||||
|
||||
subCommands.put(command.getArgumentName(), command);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a map of all sub-commands registered under this command
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Command> getSubCommands() {
|
||||
|
||||
final Map<String, Command> commands = new LinkedHashMap<String, Command>(subCommands);
|
||||
return commands;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively adds all sub-commands under this command to the Map
|
||||
*
|
||||
* @param commands
|
||||
*/
|
||||
public void getSubCommands(LinkedHashMap<String, Command> commands) {
|
||||
|
||||
for (Entry<String, Command> entry : subCommands.entrySet()) {
|
||||
|
||||
Command cmd = entry.getValue();
|
||||
|
||||
if (cmd.showInHelp()) {
|
||||
|
||||
commands.put(cmd.getName(), cmd);
|
||||
|
||||
}
|
||||
|
||||
cmd.getSubCommands(commands);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the player has permission to execute this command
|
||||
*
|
||||
* @param sender
|
||||
* @return
|
||||
*/
|
||||
public boolean hasPermission(Sender sender) {
|
||||
|
||||
return hasPermission(sender, "");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the player has permission to execute this command
|
||||
*
|
||||
* @param sender
|
||||
* @param arg
|
||||
* @return
|
||||
*/
|
||||
public boolean hasPermission(Sender sender, String arg) {
|
||||
|
||||
if (!sender.isPlayer()) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// If this command doesn't have a permission of its own, then
|
||||
// we'll check the sub commands
|
||||
if (!hasPermission()) {
|
||||
|
||||
for (Command command : subCommands.values()) {
|
||||
|
||||
if (command.hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// /h wild card check
|
||||
if (Permission.COMMAND_ALL.hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Specific command wild card check
|
||||
if (hasWildcardPermission()) {
|
||||
|
||||
if (getWildcardPermission().hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Regular permission check
|
||||
if (getPermission().hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public Player getPlayer(Sender sender, String selector) {
|
||||
|
||||
CommandSender commandSender = sender.getCommandSender();
|
||||
if (Permission.COMMAND_SELECTORS.hasPermission(sender)) {
|
||||
|
||||
switch (selector) {
|
||||
case "@p":
|
||||
{
|
||||
Location location = null;
|
||||
if (sender.isPlayer()) {
|
||||
location = sender.getPlayer().getLocation();
|
||||
} else if (commandSender instanceof BlockCommandSender) {
|
||||
location = ((BlockCommandSender) commandSender)
|
||||
.getBlock()
|
||||
.getLocation();
|
||||
}
|
||||
|
||||
if (location != null) {
|
||||
return getNearestPlayer(location);
|
||||
}
|
||||
case "@p": {
|
||||
|
||||
Location location = null;
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
location = sender.getPlayer().getLocation();
|
||||
|
||||
} else if (commandSender instanceof BlockCommandSender) {
|
||||
|
||||
location = ((BlockCommandSender) commandSender).getBlock().getLocation();
|
||||
|
||||
}
|
||||
|
||||
if (location != null) {
|
||||
|
||||
return getNearestPlayer(location);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case "@r":
|
||||
{
|
||||
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
||||
Optional<? extends Player> player = players.stream()
|
||||
.skip((int) (players.size() * Math.random()))
|
||||
.findFirst();
|
||||
case "@r": {
|
||||
|
||||
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
||||
Optional<? extends Player> player = players.stream().skip((int) (players.size() * Math.random()))
|
||||
.findFirst();
|
||||
|
||||
if (player.isPresent()) {
|
||||
|
||||
return player.get();
|
||||
|
||||
if (player.isPresent()) {
|
||||
return player.get();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Bukkit.getPlayer(selector);
|
||||
|
||||
}
|
||||
|
||||
private Player getNearestPlayer(Location location) {
|
||||
|
||||
double maxDistance = 100;
|
||||
Player targetPlayer = null;
|
||||
Collection<? extends Entity> nearbyEntities = location.getWorld().getNearbyEntities(location, 25, 25, 25);
|
||||
|
||||
for (Entity e : nearbyEntities) {
|
||||
|
||||
if (!(e instanceof Player)) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
Player player = (Player) e;
|
||||
double distance = player.getLocation().distanceSquared(location);
|
||||
if (distance < maxDistance) {
|
||||
|
||||
targetPlayer = player;
|
||||
maxDistance = distance;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return targetPlayer;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,6 +20,7 @@ public class MainCommand extends Command {
|
||||
|
||||
@Override
|
||||
public boolean execute(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
// Execute this command
|
||||
if (args.size() == 0) {
|
||||
|
||||
@@ -27,6 +28,7 @@ public class MainCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_PLAYER_ONLY.getValue());
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
List<Group> groups = core.getDatabase().getGroups(true);
|
||||
@@ -40,13 +42,16 @@ public class MainCommand extends Command {
|
||||
|
||||
usingGroupMenu = true;
|
||||
defaultMenu = g.getDefaultMenu();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Use default menu if nothing was found
|
||||
if (defaultMenu.equals("")) {
|
||||
|
||||
defaultMenu = SettingsManager.DEFAULT_MENU.getString();
|
||||
|
||||
}
|
||||
|
||||
String menuName = defaultMenu.contains(".") ? defaultMenu.split("\\.")[0] : defaultMenu;
|
||||
@@ -58,23 +63,22 @@ public class MainCommand extends Command {
|
||||
|
||||
if (usingGroupMenu) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
sender.getPlayer(),
|
||||
Utils.cosmeticsOGPlaceholderMessage(sender.getPlayer(),
|
||||
Message.COMMAND_ERROR_UNKNOWN_GROUP_MENU.getValue().replace("{1}", menuName));
|
||||
|
||||
} else {
|
||||
|
||||
// TODO: Figure out why the menu isn't in the database.
|
||||
Player player = sender.getPlayer();
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
player,
|
||||
Utils.cosmeticsOGPlaceholderMessage(player,
|
||||
"Does the menu exist in the database?: " + String.valueOf(database.menuExists(menuName)));
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
player,
|
||||
Utils.cosmeticsOGPlaceholderMessage(player,
|
||||
Message.COMMAND_ERROR_UNKNOWN_MENU.getValue().replace("{1}", menuName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
StaticMenuManager staticManager = core.getMenuManagerFactory().getStaticMenuManager(playerState);
|
||||
@@ -99,48 +103,67 @@ public class MainCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
args.remove(0);
|
||||
return subCommands.get(cmd).onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "main";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "h";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_MAIN_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_MAIN_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_MAIN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Represents both a CommandSender and Player
|
||||
*
|
||||
* @author MediusEcho
|
||||
*
|
||||
*/
|
||||
@@ -19,6 +20,7 @@ public class Sender {
|
||||
private final UUID playerID;
|
||||
|
||||
public Sender(CommandSender sender) {
|
||||
|
||||
boolean isPlayer = sender instanceof Player;
|
||||
|
||||
playerSender = isPlayer ? (Player) sender : null;
|
||||
@@ -26,67 +28,93 @@ public class Sender {
|
||||
|
||||
commandSender = sender;
|
||||
isConsoleSender = !isPlayer;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this Sender is a Player
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isPlayer() {
|
||||
|
||||
return !isConsoleSender;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Player executing this command
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Player getPlayer() {
|
||||
|
||||
return playerSender;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the UUID of the Player executing this command
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public UUID getPlayerID() {
|
||||
|
||||
return playerID;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the CommandSender executing this command
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public CommandSender getCommandSender() {
|
||||
|
||||
return commandSender;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this Sender has permission
|
||||
*
|
||||
* @param permission
|
||||
* @return
|
||||
*/
|
||||
public boolean hasPermission(String permission) {
|
||||
|
||||
return isConsoleSender ? true : playerSender.hasPermission(permission);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this Sender has permission
|
||||
*
|
||||
* @param permission
|
||||
* @return
|
||||
*/
|
||||
public boolean hasPermission(Permission permission) {
|
||||
|
||||
if (isConsoleSender) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (playerSender.hasPermission(permission.getPermission())) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (playerSender.hasPermission(Permission.COMMAND_ALL.getPermission())) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,9 +30,11 @@ public class AddGroupCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String groupName = args.get(0);
|
||||
@@ -43,6 +45,7 @@ public class AddGroupCommand extends Command {
|
||||
if (args.size() >= 3) {
|
||||
|
||||
weight = StringUtil.toInt(args.get(2), 0);
|
||||
|
||||
}
|
||||
|
||||
boolean found = false;
|
||||
@@ -54,105 +57,124 @@ public class AddGroupCommand extends Command {
|
||||
found = true;
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (found) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_GROUP_EXISTS.replace("{1}", groupName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_GROUP_EXISTS.replace("{1}", groupName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_GROUP_EXISTS.replace("{1}", groupName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
core.getDatabase().addGroup(groupName, defaultMenu, weight);
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ADD_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ADD_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ADD_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
switch (args.size()) {
|
||||
|
||||
case 1:
|
||||
return Arrays.asList("name");
|
||||
case 2:
|
||||
return new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
case 3:
|
||||
return Arrays.asList("weight");
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "add group";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "add";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_ADD_GROUP_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_ADD_GROUP_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_ADD;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,9 +33,11 @@ public class AddTypeCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (core.getDatabaseType().equals(DatabaseType.YAML)) {
|
||||
@@ -47,9 +49,11 @@ public class AddTypeCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ADD_TYPE_ERROR.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String imageName = args.get(0);
|
||||
@@ -57,15 +61,17 @@ public class AddTypeCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_TYPE_EXISTS.replace("{1}", imageName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_TYPE_EXISTS.replace("{1}", imageName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_TYPE_EXISTS.replace("{1}", imageName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
MySQLDatabase database = (MySQLDatabase) core.getDatabase();
|
||||
@@ -74,18 +80,21 @@ public class AddTypeCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ADD_TYPE_SUCCESS.replace("{1}", imageName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ADD_TYPE_SUCCESS.replace("{1}", imageName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ADD_TYPE_SUCCESS.replace("{1}", imageName));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -96,72 +105,85 @@ public class AddTypeCommand extends Command {
|
||||
List<String> images = new ArrayList<String>();
|
||||
Map<String, BufferedImage> imageCache = core.getDatabase().getImages(false);
|
||||
|
||||
for (Entry<String, BufferedImage> entry :
|
||||
core.getResourceManager().getImages().entrySet()) {
|
||||
for (Entry<String, BufferedImage> entry : core.getResourceManager().getImages().entrySet()) {
|
||||
|
||||
if (!imageCache.containsKey(entry.getKey())) {
|
||||
|
||||
images.add(entry.getKey());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return images;
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "add type";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "add";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_ADD_TYPE_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_ADD_TYPE_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_TYPE_ADD;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_TYPE_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -41,10 +41,13 @@ public class BukkitHelpCommand extends Command {
|
||||
|
||||
// Store the component in the map
|
||||
commands.put(commandIndex++, component);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pages = (int) Math.ceil((double) commandIndex / 9D);
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
@@ -59,16 +62,15 @@ public class BukkitHelpCommand extends Command {
|
||||
|
||||
Player player = sender.getPlayer();
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
player,
|
||||
"<white>> <light_purple>Cosmetics<red>-OG <yellow>v"
|
||||
+ core.getPluginMeta().getVersion());
|
||||
Utils.cosmeticsOGPlaceholderMessage(player,
|
||||
"<white>> <light_purple>Cosmetics<red>-OG <yellow>v" + core.getPluginMeta().getVersion());
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, "<gray>> " + Message.COMMAND_HELP_TIP.getValue());
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole("&r&2Cosmetics&c-OG &ev" + core.getPluginMeta().getVersion());
|
||||
Utils.logToConsole("&7 " + Message.COMMAND_HELP_TIP.getValue());
|
||||
|
||||
}
|
||||
|
||||
for (Entry<Integer, Component> entry : commands.entrySet()) {
|
||||
@@ -81,8 +83,11 @@ public class BukkitHelpCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(MiniMessage.miniMessage().serialize(component));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,12 +98,13 @@ public class BukkitHelpCommand extends Command {
|
||||
protected void readPage(CommandSender sender) {
|
||||
|
||||
sender.sendMessage(MiniMessage.miniMessage()
|
||||
.deserialize(
|
||||
"<white>> <gold>ParticleHats v" + core.getPluginMeta().getVersion()));
|
||||
.deserialize("<white>> <gold>ParticleHats v" + core.getPluginMeta().getVersion()));
|
||||
for (Entry<Integer, Component> cmd : commands.entrySet()) {
|
||||
|
||||
sender.sendMessage(cmd.getValue());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -113,15 +119,18 @@ public class BukkitHelpCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_NO_PERMISSION.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
int targetPage = 0;
|
||||
if (args.size() >= 1) {
|
||||
|
||||
targetPage = MathUtil.valueOf(args.get(0));
|
||||
|
||||
}
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
@@ -131,50 +140,60 @@ public class BukkitHelpCommand extends Command {
|
||||
} else {
|
||||
|
||||
readPage(sender.getCommandSender());
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "help";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "help";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_HELP_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_HELP_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_HELP;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,6 +22,7 @@ public class ClearCommand extends Command {
|
||||
clearPlayerCommand = new ClearPlayerCommand();
|
||||
|
||||
register(clearPlayerCommand);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -36,6 +37,7 @@ public class ClearCommand extends Command {
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender, Message.COMMAND_CLEAR_PLAYER_USAGE.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
core.getPlayerState(sender.getPlayer()).clearActiveHats();
|
||||
@@ -47,6 +49,7 @@ public class ClearCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_CLEAR_SUCCESS.getValue());
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -54,7 +57,9 @@ public class ClearCommand extends Command {
|
||||
} else {
|
||||
|
||||
return clearPlayerCommand.onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -68,72 +73,87 @@ public class ClearCommand extends Command {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
|
||||
players.add(p.getName());
|
||||
|
||||
}
|
||||
|
||||
if (Permission.COMMAND_SELECTORS.hasPermission(sender)) {
|
||||
|
||||
players.add("@p");
|
||||
players.add("@r");
|
||||
|
||||
}
|
||||
|
||||
return players;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "clear";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "clear";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_CLEAR_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_CLEAR_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_CLEAR;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_CLEAR_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,103 +20,114 @@ public class ClearPlayerCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!player.isOnline()) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
core.getPlayerState(player).clearActiveHats();
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_CLEAR_PLAYER_SUCCESS.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_CLEAR_PLAYER_SUCCESS.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "clear player";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "player";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_CLEAR_PLAYER_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_CLEAR_PLAYER_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_CLEAR_PLAYER;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_CLEAR_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,15 +27,16 @@ public class CreateCommand extends Command {
|
||||
PlayerState playerState = core.getPlayerState(sender.getPlayer());
|
||||
if (playerState.hasEditorOpen()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
String unsanitizedMenuName =
|
||||
(args.get(0).contains(".") ? args.get(0).split("\\.")[0] : args.get(0));
|
||||
String unsanitizedMenuName = (args.get(0).contains(".") ? args.get(0).split("\\.")[0] : args.get(0));
|
||||
String menuName = StringUtil.sanitizeString(unsanitizedMenuName);
|
||||
if (menuName.isEmpty()) {
|
||||
|
||||
@@ -46,9 +47,11 @@ public class CreateCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_CREATE_INVALID.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Database database = core.getDatabase();
|
||||
@@ -58,17 +61,17 @@ public class CreateCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_MENU_EXISTS.getValue().replace("{1}", menuName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_MENU_EXISTS.getValue().replace("{1}", menuName));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_MENU_EXISTS.getValue().replace("{1}", menuName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
database.createMenu(menuName);
|
||||
@@ -81,8 +84,8 @@ public class CreateCommand extends Command {
|
||||
|
||||
} else {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_CREATE_SUCCESS.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_CREATE_SUCCESS.replace("{1}", menuName));
|
||||
|
||||
PlayerState playerState = core.getPlayerState(sender.getPlayer());
|
||||
EditorMenuManager editorManager = core.getMenuManagerFactory().getEditorMenuManager(playerState);
|
||||
@@ -90,53 +93,64 @@ public class CreateCommand extends Command {
|
||||
|
||||
editorManager.setEditingMenu(inventory);
|
||||
editorManager.open();
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "create menu";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "create";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_CREATE_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_CREATE_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_CREATE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,47 +14,56 @@ public class DebugCommand extends Command {
|
||||
public boolean execute(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "debug";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "debug";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.UNKNOWN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.UNKNOWN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,6 +15,7 @@ public class DebugDeleteMenu extends Command {
|
||||
public List<String> tabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
return new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,47 +25,56 @@ public class DebugDeleteMenu extends Command {
|
||||
core.getDatabase().deleteMenu(menuName);
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "delete";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "delete";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_ARGUMENT_NONE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_ARGUMENT_NONE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -29,9 +29,11 @@ public class DeleteGroupCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String groupName = args.get(0);
|
||||
@@ -45,37 +47,43 @@ public class DeleteGroupCommand extends Command {
|
||||
|
||||
found = true;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_GROUP.replace("{1}", groupName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_GROUP.replace("{1}", groupName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_GROUP.replace("{1}", groupName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
core.getDatabase().deleteGroup(groupName);
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_REMOVE_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_REMOVE_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_REMOVE_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,65 +95,78 @@ public class DeleteGroupCommand extends Command {
|
||||
for (Group g : core.getDatabase().getGroups(false)) {
|
||||
|
||||
groups.add(g.getName());
|
||||
|
||||
}
|
||||
|
||||
return groups;
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "remove group";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "remove";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_REMOVE_GROUP_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_REMOVE_GROUP_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_REMOVE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@ public class EditCommand extends Command {
|
||||
public EditCommand(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -31,8 +32,7 @@ public class EditCommand extends Command {
|
||||
|
||||
if (args.size() == 1) {
|
||||
|
||||
List<String> menus =
|
||||
new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
List<String> menus = new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
List<String> result = new ArrayList<String>();
|
||||
|
||||
menus.add("purchase");
|
||||
@@ -42,13 +42,17 @@ public class EditCommand extends Command {
|
||||
if (hasPermission(sender, menu)) {
|
||||
|
||||
result.add(menu);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -65,9 +69,11 @@ public class EditCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(Message.COMMAND_EDIT_USAGE.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
PlayerState playerState = core.getPlayerState(sender.getPlayer());
|
||||
@@ -77,6 +83,7 @@ public class EditCommand extends Command {
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender, Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String menuName = (args.get(0).contains(".") ? args.get(0).split("\\.")[0] : args.get(0));
|
||||
@@ -85,28 +92,31 @@ public class EditCommand extends Command {
|
||||
MenuInventory inventory = database.getPurchaseMenu(playerState);
|
||||
if (inventory != null) {
|
||||
|
||||
PurchaseMenuManager purchaseManager =
|
||||
core.getMenuManagerFactory().getPurchaseMenuManager(playerState);
|
||||
PurchaseMenuManager purchaseManager = core.getMenuManagerFactory().getPurchaseMenuManager(playerState);
|
||||
|
||||
purchaseManager.setEditingMenu(inventory);
|
||||
purchaseManager.open();
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!database.menuExists(menuName)) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
MenuInventory inventory = database.loadInventory(menuName, playerState);
|
||||
if (inventory == null) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
EditorMenuManager editorManager = core.getMenuManagerFactory().getEditorMenuManager(playerState);
|
||||
@@ -115,60 +125,70 @@ public class EditCommand extends Command {
|
||||
editorManager.open();
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "edit menu";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "edit";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_EDIT_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_EDIT_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_EDIT;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_EDIT_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -177,12 +197,14 @@ public class EditCommand extends Command {
|
||||
if (!sender.isPlayer()) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// /h wild card check.
|
||||
if (Permission.COMMAND_ALL.hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Specific command wild card check.
|
||||
@@ -191,12 +213,13 @@ public class EditCommand extends Command {
|
||||
if (getWildcardPermission().hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check for individual menu permissions.
|
||||
List<String> menus =
|
||||
new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
List<String> menus = new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
menus.add("purchase");
|
||||
|
||||
for (String menu : menus) {
|
||||
@@ -204,10 +227,13 @@ public class EditCommand extends Command {
|
||||
if (sender.hasPermission(getPermission().append(menu))) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -216,12 +242,14 @@ public class EditCommand extends Command {
|
||||
if (!sender.isPlayer()) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// /h wild card check.
|
||||
if (Permission.COMMAND_ALL.hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Specific command wild card check.
|
||||
@@ -230,7 +258,9 @@ public class EditCommand extends Command {
|
||||
if (getWildcardPermission().hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (arg != null && !arg.equals("")) {
|
||||
@@ -238,9 +268,13 @@ public class EditCommand extends Command {
|
||||
if (sender.hasPermission(getPermission().append(arg))) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,9 +31,11 @@ public class EditGroupCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Database database = core.getDatabase();
|
||||
@@ -54,133 +56,158 @@ public class EditGroupCommand extends Command {
|
||||
found = true;
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_GROUP.replace("{1}", groupName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_GROUP.replace("{1}", groupName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_GROUP.replace("{1}", groupName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!database.getMenus(false).containsKey(menuName)) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (args.size() >= 3) {
|
||||
|
||||
weight = StringUtil.toInt(args.get(2), -1);
|
||||
|
||||
}
|
||||
|
||||
database.editGroup(groupName, menuName, weight);
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_EDIT_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_EDIT_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_EDIT_GROUP_SUCCESS.replace("{1}", groupName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
switch (args.size()) {
|
||||
|
||||
case 1: {
|
||||
|
||||
List<String> groups = new ArrayList<String>();
|
||||
|
||||
for (Group g : core.getDatabase().getGroups(false)) {
|
||||
|
||||
groups.add(g.getName());
|
||||
|
||||
}
|
||||
|
||||
return groups;
|
||||
|
||||
}
|
||||
case 2:
|
||||
return new ArrayList<String>(core.getDatabase().getMenus(false).keySet());
|
||||
case 3:
|
||||
return Arrays.asList("weight");
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "edit group";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "edit";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_EDIT_GROUP_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_EDIT_GROUP_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_EDIT;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,14 +27,13 @@ public class GroupInfoCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_GROUP_INFO_TIP.getValue());
|
||||
|
||||
}
|
||||
|
||||
for (Group g : groups) {
|
||||
|
||||
String info = infoTemplate
|
||||
.replace("{1}", g.getName())
|
||||
.replace("{2}", g.getDefaultMenu())
|
||||
.replace("{3}", Integer.toString(g.getWeight()));
|
||||
String info = infoTemplate.replace("{1}", g.getName()).replace("{2}", g.getDefaultMenu()).replace("{3}",
|
||||
Integer.toString(g.getWeight()));
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
@@ -43,63 +42,76 @@ public class GroupInfoCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole("> " + info);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "group info";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "info";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_GROUP_INFO_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_GROUP_INFO_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_INFO;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,6 +19,7 @@ public class GroupsCommand extends Command {
|
||||
register(new DeleteGroupCommand());
|
||||
register(new EditGroupCommand());
|
||||
register(new GroupInfoCommand());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -32,10 +33,13 @@ public class GroupsCommand extends Command {
|
||||
args.remove(0);
|
||||
|
||||
return subCommands.get(argument).onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,7 +53,9 @@ public class GroupsCommand extends Command {
|
||||
if (entry.getValue().hasPermission(sender)) {
|
||||
|
||||
commands.add(entry.getKey());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return commands;
|
||||
@@ -65,70 +71,85 @@ public class GroupsCommand extends Command {
|
||||
args.remove(0);
|
||||
|
||||
return subCommand.onTabComplete(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "group";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "group";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.UNKNOWN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.UNKNOWN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_GROUP_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,9 +31,11 @@ public class ImportCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(Message.COMMAND_IMPORT_USAGE.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (core.getDatabaseType().equals(DatabaseType.YAML)) {
|
||||
@@ -45,9 +47,11 @@ public class ImportCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ADD_TYPE_ERROR.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String menuName = args.get(0);
|
||||
@@ -55,15 +59,17 @@ public class ImportCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_MENU_EXISTS.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_MENU_EXISTS.replace("{1}", menuName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_MENU_EXISTS.replace("{1}", menuName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
MySQLDatabase database = (MySQLDatabase) core.getDatabase();
|
||||
@@ -73,30 +79,34 @@ public class ImportCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
database.importMenu(sender, config);
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_IMPORT_SUCCESS.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_IMPORT_SUCCESS.replace("{1}", menuName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_IMPORT_SUCCESS.replace("{1}", menuName));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,53 +118,64 @@ public class ImportCommand extends Command {
|
||||
for (String menu : core.getResourceManager().getMenus()) {
|
||||
|
||||
menus.add(menu);
|
||||
|
||||
}
|
||||
|
||||
return menus;
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "import menu";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "import";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_IMPORT_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_IMPORT_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_IMPORT;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,6 +18,7 @@ public class MetaCommand extends EditCommand {
|
||||
public MetaCommand(final CosmeticsOG core) {
|
||||
|
||||
super(core);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -32,17 +33,17 @@ public class MetaCommand extends EditCommand {
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, Message.META_ERROR.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (args.size() == 0) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
player,
|
||||
Message.COMMAND_META_USAGE.replace(
|
||||
"{1}", playerState.getMetaState().getSuggestion()));
|
||||
Utils.cosmeticsOGPlaceholderMessage(player,
|
||||
Message.COMMAND_META_USAGE.replace("{1}", playerState.getMetaState().getSuggestion()));
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
EditorMenuManager editorManager = core.getMenuManagerFactory().getEditorMenuManager(playerState);
|
||||
@@ -55,14 +56,17 @@ public class MetaCommand extends EditCommand {
|
||||
} else {
|
||||
|
||||
metaState.onMetaSet(editorManager, player, args);
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_PLAYER_ONLY.getValue());
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,33 +83,41 @@ public class MetaCommand extends EditCommand {
|
||||
} else {
|
||||
|
||||
return Arrays.asList(playerState.getMetaState().getSuggestion());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "meta";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "meta";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_META_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_META_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,6 +33,7 @@ public class OpenCommand extends Command {
|
||||
|
||||
openPlayerCommand = new OpenPlayerCommand(this);
|
||||
register(openPlayerCommand);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,7 +48,9 @@ public class OpenCommand extends Command {
|
||||
if (hasPermission(sender, menu)) {
|
||||
|
||||
result.add(menu);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -55,9 +58,11 @@ public class OpenCommand extends Command {
|
||||
} else if (args.size() == 2) {
|
||||
|
||||
return openPlayerCommand.onTabComplete(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -74,9 +79,11 @@ public class OpenCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(Message.COMMAND_OPEN_USAGE.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (args.size() == 1) {
|
||||
@@ -92,16 +99,18 @@ public class OpenCommand extends Command {
|
||||
PlayerState playerState = core.getPlayerState(sender.getPlayer());
|
||||
if (playerState.hasEditorOpen()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
AbstractMenu menu = getRequestedMenu(playerState, args.get(0), sender, sender.getPlayer());
|
||||
if (menu == null) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
StaticMenuManager staticManager = (StaticMenuManager) playerState.getMenuManager();
|
||||
@@ -110,66 +119,78 @@ public class OpenCommand extends Command {
|
||||
menu.open();
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
return openPlayerCommand.onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "open menu";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "open";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_OPEN_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_OPEN_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_OPEN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_OPEN_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -178,12 +199,14 @@ public class OpenCommand extends Command {
|
||||
if (!sender.isPlayer()) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// /h wild card check.
|
||||
if (Permission.COMMAND_ALL.hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Specific command wild card check.
|
||||
@@ -192,7 +215,9 @@ public class OpenCommand extends Command {
|
||||
if (getWildcardPermission().hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check for individual menu permissions
|
||||
@@ -201,10 +226,13 @@ public class OpenCommand extends Command {
|
||||
if (sender.hasPermission(getPermission().append(menu))) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -213,12 +241,14 @@ public class OpenCommand extends Command {
|
||||
if (!sender.isPlayer()) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// /h wild card check.
|
||||
if (Permission.COMMAND_ALL.hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Specific command wild card check.
|
||||
@@ -227,7 +257,9 @@ public class OpenCommand extends Command {
|
||||
if (getWildcardPermission().hasPermission(sender)) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (arg != null && !arg.equals("")) {
|
||||
@@ -235,14 +267,18 @@ public class OpenCommand extends Command {
|
||||
if (sender.hasPermission(getPermission().append(arg))) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public AbstractMenu getRequestedMenu(
|
||||
PlayerState playerState, String requestedMenuName, Sender sender, Player player) {
|
||||
public AbstractMenu getRequestedMenu(PlayerState playerState, String requestedMenuName, Sender sender,
|
||||
Player player)
|
||||
{
|
||||
|
||||
// Grab the name without any extensions.
|
||||
String menuName = (requestedMenuName.contains(".") ? requestedMenuName.split("\\.")[0] : requestedMenuName);
|
||||
@@ -252,6 +288,7 @@ public class OpenCommand extends Command {
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender, Message.COMMAND_OPEN_ERROR.replace("{1}", menuName));
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
StaticMenuManager staticManager = core.getMenuManagerFactory().getStaticMenuManager(playerState);
|
||||
@@ -263,15 +300,19 @@ public class OpenCommand extends Command {
|
||||
|
||||
if (menuInventory == null) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_MENU.replace("{1}", menuName));
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
return new StaticMenu(core, staticManager, player, menuInventory);
|
||||
|
||||
}
|
||||
|
||||
return menu;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,6 +23,7 @@ public class OpenPlayerCommand extends Command {
|
||||
public OpenPlayerCommand(final OpenCommand parent) {
|
||||
|
||||
this.parent = parent;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,9 +38,11 @@ public class OpenPlayerCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Player targetPlayer = getPlayer(sender, args.get(1));
|
||||
@@ -47,34 +50,35 @@ public class OpenPlayerCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(1)));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(1)));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(1)));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!targetPlayer.isOnline()) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", targetPlayer.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", targetPlayer.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
PlayerState playerState = core.getPlayerState(targetPlayer.getPlayer());
|
||||
@@ -82,21 +86,24 @@ public class OpenPlayerCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_OPEN_PLAYER_EDITING.replace("{1}", targetPlayer.getName()));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_OPEN_PLAYER_EDITING.replace("{1}", targetPlayer.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_OPEN_PLAYER_EDITING.replace("{1}", targetPlayer.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
AbstractMenu menu = parent.getRequestedMenu(playerState, args.get(0), sender, targetPlayer);
|
||||
if (menu == null) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
StaticMenuManager staticManager = (StaticMenuManager) playerState.getMenuManager();
|
||||
@@ -105,6 +112,7 @@ public class OpenPlayerCommand extends Command {
|
||||
menu.open();
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -116,59 +124,71 @@ public class OpenPlayerCommand extends Command {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
|
||||
players.add(p.getName());
|
||||
|
||||
}
|
||||
|
||||
if (Permission.COMMAND_SELECTORS.hasPermission(sender)) {
|
||||
|
||||
players.add("@p");
|
||||
players.add("@r");
|
||||
|
||||
}
|
||||
|
||||
return players;
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "open menu for player";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "player";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_OPEN_PLAYER_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_OPEN_PLAYER_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_OPEN_PLAYER;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,11 +26,12 @@ public class ParticlesCommand extends Command {
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender, Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
StaticMenuManager staticManager = core.getMenuManagerFactory().getStaticMenuManager(playerState);
|
||||
EquippedParticlesMenu particlesMenu =
|
||||
new EquippedParticlesMenu(core, staticManager, sender.getPlayer(), false);
|
||||
EquippedParticlesMenu particlesMenu = new EquippedParticlesMenu(core, staticManager, sender.getPlayer(),
|
||||
false);
|
||||
|
||||
staticManager.addMenu(particlesMenu);
|
||||
particlesMenu.open();
|
||||
@@ -40,48 +41,58 @@ public class ParticlesCommand extends Command {
|
||||
} else {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "particles";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "particles";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_PARTICLE_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_PARTICLE_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_PARTICLES;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,50 +24,60 @@ public class ReloadCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_RELOAD_SUCCESS.getValue());
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "reload";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "reload";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_RELOAD_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_RELOAD_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_RELOAD;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,9 +28,11 @@ public class RemoveTypeCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
String imageName = args.get(0);
|
||||
@@ -38,33 +40,38 @@ public class RemoveTypeCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_ERROR_UNKNOWN_TYPE.replace("{1}", imageName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_TYPE.replace("{1}", imageName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_TYPE.replace("{1}", imageName));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (core.getDatabase().deleteImage(imageName)) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender, Message.COMMAND_REMOVE_TYPE_SUCCESS.replace("{1}", imageName));
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_REMOVE_TYPE_SUCCESS.replace("{1}", imageName));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_REMOVE_TYPE_SUCCESS.replace("{1}", imageName));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -73,62 +80,74 @@ public class RemoveTypeCommand extends Command {
|
||||
if (args.size() == 1) {
|
||||
|
||||
return new ArrayList<String>(core.getDatabase().getImages(false).keySet());
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "remove type";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "remove";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_REMOVE_TYPE_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_REMOVE_TYPE_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_TYPE_REMOVE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_TYPE_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,9 +33,11 @@ public class SetCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(Message.COMMAND_SET_USAGE.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Player player = getPlayer(sender, args.get(0));
|
||||
@@ -43,46 +45,48 @@ public class SetCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!player.isOnline()) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
boolean permanent = true;
|
||||
if (args.size() >= 3) {
|
||||
|
||||
permanent = Boolean.valueOf(args.get(2));
|
||||
|
||||
}
|
||||
|
||||
boolean tellPlayer = true;
|
||||
if (args.size() >= 4) {
|
||||
|
||||
tellPlayer = Boolean.valueOf(args.get(3));
|
||||
|
||||
}
|
||||
|
||||
int demoTime = 200;
|
||||
@@ -93,7 +97,9 @@ public class SetCommand extends Command {
|
||||
demoTime = Integer.parseInt(args.get(4));
|
||||
|
||||
} catch (NumberFormatException ignored) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
String hatLabel = args.get(1);
|
||||
@@ -106,18 +112,19 @@ public class SetCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_SET_ALREADY_SET.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_SET_ALREADY_SET.getValue().replace("{1}", player.getName()));
|
||||
Utils.logToConsole(Message.COMMAND_SET_ALREADY_SET.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Database database = core.getDatabase();
|
||||
@@ -126,16 +133,17 @@ public class SetCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_SET_LABEL_ERROR.getValue().replace("{1}", hatLabel));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_SET_LABEL_ERROR.getValue().replace("{1}", hatLabel));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
hat.setPermanent(permanent);
|
||||
@@ -143,6 +151,7 @@ public class SetCommand extends Command {
|
||||
|
||||
hat.setCanBeSaved(false);
|
||||
hat.setDemoDuration(demoTime);
|
||||
|
||||
}
|
||||
|
||||
if (core.getParticleManager().equipHat(player, hat, false)) {
|
||||
@@ -150,84 +159,109 @@ public class SetCommand extends Command {
|
||||
if (tellPlayer) {
|
||||
|
||||
player.sendMessage(Message.COMMAND_SET_SUCCESS.getValue().replace("{1}", hat.getDisplayName()));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
switch (args.size()) {
|
||||
|
||||
case 1: {
|
||||
|
||||
List<String> players = new ArrayList<String>();
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
|
||||
players.add(p.getName());
|
||||
|
||||
}
|
||||
|
||||
if (Permission.COMMAND_SELECTORS.hasPermission(sender)) {
|
||||
|
||||
players.add("@p");
|
||||
players.add("@r");
|
||||
|
||||
}
|
||||
|
||||
return players;
|
||||
|
||||
}
|
||||
case 2: {
|
||||
|
||||
return core.getDatabase().getLabels(false);
|
||||
|
||||
}
|
||||
case 3:
|
||||
case 4: {
|
||||
|
||||
return Arrays.asList("true", "false");
|
||||
|
||||
}
|
||||
case 5: {
|
||||
|
||||
return Collections.singletonList("duration");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Collections.singletonList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "set";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "set";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_SET_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_SET_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_SET;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -36,14 +36,16 @@ public class SpigotHelpCommand extends BukkitHelpCommand {
|
||||
+ Utils.stripColors(command.getPermission().getPermission());
|
||||
|
||||
TextComponent hoverText = Utils.legacySerializerAnyCase(commandText);
|
||||
TextComponent commandComponent = Utils.legacySerializerAnyCase(
|
||||
"&7> &3" + command.getUsage().getValue())
|
||||
TextComponent commandComponent = Utils.legacySerializerAnyCase("&7> &3" + command.getUsage().getValue())
|
||||
.hoverEvent(HoverEvent.showText(hoverText))
|
||||
.clickEvent(ClickEvent.suggestCommand(command.getUsage().getValue()));
|
||||
|
||||
commands.put(command, commandComponent);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,14 +54,14 @@ public class SpigotHelpCommand extends BukkitHelpCommand {
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Player player = sender.getPlayer();
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
player, "&f> &6ParticleHats v" + core.getPluginMeta().getVersion());
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, "&f> &6ParticleHats v" + core.getPluginMeta().getVersion());
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, "&7> " + Message.COMMAND_HELP_TIP.getValue());
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole("&f> &6ParticleHats v" + core.getPluginMeta().getVersion());
|
||||
Utils.logToConsole("&7> " + Message.COMMAND_HELP_TIP.getValue());
|
||||
|
||||
}
|
||||
|
||||
for (Entry<Command, TextComponent> entry : commands.entrySet()) {
|
||||
@@ -75,8 +77,13 @@ public class SpigotHelpCommand extends BukkitHelpCommand {
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(component.content());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,6 +21,7 @@ public class ToggleCommand extends Command {
|
||||
|
||||
togglePlayerCommand = new TogglePlayerCommand();
|
||||
register(togglePlayerCommand);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,14 +38,17 @@ public class ToggleCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (args.size() > 1) {
|
||||
|
||||
return togglePlayerCommand.onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
@@ -58,10 +62,13 @@ public class ToggleCommand extends Command {
|
||||
} else {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender, Message.COMMAND_TOGGLE_OFF.getValue());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -70,9 +77,11 @@ public class ToggleCommand extends Command {
|
||||
if (args.size() == 2) {
|
||||
|
||||
return togglePlayerCommand.onTabComplete(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("on", "off");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -81,50 +90,60 @@ public class ToggleCommand extends Command {
|
||||
if (args.size() == 2) {
|
||||
|
||||
return togglePlayerCommand.onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
return super.onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "Toggle";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "toggle";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_TOGGLE_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_TOGGLE_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_TOGGLE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,9 +30,11 @@ public class TogglePlayerCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(getUsage().getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Player player = getPlayer(sender, args.get(1));
|
||||
@@ -40,34 +42,34 @@ public class TogglePlayerCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(1)));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(1)));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(1)));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!player.isOnline()) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
boolean toggleStatus = StringUtil.getToggleValue(args.get(0));
|
||||
@@ -76,30 +78,32 @@ public class TogglePlayerCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_TOGGLE_PLAYER_ON.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_TOGGLE_PLAYER_ON.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_TOGGLE_PLAYER_OFF.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_TOGGLE_PLAYER_OFF.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -111,59 +115,71 @@ public class TogglePlayerCommand extends Command {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
|
||||
players.add(p.getName());
|
||||
|
||||
}
|
||||
|
||||
if (Permission.COMMAND_SELECTORS.hasPermission(sender)) {
|
||||
|
||||
players.add("@p");
|
||||
players.add("@r");
|
||||
|
||||
}
|
||||
|
||||
return players;
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "toggle player";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "player";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_TOGGLE_PLAYER_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_TOGGLE_PLAYER_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_TOGGLE_PLAYER;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,6 +17,7 @@ public class TypeCommand extends Command {
|
||||
|
||||
register(new AddTypeCommand());
|
||||
register(new RemoveTypeCommand());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,10 +31,13 @@ public class TypeCommand extends Command {
|
||||
args.remove(0);
|
||||
|
||||
return subCommands.get(argument).onCommand(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,7 +51,9 @@ public class TypeCommand extends Command {
|
||||
if (sender.hasPermission(entry.getValue().getPermission())) {
|
||||
|
||||
commands.add(entry.getKey());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return commands;
|
||||
@@ -63,70 +69,85 @@ public class TypeCommand extends Command {
|
||||
args.remove(0);
|
||||
|
||||
return subCommand.onTabComplete(core, sender, label, args);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Arrays.asList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "type";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "type";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.UNKNOWN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.UNKNOWN;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_TYPE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasWildcardPermission() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getWildcardPermission() {
|
||||
|
||||
return Permission.COMMAND_TYPE_ALL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,9 +33,11 @@ public class UnsetCommand extends Command {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_ARGUMENTS.getValue());
|
||||
Utils.logToConsole(Message.COMMAND_UNSET_USAGE.getValue());
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Player player = getPlayer(sender, args.get(0));
|
||||
@@ -43,40 +45,41 @@ public class UnsetCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_UNKNOWN_PLAYER.getValue().replace("{1}", args.get(0)));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
if (!player.isOnline()) {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(
|
||||
Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
Utils.logToConsole(Message.COMMAND_ERROR_OFFLINE_PLAYER.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
boolean tellPlayer = true;
|
||||
if (args.size() >= 3) {
|
||||
|
||||
tellPlayer = Boolean.valueOf(args.get(2));
|
||||
|
||||
}
|
||||
|
||||
String hatLabel = args.get(1);
|
||||
@@ -88,16 +91,17 @@ public class UnsetCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_UNSET_NOT_WEARING.getValue().replace("{1}", player.getName()));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_UNSET_NOT_WEARING.getValue().replace("{1}", player.getName()));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
Database database = core.getDatabase();
|
||||
@@ -106,102 +110,125 @@ public class UnsetCommand extends Command {
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
(Player) sender,
|
||||
Utils.cosmeticsOGPlaceholderMessage((Player) sender,
|
||||
Message.COMMAND_UNSET_LABEL_ERROR.getValue().replace("{1}", hatLabel));
|
||||
|
||||
} else {
|
||||
|
||||
Utils.logToConsole(Message.COMMAND_UNSET_LABEL_ERROR.getValue().replace("{1}", hatLabel));
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
core.getPlayerState(player).removeHat(hat);
|
||||
if (tellPlayer) {
|
||||
|
||||
player.sendMessage(Message.COMMAND_UNSET_SUCCESS.getValue().replace("{1}", hat.getDisplayName()));
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(CosmeticsOG core, Sender sender, String label, ArrayList<String> args) {
|
||||
|
||||
switch (args.size()) {
|
||||
|
||||
case 1: {
|
||||
|
||||
List<String> players = new ArrayList<String>();
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
|
||||
players.add(p.getName());
|
||||
|
||||
}
|
||||
|
||||
if (Permission.COMMAND_SELECTORS.hasPermission(sender)) {
|
||||
|
||||
players.add("@p");
|
||||
players.add("@r");
|
||||
|
||||
}
|
||||
|
||||
return players;
|
||||
|
||||
}
|
||||
case 2: {
|
||||
|
||||
List<String> labels = new ArrayList<String>();
|
||||
for (Hat h : core.getPlayerState(sender.getPlayer()).getActiveHats()) {
|
||||
|
||||
labels.add(h.getLabel());
|
||||
|
||||
}
|
||||
|
||||
return labels;
|
||||
|
||||
}
|
||||
case 3: {
|
||||
|
||||
return Arrays.asList("true", "false");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Collections.singletonList("");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return "unset";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArgumentName() {
|
||||
|
||||
return "unset";
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getUsage() {
|
||||
|
||||
return Message.COMMAND_UNSET_USAGE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message getDescription() {
|
||||
|
||||
return Message.COMMAND_UNSET_DESCRIPTION;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Permission getPermission() {
|
||||
|
||||
return Permission.COMMAND_UNSET;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showInHelp() {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerOnly() {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,199 +15,158 @@ import org.jetbrains.annotations.NotNull;
|
||||
*
|
||||
*/
|
||||
public enum CompatibleMaterial {
|
||||
BARRIER("INK_SACK:8"),
|
||||
BIRCH_BOAT("BOAT_BIRCH"),
|
||||
BLACK_DYE("INK_SACK"),
|
||||
BLACK_STAINED_GLASS_PANE("STAINED_GLASS_PANE:15"),
|
||||
BLUE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:11"),
|
||||
BONE_MEAL("INK_SACK:15"),
|
||||
BREEZE_ROD,
|
||||
BROWN_DYE("INK_SACK:3"),
|
||||
BROWN_STAINED_GLASS_PANE("STAINED_GLASS_PANE:12"),
|
||||
CACTUS_GREEN("INK_SACK:2", "GREEN_DYE"),
|
||||
CAMPFIRE("TORCH"),
|
||||
CAULDRON("CAULDRON_ITEM"),
|
||||
CHERRY_LEAVES,
|
||||
CHERRY_LOG,
|
||||
CHERRY_WOOD,
|
||||
COBWEB,
|
||||
COMPARATOR("REDSTONE_COMPARATOR"),
|
||||
COMPOSTER("COMPOSTER"),
|
||||
CONDUIT("CLAY_BALL"),
|
||||
COPPER_BLOCK("STONE"),
|
||||
CRIMSON_FUNGUS("MUSHROOM"),
|
||||
CRYING_OBSIDIAN("OBSIDIAN"),
|
||||
CYAN_CANDLE("STONE"),
|
||||
CYAN_DYE("INK_SACK:6"),
|
||||
CYAN_STAINED_GLASS_PANE("STAINED_GLASS_PANE:9"),
|
||||
DANDELION("FLOWER", "DANDELION"),
|
||||
DRAGON_HEAD("SKULL_ITEM:5"),
|
||||
DRIPSTONE_BLOCK("STONE"),
|
||||
EXPERIENCE_BOTTLE("EXP_BOTTLE"),
|
||||
ENCHANTING_TABLE("ENCHANTMENT_TABLE"),
|
||||
END_ROD,
|
||||
FIRE_CHARGE("FIREBALL"),
|
||||
FIREWORK_ROCKET("FIREWORK_CHARGE"),
|
||||
FIREWORK_STAR("FIREWORK_CHARGE"),
|
||||
GUSTER_POTTERY_SHERD,
|
||||
GLOW_INK_SAC("INK_SACK:8"),
|
||||
GRAY_DYE("INK_SACK:8"),
|
||||
GRAY_STAINED_GLASS_PANE("STAINED_GLASS_PANE:7"),
|
||||
GREEN_STAINED_GLASS_PANE("STAINED_GLASS_PANE:13"),
|
||||
GUNPOWDER("SULPHUR"),
|
||||
HORN_CORAL("ROSE_RED:8"),
|
||||
HONEYCOMB("HONEYCOMB", "POTION"),
|
||||
HONEY_BOTTLE("HONEY_BOTTLE", "POTION"),
|
||||
INK_SAC("INK_SACK"),
|
||||
LANTERN("TORCH"),
|
||||
LAPIS_LAZULI("INK_SACK:4"),
|
||||
LIGHT("STONE"),
|
||||
LIGHTNING_ROD("STONE"),
|
||||
LIGHT_BLUE_DYE("INK_SACK:12"),
|
||||
LIGHT_BLUE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:3"),
|
||||
LIGHT_GRAY_DYE("INK_SACK:7"),
|
||||
LIGHT_GRAY_STAINED_GLASS_PANE("STAINED_GLASS_PANE:8"),
|
||||
LIME_DYE("INK_SACK:10"),
|
||||
LIME_STAINED_GLASS_PANE("STAINED_GLASS_PANE:5"),
|
||||
MAGENTA_DYE("INK_SACK:13"),
|
||||
MAGENTA_STAINED_GLASS_PANE("STAINED_GLASS_PANE:2"),
|
||||
MAGMA_BLOCK("MAGMA", "MAGMA_CREAM"),
|
||||
MAP("EMPTY_MAP"),
|
||||
MACE,
|
||||
MUSHROOM_STEW("MUSHROOM_SOUP"),
|
||||
MUSIC_DISC_CAT("GREEN_RECORD"),
|
||||
MUSIC_DISC_BLOCKS("RECORD_3"),
|
||||
MUSIC_DISC_FAR("RECORD_5"),
|
||||
MUSIC_DISC_STRAD("RECORD_9"),
|
||||
OAK_BOAT("BOAT"),
|
||||
OMINOUS_BOTTLE,
|
||||
OMINOUS_TRIAL_KEY,
|
||||
ORANGE_DYE("INK_SACK:14"),
|
||||
ORANGE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:1"),
|
||||
OXIDIZED_COPPER("STONE"),
|
||||
PINK_DYE("INK_SACK:9"),
|
||||
PINK_STAINED_GLASS_PANE("STAINED_GLASS_PANE:6"),
|
||||
PLAYER_HEAD("SKULL_ITEM:3"),
|
||||
PRISMARINE_SHARD("RAW_FISH"),
|
||||
POINTED_DRIPSTONE("STONE"),
|
||||
POWDER_SNOW_BUCKET("BUCKET"),
|
||||
PUFFERFISH("RAW_FISH:3"),
|
||||
PURPLE_DYE("INK_SACK:5"),
|
||||
PURPLE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:10"),
|
||||
REDSTONE_TORCH("REDSTONE_TORCH_ON"),
|
||||
RED_STAINED_GLASS_PANE("STAINED_GLASS_PANE:14"),
|
||||
REPEATER("DIODE"),
|
||||
ROSE_RED("INK_SACK:1", "RED_DYE"),
|
||||
SCUTE("BOWL"),
|
||||
SCULK("STONE"),
|
||||
SCULK_SENSOR("STONE"),
|
||||
SCULK_SHRIEKER("STONE"),
|
||||
SCULK_CATALYST("STONE"),
|
||||
SCULK_VEIN("STONE"),
|
||||
SIGN("SIGN", "OAK_SIGN"),
|
||||
SNOWBALL("SNOW_BALL"),
|
||||
SOUL_CAMPFIRE("CAMPFIRE", "TORCH"),
|
||||
SOUL_LANTERN("LANTERN", "TORCH"),
|
||||
SPIDER_EYE,
|
||||
SPLASH_POTION("POTION"),
|
||||
SPORE_BLOSSOM("STONE"),
|
||||
SUNFLOWER("DOUBLE_PLANT"),
|
||||
TOTEM_OF_UNDYING("TOTEM"),
|
||||
TRIAL_KEY,
|
||||
TRIAL_SPAWNER,
|
||||
TURTLE_HELMET("LEATHER_HELMET"),
|
||||
VAULT,
|
||||
WARPED_FUNGUS("BROWN_MUSHROOM"),
|
||||
WEATHERED_COPPER("STONE"),
|
||||
WHEAT_SEEDS("SEEDS"),
|
||||
WHITE_DYE("INK_SACK:15"),
|
||||
WHITE_STAINED_GLASS_PANE("STAINED_GLASS_PANE"),
|
||||
WIND_CHARGE,
|
||||
WITHER_SKELETON_SKULL("SKULL_ITEM:1"),
|
||||
WRITABLE_BOOK("BOOK_AND_QUILL"),
|
||||
YELLOW_DYE("INK_SACK:11"),
|
||||
YELLOW_STAINED_GLASS_PANE("STAINED_GLASS_PANE:4"),
|
||||
|
||||
BARRIER("INK_SACK:8"), BIRCH_BOAT("BOAT_BIRCH"), BLACK_DYE("INK_SACK"),
|
||||
BLACK_STAINED_GLASS_PANE("STAINED_GLASS_PANE:15"), BLUE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:11"),
|
||||
BONE_MEAL("INK_SACK:15"), BREEZE_ROD, BROWN_DYE("INK_SACK:3"), BROWN_STAINED_GLASS_PANE("STAINED_GLASS_PANE:12"),
|
||||
CACTUS_GREEN("INK_SACK:2", "GREEN_DYE"), CAMPFIRE("TORCH"), CAULDRON("CAULDRON_ITEM"), CHERRY_LEAVES, CHERRY_LOG,
|
||||
CHERRY_WOOD, COBWEB, COMPARATOR("REDSTONE_COMPARATOR"), COMPOSTER("COMPOSTER"), CONDUIT("CLAY_BALL"),
|
||||
COPPER_BLOCK("STONE"), CRIMSON_FUNGUS("MUSHROOM"), CRYING_OBSIDIAN("OBSIDIAN"), CYAN_CANDLE("STONE"),
|
||||
CYAN_DYE("INK_SACK:6"), CYAN_STAINED_GLASS_PANE("STAINED_GLASS_PANE:9"), DANDELION("FLOWER", "DANDELION"),
|
||||
DRAGON_HEAD("SKULL_ITEM:5"), DRIPSTONE_BLOCK("STONE"), EXPERIENCE_BOTTLE("EXP_BOTTLE"),
|
||||
ENCHANTING_TABLE("ENCHANTMENT_TABLE"), END_ROD, FIRE_CHARGE("FIREBALL"), FIREWORK_ROCKET("FIREWORK_CHARGE"),
|
||||
FIREWORK_STAR("FIREWORK_CHARGE"), GUSTER_POTTERY_SHERD, GLOW_INK_SAC("INK_SACK:8"), GRAY_DYE("INK_SACK:8"),
|
||||
GRAY_STAINED_GLASS_PANE("STAINED_GLASS_PANE:7"), GREEN_STAINED_GLASS_PANE("STAINED_GLASS_PANE:13"),
|
||||
GUNPOWDER("SULPHUR"), HORN_CORAL("ROSE_RED:8"), HONEYCOMB("HONEYCOMB", "POTION"),
|
||||
HONEY_BOTTLE("HONEY_BOTTLE", "POTION"), INK_SAC("INK_SACK"), LANTERN("TORCH"), LAPIS_LAZULI("INK_SACK:4"),
|
||||
LIGHT("STONE"), LIGHTNING_ROD("STONE"), LIGHT_BLUE_DYE("INK_SACK:12"),
|
||||
LIGHT_BLUE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:3"), LIGHT_GRAY_DYE("INK_SACK:7"),
|
||||
LIGHT_GRAY_STAINED_GLASS_PANE("STAINED_GLASS_PANE:8"), LIME_DYE("INK_SACK:10"),
|
||||
LIME_STAINED_GLASS_PANE("STAINED_GLASS_PANE:5"), MAGENTA_DYE("INK_SACK:13"),
|
||||
MAGENTA_STAINED_GLASS_PANE("STAINED_GLASS_PANE:2"), MAGMA_BLOCK("MAGMA", "MAGMA_CREAM"), MAP("EMPTY_MAP"), MACE,
|
||||
MUSHROOM_STEW("MUSHROOM_SOUP"), MUSIC_DISC_CAT("GREEN_RECORD"), MUSIC_DISC_BLOCKS("RECORD_3"),
|
||||
MUSIC_DISC_FAR("RECORD_5"), MUSIC_DISC_STRAD("RECORD_9"), OAK_BOAT("BOAT"), OMINOUS_BOTTLE, OMINOUS_TRIAL_KEY,
|
||||
ORANGE_DYE("INK_SACK:14"), ORANGE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:1"), OXIDIZED_COPPER("STONE"),
|
||||
PINK_DYE("INK_SACK:9"), PINK_STAINED_GLASS_PANE("STAINED_GLASS_PANE:6"), PLAYER_HEAD("SKULL_ITEM:3"),
|
||||
PRISMARINE_SHARD("RAW_FISH"), POINTED_DRIPSTONE("STONE"), POWDER_SNOW_BUCKET("BUCKET"), PUFFERFISH("RAW_FISH:3"),
|
||||
PURPLE_DYE("INK_SACK:5"), PURPLE_STAINED_GLASS_PANE("STAINED_GLASS_PANE:10"), REDSTONE_TORCH("REDSTONE_TORCH_ON"),
|
||||
RED_STAINED_GLASS_PANE("STAINED_GLASS_PANE:14"), REPEATER("DIODE"), ROSE_RED("INK_SACK:1", "RED_DYE"),
|
||||
SCUTE("BOWL"), SCULK("STONE"), SCULK_SENSOR("STONE"), SCULK_SHRIEKER("STONE"), SCULK_CATALYST("STONE"),
|
||||
SCULK_VEIN("STONE"), SIGN("SIGN", "OAK_SIGN"), SNOWBALL("SNOW_BALL"), SOUL_CAMPFIRE("CAMPFIRE", "TORCH"),
|
||||
SOUL_LANTERN("LANTERN", "TORCH"), SPIDER_EYE, SPLASH_POTION("POTION"), SPORE_BLOSSOM("STONE"),
|
||||
SUNFLOWER("DOUBLE_PLANT"), TOTEM_OF_UNDYING("TOTEM"), TRIAL_KEY, TRIAL_SPAWNER, TURTLE_HELMET("LEATHER_HELMET"),
|
||||
VAULT, WARPED_FUNGUS("BROWN_MUSHROOM"), WEATHERED_COPPER("STONE"), WHEAT_SEEDS("SEEDS"), WHITE_DYE("INK_SACK:15"),
|
||||
WHITE_STAINED_GLASS_PANE("STAINED_GLASS_PANE"), WIND_CHARGE, WITHER_SKELETON_SKULL("SKULL_ITEM:1"),
|
||||
WRITABLE_BOOK("BOOK_AND_QUILL"), YELLOW_DYE("INK_SACK:11"), YELLOW_STAINED_GLASS_PANE("STAINED_GLASS_PANE:4"),
|
||||
ZOMBIE_HEAD("SKULL_ITEM:2");
|
||||
|
||||
private Material material = Material.STONE;
|
||||
private int durability = 0;
|
||||
|
||||
CompatibleMaterial(@NotNull String... aliases) {
|
||||
|
||||
Material material = Material.matchMaterial(this.toString());
|
||||
if (material != null) {
|
||||
|
||||
this.material = material;
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (String alias : aliases) {
|
||||
|
||||
// Look for a legacy material & damage value
|
||||
if (alias.contains(":")) {
|
||||
|
||||
String[] aliasData = alias.split(":");
|
||||
durability = Integer.parseInt(aliasData[1]);
|
||||
material = Material.matchMaterial(aliasData[0]);
|
||||
|
||||
}
|
||||
|
||||
// Look for a 1.13+ material
|
||||
else {
|
||||
|
||||
material = Material.matchMaterial(alias);
|
||||
|
||||
}
|
||||
|
||||
if (material != null) {
|
||||
|
||||
this.material = material;
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this CompatibleMaterial's compatible Material
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Material getMaterial() {
|
||||
|
||||
return material;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this CompatibleMaterial's durability
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int getDurability() {
|
||||
|
||||
return durability;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns a new ItemStack
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public ItemStack getItem() {
|
||||
|
||||
return getItem(1);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns a new ItemStack.
|
||||
*
|
||||
* @return A new ItemStack with the specified quantity.
|
||||
*/
|
||||
public ItemStack getItem(int quantity) {
|
||||
|
||||
if (CosmeticsOG.serverVersion >= 13) {
|
||||
// For versions 1.13 and above, pass material, quantity, and default damage (e.g., 0).
|
||||
|
||||
// For versions 1.13 and above, pass material, quantity, and default damage
|
||||
// (e.g., 0).
|
||||
return ItemUtil.createItem(material, quantity, 0);
|
||||
|
||||
} else {
|
||||
|
||||
// For versions below 1.13, pass material, quantity, and durability (as short).
|
||||
return ItemUtil.createItem(material, quantity, (short) durability);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the CompatibleMaterial that matches this name, or fallback if none are found
|
||||
* Get the CompatibleMaterial that matches this name, or fallback if none are
|
||||
* found
|
||||
*
|
||||
* @param name
|
||||
* @param fallback
|
||||
* @return
|
||||
*/
|
||||
public static CompatibleMaterial fromName(String name, CompatibleMaterial fallback) {
|
||||
|
||||
try {
|
||||
|
||||
return CompatibleMaterial.valueOf(name);
|
||||
|
||||
} catch (IllegalArgumentException error) {
|
||||
|
||||
return fallback;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,44 +5,67 @@ import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public enum CompatibleSound {
|
||||
|
||||
ENTITY_VILLAGER_NO("VILLAGER_NO");
|
||||
|
||||
private final Sound sound;
|
||||
|
||||
CompatibleSound(String... aliases) {
|
||||
|
||||
sound = getCompatibleSound(toString(), aliases);
|
||||
|
||||
}
|
||||
|
||||
public void play(Player player, float volume, float pitch) {
|
||||
|
||||
if (sound == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
player.playSound(player.getLocation(), sound, volume, pitch);
|
||||
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Sound getCompatibleSound(String name, String[] aliases) {
|
||||
|
||||
Sound sound = getSound(name);
|
||||
if (sound != null) {
|
||||
|
||||
return sound;
|
||||
|
||||
}
|
||||
|
||||
for (String alias : aliases) {
|
||||
|
||||
Sound soundAlias = getSound(alias);
|
||||
if (alias != null) {
|
||||
|
||||
return soundAlias;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Sound getSound(String name) {
|
||||
|
||||
try {
|
||||
|
||||
return Sound.valueOf(name);
|
||||
|
||||
} catch (Exception ignored) {
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -38,6 +38,7 @@ public class CustomConfig {
|
||||
} else if (logOutput) {
|
||||
|
||||
Utils.logToConsole("Loading " + path + File.separator + fileName);
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -46,9 +47,10 @@ public class CustomConfig {
|
||||
|
||||
} catch (Exception error) {
|
||||
|
||||
Utils.logToConsole("There was an error loading " + name + ", error: "
|
||||
+ error.getClass().getSimpleName());
|
||||
Utils.logToConsole("There was an error loading " + name + ", error: " + error.getClass().getSimpleName());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public CustomConfig(final CosmeticsOG core, final String path, File file, boolean logOutput) {
|
||||
@@ -67,9 +69,10 @@ public class CustomConfig {
|
||||
|
||||
} catch (Exception error) {
|
||||
|
||||
Utils.logToConsole("There was an error loading " + name + ", error: "
|
||||
+ error.getClass().getSimpleName());
|
||||
Utils.logToConsole("There was an error loading " + name + ", error: " + error.getClass().getSimpleName());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,7 +87,9 @@ public class CustomConfig {
|
||||
} catch (Exception error) {
|
||||
|
||||
Utils.logToConsole("There was an error saving the config file: " + error.getMessage());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -98,51 +103,61 @@ public class CustomConfig {
|
||||
|
||||
} catch (Exception error) {
|
||||
|
||||
Utils.logToConsole("There was an error loading " + name + ", error: "
|
||||
+ error.getClass().getSimpleName());
|
||||
Utils.logToConsole("There was an error loading " + name + ", error: " + error.getClass().getSimpleName());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to delete this Configuration File.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean delete() {
|
||||
|
||||
return file.delete();
|
||||
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
|
||||
return fileName;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of this file.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getName() {
|
||||
|
||||
return name;
|
||||
|
||||
}
|
||||
|
||||
public void set(String path, Object value) {
|
||||
|
||||
config.set(path, value);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this CustomConfig configuration file.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public FileConfiguration getConfig() {
|
||||
|
||||
return config;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a file.
|
||||
* will try to load from an existing file first before creating a blank file.
|
||||
* Creates a file. will try to load from an existing file first before creating
|
||||
* a blank file.
|
||||
*
|
||||
* @param logOutput
|
||||
* @return
|
||||
*/
|
||||
@@ -162,6 +177,7 @@ public class CustomConfig {
|
||||
|
||||
Utils.logToConsole("ERROR: Failed to copy resource: " + core.getResource(fileName) + "into file: "
|
||||
+ file.getAbsolutePath());
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -175,15 +191,21 @@ public class CustomConfig {
|
||||
} catch (IOException error) {
|
||||
|
||||
Utils.logToConsole("ERROR: Failed to create file: " + file.getAbsolutePath());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (logOutput) {
|
||||
|
||||
Utils.logToConsole("Creating " + path + File.separator + fileName);
|
||||
|
||||
}
|
||||
|
||||
return file;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,18 +19,21 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Check to see if this database initialized successfully
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isEnabled();
|
||||
|
||||
/**
|
||||
* Get this databases last exception
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Exception getException();
|
||||
|
||||
/**
|
||||
* Loads this menu and all its hats
|
||||
*
|
||||
* @param menuName
|
||||
* @return
|
||||
*/
|
||||
@@ -38,6 +41,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Loads and returns a MenuInventory linked to this alias
|
||||
*
|
||||
* @param alias
|
||||
* @return
|
||||
*/
|
||||
@@ -45,6 +49,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Gets the purchase menu
|
||||
*
|
||||
* @param playerState
|
||||
* @return
|
||||
*/
|
||||
@@ -52,18 +57,21 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Creates and inserts an empty menu into our database
|
||||
*
|
||||
* @param menuName
|
||||
*/
|
||||
public void createMenu(String menuName);
|
||||
|
||||
/**
|
||||
* Deletes a menu and all it's data
|
||||
*
|
||||
* @param menuName
|
||||
*/
|
||||
public void deleteMenu(String menuName);
|
||||
|
||||
/**
|
||||
* Check to see if this menu exists in our database
|
||||
*
|
||||
* @param menuName
|
||||
* @return
|
||||
*/
|
||||
@@ -71,6 +79,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Returns a list of menus that exist in our database
|
||||
*
|
||||
* @param forceUpdate Forces the menu cache to be updated
|
||||
* @return
|
||||
*/
|
||||
@@ -78,12 +87,14 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Gets all stored images on the database
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, BufferedImage> getImages(boolean forceUpdate);
|
||||
|
||||
/**
|
||||
* Gets a list of unique labels, duplicate labels are discarded
|
||||
*
|
||||
* @param forceUpdate
|
||||
* @return
|
||||
*/
|
||||
@@ -91,6 +102,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Gets a list of groups
|
||||
*
|
||||
* @param forceUpdate
|
||||
* @return
|
||||
*/
|
||||
@@ -98,6 +110,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Checks to see if this label has already been used in the database
|
||||
*
|
||||
* @param menuName
|
||||
* @param label
|
||||
* @return
|
||||
@@ -106,6 +119,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Loads a hat with the given label
|
||||
*
|
||||
* @param label
|
||||
* @return
|
||||
*/
|
||||
@@ -113,6 +127,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Inserts a new hat entry into the database
|
||||
*
|
||||
* @param menuName
|
||||
* @param slot
|
||||
*/
|
||||
@@ -120,6 +135,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Loads all data for this hat
|
||||
*
|
||||
* @param menuName
|
||||
* @param slot
|
||||
* @param hat
|
||||
@@ -128,6 +144,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Saves this hats modified values
|
||||
*
|
||||
* @param menuName
|
||||
* @param slot
|
||||
* @param hat
|
||||
@@ -136,6 +153,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Saves this nodes modified values
|
||||
*
|
||||
* @param menuName
|
||||
* @param nodeIndex
|
||||
* @param hat
|
||||
@@ -144,6 +162,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Creates a duplicate copy of this hat in a different slot
|
||||
*
|
||||
* @param menuName
|
||||
* @param currentSlot
|
||||
* @param newSlot
|
||||
@@ -152,18 +171,21 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Moves this hat and all data to a new menu
|
||||
*
|
||||
* @param hat
|
||||
* @param fromMenu Current menu the hat is inside of
|
||||
* @param toMenu Menu we're moving this hat to, leave as <b>NULL</b> if moving slots in the same menu
|
||||
* @param toMenu Menu we're moving this hat to, leave as <b>NULL</b> if moving
|
||||
* slots in the same menu
|
||||
* @param fromSlot Current slot the hat is in
|
||||
* @param toSlot New slot the hat will be moved to
|
||||
* @param toSlot New slot the hat will be moved to
|
||||
* @param swapping Swap this hat with the hat existing at the toSlot slot
|
||||
*/
|
||||
public void moveHat(
|
||||
Hat fromHat, Hat toHat, String fromMenu, String toMenu, int fromSlot, int toSlot, boolean swapping);
|
||||
public void moveHat(Hat fromHat, Hat toHat, String fromMenu, String toMenu, int fromSlot, int toSlot,
|
||||
boolean swapping);
|
||||
|
||||
/**
|
||||
* Deletes a hat from this menu
|
||||
*
|
||||
* @param menuName
|
||||
* @param slot
|
||||
*/
|
||||
@@ -171,6 +193,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Deletes a node from this menu
|
||||
*
|
||||
* @param menuName
|
||||
* @param slot
|
||||
*/
|
||||
@@ -178,6 +201,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Save this hats particle data to the menu
|
||||
*
|
||||
* @param menuName
|
||||
* @param hat
|
||||
*/
|
||||
@@ -185,6 +209,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Save this hats meta data to the menu
|
||||
*
|
||||
* @param menuName
|
||||
* @param hat
|
||||
* @param type
|
||||
@@ -193,6 +218,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Saves a menu's title
|
||||
*
|
||||
* @param menuName
|
||||
* @param title
|
||||
*/
|
||||
@@ -200,6 +226,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Save a menu's alias
|
||||
*
|
||||
* @param menuName
|
||||
* @param alias
|
||||
*/
|
||||
@@ -207,6 +234,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Saves a menu's size
|
||||
*
|
||||
* @param menuName
|
||||
* @param rows
|
||||
*/
|
||||
@@ -214,6 +242,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Saves the player's equipped hats
|
||||
*
|
||||
* @param id
|
||||
* @param hats
|
||||
*/
|
||||
@@ -221,6 +250,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Loads the player's equipped hats
|
||||
*
|
||||
* @param id
|
||||
* @param callback
|
||||
*/
|
||||
@@ -228,6 +258,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Saves the player's purchased hat
|
||||
*
|
||||
* @param id
|
||||
* @param hat
|
||||
*/
|
||||
@@ -235,6 +266,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Loads all hats the player has purchased
|
||||
*
|
||||
* @param id
|
||||
* @param callback
|
||||
*/
|
||||
@@ -242,6 +274,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Adds a new group to the database
|
||||
*
|
||||
* @param groupName
|
||||
* @param defaultMenu
|
||||
* @param weight
|
||||
@@ -250,12 +283,14 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Deletes a group from the database
|
||||
*
|
||||
* @param groupName
|
||||
*/
|
||||
public void deleteGroup(String groupName);
|
||||
|
||||
/**
|
||||
* Edits an existing group
|
||||
*
|
||||
* @param groupName
|
||||
* @param defaultMenu
|
||||
* @param weight
|
||||
@@ -264,6 +299,7 @@ public interface Database {
|
||||
|
||||
/***
|
||||
* Removes a custom type image from the database
|
||||
*
|
||||
* @param imageName
|
||||
* @return
|
||||
*/
|
||||
@@ -271,6 +307,7 @@ public interface Database {
|
||||
|
||||
/**
|
||||
* Handle label changes
|
||||
*
|
||||
* @param oldLabel
|
||||
* @param newLabel
|
||||
*/
|
||||
@@ -283,40 +320,53 @@ public interface Database {
|
||||
|
||||
@FunctionalInterface
|
||||
public interface DatabaseCallback {
|
||||
|
||||
public void execute(Object o);
|
||||
|
||||
}
|
||||
|
||||
public enum DataType {
|
||||
NONE(0),
|
||||
DESCRIPTION(1),
|
||||
PERMISSION_DESCRIPTION(2),
|
||||
ICON(3),
|
||||
TAGS(4),
|
||||
ITEMSTACK(5);
|
||||
|
||||
NONE(0), DESCRIPTION(1), PERMISSION_DESCRIPTION(2), ICON(3), TAGS(4), ITEMSTACK(5);
|
||||
|
||||
private static Map<Integer, DataType> dataID = new HashMap<Integer, DataType>();
|
||||
|
||||
static {
|
||||
|
||||
for (DataType type : values()) {
|
||||
|
||||
dataID.put(type.id, type);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final int id;
|
||||
|
||||
private DataType(final int id) {
|
||||
|
||||
this.id = id;
|
||||
|
||||
}
|
||||
|
||||
public int getID() {
|
||||
|
||||
return id;
|
||||
|
||||
}
|
||||
|
||||
public static DataType fromID(int id) {
|
||||
|
||||
if (dataID.containsKey(id)) {
|
||||
|
||||
return dataID.get(id);
|
||||
|
||||
}
|
||||
|
||||
return DataType.NONE;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,48 +7,66 @@ public class Group {
|
||||
private int weight;
|
||||
|
||||
public Group(final String name, String defaultMenu, int weight) {
|
||||
|
||||
this.name = name;
|
||||
this.defaultMenu = defaultMenu;
|
||||
this.weight = weight;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this groups name
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getName() {
|
||||
|
||||
return name;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the menu this group will open
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getDefaultMenu() {
|
||||
|
||||
return defaultMenu;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the menu this group will open
|
||||
*
|
||||
* @param defaultMenu
|
||||
*/
|
||||
public void setDefaultMenu(String defaultMenu) {
|
||||
|
||||
this.defaultMenu = defaultMenu;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this groups importance
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int getWeight() {
|
||||
|
||||
return weight;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this groups importance
|
||||
*
|
||||
* @param weight
|
||||
*/
|
||||
public void setWeight(int weight) {
|
||||
|
||||
this.weight = weight;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,44 +8,62 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public enum DatabaseType {
|
||||
YAML("yml, yaml"),
|
||||
MYSQL("mysql", "MySQL");
|
||||
|
||||
YAML("yml, yaml"), MYSQL("mysql", "MySQL");
|
||||
|
||||
private List<String> aliases;
|
||||
|
||||
private DatabaseType(String... aliases) {
|
||||
|
||||
this.aliases = Arrays.asList(aliases);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Database object of this type
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Database getDatabase(CosmeticsOG core) {
|
||||
|
||||
switch (this) {
|
||||
|
||||
case MYSQL:
|
||||
return new MySQLDatabase(core);
|
||||
default:
|
||||
return new YamlDatabase(core);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the DatabaseType that uses this alias, or YAML if none are found
|
||||
*
|
||||
* @param alias
|
||||
* @return
|
||||
*/
|
||||
public static DatabaseType fromAlias(String alias) {
|
||||
|
||||
for (DatabaseType type : values()) {
|
||||
|
||||
if (type.aliases.contains(alias.toLowerCase())) {
|
||||
|
||||
return type;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return YAML;
|
||||
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface DatabaseConnectionCallback {
|
||||
|
||||
public void onTimeout(Exception e);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -30,7 +30,9 @@ public class MySQLHelper {
|
||||
private int menuTableVersion = 1;
|
||||
|
||||
public MySQLHelper(final MySQLDatabase database) {
|
||||
|
||||
this.database = database;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -39,9 +41,13 @@ public class MySQLHelper {
|
||||
* @throws SQLException
|
||||
*/
|
||||
public void initDatabase(CosmeticsOG core) throws SQLException {
|
||||
|
||||
database.async(() -> {
|
||||
|
||||
database.connect((connection) -> {
|
||||
|
||||
try (Statement initStatement = connection.createStatement()) {
|
||||
|
||||
// Version Table
|
||||
String versionTable = "CREATE TABLE IF NOT EXISTS " + TableInfo.VERSION.getFormat() + "("
|
||||
+ "type VARCHAR(32) PRIMARY KEY," + "version DECIMAL(4,2)" + ")";
|
||||
@@ -83,245 +89,235 @@ public class MySQLHelper {
|
||||
|
||||
// Execute batch
|
||||
initStatement.executeBatch();
|
||||
|
||||
}
|
||||
|
||||
// Insert our versions
|
||||
String versionQuery = "INSERT IGNORE INTO " + TableInfo.VERSION.getFormat() + " VALUES (?,?)";
|
||||
try (PreparedStatement verStatement = connection.prepareStatement(versionQuery)) {
|
||||
|
||||
for (TableInfo table : TableInfo.values()) {
|
||||
|
||||
verStatement.setString(1, table.getName());
|
||||
verStatement.setDouble(2, table.getVersion());
|
||||
verStatement.addBatch();
|
||||
|
||||
}
|
||||
|
||||
verStatement.executeBatch();
|
||||
|
||||
}
|
||||
|
||||
// Try to add our included custom types to the database
|
||||
if (SettingsManager.LOAD_INCLUDED_CUSTOM_TYPES.getBoolean()) {
|
||||
|
||||
String imageInsertQuery = "INSERT IGNORE INTO " + TableInfo.IMAGES.getFormat() + " VALUES(?,?)";
|
||||
try (PreparedStatement imageInsertStatement = connection.prepareStatement(imageInsertQuery)) {
|
||||
|
||||
InputStream vampireWingsStream = core.getResource("types/vampire_wings.png");
|
||||
if (vampireWingsStream != null) {
|
||||
|
||||
try {
|
||||
|
||||
InputStream vampireStream = getTrimmedStream(vampireWingsStream);
|
||||
imageInsertStatement.setString(1, "vampire_wings");
|
||||
imageInsertStatement.setBlob(2, vampireStream);
|
||||
imageInsertStatement.addBatch();
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
InputStream butterflyWingsStream = core.getResource("types/butterfly_wings_colorable.png");
|
||||
if (butterflyWingsStream != null) {
|
||||
|
||||
try {
|
||||
|
||||
InputStream butterflyStream = getTrimmedStream(butterflyWingsStream);
|
||||
imageInsertStatement.setString(1, "butterfly_wings_colorable");
|
||||
imageInsertStatement.setBlob(2, butterflyStream);
|
||||
imageInsertStatement.addBatch();
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
imageInsertStatement.executeBatch();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (SettingsManager.LOAD_INCLUDED_MENUS.getBoolean()) {
|
||||
String menuQuery =
|
||||
"SELECT COUNT(*) AS count FROM " + TableInfo.MENUS.getFormat() + " WHERE name = ?";
|
||||
|
||||
String menuQuery = "SELECT COUNT(*) AS count FROM " + TableInfo.MENUS.getFormat()
|
||||
+ " WHERE name = ?";
|
||||
try (PreparedStatement menuStatement = connection.prepareStatement(menuQuery)) {
|
||||
|
||||
menuStatement.setString(1, "particles");
|
||||
ResultSet set = menuStatement.executeQuery();
|
||||
|
||||
while (set.next()) {
|
||||
|
||||
if (set.getInt("count") == 0) {
|
||||
|
||||
File tempFolder = new File(core.getDataFolder() + File.separator + "temp");
|
||||
if (!tempFolder.exists()) {
|
||||
|
||||
tempFolder.mkdirs();
|
||||
|
||||
}
|
||||
|
||||
InputStream particleStream = ResourceUtil.getMostCompatibleParticlesMenu();
|
||||
if (particleStream != null) {
|
||||
|
||||
File particlesFile = new File(core.getDataFolder() + File.separator + "temp"
|
||||
+ File.separator + "particles.yml");
|
||||
try {
|
||||
|
||||
ResourceUtil.copyFile(particleStream, particlesFile);
|
||||
CustomConfig menuConfig =
|
||||
new CustomConfig(core, "temp", "particles.yml", false);
|
||||
CustomConfig menuConfig = new CustomConfig(core, "temp", "particles.yml",
|
||||
false);
|
||||
|
||||
if (menuConfig != null) {
|
||||
|
||||
database.importMenu(menuConfig, connection);
|
||||
menuConfig.delete();
|
||||
tempFolder.delete();
|
||||
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public String getItemTableQuery(String menuName) {
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.ITEMS.format(menuName) + " ("
|
||||
+ "slot TINYINT PRIMARY KEY,"
|
||||
+ "ver SMALLINT NOT NULL DEFAULT " + menuTableVersion + ","
|
||||
+ "id VARCHAR(64),"
|
||||
+ "durability INT,"
|
||||
+ "title VARCHAR(128),"
|
||||
+ "permission VARCHAR(64),"
|
||||
+ "permission_denied VARCHAR(128),"
|
||||
+ "type TINYINT,"
|
||||
+ "custom_type VARCHAR(64),"
|
||||
+ "location TINYINT,"
|
||||
+ "mode TINYINT,"
|
||||
+ "animation TINYINT,"
|
||||
+ "tracking TINYINT,"
|
||||
+ "label VARCHAR(128),"
|
||||
+ "equip_message VARCHAR(128),"
|
||||
+ "offset_x DECIMAL(3,1),"
|
||||
+ "offset_y DECIMAL(3,1),"
|
||||
+ "offset_z DECIMAL(3,1),"
|
||||
+ "random_offset_x DECIMAL(3,1),"
|
||||
+ "random_offset_y DECIMAL(3,1),"
|
||||
+ "random_offset_z DECIMAL(3,1),"
|
||||
+ "angle_x DECIMAL(4,1),"
|
||||
+ "angle_y DECIMAL(4,1),"
|
||||
+ "angle_z DECIMAL(4,1),"
|
||||
+ "update_frequency TINYINT DEFAULT 2,"
|
||||
+ "icon_update_frequency TINYINT DEFAULT 2,"
|
||||
+ "speed TINYINT,"
|
||||
+ "count TINYINT,"
|
||||
+ "price INT,"
|
||||
+ "sound VARCHAR(64),"
|
||||
+ "volume DECIMAL(2,1) DEFAULT 1.0,"
|
||||
+ "pitch DECIMAL(2,1) DEFAULT 1.0,"
|
||||
+ "left_action TINYINT,"
|
||||
+ "right_action TINYINT DEFAULT 12," // Mimic Left Click
|
||||
+ "left_argument VARCHAR(128),"
|
||||
+ "right_argument VARCHAR(128),"
|
||||
+ "duration MEDIUMINT DEFAULT 200,"
|
||||
+ "display_mode TINYINT,"
|
||||
+ "scale DECIMAL(3,1) DEFAULT 1.0,"
|
||||
+ "potion VARCHAR(64),"
|
||||
+ "potion_strength TINYINT"
|
||||
+ ")";
|
||||
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.ITEMS.format(menuName) + " (" + "slot TINYINT PRIMARY KEY,"
|
||||
+ "ver SMALLINT NOT NULL DEFAULT " + menuTableVersion + "," + "id VARCHAR(64)," + "durability INT,"
|
||||
+ "title VARCHAR(128)," + "permission VARCHAR(64)," + "permission_denied VARCHAR(128),"
|
||||
+ "type TINYINT," + "custom_type VARCHAR(64)," + "location TINYINT," + "mode TINYINT,"
|
||||
+ "animation TINYINT," + "tracking TINYINT," + "label VARCHAR(128)," + "equip_message VARCHAR(128),"
|
||||
+ "offset_x DECIMAL(3,1)," + "offset_y DECIMAL(3,1)," + "offset_z DECIMAL(3,1),"
|
||||
+ "random_offset_x DECIMAL(3,1)," + "random_offset_y DECIMAL(3,1)," + "random_offset_z DECIMAL(3,1),"
|
||||
+ "angle_x DECIMAL(4,1)," + "angle_y DECIMAL(4,1)," + "angle_z DECIMAL(4,1),"
|
||||
+ "update_frequency TINYINT DEFAULT 2," + "icon_update_frequency TINYINT DEFAULT 2," + "speed TINYINT,"
|
||||
+ "count TINYINT," + "price INT," + "sound VARCHAR(64)," + "volume DECIMAL(2,1) DEFAULT 1.0,"
|
||||
+ "pitch DECIMAL(2,1) DEFAULT 1.0," + "left_action TINYINT," + "right_action TINYINT DEFAULT 12," // Mimic
|
||||
// Left
|
||||
// Click
|
||||
+ "left_argument VARCHAR(128)," + "right_argument VARCHAR(128)," + "duration MEDIUMINT DEFAULT 200,"
|
||||
+ "display_mode TINYINT," + "scale DECIMAL(3,1) DEFAULT 1.0," + "potion VARCHAR(64),"
|
||||
+ "potion_strength TINYINT" + ")";
|
||||
|
||||
}
|
||||
|
||||
public String getNodeTableQuery(String menuName) {
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.NODES.format(menuName) + " ("
|
||||
+ "slot TINYINT,"
|
||||
+ "node_index INT,"
|
||||
+ "ver SMALLINT,"
|
||||
+ "type TINYINT,"
|
||||
+ "custom_type VARCHAR(64),"
|
||||
+ "location TINYINT,"
|
||||
+ "mode TINYINT,"
|
||||
+ "animation TINYINT,"
|
||||
+ "tracking TINYINT,"
|
||||
+ "offset_x DECIMAL(3,1),"
|
||||
+ "offset_y DECIMAL(2,1),"
|
||||
+ "offset_z DECIMAL(3,1),"
|
||||
+ "random_offset_x DECIMAL(3,1),"
|
||||
+ "random_offset_y DECIMAL(3,1),"
|
||||
+ "random_offset_z DECIMAL(3,1),"
|
||||
+ "angle_x DECIMAL(4,1),"
|
||||
+ "angle_y DECIMAL(4,1),"
|
||||
+ "angle_z DECIMAL(4,1),"
|
||||
+ "update_frequency TINYINT,"
|
||||
+ "speed TINYINT,"
|
||||
+ "count TINYINT,"
|
||||
+ "scale DECIMAL(3,1),"
|
||||
+ "PRIMARY KEY(slot, node_index),"
|
||||
+ "FOREIGN KEY(slot) REFERENCES " + Table.ITEMS.format(menuName)
|
||||
+ "(slot) ON DELETE CASCADE ON UPDATE CASCADE"
|
||||
+ ")";
|
||||
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.NODES.format(menuName) + " (" + "slot TINYINT," + "node_index INT,"
|
||||
+ "ver SMALLINT," + "type TINYINT," + "custom_type VARCHAR(64)," + "location TINYINT," + "mode TINYINT,"
|
||||
+ "animation TINYINT," + "tracking TINYINT," + "offset_x DECIMAL(3,1)," + "offset_y DECIMAL(2,1),"
|
||||
+ "offset_z DECIMAL(3,1)," + "random_offset_x DECIMAL(3,1)," + "random_offset_y DECIMAL(3,1),"
|
||||
+ "random_offset_z DECIMAL(3,1)," + "angle_x DECIMAL(4,1)," + "angle_y DECIMAL(4,1),"
|
||||
+ "angle_z DECIMAL(4,1)," + "update_frequency TINYINT," + "speed TINYINT," + "count TINYINT,"
|
||||
+ "scale DECIMAL(3,1)," + "PRIMARY KEY(slot, node_index)," + "FOREIGN KEY(slot) REFERENCES "
|
||||
+ Table.ITEMS.format(menuName) + "(slot) ON DELETE CASCADE ON UPDATE CASCADE" + ")";
|
||||
|
||||
}
|
||||
|
||||
public String getMetaTableQuery(String menuName) {
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.META.format(menuName) + " ("
|
||||
+ "slot TINYINT,"
|
||||
+ "type TINYINT,"
|
||||
+ "line TINYINT,"
|
||||
+ "line_ex TINYINT,"
|
||||
+ "node_index INT,"
|
||||
+ "value VARCHAR(256),"
|
||||
+ "PRIMARY KEY(slot, type, line, line_ex, node_index),"
|
||||
+ "FOREIGN KEY(slot) REFERENCES " + Table.ITEMS.format(menuName)
|
||||
+ "(slot) ON DELETE CASCADE ON UPDATE CASCADE"
|
||||
+ ")";
|
||||
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.META.format(menuName) + " (" + "slot TINYINT," + "type TINYINT,"
|
||||
+ "line TINYINT," + "line_ex TINYINT," + "node_index INT," + "value VARCHAR(256),"
|
||||
+ "PRIMARY KEY(slot, type, line, line_ex, node_index)," + "FOREIGN KEY(slot) REFERENCES "
|
||||
+ Table.ITEMS.format(menuName) + "(slot) ON DELETE CASCADE ON UPDATE CASCADE" + ")";
|
||||
|
||||
}
|
||||
|
||||
public String getParticleTableQuery(String menuName) {
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.PARTICLES.format(menuName) + " ("
|
||||
+ "slot TINYINT,"
|
||||
+ "particle_index TINYINT,"
|
||||
+ "node_index INT,"
|
||||
+ "particle_id TINYINT,"
|
||||
|
||||
return "CREATE TABLE IF NOT EXISTS " + Table.PARTICLES.format(menuName) + " (" + "slot TINYINT,"
|
||||
+ "particle_index TINYINT," + "node_index INT," + "particle_id TINYINT,"
|
||||
+ "color INT NOT NULL DEFAULT 16711680," // Red
|
||||
+ "random BOOLEAN,"
|
||||
+ "scale DECIMAL(4,2),"
|
||||
+ "item_data VARCHAR(64),"
|
||||
+ "block_data VARCHAR(64),"
|
||||
+ "duration SMALLINT,"
|
||||
+ "gravity BOOLEAN,"
|
||||
+ "velocity_x DECIMAL(3,1),"
|
||||
+ "velocity_y DECIMAL(3,1),"
|
||||
+ "velocity_z DECIMAL(3,1),"
|
||||
+ "PRIMARY KEY(slot, particle_index, node_index),"
|
||||
+ "random BOOLEAN," + "scale DECIMAL(4,2)," + "item_data VARCHAR(64)," + "block_data VARCHAR(64),"
|
||||
+ "duration SMALLINT," + "gravity BOOLEAN," + "velocity_x DECIMAL(3,1)," + "velocity_y DECIMAL(3,1),"
|
||||
+ "velocity_z DECIMAL(3,1)," + "PRIMARY KEY(slot, particle_index, node_index),"
|
||||
+ "FOREIGN KEY(slot) REFERENCES " + Table.ITEMS.format(menuName)
|
||||
+ "(slot) ON DELETE CASCADE ON UPDATE CASCADE"
|
||||
+ ")";
|
||||
+ "(slot) ON DELETE CASCADE ON UPDATE CASCADE" + ")";
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a valid insert SQL statement based on the hats modified properties
|
||||
*
|
||||
* @param menuName
|
||||
* @param hat
|
||||
* @param particleIndex
|
||||
* @return
|
||||
*/
|
||||
public String getParticleInsertQuery(String menuName, Hat hat, int particleIndex) {
|
||||
|
||||
StringBuilder propertyBuilder = new StringBuilder();
|
||||
StringBuilder valueBuilder = new StringBuilder();
|
||||
StringBuilder updateBuilder = new StringBuilder();
|
||||
|
||||
propertyBuilder.append("slot,particle_index,node_index");
|
||||
valueBuilder
|
||||
.append(hat.getSlot())
|
||||
.append(",")
|
||||
.append(particleIndex)
|
||||
.append(",")
|
||||
.append(hat.getIndex());
|
||||
valueBuilder.append(hat.getSlot()).append(",").append(particleIndex).append(",").append(hat.getIndex());
|
||||
|
||||
String insertQuery =
|
||||
"INSERT INTO " + Table.PARTICLES.format(menuName) + " ({1}) VALUES ({2}) ON DUPLICATE KEY UPDATE {3}";
|
||||
String insertQuery = "INSERT INTO " + Table.PARTICLES.format(menuName)
|
||||
+ " ({1}) VALUES ({2}) ON DUPLICATE KEY UPDATE {3}";
|
||||
|
||||
Map<String, String> editedProperties =
|
||||
hat.getParticleData(particleIndex).getPropertyChanges();
|
||||
Map<String, String> editedProperties = hat.getParticleData(particleIndex).getPropertyChanges();
|
||||
for (Entry<String, String> value : editedProperties.entrySet()) {
|
||||
|
||||
propertyBuilder.append(",").append(value.getKey());
|
||||
valueBuilder.append(",").append(value.getValue());
|
||||
updateBuilder.append(",").append(value.getKey()).append("=").append(value.getValue());
|
||||
|
||||
}
|
||||
|
||||
String properties = propertyBuilder.toString();
|
||||
String values = valueBuilder.toString();
|
||||
String updates = "";
|
||||
if (updateBuilder.length() > 0) {
|
||||
|
||||
updates = updateBuilder.deleteCharAt(0).toString();
|
||||
|
||||
}
|
||||
|
||||
return insertQuery.replace("{1}", properties).replace("{2}", values).replace("{3}", updates);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a valid insert SQL statement based on the hats modified properties
|
||||
*
|
||||
* @param menuName
|
||||
* @param hat
|
||||
* @param slot
|
||||
@@ -329,6 +325,7 @@ public class MySQLHelper {
|
||||
* @return
|
||||
*/
|
||||
public String getNodeInsertQuery(String menuName, Hat hat, int slot, int index) {
|
||||
|
||||
StringBuilder propertyBuilder = new StringBuilder();
|
||||
StringBuilder valueBuilder = new StringBuilder();
|
||||
StringBuilder updateBuilder = new StringBuilder();
|
||||
@@ -337,128 +334,65 @@ public class MySQLHelper {
|
||||
valueBuilder.append(slot).append(",").append(index);
|
||||
updateBuilder.append("node_index=").append(index);
|
||||
|
||||
String query =
|
||||
"INSERT INTO " + Table.NODES.format(menuName) + " ({1}) VALUES ({2}) ON DUPLICATE KEY UPDATE {3}";
|
||||
String query = "INSERT INTO " + Table.NODES.format(menuName)
|
||||
+ " ({1}) VALUES ({2}) ON DUPLICATE KEY UPDATE {3}";
|
||||
|
||||
Map<String, String> editedProperties = hat.getPropertyChanges();
|
||||
for (Entry<String, String> value : editedProperties.entrySet()) {
|
||||
|
||||
propertyBuilder.append(",").append(value.getKey());
|
||||
valueBuilder.append(",").append(value.getValue());
|
||||
updateBuilder.append(",").append(value.getKey()).append("=").append(value.getValue());
|
||||
|
||||
}
|
||||
|
||||
return query.replace("{1}", propertyBuilder.toString())
|
||||
.replace("{2}", valueBuilder.toString())
|
||||
.replace("{3}", updateBuilder.toString());
|
||||
return query.replace("{1}", propertyBuilder.toString()).replace("{2}", valueBuilder.toString()).replace("{3}",
|
||||
updateBuilder.toString());
|
||||
|
||||
}
|
||||
|
||||
public String getImportQuery(String menuName) {
|
||||
return "INSERT INTO " + Table.ITEMS.format(menuName) + " ("
|
||||
+ "slot,"
|
||||
+ "ver,"
|
||||
+ "id,"
|
||||
+ "durability,"
|
||||
+ "title,"
|
||||
+ "permission,"
|
||||
+ "permission_denied,"
|
||||
+ "type,"
|
||||
+ "custom_type,"
|
||||
+ "location,"
|
||||
+ "mode,"
|
||||
+ "animation,"
|
||||
+ "tracking,"
|
||||
+ "label,"
|
||||
+ "equip_message,"
|
||||
+ "offset_x,"
|
||||
+ "offset_y,"
|
||||
+ "offset_z,"
|
||||
+ "random_offset_x,"
|
||||
+ "random_offset_y,"
|
||||
+ "random_offset_z,"
|
||||
+ "angle_x,"
|
||||
+ "angle_y,"
|
||||
+ "angle_z,"
|
||||
+ "update_frequency,"
|
||||
+ "icon_update_frequency,"
|
||||
+ "speed,"
|
||||
+ "count,"
|
||||
+ "price,"
|
||||
+ "sound,"
|
||||
+ "volume,"
|
||||
+ "pitch,"
|
||||
+ "left_action,"
|
||||
+ "right_action,"
|
||||
+ "left_argument,"
|
||||
+ "right_argument,"
|
||||
+ "duration,"
|
||||
+ "display_mode,"
|
||||
+ "scale,"
|
||||
+ "potion,"
|
||||
+ "potion_strength"
|
||||
+ ") VALUES {1}";
|
||||
|
||||
return "INSERT INTO " + Table.ITEMS.format(menuName) + " (" + "slot," + "ver," + "id," + "durability,"
|
||||
+ "title," + "permission," + "permission_denied," + "type," + "custom_type," + "location," + "mode,"
|
||||
+ "animation," + "tracking," + "label," + "equip_message," + "offset_x," + "offset_y," + "offset_z,"
|
||||
+ "random_offset_x," + "random_offset_y," + "random_offset_z," + "angle_x," + "angle_y," + "angle_z,"
|
||||
+ "update_frequency," + "icon_update_frequency," + "speed," + "count," + "price," + "sound," + "volume,"
|
||||
+ "pitch," + "left_action," + "right_action," + "left_argument," + "right_argument," + "duration,"
|
||||
+ "display_mode," + "scale," + "potion," + "potion_strength" + ") VALUES {1}";
|
||||
|
||||
}
|
||||
|
||||
public String getParticleImportQuery(String menuName) {
|
||||
return "INSERT INTO " + Table.PARTICLES.format(menuName) + " ("
|
||||
+ "slot,"
|
||||
+ "particle_index,"
|
||||
+ "node_index,"
|
||||
+ "particle_id,"
|
||||
+ "color,"
|
||||
+ "random,"
|
||||
+ "scale,"
|
||||
+ "item_data,"
|
||||
+ "block_data,"
|
||||
+ "duration,"
|
||||
+ "gravity,"
|
||||
+ "velocity_x,"
|
||||
+ "velocity_y,"
|
||||
+ "velocity_z"
|
||||
+ ") VALUES {1}";
|
||||
|
||||
return "INSERT INTO " + Table.PARTICLES.format(menuName) + " (" + "slot," + "particle_index," + "node_index,"
|
||||
+ "particle_id," + "color," + "random," + "scale," + "item_data," + "block_data," + "duration,"
|
||||
+ "gravity," + "velocity_x," + "velocity_y," + "velocity_z" + ") VALUES {1}";
|
||||
|
||||
}
|
||||
|
||||
public String getMetaImportQuery(String menuName) {
|
||||
return "INSERT INTO " + Table.META.format(menuName) + " ("
|
||||
+ "slot,"
|
||||
+ "type,"
|
||||
+ "line,"
|
||||
+ "line_ex,"
|
||||
+ "node_index,"
|
||||
+ "value"
|
||||
+ ") VALUES {1}";
|
||||
|
||||
return "INSERT INTO " + Table.META.format(menuName) + " (" + "slot," + "type," + "line," + "line_ex,"
|
||||
+ "node_index," + "value" + ") VALUES {1}";
|
||||
|
||||
}
|
||||
|
||||
public String getNodeImportQuery(String menuName) {
|
||||
return "INSERT INTO " + Table.NODES.format(menuName) + " ("
|
||||
+ "slot,"
|
||||
+ "node_index,"
|
||||
+ "ver,"
|
||||
+ "type,"
|
||||
+ "custom_type,"
|
||||
+ "location,"
|
||||
+ "mode,"
|
||||
+ "animation,"
|
||||
+ "tracking,"
|
||||
+ "offset_x,"
|
||||
+ "offset_y,"
|
||||
+ "offset_z,"
|
||||
+ "random_offset_x,"
|
||||
+ "random_offset_y,"
|
||||
+ "random_offset_z,"
|
||||
+ "angle_x,"
|
||||
+ "angle_y,"
|
||||
+ "angle_z,"
|
||||
+ "update_frequency,"
|
||||
+ "speed,"
|
||||
+ "count,"
|
||||
+ "scale"
|
||||
+ ") VALUES {1}";
|
||||
|
||||
return "INSERT INTO " + Table.NODES.format(menuName) + " (" + "slot," + "node_index," + "ver," + "type,"
|
||||
+ "custom_type," + "location," + "mode," + "animation," + "tracking," + "offset_x," + "offset_y,"
|
||||
+ "offset_z," + "random_offset_x," + "random_offset_y," + "random_offset_z," + "angle_x," + "angle_y,"
|
||||
+ "angle_z," + "update_frequency," + "speed," + "count," + "scale" + ") VALUES {1}";
|
||||
|
||||
}
|
||||
|
||||
public void populatePurchaseMenu(Connection connection) throws SQLException {
|
||||
|
||||
String insertQuery = "INSERT INTO " + Table.ITEMS.format("purchase")
|
||||
+ " (slot,id,durability,title,left_action) VALUES (?,?,?,?,?)";
|
||||
try (PreparedStatement populateStatement = connection.prepareStatement(insertQuery)) {
|
||||
|
||||
// Purchase Item
|
||||
populateStatement.setInt(1, 13);
|
||||
populateStatement.setString(2, Material.STONE.toString());
|
||||
@@ -484,18 +418,24 @@ public class MySQLHelper {
|
||||
populateStatement.addBatch();
|
||||
|
||||
populateStatement.executeBatch();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new InputStream from an existing InputStream removing comments
|
||||
*
|
||||
* @param stream
|
||||
* @return
|
||||
*/
|
||||
private InputStream getTrimmedStream(InputStream stream) throws IOException {
|
||||
|
||||
BufferedImage image = ImageIO.read(stream);
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ImageIO.write(image, "png", baos);
|
||||
return new ByteArrayInputStream(baos.toByteArray());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -33,204 +33,285 @@ public class EditorMenuManager extends MenuManager {
|
||||
private float soundPitch;
|
||||
|
||||
public EditorMenuManager(CosmeticsOG core, Player owner) {
|
||||
|
||||
super(core, owner);
|
||||
|
||||
this.sound = SettingsManager.EDITOR_SOUND_ID.getSound();
|
||||
this.soundVolume = (float) SettingsManager.EDITOR_SOUND_VOLUME.getDouble();
|
||||
this.soundPitch = (float) SettingsManager.EDITOR_SOUND_PITCH.getDouble();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(InventoryClickEvent event, boolean inMenu) {
|
||||
|
||||
super.onClick(event, inMenu, getCurrentMenu());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() {
|
||||
|
||||
if (editorBaseMenu == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
getCurrentMenu().open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {
|
||||
|
||||
AbstractMenu menu = openMenus.peekLast();
|
||||
if (menu != null) {
|
||||
|
||||
menu.onTick(ticks);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSound(MenuClickResult result) {
|
||||
|
||||
if (SettingsManager.EDITOR_SOUND_ENABLED.getBoolean()) {
|
||||
|
||||
if (sound != null) {
|
||||
|
||||
float p = (float) MathUtil.clamp(soundPitch + (float) result.getModifier(), 0, 2);
|
||||
owner.playSound(owner.getLocation(), sound, soundVolume, p);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUnregister() {
|
||||
|
||||
return !openingMenu && ownerState.getMetaState() == MetaState.NONE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void willUnregister() {
|
||||
|
||||
Database database = core.getDatabase();
|
||||
MenuInventory menuInventory = editorBaseMenu.getMenuInventory();
|
||||
String menuName = menuInventory.getName();
|
||||
|
||||
for (Entry<Integer, Hat> hats : menuInventory.getHats().entrySet()) {
|
||||
|
||||
Hat hat = hats.getValue();
|
||||
if (hat.isModified()) {
|
||||
|
||||
database.saveHat(menuName, hats.getKey(), hat);
|
||||
hat.clearPropertyChanges();
|
||||
|
||||
}
|
||||
|
||||
if (hat.getNodeCount() > 0) {
|
||||
|
||||
for (Hat node : hat.getNodes()) {
|
||||
|
||||
if (node.isModified()) {
|
||||
|
||||
database.saveNode(menuName, node.getIndex(), node);
|
||||
node.clearPropertyChanges();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Forces every open menu to close and save changes
|
||||
for (AbstractMenu am : openMenus) {
|
||||
|
||||
am.onClose(true);
|
||||
|
||||
}
|
||||
|
||||
super.unregister();
|
||||
|
||||
}
|
||||
|
||||
public void setEditingMenu(MenuInventory inventory) {
|
||||
|
||||
editorBaseMenu = new EditorBaseMenu(core, this, owner, inventory);
|
||||
addMenu(editorBaseMenu);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the hat that will be edited
|
||||
*
|
||||
* @param hat
|
||||
*/
|
||||
public void setTargetHat(Hat hat) {
|
||||
|
||||
targetHat = hat;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current hat being edtied
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Hat getTargetHat() {
|
||||
|
||||
if (targetNode == null) {
|
||||
|
||||
return targetHat;
|
||||
|
||||
}
|
||||
|
||||
return targetNode;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the base hat being edited
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Hat getBaseHat() {
|
||||
|
||||
return targetHat;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the node hat that will be edited
|
||||
*
|
||||
* @param node
|
||||
*/
|
||||
public void setTargetNode(Hat node) {
|
||||
|
||||
targetNode = node;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current slot being edited
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int getTargetSlot() {
|
||||
|
||||
return targetSlot;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current inventory slot being edited
|
||||
*
|
||||
* @param slot
|
||||
*/
|
||||
public void setTargetSlot(int slot) {
|
||||
|
||||
targetSlot = slot;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current meta argument
|
||||
*
|
||||
* @param argument
|
||||
*/
|
||||
public void setMetaArgument(String argument) {
|
||||
|
||||
metaArgument = argument;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current meta argument
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getMetaArgument() {
|
||||
|
||||
return metaArgument;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the meta argumnent to ""
|
||||
*/
|
||||
public void resetMetaArgument() {
|
||||
|
||||
metaArgument = "";
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the menu being edited
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getMenuName() {
|
||||
|
||||
return editorBaseMenu.getMenuInventory().getName();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the list of open menus and opens the base editing menu
|
||||
*/
|
||||
public void returnToBaseMenu() {
|
||||
|
||||
while (openMenus.size() > 1) {
|
||||
|
||||
openMenus.pollLast().onClose(true);
|
||||
|
||||
}
|
||||
|
||||
setTargetHat(null);
|
||||
setTargetSlot(-1);
|
||||
|
||||
openMenus.getLast().open();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the EditorBaseMenu class that is currently being edited
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public EditorBaseMenu getEditingMenu() {
|
||||
|
||||
return editorBaseMenu;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the editor main menu
|
||||
*/
|
||||
public void openMainMenu() {
|
||||
|
||||
EditorMainMenu editorMainMenu = new EditorMainMenu(core, this, owner);
|
||||
addMenu(editorMainMenu);
|
||||
editorMainMenu.open();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the editor settings menu
|
||||
*/
|
||||
public void openSettingsMenu() {
|
||||
|
||||
EditorSettingsMenu editorSettingsMenu = new EditorSettingsMenu(core, this, owner, editorBaseMenu);
|
||||
addMenu(editorSettingsMenu);
|
||||
editorSettingsMenu.open();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,69 +12,83 @@ import java.util.regex.Pattern;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public enum MetaState {
|
||||
NONE,
|
||||
HAT_NAME,
|
||||
HAT_LABEL,
|
||||
HAT_COMMAND,
|
||||
HAT_DESCRIPTION,
|
||||
HAT_PERMISSION,
|
||||
HAT_PERMISSION_DESCRIPTION,
|
||||
HAT_PERMISSION_MESSAGE,
|
||||
HAT_EQUIP_MESSAGE,
|
||||
HAT_TAG,
|
||||
MENU_TITLE,
|
||||
MENU_ALIAS,
|
||||
NEW_MENU,
|
||||
BLOCK_SEARCH,
|
||||
NPC_MANAGE;
|
||||
|
||||
NONE, HAT_NAME, HAT_LABEL, HAT_COMMAND, HAT_DESCRIPTION, HAT_PERMISSION, HAT_PERMISSION_DESCRIPTION,
|
||||
HAT_PERMISSION_MESSAGE, HAT_EQUIP_MESSAGE, HAT_TAG, MENU_TITLE, MENU_ALIAS, NEW_MENU, BLOCK_SEARCH, NPC_MANAGE;
|
||||
|
||||
private final CosmeticsOG core = CosmeticsOG.instance;
|
||||
|
||||
/**
|
||||
* Get the name of this MetaState
|
||||
*
|
||||
* @return The name of this mode as defined in the current messages.yml file
|
||||
*/
|
||||
public String getUsage() {
|
||||
|
||||
final String key = "META_" + toString() + "_USAGE";
|
||||
try {
|
||||
|
||||
return Message.valueOf(key).getValue();
|
||||
|
||||
} catch (IllegalArgumentException e) {
|
||||
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the description of this MetaState
|
||||
* @return The description of this mode as defined in the current messages.yml file
|
||||
*
|
||||
* @return The description of this mode as defined in the current messages.yml
|
||||
* file
|
||||
*/
|
||||
public String getDescription() {
|
||||
|
||||
final String key = "META_" + toString() + "_DESCRIPTION";
|
||||
try {
|
||||
|
||||
return Message.valueOf(key).getValue();
|
||||
|
||||
} catch (IllegalArgumentException e) {
|
||||
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the suggested value for this MetaState
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getSuggestion() {
|
||||
|
||||
final String key = "META_" + toString() + "_SUGGESTION";
|
||||
try {
|
||||
|
||||
return Message.valueOf(key).getValue();
|
||||
|
||||
} catch (IllegalArgumentException e) {
|
||||
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onMetaSet(EditorMenuManager editorManager, Player player, List<String> args) {
|
||||
|
||||
// Stick all arguments together into one string
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String s : args) {
|
||||
|
||||
sb.append(' ').append(s);
|
||||
|
||||
}
|
||||
|
||||
sb.deleteCharAt(0);
|
||||
|
||||
String value = sb.toString();
|
||||
@@ -83,125 +97,145 @@ public enum MetaState {
|
||||
Hat targetHat = editorManager.getBaseHat();
|
||||
|
||||
/**
|
||||
* Solution for adding empty spaces:
|
||||
* Find any %_% value and replace all _'s inside with " "
|
||||
* Solution for adding empty spaces: Find any %_% value and replace all _'s
|
||||
* inside with " "
|
||||
*/
|
||||
Pattern pattern = StringUtil.getPattern("%(.*?)%");
|
||||
Matcher matcher = pattern.matcher(sb.toString());
|
||||
while (matcher.find()) {
|
||||
|
||||
value = value.replace(matcher.group(0), matcher.group(1).replace("_", " "));
|
||||
|
||||
}
|
||||
|
||||
switch (this) {
|
||||
|
||||
default:
|
||||
break;
|
||||
case MENU_TITLE:
|
||||
{
|
||||
String title = value.length() <= 40 ? value : value.substring(0, 40);
|
||||
editorManager.getEditingMenu().setTitle(title);
|
||||
editorManager.reopen();
|
||||
}
|
||||
case MENU_TITLE: {
|
||||
|
||||
String title = value.length() <= 40 ? value : value.substring(0, 40);
|
||||
editorManager.getEditingMenu().setTitle(title);
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case MENU_ALIAS:
|
||||
{
|
||||
editorManager.getEditingMenu().setAlias(Utils.stripColors(args.get(0)));
|
||||
editorManager.reopen();
|
||||
}
|
||||
case MENU_ALIAS: {
|
||||
|
||||
editorManager.getEditingMenu().setAlias(Utils.stripColors(args.get(0)));
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case NEW_MENU:
|
||||
{
|
||||
String menuName =
|
||||
(rawString.contains(".") ? rawString.split("\\.")[0] : rawString).replaceAll(" ", "_");
|
||||
Database database = core.getDatabase();
|
||||
case NEW_MENU: {
|
||||
|
||||
if (database.menuExists(menuName)) {
|
||||
player.sendMessage(
|
||||
Message.COMMAND_ERROR_MENU_EXISTS.getValue().replace("{1}", menuName));
|
||||
return;
|
||||
}
|
||||
String menuName = (rawString.contains(".") ? rawString.split("\\.")[0] : rawString).replaceAll(" ",
|
||||
"_");
|
||||
Database database = core.getDatabase();
|
||||
|
||||
if (database.menuExists(menuName)) {
|
||||
|
||||
player.sendMessage(Message.COMMAND_ERROR_MENU_EXISTS.getValue().replace("{1}", menuName));
|
||||
return;
|
||||
|
||||
database.createMenu(menuName);
|
||||
editorManager.reopen();
|
||||
}
|
||||
|
||||
database.createMenu(menuName);
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_NAME:
|
||||
{
|
||||
targetHat.setName(value);
|
||||
editorManager
|
||||
.getEditingMenu()
|
||||
.onHatNameChange(editorManager.getBaseHat(), editorManager.getTargetSlot());
|
||||
editorManager.reopen();
|
||||
}
|
||||
case HAT_NAME: {
|
||||
|
||||
targetHat.setName(value);
|
||||
editorManager.getEditingMenu().onHatNameChange(editorManager.getBaseHat(),
|
||||
editorManager.getTargetSlot());
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_PERMISSION:
|
||||
{
|
||||
String permission = rawString.replace(" ", "_");
|
||||
targetHat.setPermission(permission.replace("particlehats.particle.", ""));
|
||||
editorManager.reopen();
|
||||
}
|
||||
case HAT_PERMISSION: {
|
||||
|
||||
String permission = rawString.replace(" ", "_");
|
||||
targetHat.setPermission(permission.replace("particlehats.particle.", ""));
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_LABEL:
|
||||
{
|
||||
String label = rawString.replace(" ", "_");
|
||||
core.getDatabase()
|
||||
.onLabelChange(targetHat.getLabel(), label, targetHat.getMenu(), targetHat.getSlot());
|
||||
targetHat.setLabel(label);
|
||||
editorManager.reopen();
|
||||
}
|
||||
case HAT_LABEL: {
|
||||
|
||||
String label = rawString.replace(" ", "_");
|
||||
core.getDatabase().onLabelChange(targetHat.getLabel(), label, targetHat.getMenu(), targetHat.getSlot());
|
||||
targetHat.setLabel(label);
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_EQUIP_MESSAGE:
|
||||
{
|
||||
targetHat.setEquipMessage(value);
|
||||
editorManager.reopen();
|
||||
}
|
||||
case HAT_EQUIP_MESSAGE: {
|
||||
|
||||
targetHat.setEquipMessage(value);
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_PERMISSION_MESSAGE:
|
||||
{
|
||||
targetHat.setPermissionDeniedMessage(value);
|
||||
editorManager.reopen();
|
||||
}
|
||||
case HAT_PERMISSION_MESSAGE: {
|
||||
|
||||
targetHat.setPermissionDeniedMessage(value);
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_DESCRIPTION:
|
||||
case HAT_PERMISSION_DESCRIPTION:
|
||||
{
|
||||
int line = editorManager.getOwnerState().getMetaDescriptionLine();
|
||||
List<String> description =
|
||||
this == HAT_DESCRIPTION ? targetHat.getDescription() : targetHat.getPermissionDescription();
|
||||
case HAT_PERMISSION_DESCRIPTION: {
|
||||
|
||||
if (line < description.size()) {
|
||||
description.set(line, value);
|
||||
}
|
||||
int line = editorManager.getOwnerState().getMetaDescriptionLine();
|
||||
List<String> description = this == HAT_DESCRIPTION ? targetHat.getDescription()
|
||||
: targetHat.getPermissionDescription();
|
||||
|
||||
if (line < description.size()) {
|
||||
|
||||
description.set(line, value);
|
||||
|
||||
editorManager.reopen();
|
||||
}
|
||||
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case HAT_COMMAND:
|
||||
{
|
||||
String command = rawString;
|
||||
if (rawString.charAt(0) == '/') {
|
||||
command = rawString.substring(1);
|
||||
}
|
||||
case HAT_COMMAND: {
|
||||
|
||||
String command = rawString;
|
||||
if (rawString.charAt(0) == '/') {
|
||||
|
||||
command = rawString.substring(1);
|
||||
|
||||
targetHat.setArgument(command);
|
||||
editorManager.reopen();
|
||||
}
|
||||
|
||||
targetHat.setArgument(command);
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case BLOCK_SEARCH:
|
||||
{
|
||||
editorManager.setMetaArgument(rawString.replace(" ", ","));
|
||||
editorManager.reopen();
|
||||
}
|
||||
case BLOCK_SEARCH: {
|
||||
|
||||
editorManager.setMetaArgument(rawString.replace(" ", ","));
|
||||
editorManager.reopen();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,13 +28,9 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
|
||||
private final List<ParticleAction> actions;
|
||||
|
||||
public EditorActionMenu(
|
||||
CosmeticsOG core,
|
||||
EditorMenuManager menuManager,
|
||||
Player owner,
|
||||
boolean isLeftClickAction,
|
||||
boolean showHiddenActions,
|
||||
MenuObjectCallback callback) {
|
||||
public EditorActionMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, boolean isLeftClickAction,
|
||||
boolean showHiddenActions, MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner, false);
|
||||
|
||||
@@ -45,37 +41,43 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
this.totalPages = MathUtil.calculatePageCount(ParticleAction.values().length, 28);
|
||||
|
||||
this.selectAction = (event, slot) -> {
|
||||
|
||||
int index = getClampedIndex(slot, 10, 2);
|
||||
ParticleAction action = actions.get(index);
|
||||
|
||||
if (action == null) {
|
||||
|
||||
action = ParticleAction.EQUIP;
|
||||
|
||||
}
|
||||
|
||||
callback.onSelect(action);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
public EditorActionMenu(
|
||||
CosmeticsOG core,
|
||||
EditorMenuManager menuManager,
|
||||
Player owner,
|
||||
boolean isLeftClickAction,
|
||||
MenuObjectCallback callback) {
|
||||
public EditorActionMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, boolean isLeftClickAction,
|
||||
MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
this(core, menuManager, owner, isLeftClickAction, false, callback);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {}
|
||||
public void insertEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {}
|
||||
public void removeEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
@@ -84,24 +86,29 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
|
||||
// Previous Page.
|
||||
setAction(48, (event, slot) -> {
|
||||
|
||||
currentPage--;
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Next Page.
|
||||
setAction(50, (event, slot) -> {
|
||||
|
||||
currentPage++;
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Fill in the actions.
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), selectAction);
|
||||
|
||||
}
|
||||
|
||||
// Create the pages.
|
||||
@@ -112,11 +119,8 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
String rightClick = !isLeftClickAction ? rightClickInfo[1] : "";
|
||||
for (int i = 0; i < totalPages; i++) {
|
||||
|
||||
String titleStr = menuTitle
|
||||
.replace(leftClickInfo[0], leftClick)
|
||||
.replace(rightClickInfo[0], rightClick)
|
||||
.replace("{3}", Integer.toString(i + 1))
|
||||
.replace("{4}", Integer.toString(totalPages));
|
||||
String titleStr = menuTitle.replace(leftClickInfo[0], leftClick).replace(rightClickInfo[0], rightClick)
|
||||
.replace("{3}", Integer.toString(i + 1)).replace("{4}", Integer.toString(totalPages));
|
||||
|
||||
// Convert the title string to a colorized TextComponent using TrueOG Utils.
|
||||
Component title = Utils.legacySerializerAnyCase(titleStr);
|
||||
@@ -129,26 +133,21 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
// Next Page.
|
||||
if ((i + 1) < totalPages) {
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Previous Page.
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
menu.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
menu.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
setMenu(i, menu);
|
||||
|
||||
}
|
||||
|
||||
// Insert the actions.
|
||||
@@ -161,6 +160,7 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
if (action == ParticleAction.MIMIC && isLeftClickAction) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (showHiddenActions) {
|
||||
@@ -168,6 +168,7 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
if (!action.isHidden() && action != ParticleAction.DUMMY) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -175,27 +176,29 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
if (action.isHidden()) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ItemStack item =
|
||||
ItemUtil.createItem(CompatibleMaterial.FIREWORK_STAR.getMaterial(), 1, action.getDisplayName());
|
||||
ItemStack item = ItemUtil.createItem(CompatibleMaterial.FIREWORK_STAR.getMaterial(), 1,
|
||||
action.getDisplayName());
|
||||
String description = Message.EDITOR_ACTION_MENU_ACTION_DESCRIPTION.getValue();
|
||||
String[] selectedInfo = StringUtil.parseValue(description, "2");
|
||||
String[] selectInfo = StringUtil.parseValue(description, "3");
|
||||
ParticleAction currentAction =
|
||||
isLeftClickAction ? targetHat.getLeftClickAction() : targetHat.getRightClickAction();
|
||||
ParticleAction currentAction = isLeftClickAction ? targetHat.getLeftClickAction()
|
||||
: targetHat.getRightClickAction();
|
||||
if (currentAction.equals(action)) {
|
||||
|
||||
ItemUtil.setItemType(item, CompatibleMaterial.GUNPOWDER);
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
description =
|
||||
description.replace(selectedInfo[0], selectedInfo[1]).replace(selectInfo[0], "");
|
||||
description = description.replace(selectedInfo[0], selectedInfo[1]).replace(selectInfo[0], "");
|
||||
|
||||
} else {
|
||||
|
||||
description = description.replace(selectInfo[0], selectInfo[1]).replace(selectedInfo[0], "");
|
||||
|
||||
}
|
||||
|
||||
description = description.replace("{1}", action.getDescription());
|
||||
@@ -208,13 +211,21 @@ public class EditorActionMenu extends AbstractListMenu {
|
||||
|
||||
index = 0;
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,18 +23,20 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
|
||||
private ActionClickType editingClickType = ActionClickType.NONE;
|
||||
|
||||
public EditorActionMenuOverview(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, MenuCallback callback) {
|
||||
public EditorActionMenuOverview(CosmeticsOG core, EditorMenuManager menuManager, Player owner,
|
||||
MenuCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
this.editorManager = menuManager;
|
||||
this.callback = callback;
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 27, Utils.legacySerializerAnyCase(Message.EDITOR_ACTION_OVERVIEW_MENU_TITlE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 27,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_ACTION_OVERVIEW_MENU_TITlE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,9 +47,11 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
onActionChange(editingClickType == ActionClickType.LEFT ? true : false);
|
||||
|
||||
editingClickType = ActionClickType.NONE;
|
||||
|
||||
}
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,13 +59,12 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
|
||||
setButton(10, backButtonItem, backButtonAction);
|
||||
|
||||
ItemStack leftActionItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.GUNPOWDER.getMaterial(),
|
||||
1,
|
||||
ItemStack leftActionItem = ItemUtil.createItem(CompatibleMaterial.GUNPOWDER.getMaterial(), 1,
|
||||
Message.EDITOR_ACTION_OVERVIEW_MENU_SET_LEFT_CLICK.getValue());
|
||||
EditorLore.updateSpecificActionDescription(
|
||||
leftActionItem, targetHat, targetHat.getLeftClickAction(), targetHat.getLeftClickArgument());
|
||||
EditorLore.updateSpecificActionDescription(leftActionItem, targetHat, targetHat.getLeftClickAction(),
|
||||
targetHat.getLeftClickArgument());
|
||||
setButton(14, leftActionItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
openActionMenu(true);
|
||||
@@ -69,18 +72,19 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
openPropertiesMenu(true);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack rightActionItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.GUNPOWDER.getMaterial(),
|
||||
1,
|
||||
ItemStack rightActionItem = ItemUtil.createItem(CompatibleMaterial.GUNPOWDER.getMaterial(), 1,
|
||||
Message.EDITOR_ACTION_OVERVIEW_MENU_SET_RIGHT_CLICK.getValue());
|
||||
EditorLore.updateSpecificActionDescription(
|
||||
rightActionItem, targetHat, targetHat.getRightClickAction(), targetHat.getRightClickArgument());
|
||||
EditorLore.updateSpecificActionDescription(rightActionItem, targetHat, targetHat.getRightClickAction(),
|
||||
targetHat.getRightClickArgument());
|
||||
setButton(16, rightActionItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
openActionMenu(false);
|
||||
@@ -88,24 +92,33 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
openPropertiesMenu(false);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
private void openActionMenu(boolean isLeftClick) {
|
||||
|
||||
EditorActionMenu editorActionMenu = new EditorActionMenu(core, editorManager, owner, isLeftClick, (action) -> {
|
||||
|
||||
if (action == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ParticleAction pa = (ParticleAction) action;
|
||||
@@ -116,83 +129,101 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
targetHat.setRightClickAction(pa);
|
||||
|
||||
}
|
||||
|
||||
onActionChange(isLeftClick);
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorActionMenu);
|
||||
editorActionMenu.open();
|
||||
|
||||
}
|
||||
|
||||
private void openPropertiesMenu(boolean isLeftClick) {
|
||||
|
||||
ParticleAction action = isLeftClick ? targetHat.getLeftClickAction() : targetHat.getRightClickAction();
|
||||
switch (action) {
|
||||
|
||||
case OPEN_MENU_PERMISSION:
|
||||
case OPEN_MENU:
|
||||
{
|
||||
EditorMenuSelectionMenu editorMenuSelectionMenu =
|
||||
new EditorMenuSelectionMenu(core, editorManager, owner, false, (menuName) -> {
|
||||
if (menuName == null) {
|
||||
case OPEN_MENU: {
|
||||
|
||||
return;
|
||||
}
|
||||
EditorMenuSelectionMenu editorMenuSelectionMenu = new EditorMenuSelectionMenu(core, editorManager,
|
||||
owner, false, (menuName) ->
|
||||
{
|
||||
|
||||
String argument = (String) menuName;
|
||||
if (menuName == null) {
|
||||
|
||||
if (isLeftClick) {
|
||||
return;
|
||||
|
||||
targetHat.setLeftClickArgument(argument);
|
||||
}
|
||||
|
||||
} else {
|
||||
String argument = (String) menuName;
|
||||
|
||||
targetHat.setRightClickArgument(argument);
|
||||
}
|
||||
if (isLeftClick) {
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
onActionChange(isLeftClick);
|
||||
});
|
||||
targetHat.setLeftClickArgument(argument);
|
||||
|
||||
menuManager.addMenu(editorMenuSelectionMenu);
|
||||
editorMenuSelectionMenu.open();
|
||||
}
|
||||
} else {
|
||||
|
||||
targetHat.setRightClickArgument(argument);
|
||||
|
||||
}
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
onActionChange(isLeftClick);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorMenuSelectionMenu);
|
||||
editorMenuSelectionMenu.open();
|
||||
|
||||
}
|
||||
break;
|
||||
case COMMAND:
|
||||
{
|
||||
if (isLeftClick) {
|
||||
case COMMAND: {
|
||||
|
||||
editingClickType = ActionClickType.LEFT;
|
||||
if (isLeftClick) {
|
||||
|
||||
} else {
|
||||
editingClickType = ActionClickType.LEFT;
|
||||
|
||||
editingClickType = ActionClickType.RIGHT;
|
||||
}
|
||||
} else {
|
||||
|
||||
editingClickType = ActionClickType.RIGHT;
|
||||
|
||||
targetHat.setEditingAction(isLeftClick ? 1 : 2);
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_COMMAND);
|
||||
core.prompt(owner, MetaState.HAT_COMMAND);
|
||||
menuManager.closeInventory();
|
||||
}
|
||||
|
||||
targetHat.setEditingAction(isLeftClick ? 1 : 2);
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_COMMAND);
|
||||
core.prompt(owner, MetaState.HAT_COMMAND);
|
||||
menuManager.closeInventory();
|
||||
|
||||
}
|
||||
break;
|
||||
case DEMO:
|
||||
{
|
||||
EditorDurationMenu editorDurationMenu = new EditorDurationMenu(core, editorManager, owner, () -> {
|
||||
onActionChange(isLeftClick);
|
||||
});
|
||||
case DEMO: {
|
||||
|
||||
menuManager.addMenu(editorDurationMenu);
|
||||
editorDurationMenu.open();
|
||||
}
|
||||
EditorDurationMenu editorDurationMenu = new EditorDurationMenu(core, editorManager, owner, () -> {
|
||||
|
||||
onActionChange(isLeftClick);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorDurationMenu);
|
||||
editorDurationMenu.open();
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Called any time an action is changed
|
||||
*
|
||||
* @param isLeftClick
|
||||
*/
|
||||
public void onActionChange(boolean isLeftClick) {
|
||||
@@ -204,11 +235,11 @@ public class EditorActionMenuOverview extends AbstractStaticMenu {
|
||||
EditorLore.updateSpecificActionDescription(item, targetHat, action, argument);
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
private enum ActionClickType {
|
||||
NONE,
|
||||
LEFT,
|
||||
RIGHT;
|
||||
NONE, LEFT, RIGHT;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,10 +26,11 @@ public class EditorAngleMenu extends AbstractStaticMenu {
|
||||
|
||||
this.editorManager = menuManager;
|
||||
this.callback = callback;
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 27, Utils.legacySerializerAnyCase(Message.EDITOR_ANGLE_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 27,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_ANGLE_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -38,31 +39,38 @@ public class EditorAngleMenu extends AbstractStaticMenu {
|
||||
Hat targetHat = editorManager.getTargetHat();
|
||||
|
||||
// X Angle.
|
||||
ItemStack xItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_ANGLE_MENU_SET_ANGLE_X.getValue());
|
||||
ItemStack xItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_ANGLE_MENU_SET_ANGLE_X.getValue());
|
||||
EditorLore.updateVectorDescription(xItem, targetHat.getAngle(), Message.EDITOR_ANGLE_MENU_ANGLE_X_DESCRIPTION);
|
||||
setButton(14, xItem, (event, slot) -> {
|
||||
|
||||
return updateAngle(event, targetHat, VectorAxis.X);
|
||||
|
||||
});
|
||||
|
||||
// Y Angle.
|
||||
ItemStack yItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_ANGLE_MENU_SET_ANGLE_Y.getValue());
|
||||
ItemStack yItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_ANGLE_MENU_SET_ANGLE_Y.getValue());
|
||||
EditorLore.updateVectorDescription(yItem, targetHat.getAngle(), Message.EDITOR_ANGLE_MENU_ANGLE_Y_DESCRIPTION);
|
||||
setButton(15, yItem, (event, slot) -> {
|
||||
|
||||
return updateAngle(event, targetHat, VectorAxis.Y);
|
||||
|
||||
});
|
||||
|
||||
// Z Angle.
|
||||
ItemStack zItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_ANGLE_MENU_SET_ANGLE_Z.getValue());
|
||||
ItemStack zItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_ANGLE_MENU_SET_ANGLE_Z.getValue());
|
||||
EditorLore.updateVectorDescription(zItem, targetHat.getAngle(), Message.EDITOR_ANGLE_MENU_ANGLE_Z_DESCRIPTION);
|
||||
setButton(16, zItem, (event, slot) -> {
|
||||
|
||||
return updateAngle(event, targetHat, VectorAxis.Z);
|
||||
|
||||
});
|
||||
|
||||
// Back.
|
||||
setButton(10, backButtonItem, backButtonAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -71,11 +79,15 @@ public class EditorAngleMenu extends AbstractStaticMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
private MenuClickResult updateAngle(MenuClickEvent event, Hat hat, VectorAxis axis) {
|
||||
|
||||
@@ -86,6 +98,7 @@ public class EditorAngleMenu extends AbstractStaticMenu {
|
||||
|
||||
Vector angle = hat.getAngle();
|
||||
switch (axis) {
|
||||
|
||||
case X:
|
||||
double xa = !isMiddleClick ? angle.getX() + modifier : 0;
|
||||
|
||||
@@ -104,6 +117,7 @@ public class EditorAngleMenu extends AbstractStaticMenu {
|
||||
hat.setAngleZ(za);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateVectorDescription(getItem(14), angle, Message.EDITOR_ANGLE_MENU_ANGLE_X_DESCRIPTION);
|
||||
@@ -117,6 +131,9 @@ public class EditorAngleMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -44,16 +44,16 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
this.editorManager = (EditorMenuManager) menuManager;
|
||||
this.menuInventory = menuInventory;
|
||||
this.rows = menuInventory.getSize() / 9;
|
||||
this.emptyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(),
|
||||
this.emptyItem = ItemUtil.createItem(CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(),
|
||||
Message.EDITOR_EMPTY_SLOT_TITLE.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_SLOT_DESCRIPTION.getValue()));
|
||||
this.editingTitle = EditorLore.getTrimmedMenuTitle(menuInventory.getName(), Message.EDITOR_BASE_MENU_TITLE);
|
||||
this.inventory =
|
||||
Bukkit.createInventory(null, menuInventory.getSize(), Utils.legacySerializerAnyCase(editingTitle));
|
||||
this.inventory = Bukkit.createInventory(null, menuInventory.getSize(),
|
||||
Utils.legacySerializerAnyCase(editingTitle));
|
||||
this.inventory.setContents(menuInventory.getContents());
|
||||
|
||||
emptyParticleAction = (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.setTargetHat(createHat(slot));
|
||||
@@ -63,12 +63,15 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
editorManager.openSettingsMenu();
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
existingParticleAction = (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.setTargetHat(menuInventory.getHat(slot));
|
||||
@@ -84,12 +87,15 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
editorManager.openSettingsMenu();
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -101,15 +107,18 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
super.open();
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Hat hat = menuInventory.getHat(slot);
|
||||
if (hat != null) {
|
||||
|
||||
EditorLore.updateHatDescription(getItem(slot), hat, true);
|
||||
|
||||
}
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,20 +133,26 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
setAction(i, existingParticleAction);
|
||||
|
||||
}
|
||||
|
||||
Hat hat = menuInventory.getHat(i);
|
||||
if (hat == null) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateHatDescription(inventory.getItem(i), hat, true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {
|
||||
@@ -152,37 +167,46 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
if (hat == null) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
IconData iconData = hat.getIconData();
|
||||
if (!iconData.isLive()) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
ItemStackTemplate itemTemplate = iconData.getNextItem(ticks);
|
||||
ItemUtil.setItemType(getItem(slot), itemTemplate.getMaterial(), itemTemplate.getDurability());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
return menuInventory.getName();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the hat at this slot
|
||||
*
|
||||
* @param slot
|
||||
*/
|
||||
public void removeHat(int slot) {
|
||||
|
||||
menuInventory.removeHat(slot);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the hat and item at this slot
|
||||
*
|
||||
* @param slot
|
||||
*/
|
||||
public void removeButton(int slot) {
|
||||
@@ -190,36 +214,42 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
removeHat(slot);
|
||||
|
||||
setButton(slot, emptyItem, emptyParticleAction);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this menus MenuInventory
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public MenuInventory getMenuInventory() {
|
||||
|
||||
return menuInventory;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this menu's title
|
||||
*
|
||||
* @param title
|
||||
*/
|
||||
public void setTitle(String title) {
|
||||
|
||||
menuInventory.setTitle(Utils.legacySerializerAnyCase(title));
|
||||
|
||||
Inventory replacementInventory =
|
||||
Bukkit.createInventory(null, inventory.getSize(), Utils.legacySerializerAnyCase(editingTitle));
|
||||
Inventory replacementInventory = Bukkit.createInventory(null, inventory.getSize(),
|
||||
Utils.legacySerializerAnyCase(editingTitle));
|
||||
replacementInventory.setContents(inventory.getContents());
|
||||
|
||||
inventory = replacementInventory;
|
||||
|
||||
core.getDatabase().saveMenuTitle(getName(), title);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this menu's alias
|
||||
*
|
||||
* @param alias
|
||||
*/
|
||||
public void setAlias(String alias) {
|
||||
@@ -227,6 +257,7 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
menuInventory.setAlias(alias);
|
||||
|
||||
core.getDatabase().saveMenuAlias(getName(), alias);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -247,11 +278,14 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
|
||||
Damageable damageable = (Damageable) meta;
|
||||
damage = damageable.getDamage();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Call the ItemUtil method to update the item type and its damage
|
||||
ItemUtil.setItemType(getItem(slot), material, damage);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -260,24 +294,29 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
public void toggleUpdates() {
|
||||
|
||||
canUpdate = !canUpdate;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if this menu can update icons
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean canUpdate() {
|
||||
|
||||
return canUpdate;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get how many rows this inventory has
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int rows() {
|
||||
|
||||
return rows;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -288,17 +327,20 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
for (Entry<Integer, Hat> hats : menuInventory.getHats().entrySet()) {
|
||||
|
||||
hats.getValue().getIconData().reset();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void resizeTo(int rows) {
|
||||
|
||||
if (this.rows != rows) {
|
||||
|
||||
Inventory replacementInventory =
|
||||
Bukkit.createInventory(null, (9 * rows), Utils.legacySerializerAnyCase(editingTitle));
|
||||
Inventory replacementInventory = Bukkit.createInventory(null, (9 * rows),
|
||||
Utils.legacySerializerAnyCase(editingTitle));
|
||||
|
||||
// inventory.setContents() only works when resizing the menus to a smaller size. So, we need to use a loop
|
||||
// inventory.setContents() only works when resizing the menus to a smaller size.
|
||||
// So, we need to use a loop
|
||||
// to account for the other option.
|
||||
for (int i = 0; i < replacementInventory.getSize(); i++) {
|
||||
|
||||
@@ -307,7 +349,9 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
replacementInventory.setItem(i, inventory.getItem(i));
|
||||
|
||||
} catch (ArrayIndexOutOfBoundsException error) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Fill in any empty slots.
|
||||
@@ -316,7 +360,9 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
for (int i = inventory.getSize(); i < replacementInventory.getSize(); i++) {
|
||||
|
||||
replacementInventory.setItem(i, emptyItem);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
inventory = replacementInventory;
|
||||
@@ -324,7 +370,9 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
this.rows = rows;
|
||||
|
||||
core.getDatabase().saveMenuSize(getName(), rows);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void changeSlots(int currentSlot, int newSlot, boolean swapping) {
|
||||
@@ -348,6 +396,7 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
menuInventory.removeHat(currentSlot);
|
||||
|
||||
}
|
||||
|
||||
setButton(currentSlot, swappingItem, swappingAction);
|
||||
@@ -357,10 +406,12 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
editorManager.setTargetSlot(newSlot);
|
||||
|
||||
core.getDatabase().moveHat(currentHat, swappingHat, getName(), null, currentSlot, newSlot, swapping);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Clones a hat and adds it to the new slot
|
||||
*
|
||||
* @param currentSlot
|
||||
* @param newSlot
|
||||
*/
|
||||
@@ -378,20 +429,24 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
EditorLore.updateHatDescription(getItem(newSlot), clonedHat, true);
|
||||
|
||||
core.getDatabase().cloneHat(getName(), currentHat, newSlot);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the item's display name that belongs in this slot
|
||||
*
|
||||
* @param hat
|
||||
* @param slot
|
||||
*/
|
||||
public void onHatNameChange(Hat hat, int slot) {
|
||||
|
||||
ItemUtil.setItemName(getItem(slot), hat.getDisplayName());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns a new hat object
|
||||
*
|
||||
* @param slot
|
||||
* @return
|
||||
*/
|
||||
@@ -402,8 +457,8 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
hat.setSlot(slot);
|
||||
hat.setLoaded(true);
|
||||
|
||||
ItemStack emptyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.SUNFLOWER.getMaterial(), 1, Message.EDITOR_MISC_NEW_PARTICLE.getValue());
|
||||
ItemStack emptyItem = ItemUtil.createItem(CompatibleMaterial.SUNFLOWER.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEW_PARTICLE.getValue());
|
||||
|
||||
EditorLore.updateHatDescription(emptyItem, hat, true);
|
||||
|
||||
@@ -413,10 +468,12 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
core.getDatabase().createHat(menuInventory.getName(), hat);
|
||||
|
||||
return hat;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the hat in the current slot
|
||||
*
|
||||
* @param slot
|
||||
*/
|
||||
private void deleteHat(int slot) {
|
||||
@@ -425,5 +482,7 @@ public class EditorBaseMenu extends AbstractStaticMenu {
|
||||
menuInventory.removeHat(slot);
|
||||
|
||||
core.getDatabase().deleteHat(menuInventory.getName(), slot);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -29,8 +29,9 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
|
||||
private Map<Integer, Color> colors;
|
||||
|
||||
public EditorColorMenu(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex, MenuCallback callback) {
|
||||
public EditorColorMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex,
|
||||
MenuCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
@@ -38,22 +39,26 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
this.targetHat = menuManager.getTargetHat();
|
||||
this.callback = callback;
|
||||
this.colors = new HashMap<Integer, Color>();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_COLOUR_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_COLOUR_MENU_TITLE.getValue()));
|
||||
|
||||
this.setColorAction = (event, slot) -> {
|
||||
|
||||
if (colors.containsKey(slot)) {
|
||||
|
||||
ColorData colorData = targetHat.getParticleData(particleIndex).getColorData();
|
||||
colorData.setColor(colors.get(slot));
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -63,46 +68,50 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
for (int i = 0; i < 15; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 4), setColorAction);
|
||||
|
||||
}
|
||||
|
||||
ColorData colorData = targetHat.getParticleData(particleIndex).getColorData();
|
||||
Color color = colorData.getColor();
|
||||
ItemStack redItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.ROSE_RED.getMaterial(), 1, Message.EDITOR_COLOUR_MENU_SET_RED_VALUE.getValue());
|
||||
EditorLore.updateColorDescription(
|
||||
redItem, color, colorData.isRandom(), Message.EDITOR_COLOUR_MENU_R_DESCRIPTION);
|
||||
ItemStack redItem = ItemUtil.createItem(CompatibleMaterial.ROSE_RED.getMaterial(), 1,
|
||||
Message.EDITOR_COLOUR_MENU_SET_RED_VALUE.getValue());
|
||||
EditorLore.updateColorDescription(redItem, color, colorData.isRandom(),
|
||||
Message.EDITOR_COLOUR_MENU_R_DESCRIPTION);
|
||||
setButton(16, redItem, (event, slot) -> {
|
||||
|
||||
return updateRGB(event, targetHat, RGB.R);
|
||||
|
||||
});
|
||||
|
||||
ItemStack greenItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.CACTUS_GREEN.getMaterial(),
|
||||
1,
|
||||
ItemStack greenItem = ItemUtil.createItem(CompatibleMaterial.CACTUS_GREEN.getMaterial(), 1,
|
||||
Message.EDITOR_COLOUR_MENU_SET_GREEN_VALUE.getValue());
|
||||
EditorLore.updateColorDescription(
|
||||
greenItem, color, colorData.isRandom(), Message.EDITOR_COLOUR_MENU_G_DESCRIPTION);
|
||||
EditorLore.updateColorDescription(greenItem, color, colorData.isRandom(),
|
||||
Message.EDITOR_COLOUR_MENU_G_DESCRIPTION);
|
||||
setButton(25, greenItem, (event, slot) -> {
|
||||
|
||||
return updateRGB(event, targetHat, RGB.G);
|
||||
|
||||
});
|
||||
|
||||
ItemStack blueItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.LAPIS_LAZULI.getMaterial(), 1, Message.EDITOR_COLOUR_MENU_SET_BLUE_VALUE.getValue());
|
||||
EditorLore.updateColorDescription(
|
||||
blueItem, color, colorData.isRandom(), Message.EDITOR_COLOUR_MENU_B_DESCRIPTION);
|
||||
ItemStack blueItem = ItemUtil.createItem(CompatibleMaterial.LAPIS_LAZULI.getMaterial(), 1,
|
||||
Message.EDITOR_COLOUR_MENU_SET_BLUE_VALUE.getValue());
|
||||
EditorLore.updateColorDescription(blueItem, color, colorData.isRandom(),
|
||||
Message.EDITOR_COLOUR_MENU_B_DESCRIPTION);
|
||||
setButton(34, blueItem, (event, slot) -> {
|
||||
|
||||
return updateRGB(event, targetHat, RGB.B);
|
||||
|
||||
});
|
||||
|
||||
// Only enable particle scaling in 1.13+, 1.12- does not support the feature
|
||||
if (CosmeticsOG.serverVersion >= 13) {
|
||||
|
||||
ItemStack sizeItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_COLOUR_MENU_SET_SIZE.getValue());
|
||||
EditorLore.updateDoubleDescription(
|
||||
sizeItem,
|
||||
targetHat.getParticleData(particleIndex).getScale(),
|
||||
ItemStack sizeItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_COLOUR_MENU_SET_SIZE.getValue());
|
||||
EditorLore.updateDoubleDescription(sizeItem, targetHat.getParticleData(particleIndex).getScale(),
|
||||
Message.EDITOR_COLOUR_MENU_SIZE_DESCRIPTION);
|
||||
setButton(50, sizeItem, (event, slot) -> {
|
||||
|
||||
double normal = event.isLeftClick() ? 0.1 : -0.1;
|
||||
double shift = event.isShiftClick() ? 0.1 : 1;
|
||||
double modifier = normal * shift;
|
||||
@@ -111,18 +120,20 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
double size = data.getScale() + modifier;
|
||||
|
||||
data.setScale(size);
|
||||
EditorLore.updateDoubleDescription(
|
||||
getItem(50), data.getScale(), Message.EDITOR_COLOUR_MENU_SIZE_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(getItem(50), data.getScale(),
|
||||
Message.EDITOR_COLOUR_MENU_SIZE_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
ItemStack randomItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.EXPERIENCE_BOTTLE.getMaterial(),
|
||||
ItemStack randomItem = ItemUtil.createItem(CompatibleMaterial.EXPERIENCE_BOTTLE.getMaterial(),
|
||||
Message.EDITOR_COLOUR_MENU_SET_RANDOM.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_COLOUR_MENU_RANDOM_DESCRIPTION.getValue()));
|
||||
setButton(51, randomItem, (event, slot) -> {
|
||||
|
||||
targetHat.getParticleData(particleIndex).getColorData().setRandom(true);
|
||||
|
||||
EditorLore.updateColorDescription(getItem(16), color, true, Message.EDITOR_COLOUR_MENU_R_DESCRIPTION);
|
||||
@@ -130,6 +141,7 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
EditorLore.updateColorDescription(getItem(34), color, true, Message.EDITOR_COLOUR_MENU_B_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
setColor(10, Color.fromRGB(255, 255, 255), "WHITE");
|
||||
@@ -149,6 +161,7 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
setColor(30, Color.fromRGB(165, 42, 42), "BROWN");
|
||||
setColor(31, Color.fromRGB(160, 32, 219), "PURPLE");
|
||||
setColor(32, Color.fromRGB(0, 255, 255), "CYAN");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -157,41 +170,44 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
private void setColor(int slot, Color color, String colorName) {
|
||||
|
||||
String title = Message.fromString("EDITOR_COLOUR_MENU_SET_" + colorName).getValue();
|
||||
CompatibleMaterial material = CompatibleMaterial.fromName(
|
||||
colorName + "_STAINED_GLASS_PANE", CompatibleMaterial.BLACK_STAINED_GLASS_PANE);
|
||||
CompatibleMaterial material = CompatibleMaterial.fromName(colorName + "_STAINED_GLASS_PANE",
|
||||
CompatibleMaterial.BLACK_STAINED_GLASS_PANE);
|
||||
|
||||
setColor(slot, color);
|
||||
|
||||
setItem(
|
||||
slot,
|
||||
ItemUtil.createItem(
|
||||
material.getMaterial(), title, StringUtil.parseDescription(getColorDescription(color, title))));
|
||||
setItem(slot, ItemUtil.createItem(material.getMaterial(), title,
|
||||
StringUtil.parseDescription(getColorDescription(color, title))));
|
||||
|
||||
}
|
||||
|
||||
private void setColor(int slot, Color color) {
|
||||
|
||||
colors.put(slot, color);
|
||||
|
||||
}
|
||||
|
||||
private String getColorDescription(Color color, String title) {
|
||||
|
||||
String description = Message.EDITOR_COLOUR_MENU_PRESET_DESCRIPTION.getValue();
|
||||
String s = description
|
||||
.replace("{1}", Utils.stripColors(title.toLowerCase()))
|
||||
.replace("{2}", Integer.toString(color.getRed()))
|
||||
.replace("{3}", Integer.toString(color.getGreen()))
|
||||
String s = description.replace("{1}", Utils.stripColors(title.toLowerCase()))
|
||||
.replace("{2}", Integer.toString(color.getRed())).replace("{3}", Integer.toString(color.getGreen()))
|
||||
.replace("{4}", Integer.toString(color.getBlue()));
|
||||
|
||||
return s;
|
||||
|
||||
}
|
||||
|
||||
private MenuClickResult updateRGB(MenuClickEvent event, Hat hat, RGB rgb) {
|
||||
@@ -206,6 +222,7 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
pc.setRandom(false);
|
||||
|
||||
switch (rgb) {
|
||||
|
||||
case R:
|
||||
int r = MathUtil.clamp(color.getRed() + modifier, 0, 255);
|
||||
|
||||
@@ -224,6 +241,7 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
color = color.setBlue(b);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateColorDescription(getItem(16), color, false, Message.EDITOR_COLOUR_MENU_R_DESCRIPTION);
|
||||
@@ -233,11 +251,11 @@ public class EditorColorMenu extends AbstractStaticMenu {
|
||||
hat.getParticleData(particleIndex).getColorData().setColor(color);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
private enum RGB {
|
||||
R,
|
||||
G,
|
||||
B;
|
||||
R, G, B;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,36 +21,47 @@ public class EditorDeleteMenu extends AbstractStaticMenu {
|
||||
super(core, menuManager, owner);
|
||||
|
||||
this.editorBaseMenu = editorBaseMenu;
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 27, Utils.legacySerializerAnyCase(Message.EDITOR_DELETE_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 27,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_DELETE_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
|
||||
ItemStack yesItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.ROSE_RED.getMaterial(), 1, Message.EDITOR_DELETE_MENU_YES.getValue());
|
||||
ItemStack yesItem = ItemUtil.createItem(CompatibleMaterial.ROSE_RED.getMaterial(), 1,
|
||||
Message.EDITOR_DELETE_MENU_YES.getValue());
|
||||
setButton(12, yesItem, (event, slot) -> {
|
||||
|
||||
core.getDatabase().deleteMenu(editorBaseMenu.getMenuInventory().getName());
|
||||
|
||||
menuManager.closeInventory();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack noItem = ItemUtil.createItem(Material.COAL, 1, Message.EDITOR_DELETE_MENU_NO.getValue());
|
||||
setButton(14, noItem, (event, slot) -> {
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,8 +25,8 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
private final boolean isEditingDescription;
|
||||
private final Hat targetHat;
|
||||
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.BARRIER.getMaterial(), 1, Message.EDITOR_DESCRIPTION_MENU_EMPTY.getValue());
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1,
|
||||
Message.EDITOR_DESCRIPTION_MENU_EMPTY.getValue());
|
||||
|
||||
private final String lineTitle = Message.EDITOR_DESCIPRION_LINE_TITLE.getValue();
|
||||
private final String lineDescription = Message.EDITOR_DESCRIPTION_MENU_LINE_DESCRIPTION.getValue();
|
||||
@@ -35,8 +35,9 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
private int editingLine = -1;
|
||||
private boolean isModified = false;
|
||||
|
||||
public EditorDescriptionMenu(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, boolean isEditingDescription) {
|
||||
public EditorDescriptionMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner,
|
||||
boolean isEditingDescription)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner, true);
|
||||
|
||||
@@ -45,24 +46,25 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.totalPages = 1;
|
||||
|
||||
setMenu(
|
||||
0,
|
||||
Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_DESCRIPTION_MENU_TITLE.getValue())));
|
||||
setMenu(0, Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_DESCRIPTION_MENU_TITLE.getValue())));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {
|
||||
|
||||
setButton(0, 22, emptyItem, emptyAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {
|
||||
|
||||
setButton(0, 22, null, emptyAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,9 +81,11 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
editingLine = -1;
|
||||
|
||||
EditorLore.updatePreviewDecription(getItem(0, 49), description, targetHat);
|
||||
|
||||
}
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,10 +93,11 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
|
||||
setButton(0, 46, backButtonItem, backButtonAction);
|
||||
|
||||
ItemStack previewItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.WRITABLE_BOOK.getMaterial(), 1, Message.EDITOR_DESCRIPTION_MENU_PREVIEW.getValue());
|
||||
ItemStack previewItem = ItemUtil.createItem(CompatibleMaterial.WRITABLE_BOOK.getMaterial(), 1,
|
||||
Message.EDITOR_DESCRIPTION_MENU_PREVIEW.getValue());
|
||||
EditorLore.updatePreviewDecription(previewItem, getDescription(), targetHat);
|
||||
setButton(0, 49, previewItem, (event, slot) -> {
|
||||
|
||||
if (event.isShiftRightClick()) {
|
||||
|
||||
getDescription().clear();
|
||||
@@ -100,6 +105,7 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
for (int i = 0; i <= 27; i++) {
|
||||
|
||||
setItem(0, getNormalIndex(i, 10, 2), null);
|
||||
|
||||
}
|
||||
|
||||
setEmpty(true);
|
||||
@@ -109,36 +115,42 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
isModified = true;
|
||||
|
||||
return MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
});
|
||||
|
||||
// Add Line.
|
||||
ItemStack addItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1, Message.EDITOR_DESCRIPTION_MENU_ADD_LINE.getValue());
|
||||
ItemStack addItem = ItemUtil.createItem(CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1,
|
||||
Message.EDITOR_DESCRIPTION_MENU_ADD_LINE.getValue());
|
||||
setButton(0, 52, addItem, (event, slot) -> {
|
||||
|
||||
List<String> description = getDescription();
|
||||
int size = description.size();
|
||||
if (size <= 27) {
|
||||
|
||||
ItemStack item =
|
||||
ItemUtil.createItem(Material.PAPER, 1, lineTitle.replace("{1}", Integer.toString(size + 1)));
|
||||
ItemStack item = ItemUtil.createItem(Material.PAPER, 1,
|
||||
lineTitle.replace("{1}", Integer.toString(size + 1)));
|
||||
|
||||
description.add("");
|
||||
EditorLore.updatePreviewDecription(getItem(0, 49), getDescription(), targetHat);
|
||||
|
||||
setLineDescription(item, "");
|
||||
setItem(0, getNormalIndex(size, 10, 2), item);
|
||||
|
||||
}
|
||||
|
||||
setEmpty(false);
|
||||
isModified = true;
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
final MenuAction editAction = (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
if (event.isShiftClick()) {
|
||||
@@ -146,13 +158,14 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
onInsert(slot);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
}
|
||||
|
||||
editingLine = getClampedIndex(slot, 10, 2);
|
||||
editorManager.getOwnerState().setMetaDescriptionLine(editingLine);
|
||||
|
||||
MetaState metaState =
|
||||
isEditingDescription ? MetaState.HAT_DESCRIPTION : MetaState.HAT_PERMISSION_DESCRIPTION;
|
||||
MetaState metaState = isEditingDescription ? MetaState.HAT_DESCRIPTION
|
||||
: MetaState.HAT_PERMISSION_DESCRIPTION;
|
||||
editorManager.getOwnerState().setMetaState(metaState);
|
||||
core.prompt(owner, metaState);
|
||||
|
||||
@@ -167,14 +180,17 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
isModified = true;
|
||||
|
||||
return MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), editAction);
|
||||
|
||||
}
|
||||
|
||||
List<String> description = getDescription();
|
||||
@@ -184,17 +200,20 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
setEmpty(true);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < description.size(); i++) {
|
||||
|
||||
ItemStack lineItem =
|
||||
ItemUtil.createItem(Material.PAPER, 1, lineTitle.replace("{1}", Integer.toString(i + 1)));
|
||||
ItemStack lineItem = ItemUtil.createItem(Material.PAPER, 1,
|
||||
lineTitle.replace("{1}", Integer.toString(i + 1)));
|
||||
String line = description.get(i);
|
||||
|
||||
setLineDescription(lineItem, line);
|
||||
setItem(0, getNormalIndex(i, 10, 2), lineItem);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -207,11 +226,15 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
String menuName = editorManager.getMenuName();
|
||||
|
||||
database.saveMetaData(menuName, targetHat, type, 0);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSlot(int page, int slot) {
|
||||
@@ -227,28 +250,35 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
if (item == null) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
ItemUtil.setItemName(item, lineTitle.replace("{1}", Integer.toString(i + 1)));
|
||||
|
||||
}
|
||||
|
||||
if (getDescription().size() == 0) {
|
||||
|
||||
setEmpty(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the hat's description depending on the <b>isEditingDescription</b> value
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private List<String> getDescription() {
|
||||
|
||||
return isEditingDescription ? targetHat.getDescription() : targetHat.getPermissionDescription();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a line to this item's description
|
||||
*
|
||||
* @param item
|
||||
* @param line
|
||||
*/
|
||||
@@ -258,12 +288,14 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
if (!line.isEmpty() && line.charAt(0) != '&') {
|
||||
|
||||
prefix = "&5&o";
|
||||
|
||||
}
|
||||
|
||||
String s = line.equals("") ? descriptionInfo[1] : prefix + line;
|
||||
String d = lineDescription.replace(descriptionInfo[0], s);
|
||||
|
||||
ItemUtil.setItemDescription(item, StringUtil.parseDescription(d));
|
||||
|
||||
}
|
||||
|
||||
private void onInsert(int slot) {
|
||||
@@ -285,14 +317,18 @@ public class EditorDescriptionMenu extends AbstractListMenu {
|
||||
|
||||
setItem(0, fromSlot, null);
|
||||
setItem(0, toSlot, item);
|
||||
|
||||
}
|
||||
|
||||
ItemStack item =
|
||||
ItemUtil.createItem(Material.PAPER, 1, lineTitle.replace("{1}", Integer.toString(index + 1)));
|
||||
ItemStack item = ItemUtil.createItem(Material.PAPER, 1,
|
||||
lineTitle.replace("{1}", Integer.toString(index + 1)));
|
||||
EditorLore.updatePreviewDecription(getItem(0, 49), getDescription(), targetHat);
|
||||
|
||||
setLineDescription(item, "");
|
||||
setItem(0, getNormalIndex(index, 10, 2), item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,10 +24,11 @@ public class EditorDurationMenu extends AbstractStaticMenu {
|
||||
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.callback = callback;
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 27, Utils.legacySerializerAnyCase(Message.EDITOR_DURATION_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 27,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_DURATION_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -35,11 +36,12 @@ public class EditorDurationMenu extends AbstractStaticMenu {
|
||||
|
||||
setButton(12, backButtonItem, backButtonAction);
|
||||
|
||||
ItemStack durationItem =
|
||||
ItemUtil.createItem(Material.MAP, 1, Message.EDITOR_DURATION_MENU_SET_DURATION.getValue());
|
||||
EditorLore.updateDurationDescription(
|
||||
durationItem, targetHat.getDemoDuration(), Message.EDITOR_DURATION_MENU_DESCRIPTION);
|
||||
ItemStack durationItem = ItemUtil.createItem(Material.MAP, 1,
|
||||
Message.EDITOR_DURATION_MENU_SET_DURATION.getValue());
|
||||
EditorLore.updateDurationDescription(durationItem, targetHat.getDemoDuration(),
|
||||
Message.EDITOR_DURATION_MENU_DESCRIPTION);
|
||||
setButton(14, durationItem, (event, slot) -> {
|
||||
|
||||
int normalClick = event.isLeftClick() ? 20 : -20;
|
||||
int shiftClick = event.isShiftClick() ? 30 : 1;
|
||||
int modifier = normalClick * shiftClick;
|
||||
@@ -47,11 +49,13 @@ public class EditorDurationMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.setDemoDuration(duration);
|
||||
|
||||
EditorLore.updateDurationDescription(
|
||||
getItem(14), targetHat.getDemoDuration(), Message.EDITOR_DURATION_MENU_DESCRIPTION);
|
||||
EditorLore.updateDurationDescription(getItem(14), targetHat.getDemoDuration(),
|
||||
Message.EDITOR_DURATION_MENU_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -60,9 +64,14 @@ public class EditorDurationMenu extends AbstractStaticMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -38,8 +38,9 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
private final Message iconName = Message.EDITOR_ICON_MENU_ITEM_INFO;
|
||||
private final Message iconDescription = Message.EDITOR_ICON_MENU_ITEM_DESCRIPTION;
|
||||
|
||||
public EditorIconMenuOverview(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, MenuObjectCallback callback) {
|
||||
public EditorIconMenuOverview(CosmeticsOG core, EditorMenuManager menuManager, Player owner,
|
||||
MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner, true);
|
||||
|
||||
@@ -48,19 +49,22 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
this.targetHat = editorManager.getBaseHat();
|
||||
this.totalPages = 1;
|
||||
|
||||
setMenu(
|
||||
0,
|
||||
Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_ICON_OVERVIEW_MENU_TITLE.getValue())));
|
||||
setMenu(0, Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_ICON_OVERVIEW_MENU_TITLE.getValue())));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {}
|
||||
public void insertEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {}
|
||||
public void removeEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
@@ -71,15 +75,19 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
ItemStack mainItem = targetHat.getItem();
|
||||
ItemUtil.setItemName(mainItem, Message.EDITOR_ICON_MENU_SET_MAIN_ICON);
|
||||
setButton(0, 10, mainItem, (event, slot) -> {
|
||||
|
||||
editingIndex = 0;
|
||||
|
||||
EditorItemPromptMenu editorItemPromptMenu = new EditorItemPromptMenu(
|
||||
core, editorManager, owner, iconTitle, iconName, iconDescription, (item) -> {
|
||||
EditorItemPromptMenu editorItemPromptMenu = new EditorItemPromptMenu(core, editorManager, owner, iconTitle,
|
||||
iconName, iconDescription, (item) ->
|
||||
{
|
||||
|
||||
editorManager.closeCurrentMenu();
|
||||
|
||||
if (item == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack i = ((ItemStack) item).clone();
|
||||
@@ -96,6 +104,7 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
Damageable meta = (Damageable) i.getItemMeta();
|
||||
|
||||
durability = meta.getDamage();
|
||||
|
||||
}
|
||||
|
||||
// Set the item type with the correct material and durability.
|
||||
@@ -105,6 +114,7 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
targetHat.setItem(i);
|
||||
|
||||
isModified = true;
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemPromptMenu);
|
||||
@@ -112,68 +122,70 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
editorItemPromptMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Preview Icon.
|
||||
setItem(
|
||||
0,
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.SUNFLOWER.getMaterial(), 1, Message.EDITOR_ICON_MENU_PREVIEW.getValue()));
|
||||
setItem(0, 48, ItemUtil.createItem(CompatibleMaterial.SUNFLOWER.getMaterial(), 1,
|
||||
Message.EDITOR_ICON_MENU_PREVIEW.getValue()));
|
||||
|
||||
// Display Mode.
|
||||
ItemStack displayItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.ROSE_RED.getMaterial(), 1, Message.EDITOR_ICON_MENU_SET_DISPLAY_MODE.getValue());
|
||||
EditorLore.updateDisplayModeDescription(
|
||||
displayItem,
|
||||
targetHat.getIconData().getDisplayMode(),
|
||||
ItemStack displayItem = ItemUtil.createItem(CompatibleMaterial.ROSE_RED.getMaterial(), 1,
|
||||
Message.EDITOR_ICON_MENU_SET_DISPLAY_MODE.getValue());
|
||||
EditorLore.updateDisplayModeDescription(displayItem, targetHat.getIconData().getDisplayMode(),
|
||||
Message.EDITOR_ICON_MENU_DISPLAY_MODE_DESCRIPTION);
|
||||
setButton(0, 50, displayItem, (event, slot) -> {
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
final int modeID =
|
||||
MathUtil.wrap(targetHat.getDisplayMode().getID() + increment, IconDisplayMode.values().length, 0);
|
||||
final int modeID = MathUtil.wrap(targetHat.getDisplayMode().getID() + increment,
|
||||
IconDisplayMode.values().length, 0);
|
||||
final IconDisplayMode mode = IconDisplayMode.fromId(modeID);
|
||||
|
||||
targetHat.setDisplayMode(mode);
|
||||
|
||||
EditorLore.updateDisplayModeDescription(
|
||||
getItem(0, 50), mode, Message.EDITOR_ICON_MENU_DISPLAY_MODE_DESCRIPTION);
|
||||
EditorLore.updateDisplayModeDescription(getItem(0, 50), mode,
|
||||
Message.EDITOR_ICON_MENU_DISPLAY_MODE_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Update Frequency.
|
||||
ItemStack frequencyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_ICON_MENU_SET_UPDATE_FREQUENCY.getValue());
|
||||
EditorLore.updateFrequencyDescription(
|
||||
frequencyItem,
|
||||
targetHat.getIconUpdateFrequency(),
|
||||
ItemStack frequencyItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_ICON_MENU_SET_UPDATE_FREQUENCY.getValue());
|
||||
EditorLore.updateFrequencyDescription(frequencyItem, targetHat.getIconUpdateFrequency(),
|
||||
Message.EDITOR_ICON_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
setButton(0, 49, frequencyItem, (event, slot) -> {
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
final int frequency = (int) MathUtil.clamp(targetHat.getIconUpdateFrequency() + increment, 1, 63);
|
||||
|
||||
targetHat.setIconUpdateFrequency(frequency);
|
||||
|
||||
EditorLore.updateFrequencyDescription(
|
||||
getItem(0, 49), frequency, Message.EDITOR_ICON_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
EditorLore.updateFrequencyDescription(getItem(0, 49), frequency,
|
||||
Message.EDITOR_ICON_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Edit Action.
|
||||
MenuAction editAction = (event, slot) -> {
|
||||
|
||||
editingIndex = getClampedIndex(slot, 10, 2);
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorItemPromptMenu editorItemPromptMenu = new EditorItemPromptMenu(
|
||||
core, editorManager, owner, iconTitle, iconName, iconDescription, (item) -> {
|
||||
EditorItemPromptMenu editorItemPromptMenu = new EditorItemPromptMenu(core, editorManager, owner,
|
||||
iconTitle, iconName, iconDescription, (item) ->
|
||||
{
|
||||
|
||||
editorManager.closeCurrentMenu();
|
||||
|
||||
if (item == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack editingItem = ((ItemStack) item).clone();
|
||||
@@ -193,6 +205,7 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
Damageable meta = (Damageable) editingItem.getItemMeta();
|
||||
|
||||
damage = meta.getDamage();
|
||||
|
||||
}
|
||||
|
||||
// Get the current item from the inventory slot.
|
||||
@@ -208,6 +221,7 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
targetHat.getIconData().updateItem(editingIndex, currentItem);
|
||||
|
||||
isModified = true;
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemPromptMenu);
|
||||
@@ -219,14 +233,17 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
deleteSlot(0, slot);
|
||||
|
||||
return MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 1; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), editAction);
|
||||
|
||||
}
|
||||
|
||||
// Current Items.
|
||||
@@ -235,8 +252,7 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
|
||||
ItemStackTemplate itemTemplate = items.get(i);
|
||||
String displayName = Message.EDITOR_ICON_MENU_ITEM_PREFIX.getValue()
|
||||
+ StringUtil.capitalizeFirstLetter(
|
||||
itemTemplate.getMaterial().toString().toLowerCase());
|
||||
+ StringUtil.capitalizeFirstLetter(itemTemplate.getMaterial().toString().toLowerCase());
|
||||
ItemStack item = ItemUtil.createItem(itemTemplate.getMaterial(), 1, itemTemplate.getDurability());
|
||||
|
||||
int index = getNormalIndex(i, 10, 2);
|
||||
@@ -244,24 +260,28 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
// Convert the display name to TextComponent using TrueOG Utils for color codes.
|
||||
TextComponent nameComponent = Utils.legacySerializerAnyCase(displayName);
|
||||
|
||||
// Parse and process the description if it's a List<String>, converting it to List<TextComponent>.
|
||||
List<TextComponent> descriptionComponent =
|
||||
StringUtil.parseDescription(Message.EDITOR_ICON_MENU_ICON_DESCRIPTION.getValue()).stream()
|
||||
.filter(component ->
|
||||
component instanceof TextComponent) // Filter only TextComponent instances.
|
||||
.map(component -> (TextComponent) component) // Cast Component to TextComponent.
|
||||
.collect(Collectors.toList());
|
||||
// Parse and process the description if it's a List<String>, converting it to
|
||||
// List<TextComponent>.
|
||||
List<TextComponent> descriptionComponent = StringUtil
|
||||
.parseDescription(Message.EDITOR_ICON_MENU_ICON_DESCRIPTION.getValue()).stream()
|
||||
.filter(component -> component instanceof TextComponent) // Filter only TextComponent instances.
|
||||
.map(component -> (TextComponent) component) // Cast Component to TextComponent.
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// Safely convert List<TextComponent> to List<Component> without unchecked cast.
|
||||
List<Component> description = descriptionComponent.stream()
|
||||
.map(textComponent -> (Component) textComponent) // Cast TextComponent to Component.
|
||||
List<Component> description = descriptionComponent.stream().map(textComponent -> (Component) textComponent) // Cast
|
||||
// TextComponent
|
||||
// to
|
||||
// Component.
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// Call ItemUtil.setNameAndDescription with the correct types.
|
||||
ItemUtil.setNameAndDescription(item, nameComponent, description);
|
||||
|
||||
setItem(0, index, item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -272,7 +292,9 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
core.getDatabase().saveMetaData(editorManager.getMenuName(), targetHat, DataType.ICON, 0);
|
||||
|
||||
isModified = false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -283,10 +305,12 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
if (iconData == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStackTemplate itemTemplate = iconData.getNextItem(ticks);
|
||||
ItemUtil.setItemType(getItem(0, 48), itemTemplate.getMaterial(), itemTemplate.getDurability());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -298,5 +322,7 @@ public class EditorIconMenuOverview extends AbstractListMenu {
|
||||
targetHat.getIconData().removeItem(getClampedIndex(slot, 10, 2));
|
||||
|
||||
isModified = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,14 +25,9 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
|
||||
private boolean isSearching = false;
|
||||
|
||||
public EditorItemPromptMenu(
|
||||
CosmeticsOG core,
|
||||
EditorMenuManager menuManager,
|
||||
Player owner,
|
||||
Message title,
|
||||
Message itemName,
|
||||
Message itemDescription,
|
||||
MenuObjectCallback callback) {
|
||||
public EditorItemPromptMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, Message title,
|
||||
Message itemName, Message itemDescription, MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
@@ -43,6 +38,7 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
this.inventory = Bukkit.createInventory(null, 54, Utils.legacySerializerAnyCase(title.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,6 +48,7 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
if (item == null) {
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
}
|
||||
|
||||
ItemStack i = new ItemStack(item.getType(), 1);
|
||||
@@ -60,29 +57,32 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
callback.onSelect(i);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
|
||||
ItemStack info = ItemUtil.createItem(
|
||||
CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(), 1, itemName.getValue());
|
||||
ItemStack info = ItemUtil.createItem(CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(), 1,
|
||||
itemName.getValue());
|
||||
|
||||
ItemUtil.setItemDescription(info, StringUtil.parseDescription(itemDescription.getValue()));
|
||||
|
||||
for (int i = 0; i < inventory.getSize(); i++) {
|
||||
|
||||
setItem(i, info);
|
||||
|
||||
}
|
||||
|
||||
// Back Button.
|
||||
setButton(10, backButtonItem, backButtonAction);
|
||||
|
||||
// Search Button.
|
||||
setButton(
|
||||
37,
|
||||
setButton(37,
|
||||
ItemUtil.createItem(CompatibleMaterial.SIGN.getMaterial(), 1, Message.EDITOR_MISC_SEARCH.getValue()),
|
||||
(event, slot) -> {
|
||||
(event, slot) ->
|
||||
{
|
||||
|
||||
isSearching = true;
|
||||
|
||||
core.getPlayerState(owner).setMetaState(MetaState.BLOCK_SEARCH);
|
||||
@@ -91,14 +91,17 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
menuManager.closeInventory();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Recents.
|
||||
MenuAction selectRecentAction = (event, slot) -> {
|
||||
|
||||
ItemStack item = event.getEvent().getCurrentItem();
|
||||
if (item == null) {
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
}
|
||||
|
||||
ItemStack i = new ItemStack(item.getType(), 1);
|
||||
@@ -107,17 +110,19 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
callback.onSelect(i);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
List<ItemStack> recentItems = editorManager.getOwnerState().getRecentItems();
|
||||
List<Component> description =
|
||||
StringUtil.parseDescription(Message.EDITOR_ICON_MENU_RECENTS_DESCRIPTION.getValue());
|
||||
List<Component> description = StringUtil
|
||||
.parseDescription(Message.EDITOR_ICON_MENU_RECENTS_DESCRIPTION.getValue());
|
||||
int index = 0;
|
||||
for (ItemStack item : recentItems) {
|
||||
|
||||
if (index >= 20) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack i = item.clone();
|
||||
@@ -125,7 +130,9 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
ItemUtil.setItemDescription(i, description);
|
||||
|
||||
setButton(getNormalIndex(index++, 12, 4), i, selectRecentAction);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -142,29 +149,41 @@ public class EditorItemPromptMenu extends AbstractStaticMenu {
|
||||
|
||||
editorManager.resetMetaArgument();
|
||||
|
||||
EditorSearchMenu editorSearchMenu =
|
||||
new EditorSearchMenu(core, menuManager, owner, searchQuery, (item) -> {
|
||||
EditorSearchMenu editorSearchMenu = new EditorSearchMenu(core, menuManager, owner, searchQuery,
|
||||
(item) ->
|
||||
{
|
||||
|
||||
ItemStack i = (ItemStack) item;
|
||||
if (i == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
editorManager.getOwnerState().addRecentItem(i);
|
||||
callback.onSelect(i);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorSearchMenu);
|
||||
|
||||
editorSearchMenu.open();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,8 +25,8 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
private final Message iconName = Message.EDITOR_ICON_MENU_ITEM_INFO;
|
||||
private final Message iconDescription = Message.EDITOR_ICON_MENU_ITEM_DESCRIPTION;
|
||||
|
||||
private final ItemStack emptyItem =
|
||||
ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1, Message.EDITOR_MISC_EMPTY_MENU.getValue());
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_EMPTY_MENU.getValue());
|
||||
|
||||
private final EditorMenuManager editorManager;
|
||||
private final MenuCallback callback;
|
||||
@@ -37,8 +37,9 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
private boolean dataModified = false;
|
||||
private boolean itemModified = false;
|
||||
|
||||
public EditorItemStackMenu(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex, MenuCallback callback) {
|
||||
public EditorItemStackMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex,
|
||||
MenuCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner, true);
|
||||
|
||||
@@ -48,15 +49,19 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
this.targetHat = menuManager.getTargetHat();
|
||||
this.totalPages = 1;
|
||||
this.itemAction = (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(
|
||||
core, editorManager, owner, iconTitle, iconName, iconDescription, (item) -> {
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(core, editorManager, owner, iconTitle,
|
||||
iconName, iconDescription, (item) ->
|
||||
{
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
if (item == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack i = (ItemStack) item;
|
||||
@@ -72,6 +77,7 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
Damageable meta = (Damageable) i.getItemMeta();
|
||||
|
||||
damage = meta.getDamage();
|
||||
|
||||
}
|
||||
|
||||
// Set the material and durability for the current item.
|
||||
@@ -83,10 +89,10 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
ItemUtil.setItemName(currentItem, displayName);
|
||||
|
||||
// Update the item in the target's item data.
|
||||
ItemStackData itemStackData =
|
||||
targetHat.getParticleData(particleIndex).getItemStackData();
|
||||
ItemStackData itemStackData = targetHat.getParticleData(particleIndex).getItemStackData();
|
||||
itemStackData.updateItem(getClampedIndex(slot, 10, 2), i);
|
||||
itemModified = true;
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemMenu);
|
||||
@@ -98,29 +104,32 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
deleteSlot(0, slot);
|
||||
|
||||
return MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
setMenu(
|
||||
0,
|
||||
Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_ITEMSTACK_MENU_TITLE.getValue())));
|
||||
setMenu(0, Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_ITEMSTACK_MENU_TITLE.getValue())));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {
|
||||
|
||||
setButton(0, 22, emptyItem, emptyAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {
|
||||
|
||||
setButton(0, 22, null, itemAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -130,16 +139,20 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
|
||||
setButton(0, 46, backButtonItem, backButtonAction);
|
||||
|
||||
ItemStack velocityItem =
|
||||
ItemUtil.createItem(Material.ARROW, 1, Message.EDITOR_ITEMSTACK_MENU_SET_VELOCITY.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
velocityItem, itemStackData.getVelocity(), Message.EDITOR_ITEMSTACK_MENU_VELOCITY_DESCRIPTION);
|
||||
ItemStack velocityItem = ItemUtil.createItem(Material.ARROW, 1,
|
||||
Message.EDITOR_ITEMSTACK_MENU_SET_VELOCITY.getValue());
|
||||
EditorLore.updateVectorDescription(velocityItem, itemStackData.getVelocity(),
|
||||
Message.EDITOR_ITEMSTACK_MENU_VELOCITY_DESCRIPTION);
|
||||
setButton(0, 48, velocityItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorVelocityMenu editorVelocityMenu =
|
||||
new EditorVelocityMenu(core, editorManager, owner, particleIndex, () -> {
|
||||
EditorVelocityMenu editorVelocityMenu = new EditorVelocityMenu(core, editorManager, owner,
|
||||
particleIndex, () ->
|
||||
{
|
||||
|
||||
onVelocityChange();
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorVelocityMenu);
|
||||
@@ -152,33 +165,36 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
data.setVelocity(0, 0, 0);
|
||||
|
||||
onVelocityChange();
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack gravityItem =
|
||||
ItemUtil.createItem(Material.LEATHER_BOOTS, 1, Message.EDITOR_ITEMSTACK_MENU_TOGGLE_GRAVITY.getValue());
|
||||
EditorLore.updateBooleanDescription(
|
||||
gravityItem, itemStackData.hasGravity(), Message.EDITOR_ITEMSTACK_MENU_GRAVITY_DESCRIPTION);
|
||||
ItemStack gravityItem = ItemUtil.createItem(Material.LEATHER_BOOTS, 1,
|
||||
Message.EDITOR_ITEMSTACK_MENU_TOGGLE_GRAVITY.getValue());
|
||||
EditorLore.updateBooleanDescription(gravityItem, itemStackData.hasGravity(),
|
||||
Message.EDITOR_ITEMSTACK_MENU_GRAVITY_DESCRIPTION);
|
||||
setButton(0, 49, gravityItem, (event, slot) -> {
|
||||
|
||||
ItemStackData data = targetHat.getParticleData(particleIndex).getItemStackData();
|
||||
data.setGravity(!data.hasGravity());
|
||||
dataModified = true;
|
||||
|
||||
EditorLore.updateBooleanDescription(
|
||||
getItem(0, 49), data.hasGravity(), Message.EDITOR_ITEMSTACK_MENU_GRAVITY_DESCRIPTION);
|
||||
EditorLore.updateBooleanDescription(getItem(0, 49), data.hasGravity(),
|
||||
Message.EDITOR_ITEMSTACK_MENU_GRAVITY_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack durationItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.FIREWORK_STAR.getMaterial(),
|
||||
1,
|
||||
ItemStack durationItem = ItemUtil.createItem(CompatibleMaterial.FIREWORK_STAR.getMaterial(), 1,
|
||||
Message.EDITOR_ITEMSTACK_MENU_SET_DURATION.getValue());
|
||||
EditorLore.updateDurationDescription(
|
||||
durationItem, itemStackData.getDuration(), Message.EDITOR_ITEMSTACK_MENU_DURATION_DESCRIPTION);
|
||||
EditorLore.updateDurationDescription(durationItem, itemStackData.getDuration(),
|
||||
Message.EDITOR_ITEMSTACK_MENU_DURATION_DESCRIPTION);
|
||||
setButton(0, 50, durationItem, (event, slot) -> {
|
||||
|
||||
int normalClick = event.isLeftClick() ? 20 : -20;
|
||||
int shiftClick = event.isShiftClick() ? 30 : 1;
|
||||
int modifier = normalClick * shiftClick;
|
||||
@@ -188,37 +204,45 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
data.setDuration(duration);
|
||||
dataModified = true;
|
||||
|
||||
EditorLore.updateDurationDescription(
|
||||
getItem(0, 50), data.getDuration(), Message.EDITOR_ITEMSTACK_MENU_DURATION_DESCRIPTION);
|
||||
EditorLore.updateDurationDescription(getItem(0, 50), data.getDuration(),
|
||||
Message.EDITOR_ITEMSTACK_MENU_DURATION_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack addItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1, Message.EDITOR_ITEMSTACK_MENU_ADD_ITEM.getValue());
|
||||
ItemStack addItem = ItemUtil.createItem(CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1,
|
||||
Message.EDITOR_ITEMSTACK_MENU_ADD_ITEM.getValue());
|
||||
setButton(0, 52, addItem, (event, slot) -> {
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(
|
||||
core, editorManager, owner, iconTitle, iconName, iconDescription, (item) -> {
|
||||
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(core, editorManager, owner, iconTitle,
|
||||
iconName, iconDescription, (item) ->
|
||||
{
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
if (item == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack i = (ItemStack) item;
|
||||
addItem(slot, i);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemMenu);
|
||||
editorItemMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getClampedIndex(i, 10, 2), itemAction);
|
||||
|
||||
}
|
||||
|
||||
List<ItemStack> items = itemStackData.getItems();
|
||||
@@ -227,21 +251,22 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
setEmpty(true);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
|
||||
ItemStack item = items.get(i);
|
||||
String displayName =
|
||||
Message.EDITOR_ICON_MENU_ITEM_PREFIX.getValue() + StringUtil.getMaterialName(item.getType());
|
||||
String displayName = Message.EDITOR_ICON_MENU_ITEM_PREFIX.getValue()
|
||||
+ StringUtil.getMaterialName(item.getType());
|
||||
|
||||
ItemUtil.setNameAndDescription(
|
||||
item,
|
||||
Utils.legacySerializerAnyCase(displayName),
|
||||
ItemUtil.setNameAndDescription(item, Utils.legacySerializerAnyCase(displayName),
|
||||
StringUtil.parseDescription(Message.EDITOR_ICON_MENU_ICON_DESCRIPTION.getValue()));
|
||||
|
||||
setItem(0, getNormalIndex(i, 10, 2), item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -252,17 +277,22 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
if (dataModified) {
|
||||
|
||||
core.getDatabase().saveParticleData(name, targetHat, particleIndex);
|
||||
|
||||
}
|
||||
|
||||
if (itemModified) {
|
||||
|
||||
core.getDatabase().saveMetaData(name, targetHat, DataType.ITEMSTACK, particleIndex);
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
private void addItem(int slot, ItemStack item) {
|
||||
|
||||
@@ -274,17 +304,18 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
if (size > 27) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Material material = item.getType();
|
||||
ItemStack i = ItemUtil.createItem(
|
||||
material,
|
||||
ItemStack i = ItemUtil.createItem(material,
|
||||
Message.EDITOR_ICON_MENU_ITEM_PREFIX.getValue() + StringUtil.getMaterialName(material),
|
||||
StringUtil.parseDescription(Message.EDITOR_ICON_MENU_ICON_DESCRIPTION.getValue()));
|
||||
|
||||
itemStackData.addItem(item);
|
||||
setItem(0, getNormalIndex(size, 10, 2), i);
|
||||
itemModified = true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -299,7 +330,9 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
if (itemStackData.getItems().isEmpty()) {
|
||||
|
||||
setEmpty(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void onVelocityChange() {
|
||||
@@ -307,7 +340,9 @@ public class EditorItemStackMenu extends AbstractListMenu {
|
||||
dataModified = true;
|
||||
|
||||
ItemStackData itemStackData = targetHat.getParticleData(particleIndex).getItemStackData();
|
||||
EditorLore.updateVectorDescription(
|
||||
getItem(0, 48), itemStackData.getVelocity(), Message.EDITOR_ITEMSTACK_MENU_VELOCITY_DESCRIPTION);
|
||||
EditorLore.updateVectorDescription(getItem(0, 48), itemStackData.getVelocity(),
|
||||
Message.EDITOR_ITEMSTACK_MENU_VELOCITY_DESCRIPTION);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -42,14 +42,13 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
protected final Hat targetHat;
|
||||
protected final PlayerState ownerState;
|
||||
|
||||
protected final ItemStack noParticleItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.BARRIER.getMaterial(),
|
||||
protected final ItemStack noParticleItem = ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(),
|
||||
Message.EDITOR_MAIN_MENU_NO_PARTICLES.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_NO_PARTICLES_DESCRIPTION.getValue()));
|
||||
protected final ItemStack singleParticleItem =
|
||||
ItemUtil.createItem(Material.REDSTONE, 1, Message.EDITOR_MAIN_MENU_SET_PARTICLE.getValue());
|
||||
protected final ItemStack multipleParticlesItem =
|
||||
ItemUtil.createItem(Material.BUCKET, 1, Message.EDITOR_MAIN_MENU_EDIT_PARTICLES.getValue());
|
||||
protected final ItemStack singleParticleItem = ItemUtil.createItem(Material.REDSTONE, 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_PARTICLE.getValue());
|
||||
protected final ItemStack multipleParticlesItem = ItemUtil.createItem(Material.BUCKET, 1,
|
||||
Message.EDITOR_MAIN_MENU_EDIT_PARTICLES.getValue());
|
||||
|
||||
protected final MenuAction setParticleAction;
|
||||
protected final MenuAction editParticleAction;
|
||||
@@ -63,18 +62,22 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
this.editorBaseMenu = menuManager.getEditingMenu();
|
||||
this.targetHat = editorManager.getTargetHat();
|
||||
this.ownerState = core.getPlayerState(owner);
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_MAIN_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_MAIN_MENU_TITLE.getValue()));
|
||||
|
||||
setParticleAction = (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorParticleSelectionMenu editorParticleMenu =
|
||||
new EditorParticleSelectionMenu(core, menuManager, owner, 0, (particle) -> {
|
||||
EditorParticleSelectionMenu editorParticleMenu = new EditorParticleSelectionMenu(core, menuManager,
|
||||
owner, 0, (particle) ->
|
||||
{
|
||||
|
||||
ParticleEffect pe = (ParticleEffect) particle;
|
||||
if (pe == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
targetHat.setParticle(0, pe);
|
||||
@@ -85,9 +88,11 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
if (targetHat.getEffect().getParticlesSupported() == 1) {
|
||||
|
||||
EditorLore.updateParticleDescription(getItem(particleButtonSlot), targetHat, 0);
|
||||
|
||||
}
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorParticleMenu);
|
||||
@@ -97,28 +102,35 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
onParticleEdit(getItem(particleButtonSlot), 0);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
editParticleAction = (event, slot) -> {
|
||||
EditorParticleMenuOverview editorParticleMenuOverview =
|
||||
new EditorParticleMenuOverview(core, editorManager, owner, this);
|
||||
|
||||
EditorParticleMenuOverview editorParticleMenuOverview = new EditorParticleMenuOverview(core, editorManager,
|
||||
owner, this);
|
||||
menuManager.addMenu(editorParticleMenuOverview);
|
||||
|
||||
editorParticleMenuOverview.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
noParticle4U = (event, slot) -> {
|
||||
|
||||
CompatibleSound.ENTITY_VILLAGER_NO.play(owner, 1.0f, 1.0f);
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -130,10 +142,11 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
setButton(46, mainMenuButtonItem, backButtonAction);
|
||||
|
||||
// Item Meta.
|
||||
ItemStack metaItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.SIGN.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_META.getValue());
|
||||
ItemStack metaItem = ItemUtil.createItem(CompatibleMaterial.SIGN.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_META.getValue());
|
||||
EditorLore.updateGenericDescription(metaItem, Message.EDITOR_MAIN_MENU_META_DESCRIPTION);
|
||||
setButton(13, metaItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorMetaMenu editorMetaMenu = new EditorMetaMenu(core, editorManager, owner);
|
||||
@@ -143,50 +156,58 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
EditorDescriptionMenu editorDescriptionMenu =
|
||||
new EditorDescriptionMenu(core, editorManager, owner, true);
|
||||
EditorDescriptionMenu editorDescriptionMenu = new EditorDescriptionMenu(core, editorManager, owner,
|
||||
true);
|
||||
menuManager.addMenu(editorDescriptionMenu);
|
||||
|
||||
editorDescriptionMenu.open();
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Price.
|
||||
ItemStack priceItem =
|
||||
ItemUtil.createItem(Material.GOLD_NUGGET, 1, Message.EDITOR_MAIN_MENU_SET_PRICE.getValue());
|
||||
ItemStack priceItem = ItemUtil.createItem(Material.GOLD_NUGGET, 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_PRICE.getValue());
|
||||
EditorLore.updatePriceDescription(priceItem, targetHat.getPrice(), Message.EDITOR_MAIN_MENU_PRICE_DESCRIPTION);
|
||||
setButton(15, priceItem, (event, slot) -> {
|
||||
|
||||
final int increment = (event.isLeftClick() ? 1 : -1) * (event.isShiftClick() ? 10 : 1);
|
||||
final int price = targetHat.getPrice() + increment;
|
||||
|
||||
targetHat.setPrice(price);
|
||||
EditorLore.updatePriceDescription(
|
||||
getItem(15), targetHat.getPrice(), Message.EDITOR_MAIN_MENU_PRICE_DESCRIPTION);
|
||||
EditorLore.updatePriceDescription(getItem(15), targetHat.getPrice(),
|
||||
Message.EDITOR_MAIN_MENU_PRICE_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
// Sound.
|
||||
ItemStack soundItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSIC_DISC_STRAD.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_SOUND.getValue());
|
||||
ItemStack soundItem = ItemUtil.createItem(CompatibleMaterial.MUSIC_DISC_STRAD.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_SOUND.getValue());
|
||||
EditorLore.updateSoundItemDescription(soundItem, targetHat);
|
||||
setButton(28, soundItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorSoundMenu editorSoundMenu = new EditorSoundMenu(core, editorManager, owner, (sound) -> {
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
if (sound == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Sound s = (Sound) sound;
|
||||
|
||||
targetHat.setSound(s);
|
||||
EditorLore.updateSoundItemDescription(getItem(28), targetHat);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorSoundMenu);
|
||||
@@ -197,17 +218,19 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.removeSound();
|
||||
EditorLore.updateSoundItemDescription(getItem(28), targetHat);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Clone.
|
||||
ItemStack cloneItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.PRISMARINE_SHARD.getMaterial(),
|
||||
ItemStack cloneItem = ItemUtil.createItem(CompatibleMaterial.PRISMARINE_SHARD.getMaterial(),
|
||||
Message.EDITOR_MAIN_MENU_CLONE.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_CLONE_DESCRIPTION.getValue()));
|
||||
setButton(30, cloneItem, (event, slot) -> {
|
||||
|
||||
if (targetHat.isModified()) {
|
||||
|
||||
int targetSlot = editorManager.getTargetSlot();
|
||||
@@ -215,6 +238,7 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
core.getDatabase().saveHat(editorBaseMenu.getMenuInventory().getName(), targetSlot, targetHat);
|
||||
|
||||
targetHat.clearPropertyChanges();
|
||||
|
||||
}
|
||||
|
||||
EditorSlotMenu editorSlotMenu = new EditorSlotMenu(core, editorManager, owner, editorBaseMenu, true);
|
||||
@@ -223,28 +247,33 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
editorSlotMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Move.
|
||||
ItemStack moveItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.MAP.getMaterial(),
|
||||
ItemStack moveItem = ItemUtil.createItem(CompatibleMaterial.MAP.getMaterial(),
|
||||
Message.EDITOR_MAIN_MENU_MOVE.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_MOVE_DESCRIPTION.getValue()));
|
||||
setButton(32, moveItem, (event, slot) -> {
|
||||
EditorMenuSelectionMenu editorMenuSelectionMenu =
|
||||
new EditorMenuSelectionMenu(core, editorManager, owner, false, (menuName) -> {
|
||||
|
||||
EditorMenuSelectionMenu editorMenuSelectionMenu = new EditorMenuSelectionMenu(core, editorManager, owner,
|
||||
false, (menuName) ->
|
||||
{
|
||||
|
||||
if (menuName == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
String name = (String) menuName;
|
||||
EditorTransferMenu editorTransferMenu =
|
||||
new EditorTransferMenu(core, editorManager, owner, name);
|
||||
EditorTransferMenu editorTransferMenu = new EditorTransferMenu(core, editorManager, owner,
|
||||
name);
|
||||
|
||||
menuManager.addMenu(editorTransferMenu);
|
||||
|
||||
editorTransferMenu.open();
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorMenuSelectionMenu);
|
||||
@@ -252,46 +281,51 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
editorMenuSelectionMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Node.
|
||||
ItemStack nodeItem = ItemUtil.createItem(
|
||||
Material.ANVIL,
|
||||
Message.EDITOR_MAIN_MENU_EDIT_NODES.getValue(),
|
||||
ItemStack nodeItem = ItemUtil.createItem(Material.ANVIL, Message.EDITOR_MAIN_MENU_EDIT_NODES.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_NODE_DESCRIPTION.getValue()));
|
||||
setButton(34, nodeItem, (event, slot) -> {
|
||||
|
||||
EditorNodeMenuOverview editorNodeMenuOverview = new EditorNodeMenuOverview(core, editorManager, owner);
|
||||
menuManager.addMenu(editorNodeMenuOverview);
|
||||
|
||||
editorNodeMenuOverview.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Slot.
|
||||
ItemStack slotItem = ItemUtil.createItem(
|
||||
Material.ITEM_FRAME,
|
||||
Message.EDITOR_MAIN_MENU_SET_SLOT.getValue(),
|
||||
ItemStack slotItem = ItemUtil.createItem(Material.ITEM_FRAME, Message.EDITOR_MAIN_MENU_SET_SLOT.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_SLOT_DESCRIPTION.getValue()));
|
||||
setButton(38, slotItem, (event, slot) -> {
|
||||
|
||||
EditorSlotMenu editorSlotMenu = new EditorSlotMenu(core, editorManager, owner, editorBaseMenu, false);
|
||||
menuManager.addMenu(editorSlotMenu);
|
||||
|
||||
editorSlotMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Icon.
|
||||
ItemStack iconItem = targetHat.getItem();
|
||||
ItemUtil.setNameAndDescription(
|
||||
iconItem, Message.EDITOR_MAIN_MENU_SET_ICON, Message.EDITOR_MAIN_MENU_ICON_DESCRIPTION);
|
||||
ItemUtil.setNameAndDescription(iconItem, Message.EDITOR_MAIN_MENU_SET_ICON,
|
||||
Message.EDITOR_MAIN_MENU_ICON_DESCRIPTION);
|
||||
setButton(41, iconItem, (event, slot) -> {
|
||||
EditorIconMenuOverview editorIconMenuOverview =
|
||||
new EditorIconMenuOverview(core, editorManager, owner, (mainItem) -> {
|
||||
|
||||
EditorIconMenuOverview editorIconMenuOverview = new EditorIconMenuOverview(core, editorManager, owner,
|
||||
(mainItem) ->
|
||||
{
|
||||
|
||||
if (mainItem == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack item = (ItemStack) mainItem;
|
||||
@@ -300,6 +334,7 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
int damage = 0;
|
||||
|
||||
ItemUtil.setItemType(getItem(41), material, damage);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorIconMenuOverview);
|
||||
@@ -307,16 +342,20 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
editorIconMenuOverview.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Potion.
|
||||
ItemStack potionItem = ItemUtil.createItem(Material.POTION, 1, Message.EDITOR_MAIN_MENU_SET_POTION.getValue());
|
||||
EditorLore.updatePotionDescription(potionItem, targetHat.getPotion());
|
||||
setButton(42, potionItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorPotionMenu editorPotionMenu = new EditorPotionMenu(core, editorManager, owner, () -> {
|
||||
|
||||
EditorLore.updatePotionDescription(getItem(42), targetHat.getPotion());
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorPotionMenu);
|
||||
@@ -327,28 +366,30 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.removePotion();
|
||||
EditorLore.updatePotionDescription(getItem(42), targetHat.getPotion());
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
protected void buildSection() {
|
||||
|
||||
// Equip.
|
||||
ItemStack equipItem = ItemUtil.createItem(
|
||||
Material.DIAMOND_HELMET,
|
||||
Message.EDITOR_MISC_EQUIP.getValue(),
|
||||
ItemStack equipItem = ItemUtil.createItem(Material.DIAMOND_HELMET, Message.EDITOR_MISC_EQUIP.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_EQUIP_DESCRIPTION.getValue()));
|
||||
setButton(equipButtonSlot, equipItem, (event, slot) -> {
|
||||
|
||||
// Stop if the player has more than the maximum allowed hats.
|
||||
if (!ownerState.canEquip()) {
|
||||
|
||||
owner.sendMessage(Message.HAT_EQUIPPED_OVERFLOW.replace(
|
||||
"{1}", Integer.toString(SettingsManager.MAXIMUM_HAT_LIMIT.getInt())));
|
||||
owner.sendMessage(Message.HAT_EQUIPPED_OVERFLOW.replace("{1}",
|
||||
Integer.toString(SettingsManager.MAXIMUM_HAT_LIMIT.getInt())));
|
||||
|
||||
return MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
Hat clone;
|
||||
@@ -360,6 +401,7 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
clone = editorManager.getBaseHat().equippableClone();
|
||||
|
||||
}
|
||||
|
||||
clone.setCanBeSaved(false);
|
||||
@@ -372,22 +414,26 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
menuManager.closeInventory();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Type.
|
||||
ItemStack typeItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.CYAN_DYE.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_TYPE.getValue());
|
||||
ItemStack typeItem = ItemUtil.createItem(CompatibleMaterial.CYAN_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_TYPE.getValue());
|
||||
EditorLore.updateTypeDescription(typeItem, targetHat);
|
||||
setButton(10, typeItem, (event, slot) -> {
|
||||
|
||||
if (!event.isShiftClick()) {
|
||||
|
||||
EditorTypeMenu editorTypeMenu = new EditorTypeMenu(core, editorManager, owner, (obj) -> {
|
||||
|
||||
ParticleType type = targetHat.getType();
|
||||
|
||||
// Reset animation if new type doesn't support it.
|
||||
if (!type.supportsAnimation() && targetHat.getAnimation() == ParticleAnimation.ANIMATED) {
|
||||
|
||||
targetHat.setAnimation(ParticleAnimation.STATIC);
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateTrackingDescription(getItem(trackingButtonSlot), targetHat);
|
||||
@@ -403,11 +449,13 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
if (targetHat.getParticleData(0).hasPropertyChanges()) {
|
||||
|
||||
core.getDatabase()
|
||||
.saveParticleData(
|
||||
editorBaseMenu.getMenuInventory().getName(), targetHat, 0);
|
||||
core.getDatabase().saveParticleData(editorBaseMenu.getMenuInventory().getName(), targetHat,
|
||||
0);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorTypeMenu);
|
||||
@@ -417,26 +465,29 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
int id = targetHat.getAnimation().getID();
|
||||
ParticleAnimation animation =
|
||||
ParticleAnimation.fromID(MathUtil.wrap(id + 1, ParticleAnimation.values().length, 0));
|
||||
ParticleAnimation animation = ParticleAnimation
|
||||
.fromID(MathUtil.wrap(id + 1, ParticleAnimation.values().length, 0));
|
||||
|
||||
targetHat.setAnimation(animation);
|
||||
|
||||
EditorLore.updateTypeDescription(getItem(10), targetHat);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Location.
|
||||
ItemStack locationItem =
|
||||
ItemUtil.createItem(Material.CLAY_BALL, 1, Message.EDITOR_MAIN_MENU_SET_LOCATION.getValue());
|
||||
EditorLore.updateLocationDescription(
|
||||
locationItem, targetHat.getLocation(), Message.EDITOR_MAIN_MENU_LOCATION_DESCRIPTION);
|
||||
ItemStack locationItem = ItemUtil.createItem(Material.CLAY_BALL, 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_LOCATION.getValue());
|
||||
EditorLore.updateLocationDescription(locationItem, targetHat.getLocation(),
|
||||
Message.EDITOR_MAIN_MENU_LOCATION_DESCRIPTION);
|
||||
setButton(11, locationItem, (event, slot) -> {
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
final int locationID =
|
||||
MathUtil.wrap(targetHat.getLocation().getID() + increment, ParticleLocation.values().length, 0);
|
||||
final int locationID = MathUtil.wrap(targetHat.getLocation().getID() + increment,
|
||||
ParticleLocation.values().length, 0);
|
||||
final ParticleLocation location = ParticleLocation.fromId(locationID);
|
||||
|
||||
targetHat.setLocation(location);
|
||||
@@ -444,6 +495,7 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
EditorLore.updateLocationDescription(getItem(11), location, Message.EDITOR_MAIN_MENU_LOCATION_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
// Speed.
|
||||
@@ -452,9 +504,10 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
// Temporary tweak until 5.0.
|
||||
if (core.getDatabaseType() == DatabaseType.YAML) {
|
||||
|
||||
EditorLore.updateDoubleDescription(
|
||||
speedItem, targetHat.getSpeed(), Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(speedItem, targetHat.getSpeed(),
|
||||
Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
setButton(16, speedItem, (event, slot) -> {
|
||||
|
||||
final double normalClick = event.isLeftClick() ? 0.1D : -0.1D;
|
||||
final double shiftClick = event.isShiftClick() ? 10D : 1D;
|
||||
final double modifier = normalClick * shiftClick;
|
||||
@@ -462,10 +515,11 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.setSpeed(speed);
|
||||
|
||||
EditorLore.updateDoubleDescription(
|
||||
getItem(16), targetHat.getSpeed(), Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(getItem(16), targetHat.getSpeed(),
|
||||
Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
@@ -473,29 +527,36 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
// MariaDB.
|
||||
else {
|
||||
|
||||
EditorLore.updateIntegerDescription(
|
||||
speedItem, (int) targetHat.getSpeed(), Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
EditorLore.updateIntegerDescription(speedItem, (int) targetHat.getSpeed(),
|
||||
Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
setButton(16, speedItem, (event, slot) -> {
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
final int speed = (int) targetHat.getSpeed() + increment;
|
||||
|
||||
targetHat.setSpeed(speed);
|
||||
|
||||
EditorLore.updateIntegerDescription(
|
||||
getItem(16), (int) targetHat.getSpeed(), Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
EditorLore.updateIntegerDescription(getItem(16), (int) targetHat.getSpeed(),
|
||||
Message.EDITOR_MAIN_MENU_SPEED_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Action.
|
||||
ItemStack actionItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.GUNPOWDER.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_ACTION.getValue());
|
||||
ItemStack actionItem = ItemUtil.createItem(CompatibleMaterial.GUNPOWDER.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_ACTION.getValue());
|
||||
EditorLore.updateGenericActionDescription(actionItem, targetHat);
|
||||
setButton(19, actionItem, (event, slot) -> {
|
||||
EditorActionMenuOverview editorActionMenuOverview =
|
||||
new EditorActionMenuOverview(core, editorManager, owner, () -> {
|
||||
|
||||
EditorActionMenuOverview editorActionMenuOverview = new EditorActionMenuOverview(core, editorManager, owner,
|
||||
() ->
|
||||
{
|
||||
|
||||
EditorLore.updateGenericActionDescription(getItem(19), editorManager.getBaseHat());
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorActionMenuOverview);
|
||||
@@ -503,13 +564,15 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
editorActionMenuOverview.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Mode.
|
||||
ItemStack modeItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.ROSE_RED.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_MODE.getValue());
|
||||
ItemStack modeItem = ItemUtil.createItem(CompatibleMaterial.ROSE_RED.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_MODE.getValue());
|
||||
EditorLore.updateModeDescription(modeItem, targetHat.getMode(), Message.EDITOR_MAIN_MENU_MODE_DESCRIPTION);
|
||||
setButton(20, modeItem, (event, slot) -> {
|
||||
|
||||
List<ParticleMode> modes = ParticleMode.getSupportedModes();
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
@@ -522,44 +585,47 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
EditorLore.updateModeDescription(getItem(20), mode, Message.EDITOR_MAIN_MENU_MODE_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
// Frequency.
|
||||
ItemStack frequencyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.COMPARATOR.getMaterial(),
|
||||
1,
|
||||
ItemStack frequencyItem = ItemUtil.createItem(CompatibleMaterial.COMPARATOR.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_UPDATE_FREQUENCY.getValue());
|
||||
EditorLore.updateFrequencyDescription(
|
||||
frequencyItem, targetHat.getUpdateFrequency(), Message.EDITOR_MAIN_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
EditorLore.updateFrequencyDescription(frequencyItem, targetHat.getUpdateFrequency(),
|
||||
Message.EDITOR_MAIN_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
setButton(22, frequencyItem, (event, slot) -> {
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
int frequency = targetHat.getUpdateFrequency() + increment;
|
||||
if (event.isMiddleClick()) {
|
||||
|
||||
frequency = 2;
|
||||
|
||||
}
|
||||
|
||||
targetHat.setUpdateFrequency(frequency);
|
||||
|
||||
EditorLore.updateFrequencyDescription(
|
||||
getItem(22), targetHat.getUpdateFrequency(), Message.EDITOR_MAIN_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
EditorLore.updateFrequencyDescription(getItem(22), targetHat.getUpdateFrequency(),
|
||||
Message.EDITOR_MAIN_MENU_UPDATE_FREQUENCY_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
// Angle.
|
||||
ItemStack angleItem =
|
||||
ItemUtil.createItem(Material.SLIME_BALL, 1, Message.EDITOR_MAIN_MENU_SET_ANGLE.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
angleItem, targetHat.getAngle(), Message.EDITOR_MAIN_MENU_VECTOR_DESCRIPTION);
|
||||
ItemStack angleItem = ItemUtil.createItem(Material.SLIME_BALL, 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_ANGLE.getValue());
|
||||
EditorLore.updateVectorDescription(angleItem, targetHat.getAngle(),
|
||||
Message.EDITOR_MAIN_MENU_VECTOR_DESCRIPTION);
|
||||
setButton(24, angleItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorAngleMenu editorAngleMenu = new EditorAngleMenu(core, editorManager, owner, () -> {
|
||||
EditorLore.updateVectorDescription(
|
||||
getItem(24),
|
||||
editorManager.getTargetHat().getAngle(),
|
||||
|
||||
EditorLore.updateVectorDescription(getItem(24), editorManager.getTargetHat().getAngle(),
|
||||
Message.EDITOR_MAIN_MENU_VECTOR_DESCRIPTION);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorAngleMenu);
|
||||
@@ -570,22 +636,25 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.setAngle(0, 0, 0);
|
||||
|
||||
EditorLore.updateVectorDescription(
|
||||
getItem(24),
|
||||
editorManager.getTargetHat().getAngle(),
|
||||
EditorLore.updateVectorDescription(getItem(24), editorManager.getTargetHat().getAngle(),
|
||||
Message.EDITOR_MAIN_MENU_VECTOR_DESCRIPTION);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Offset.
|
||||
ItemStack offsetItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_OFFSET.getValue());
|
||||
ItemStack offsetItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_OFFSET.getValue());
|
||||
EditorLore.updateOffsetDescription(offsetItem, targetHat);
|
||||
setButton(25, offsetItem, (event, slot) -> {
|
||||
|
||||
EditorOffsetMenu editorOffsetMenu = new EditorOffsetMenu(core, editorManager, owner, () -> {
|
||||
|
||||
EditorLore.updateOffsetDescription(getItem(25), editorManager.getTargetHat());
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorOffsetMenu);
|
||||
@@ -593,13 +662,15 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
editorOffsetMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Tracking.
|
||||
ItemStack trackingItem =
|
||||
ItemUtil.createItem(Material.COMPASS, 1, Message.EDITOR_MAIN_MENU_SET_TRACKING_METHOD.getValue());
|
||||
ItemStack trackingItem = ItemUtil.createItem(Material.COMPASS, 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_TRACKING_METHOD.getValue());
|
||||
EditorLore.updateTrackingDescription(trackingItem, targetHat);
|
||||
setButton(trackingButtonSlot, trackingItem, (event, slot) -> {
|
||||
|
||||
List<ParticleTracking> methods = targetHat.getEffect().getSupportedTrackingMethods();
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
@@ -611,23 +682,26 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
EditorLore.updateTrackingDescription(getItem(trackingButtonSlot), targetHat);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
// Count.
|
||||
ItemStack countItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.WHEAT_SEEDS.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_COUNT.getValue());
|
||||
EditorLore.updateIntegerDescription(
|
||||
countItem, targetHat.getCount(), Message.EDITOR_MAIN_MENU_COUNT_DESCRIPTION);
|
||||
ItemStack countItem = ItemUtil.createItem(CompatibleMaterial.WHEAT_SEEDS.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_COUNT.getValue());
|
||||
EditorLore.updateIntegerDescription(countItem, targetHat.getCount(),
|
||||
Message.EDITOR_MAIN_MENU_COUNT_DESCRIPTION);
|
||||
setButton(countButtonSlot, countItem, (event, slot) -> {
|
||||
|
||||
final int increment = event.isLeftClick() ? 1 : -1;
|
||||
final int count = targetHat.getCount() + increment;
|
||||
|
||||
targetHat.setCount(count);
|
||||
|
||||
EditorLore.updateIntegerDescription(
|
||||
getItem(countButtonSlot), targetHat.getCount(), Message.EDITOR_MAIN_MENU_COUNT_DESCRIPTION);
|
||||
EditorLore.updateIntegerDescription(getItem(countButtonSlot), targetHat.getCount(),
|
||||
Message.EDITOR_MAIN_MENU_COUNT_DESCRIPTION);
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
// Particle.
|
||||
@@ -635,15 +709,17 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
if (targetHat.getEffect().getParticlesSupported() == 1) {
|
||||
|
||||
EditorLore.updateParticleDescription(particleItem, targetHat, 0);
|
||||
|
||||
}
|
||||
|
||||
setButton(particleButtonSlot, getParticleItem(), getParticleAction());
|
||||
|
||||
// Scale.
|
||||
ItemStack scaleItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.PUFFERFISH.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_SCALE.getValue());
|
||||
ItemStack scaleItem = ItemUtil.createItem(CompatibleMaterial.PUFFERFISH.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_SCALE.getValue());
|
||||
EditorLore.updateDoubleDescription(scaleItem, targetHat.getScale(), Message.EDITOR_MAIN_MENU_SCALE_DESCRIPTION);
|
||||
setButton(scaleItemButtonSlot, scaleItem, (event, slot) -> {
|
||||
|
||||
double normalClick = event.isLeftClick() ? 0.1f : -0.1f;
|
||||
double shiftClick = event.isShiftClick() ? 10 : 1;
|
||||
double modifier = normalClick * shiftClick;
|
||||
@@ -652,17 +728,21 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
double scale = isMiddleClick ? 1 : targetHat.getScale() + modifier;
|
||||
targetHat.setScale(scale);
|
||||
|
||||
EditorLore.updateDoubleDescription(
|
||||
getItem(scaleItemButtonSlot), targetHat.getScale(), Message.EDITOR_MAIN_MENU_SCALE_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(getItem(scaleItemButtonSlot), targetHat.getScale(),
|
||||
Message.EDITOR_MAIN_MENU_SCALE_DESCRIPTION);
|
||||
|
||||
if (isMiddleClick) {
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
} else {
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -675,7 +755,9 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
if (targetHat.getParticleData(0).hasPropertyChanges()) {
|
||||
|
||||
database.saveParticleData(editorManager.getMenuName(), targetHat, 0);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!forced) {
|
||||
@@ -684,6 +766,7 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
if (hat == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
String name = editorManager.getMenuName();
|
||||
@@ -695,6 +778,7 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
database.saveHat(name, targetSlot, hat);
|
||||
|
||||
hat.clearPropertyChanges();
|
||||
|
||||
}
|
||||
|
||||
if (hat.getNodeCount() > 0) {
|
||||
@@ -706,17 +790,25 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
database.saveNode(name, node.getIndex(), node);
|
||||
|
||||
node.clearPropertyChanges();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an appropriate item for the current ParticleType
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private ItemStack getParticleItem() {
|
||||
@@ -727,18 +819,22 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
if (particlesSupported == 0) {
|
||||
|
||||
return noParticleItem;
|
||||
|
||||
}
|
||||
|
||||
if (particlesSupported == 1) {
|
||||
|
||||
return singleParticleItem;
|
||||
|
||||
}
|
||||
|
||||
return multipleParticlesItem;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an appropriate EditorAction for the current ParticleType
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private MenuAction getParticleAction() {
|
||||
@@ -749,112 +845,137 @@ public class EditorMainMenu extends AbstractStaticMenu {
|
||||
if (particlesSupported == 0) {
|
||||
|
||||
return noParticle4U;
|
||||
|
||||
}
|
||||
|
||||
if (particlesSupported == 1) {
|
||||
|
||||
return setParticleAction;
|
||||
|
||||
}
|
||||
|
||||
return editParticleAction;
|
||||
|
||||
}
|
||||
|
||||
public void onParticleEdit(ItemStack item, int particleIndex) {
|
||||
|
||||
ParticleEffect pe = targetHat.getParticle(particleIndex);
|
||||
switch (pe.getProperty()) {
|
||||
|
||||
case NO_DATA:
|
||||
break;
|
||||
case COLOR:
|
||||
case COLOR_TRANSITION:
|
||||
case DUST_OPTIONS:
|
||||
{
|
||||
EditorColorMenu editorColorMenu =
|
||||
new EditorColorMenu(core, editorManager, owner, particleIndex, () -> {
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
});
|
||||
case DUST_OPTIONS: {
|
||||
|
||||
menuManager.addMenu(editorColorMenu);
|
||||
EditorColorMenu editorColorMenu = new EditorColorMenu(core, editorManager, owner, particleIndex, () -> {
|
||||
|
||||
editorColorMenu.open();
|
||||
}
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorColorMenu);
|
||||
|
||||
editorColorMenu.open();
|
||||
|
||||
}
|
||||
break;
|
||||
case BLOCK_DATA:
|
||||
{
|
||||
Message menuTitle = Message.EDITOR_ICON_MENU_BLOCK_TITLE;
|
||||
Message blockTitle = Message.EDITOR_ICON_MENU_BLOCK_INFO;
|
||||
Message blockDescription = Message.EDITOR_ICON_MENU_BLOCK_DESCRIPTION;
|
||||
case BLOCK_DATA: {
|
||||
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(
|
||||
core, editorManager, owner, menuTitle, blockTitle, blockDescription, (clickedItem) -> {
|
||||
menuManager.closeCurrentMenu();
|
||||
Message menuTitle = Message.EDITOR_ICON_MENU_BLOCK_TITLE;
|
||||
Message blockTitle = Message.EDITOR_ICON_MENU_BLOCK_INFO;
|
||||
Message blockDescription = Message.EDITOR_ICON_MENU_BLOCK_DESCRIPTION;
|
||||
|
||||
if (clickedItem == null) {
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(core, editorManager, owner, menuTitle,
|
||||
blockTitle, blockDescription, (clickedItem) ->
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
ItemStack i = (ItemStack) clickedItem;
|
||||
if (!i.getType().isBlock()) {
|
||||
if (clickedItem == null) {
|
||||
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
||||
targetHat.setParticleBlock(particleIndex, i);
|
||||
}
|
||||
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
});
|
||||
ItemStack i = (ItemStack) clickedItem;
|
||||
if (!i.getType().isBlock()) {
|
||||
|
||||
menuManager.addMenu(editorItemMenu);
|
||||
return;
|
||||
|
||||
editorItemMenu.open();
|
||||
}
|
||||
}
|
||||
|
||||
targetHat.setParticleBlock(particleIndex, i);
|
||||
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemMenu);
|
||||
|
||||
editorItemMenu.open();
|
||||
|
||||
}
|
||||
break;
|
||||
case ITEM_DATA:
|
||||
{
|
||||
Message menuTitle = Message.EDITOR_ICON_MENU_ITEM_TITLE;
|
||||
Message itemTitle = Message.EDITOR_ICON_MENU_ITEM_INFO;
|
||||
Message itemDescription = Message.EDITOR_ICON_MENU_ITEM_DESCRIPTION;
|
||||
case ITEM_DATA: {
|
||||
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(
|
||||
core, editorManager, owner, menuTitle, itemTitle, itemDescription, (clickedItem) -> {
|
||||
menuManager.closeCurrentMenu();
|
||||
Message menuTitle = Message.EDITOR_ICON_MENU_ITEM_TITLE;
|
||||
Message itemTitle = Message.EDITOR_ICON_MENU_ITEM_INFO;
|
||||
Message itemDescription = Message.EDITOR_ICON_MENU_ITEM_DESCRIPTION;
|
||||
|
||||
if (clickedItem == null) {
|
||||
EditorItemPromptMenu editorItemMenu = new EditorItemPromptMenu(core, editorManager, owner, menuTitle,
|
||||
itemTitle, itemDescription, (clickedItem) ->
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
ItemStack i = (ItemStack) clickedItem;
|
||||
if (i.getType().isBlock()) {
|
||||
if (clickedItem == null) {
|
||||
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
||||
targetHat.setParticleItem(particleIndex, i);
|
||||
}
|
||||
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
});
|
||||
ItemStack i = (ItemStack) clickedItem;
|
||||
if (i.getType().isBlock()) {
|
||||
|
||||
menuManager.addMenu(editorItemMenu);
|
||||
return;
|
||||
|
||||
editorItemMenu.open();
|
||||
}
|
||||
}
|
||||
|
||||
targetHat.setParticleItem(particleIndex, i);
|
||||
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemMenu);
|
||||
|
||||
editorItemMenu.open();
|
||||
|
||||
}
|
||||
break;
|
||||
case ITEMSTACK_DATA:
|
||||
{
|
||||
EditorItemStackMenu editorItemStackMenu =
|
||||
new EditorItemStackMenu(core, editorManager, owner, particleIndex, () -> {
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
});
|
||||
case ITEMSTACK_DATA: {
|
||||
|
||||
menuManager.addMenu(editorItemStackMenu);
|
||||
EditorItemStackMenu editorItemStackMenu = new EditorItemStackMenu(core, editorManager, owner,
|
||||
particleIndex, () ->
|
||||
{
|
||||
|
||||
editorItemStackMenu.open();
|
||||
}
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorItemStackMenu);
|
||||
|
||||
editorItemStackMenu.open();
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,12 +32,9 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
|
||||
private boolean isAddingMenu = false;
|
||||
|
||||
public EditorMenuSelectionMenu(
|
||||
CosmeticsOG core,
|
||||
EditorMenuManager menuManager,
|
||||
Player owner,
|
||||
boolean transferringHat,
|
||||
MenuObjectCallback callback) {
|
||||
public EditorMenuSelectionMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner,
|
||||
boolean transferringHat, MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner, false);
|
||||
|
||||
@@ -45,29 +42,36 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
this.isTransferringHat = transferringHat;
|
||||
this.loadedMenus = new HashMap<String, String>();
|
||||
this.storedMenus = new HashMap<Integer, String>();
|
||||
this.totalPages =
|
||||
MathUtil.calculatePageCount(core.getDatabase().getMenus(false).size(), 28);
|
||||
this.totalPages = MathUtil.calculatePageCount(core.getDatabase().getMenus(false).size(), 28);
|
||||
|
||||
this.selectAction = (event, slot) -> {
|
||||
|
||||
int index = getClampedIndex(slot, 10, 2) + (28 * currentPage);
|
||||
if (storedMenus.containsKey(index)) {
|
||||
|
||||
callback.onSelect(storedMenus.get(index));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {}
|
||||
public void insertEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {}
|
||||
public void removeEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
@@ -76,25 +80,31 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
for (int i = 0; i <= 27; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), selectAction);
|
||||
|
||||
}
|
||||
|
||||
setAction(48, (event, slot) -> {
|
||||
|
||||
currentPage--;
|
||||
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
setAction(50, (event, slot) -> {
|
||||
|
||||
currentPage++;
|
||||
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
setAction(52, (event, slot) -> {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.NEW_MENU);
|
||||
|
||||
core.prompt(owner, MetaState.HAT_NAME);
|
||||
@@ -104,15 +114,18 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
isAddingMenu = true;
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Create menus.
|
||||
for (int i = 0; i < totalPages; i++) {
|
||||
|
||||
menus.put(i, createMenu(i));
|
||||
|
||||
}
|
||||
|
||||
loadMenus();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -121,21 +134,26 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
if (isAddingMenu) {
|
||||
|
||||
rebuild();
|
||||
|
||||
}
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
public void rebuild() {
|
||||
|
||||
int pages =
|
||||
MathUtil.calculatePageCount(core.getDatabase().getMenus(false).size(), 28);
|
||||
int pages = MathUtil.calculatePageCount(core.getDatabase().getMenus(false).size(), 28);
|
||||
if (pages > totalPages) {
|
||||
|
||||
totalPages = pages;
|
||||
@@ -146,23 +164,24 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
if (menu == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(), 1, Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
loadMenus();
|
||||
|
||||
isAddingMenu = false;
|
||||
|
||||
}
|
||||
|
||||
private Inventory createMenu(int index) {
|
||||
|
||||
String menuTitle =
|
||||
title.replace("{1}", Integer.toString(index + 1)).replace("{2}", Integer.toString(totalPages));
|
||||
String menuTitle = title.replace("{1}", Integer.toString(index + 1)).replace("{2}",
|
||||
Integer.toString(totalPages));
|
||||
|
||||
Inventory menu = Bukkit.createInventory(null, 54, Utils.legacySerializerAnyCase(menuTitle));
|
||||
menu.setItem(49, backButtonItem);
|
||||
@@ -170,35 +189,29 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
// Next Page.
|
||||
if ((index + 1) < totalPages) {
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(), 1, Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Previous Page.
|
||||
if ((index + 1) > 1) {
|
||||
|
||||
menu.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
menu.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Create Menu.
|
||||
if (!isTransferringHat && owner.hasPermission(Permission.COMMAND_CREATE.getPermission())) {
|
||||
|
||||
menu.setItem(
|
||||
52,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.TURTLE_HELMET.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MENU_SELECTION_CREATE.getValue()));
|
||||
menu.setItem(52, ItemUtil.createItem(CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1,
|
||||
Message.EDITOR_MENU_SELECTION_CREATE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
return menu;
|
||||
|
||||
}
|
||||
|
||||
private void loadMenus() {
|
||||
@@ -207,6 +220,7 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
if (loadedMenus.isEmpty()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
int startingIndex = storedMenus.size();
|
||||
@@ -224,22 +238,21 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
if (key.equals(currentMenu)) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
// Skip over any menus already loaded.
|
||||
if (storedMenus.containsValue(key)) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
String name = Message.EDITOR_MENU_SELECTION_MENU_PREFIX.getValue() + key;
|
||||
|
||||
ItemStack item = ItemUtil.createItem(Material.BOOK, 1, name);
|
||||
ItemUtil.setItemDescription(
|
||||
item,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_MENU_SELECTION_MENU_DESCRIPTION
|
||||
.getValue()
|
||||
.replace("{1}", value)));
|
||||
ItemUtil.setItemDescription(item, Utils.legacySerializerAnyCase(
|
||||
Message.EDITOR_MENU_SELECTION_MENU_DESCRIPTION.getValue().replace("{1}", value)));
|
||||
|
||||
setItem(page, getNormalIndex(index++, 10, 2), item);
|
||||
|
||||
@@ -250,7 +263,11 @@ public class EditorMenuSelectionMenu extends AbstractListMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,10 +28,11 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
|
||||
this.editorManager = menuManager;
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_META_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_META_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,6 +47,7 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
EditorLore.updatePermissionDeniedDescription(getItem(25), targetHat.getPermissionDeniedDisplayMessage());
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,9 +56,10 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
setButton(49, backButtonItem, backButtonAction);
|
||||
|
||||
// Name.
|
||||
ItemStack nameItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.PLAYER_HEAD.getMaterial(), 1, Message.EDITOR_META_MENU_SET_NAME.getValue());
|
||||
ItemStack nameItem = ItemUtil.createItem(CompatibleMaterial.PLAYER_HEAD.getMaterial(), 1,
|
||||
Message.EDITOR_META_MENU_SET_NAME.getValue());
|
||||
setButton(13, nameItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_NAME);
|
||||
@@ -70,19 +73,22 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
targetHat.setName(Message.EDITOR_MISC_NEW_PARTICLE.getValue());
|
||||
|
||||
EditorLore.updateNameDescription(getItem(13), targetHat);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Description.
|
||||
ItemStack descriptionItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.WRITABLE_BOOK.getMaterial(), 1, Message.EDITOR_META_MENU_SET_DESCRIPTION.getValue());
|
||||
ItemStack descriptionItem = ItemUtil.createItem(CompatibleMaterial.WRITABLE_BOOK.getMaterial(), 1,
|
||||
Message.EDITOR_META_MENU_SET_DESCRIPTION.getValue());
|
||||
setButton(11, descriptionItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorDescriptionMenu editorDescriptionMenu =
|
||||
new EditorDescriptionMenu(core, editorManager, owner, true);
|
||||
EditorDescriptionMenu editorDescriptionMenu = new EditorDescriptionMenu(core, editorManager, owner,
|
||||
true);
|
||||
|
||||
menuManager.addMenu(editorDescriptionMenu);
|
||||
|
||||
@@ -99,20 +105,24 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
database.saveMetaData(menuName, targetHat, DataType.DESCRIPTION, 0);
|
||||
|
||||
EditorLore.updateDescriptionDescription(getItem(11), targetHat.getDescription());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Permission description.
|
||||
ItemStack permissionDescriptionItem =
|
||||
ItemUtil.createItem(Material.BOOK, 1, Message.EDITOR_META_MENU_SET_PERMISSION_DESCRIPTION.getValue());
|
||||
ItemStack permissionDescriptionItem = ItemUtil.createItem(Material.BOOK, 1,
|
||||
Message.EDITOR_META_MENU_SET_PERMISSION_DESCRIPTION.getValue());
|
||||
setButton(19, permissionDescriptionItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorDescriptionMenu editorDescriptionMenu =
|
||||
new EditorDescriptionMenu(core, editorManager, owner, false);
|
||||
EditorDescriptionMenu editorDescriptionMenu = new EditorDescriptionMenu(core, editorManager, owner,
|
||||
false);
|
||||
|
||||
menuManager.addMenu(editorDescriptionMenu);
|
||||
|
||||
@@ -129,16 +139,20 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
database.saveMetaData(menuName, targetHat, DataType.PERMISSION_DESCRIPTION, 0);
|
||||
|
||||
EditorLore.updateDescriptionDescription(getItem(19), targetHat.getPermissionDescription());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Permission.
|
||||
ItemStack permissionItem =
|
||||
ItemUtil.createItem(Material.PAPER, 1, Message.EDITOR_META_MENU_SET_PERMISSION.getValue());
|
||||
ItemStack permissionItem = ItemUtil.createItem(Material.PAPER, 1,
|
||||
Message.EDITOR_META_MENU_SET_PERMISSION.getValue());
|
||||
setButton(15, permissionItem, (event, slot) -> {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_PERMISSION);
|
||||
|
||||
core.prompt(owner, MetaState.HAT_PERMISSION);
|
||||
@@ -146,11 +160,13 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
menuManager.closeInventory();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Label.
|
||||
ItemStack labelItem = ItemUtil.createItem(Material.NAME_TAG, 1, Message.EDITOR_META_MENU_SET_LABEL.getValue());
|
||||
setButton(29, labelItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_LABEL);
|
||||
@@ -166,15 +182,18 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
targetHat.removeLabel();
|
||||
|
||||
EditorLore.updateLabelDescription(getItem(29), targetHat.getLabel());
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Equip.
|
||||
ItemStack equipItem =
|
||||
ItemUtil.createItem(Material.LEATHER_HELMET, 1, Message.EDITOR_META_MENU_SET_EQUIP_MESSAGE.getValue());
|
||||
ItemStack equipItem = ItemUtil.createItem(Material.LEATHER_HELMET, 1,
|
||||
Message.EDITOR_META_MENU_SET_EQUIP_MESSAGE.getValue());
|
||||
setButton(33, equipItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_EQUIP_MESSAGE);
|
||||
@@ -188,15 +207,18 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
targetHat.removeEquipMessage();
|
||||
|
||||
EditorLore.updateEquipDescription(getItem(33), targetHat.getEquipDisplayMessage());
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Permission denied.
|
||||
ItemStack permissionDeniedItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.MAP.getMaterial(), 1, Message.EDITOR_META_MENU_SET_PERMISSION_MESSAGE.getValue());
|
||||
ItemStack permissionDeniedItem = ItemUtil.createItem(CompatibleMaterial.MAP.getMaterial(), 1,
|
||||
Message.EDITOR_META_MENU_SET_PERMISSION_MESSAGE.getValue());
|
||||
setButton(25, permissionDeniedItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.HAT_PERMISSION_MESSAGE);
|
||||
@@ -209,28 +231,38 @@ public class EditorMetaMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.removePermissionDeniedMessage();
|
||||
|
||||
EditorLore.updatePermissionDeniedDescription(
|
||||
getItem(25), targetHat.getPermissionDeniedDisplayMessage());
|
||||
EditorLore.updatePermissionDeniedDescription(getItem(25),
|
||||
targetHat.getPermissionDeniedDisplayMessage());
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Tags.
|
||||
ItemStack tagItem = ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_META_MENU_SET_TAG.getValue());
|
||||
setButton(31, tagItem, (event, slot) -> {
|
||||
|
||||
EditorTagMenuOverview editorTagMenuOverview = new EditorTagMenuOverview(core, editorManager, owner);
|
||||
menuManager.addMenu(editorTagMenuOverview);
|
||||
|
||||
editorTagMenuOverview.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,13 +12,14 @@ public class EditorNodeMainMenu extends EditorMainMenu {
|
||||
public EditorNodeMainMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner) {
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build() {
|
||||
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 45, Utils.legacySerializerAnyCase(Message.EDITOR_MAIN_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 45,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_MAIN_MENU_TITLE.getValue()));
|
||||
this.particleButtonSlot = 13;
|
||||
this.trackingButtonSlot = 19;
|
||||
this.countButtonSlot = 15;
|
||||
@@ -27,5 +28,7 @@ public class EditorNodeMainMenu extends EditorMainMenu {
|
||||
buildSection();
|
||||
|
||||
setButton(38, backButtonItem, backButtonAction);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,8 +21,8 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
private final EditorMenuManager editorManager;
|
||||
private final Hat targetHat;
|
||||
private final String nodeTitle = Message.EDITOR_NODE_OVERVIEW_NODE_TITLE.getValue();
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.BARRIER.getMaterial(), 1, Message.EDITOR_NODE_OVERVIEW_MENU_EMPTY.getValue());
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1,
|
||||
Message.EDITOR_NODE_OVERVIEW_MENU_EMPTY.getValue());
|
||||
|
||||
public EditorNodeMenuOverview(CosmeticsOG core, EditorMenuManager menuManager, Player owner) {
|
||||
|
||||
@@ -32,24 +32,25 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.totalPages = 1;
|
||||
|
||||
setMenu(
|
||||
0,
|
||||
Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_NODE_OVERVIEW_MENU_TITLE.getValue())));
|
||||
setMenu(0, Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_NODE_OVERVIEW_MENU_TITLE.getValue())));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {
|
||||
|
||||
setButton(0, 22, emptyItem, emptyAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {
|
||||
|
||||
setButton(0, 22, null, emptyAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,16 +58,16 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
|
||||
setButton(0, 46, backButtonItem, backButtonAction);
|
||||
|
||||
ItemStack addItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.TURTLE_HELMET.getMaterial(),
|
||||
1,
|
||||
ItemStack addItem = ItemUtil.createItem(CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1,
|
||||
Message.EDITOR_NODE_OVERVIEW_MENU_ADD_NODE.getValue());
|
||||
setButton(0, 52, addItem, (event, slot) -> {
|
||||
|
||||
List<Hat> nodes = targetHat.getNodes();
|
||||
int size = nodes.size();
|
||||
if (size >= 28) {
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
}
|
||||
|
||||
int index = size > 0 ? nodes.get(size - 1).getIndex() + 1 : 0;
|
||||
@@ -78,9 +79,7 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
nodes.add(node);
|
||||
|
||||
String title = nodeTitle.replace("{1}", Integer.toString(size + 1));
|
||||
ItemStack item = ItemUtil.createItem(
|
||||
Material.LEATHER_HELMET,
|
||||
title,
|
||||
ItemStack item = ItemUtil.createItem(Material.LEATHER_HELMET, title,
|
||||
StringUtil.parseDescription(Message.EDITOR_NODE_OVERVIEW_MENU_NODE_DESCRIPTION.getValue()));
|
||||
|
||||
setItem(0, getNormalIndex(size, 10, 2), item);
|
||||
@@ -88,9 +87,11 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
setEmpty(false);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
MenuAction editAction = (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
int index = getClampedIndex(slot, 10, 2);
|
||||
@@ -98,6 +99,7 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
if (node == null) {
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
}
|
||||
|
||||
editorManager.setTargetNode(node);
|
||||
@@ -110,14 +112,17 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
} else if (event.isShiftRightClick()) {
|
||||
|
||||
deleteSlot(0, slot);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), editAction);
|
||||
|
||||
}
|
||||
|
||||
List<Hat> hatNodes = targetHat.getNodes();
|
||||
@@ -126,30 +131,34 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
setEmpty(true);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < hatNodes.size(); i++) {
|
||||
|
||||
String title = nodeTitle.replace("{1}", Integer.toString(i + 1));
|
||||
ItemStack item = ItemUtil.createItem(
|
||||
Material.LEATHER_HELMET,
|
||||
title,
|
||||
ItemStack item = ItemUtil.createItem(Material.LEATHER_HELMET, title,
|
||||
StringUtil.parseDescription(Message.EDITOR_NODE_OVERVIEW_MENU_NODE_DESCRIPTION.getValue()));
|
||||
|
||||
EditorLore.updateHatDescription(item, hatNodes.get(i), false);
|
||||
|
||||
setItem(0, getNormalIndex(i, 10, 2), item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
editorManager.setTargetNode(null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSlot(int page, int slot) {
|
||||
@@ -167,14 +176,19 @@ public class EditorNodeMenuOverview extends AbstractListMenu {
|
||||
if (item == null) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
ItemUtil.setItemName(item, nodeTitle.replace("{1}", Integer.toString(i + 1)));
|
||||
|
||||
}
|
||||
|
||||
if (targetHat.getNodes().size() == 0) {
|
||||
|
||||
setEmpty(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,10 +25,11 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
|
||||
this.editorManager = menuManager;
|
||||
this.callback = callback;
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 45, Utils.legacySerializerAnyCase(Message.EDITOR_OFFSET_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 45,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_OFFSET_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -36,67 +37,74 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
|
||||
Hat targetHat = editorManager.getTargetHat();
|
||||
// X Offset.
|
||||
ItemStack xItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_OFFSET_MENU_SET_OFFSET_X.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
xItem, targetHat.getOffset(), Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
ItemStack xItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_OFFSET_MENU_SET_OFFSET_X.getValue());
|
||||
EditorLore.updateVectorDescription(xItem, targetHat.getOffset(),
|
||||
Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
setButton(14, xItem, (event, slot) -> {
|
||||
|
||||
return updateOffset(event, targetHat, VectorAxis.X, false);
|
||||
|
||||
});
|
||||
|
||||
// Y Offset.
|
||||
ItemStack yItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_OFFSET_MENU_SET_OFFSET_Y.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
yItem, targetHat.getOffset(), Message.EDITOR_OFFSET_MENU_OFFSET_Y_DESCRIPTION);
|
||||
ItemStack yItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_OFFSET_MENU_SET_OFFSET_Y.getValue());
|
||||
EditorLore.updateVectorDescription(yItem, targetHat.getOffset(),
|
||||
Message.EDITOR_OFFSET_MENU_OFFSET_Y_DESCRIPTION);
|
||||
setButton(15, yItem, (event, slot) -> {
|
||||
|
||||
return updateOffset(event, targetHat, VectorAxis.Y, false);
|
||||
|
||||
});
|
||||
|
||||
// Z Offset.
|
||||
ItemStack zItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_OFFSET_MENU_SET_OFFSET_Z.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
zItem, targetHat.getOffset(), Message.EDITOR_OFFSET_MENU_OFFSET_Z_DESCRIPTION);
|
||||
ItemStack zItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_OFFSET_MENU_SET_OFFSET_Z.getValue());
|
||||
EditorLore.updateVectorDescription(zItem, targetHat.getOffset(),
|
||||
Message.EDITOR_OFFSET_MENU_OFFSET_Z_DESCRIPTION);
|
||||
setButton(16, zItem, (event, slot) -> {
|
||||
|
||||
return updateOffset(event, targetHat, VectorAxis.Z, false);
|
||||
|
||||
});
|
||||
|
||||
// Random X Offset.
|
||||
ItemStack rxItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.COMPARATOR.getMaterial(),
|
||||
1,
|
||||
ItemStack rxItem = ItemUtil.createItem(CompatibleMaterial.COMPARATOR.getMaterial(), 1,
|
||||
Message.EDITOR_OFFSET_MENU_SET_RANDOM_OFFSET_X.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
rxItem, targetHat.getRandomOffset(), Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
EditorLore.updateVectorDescription(rxItem, targetHat.getRandomOffset(),
|
||||
Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
setButton(32, rxItem, (event, slot) -> {
|
||||
|
||||
return updateOffset(event, targetHat, VectorAxis.X, true);
|
||||
|
||||
});
|
||||
|
||||
// Random Y Offset.
|
||||
ItemStack ryItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.COMPARATOR.getMaterial(),
|
||||
1,
|
||||
ItemStack ryItem = ItemUtil.createItem(CompatibleMaterial.COMPARATOR.getMaterial(), 1,
|
||||
Message.EDITOR_OFFSET_MENU_SET_RANDOM_OFFSET_Y.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
ryItem, targetHat.getRandomOffset(), Message.EDITOR_OFFSET_MENU_OFFSET_Y_DESCRIPTION);
|
||||
EditorLore.updateVectorDescription(ryItem, targetHat.getRandomOffset(),
|
||||
Message.EDITOR_OFFSET_MENU_OFFSET_Y_DESCRIPTION);
|
||||
setButton(33, ryItem, (event, slot) -> {
|
||||
|
||||
return updateOffset(event, targetHat, VectorAxis.Y, true);
|
||||
|
||||
});
|
||||
|
||||
// Random Z Offset.
|
||||
ItemStack rzItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.COMPARATOR.getMaterial(),
|
||||
1,
|
||||
ItemStack rzItem = ItemUtil.createItem(CompatibleMaterial.COMPARATOR.getMaterial(), 1,
|
||||
Message.EDITOR_OFFSET_MENU_SET_RANDOM_OFFSET_Z.getValue());
|
||||
EditorLore.updateVectorDescription(
|
||||
rzItem, targetHat.getRandomOffset(), Message.EDITOR_OFFSET_MENU_OFFSET_Z_DESCRIPTION);
|
||||
EditorLore.updateVectorDescription(rzItem, targetHat.getRandomOffset(),
|
||||
Message.EDITOR_OFFSET_MENU_OFFSET_Z_DESCRIPTION);
|
||||
setButton(34, rzItem, (event, slot) -> {
|
||||
|
||||
return updateOffset(event, targetHat, VectorAxis.Z, true);
|
||||
|
||||
});
|
||||
|
||||
// Back.
|
||||
setButton(19, backButtonItem, backButtonAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -105,11 +113,15 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
private MenuClickResult updateOffset(MenuClickEvent event, Hat hat, VectorAxis axis, boolean random) {
|
||||
|
||||
@@ -125,7 +137,9 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
int zslot = random ? 34 : 16;
|
||||
|
||||
switch (axis) {
|
||||
|
||||
case X: {
|
||||
|
||||
double xo = !isMiddleClick ? offset.getX() + modifier : 0;
|
||||
if (random) {
|
||||
|
||||
@@ -134,11 +148,14 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
hat.setOffsetX(xo);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
case Y: {
|
||||
|
||||
double yo = !isMiddleClick ? offset.getY() + modifier : 0;
|
||||
if (random) {
|
||||
|
||||
@@ -147,11 +164,14 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
hat.setOffsetY(yo);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
case Z: {
|
||||
|
||||
double zo = !isMiddleClick ? offset.getZ() + modifier : 0;
|
||||
if (random) {
|
||||
|
||||
@@ -160,10 +180,13 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
hat.setOffsetZ(zo);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateVectorDescription(getItem(xslot), offset, Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
@@ -177,12 +200,13 @@ public class EditorOffsetMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected enum VectorAxis {
|
||||
X,
|
||||
Y,
|
||||
Z;
|
||||
X, Y, Z;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,8 +27,9 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
private Map<Integer, ParticleEffect> particles;
|
||||
private Map<Integer, Boolean> modifiedParticles;
|
||||
|
||||
public EditorParticleMenuOverview(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, EditorMainMenu editorMainMenu) {
|
||||
public EditorParticleMenuOverview(CosmeticsOG core, EditorMenuManager menuManager, Player owner,
|
||||
EditorMainMenu editorMainMenu)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
@@ -37,10 +38,11 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
this.targetHat = menuManager.getTargetHat();
|
||||
this.particles = new HashMap<Integer, ParticleEffect>();
|
||||
this.modifiedParticles = new HashMap<Integer, Boolean>();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_PARTICLE_OVERVIEW_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_PARTICLE_OVERVIEW_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,16 +51,20 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
setButton(49, backButtonItem, backButtonAction);
|
||||
|
||||
MenuAction editAction = (event, slot) -> {
|
||||
|
||||
int particleIndex = getClampedIndex(slot, 10, 2);
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorParticleSelectionMenu editorParticleSelectionMenu =
|
||||
new EditorParticleSelectionMenu(core, editorManager, owner, particleIndex, (particle) -> {
|
||||
EditorParticleSelectionMenu editorParticleSelectionMenu = new EditorParticleSelectionMenu(core,
|
||||
editorManager, owner, particleIndex, (particle) ->
|
||||
{
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
if (particle == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ParticleEffect pe = (ParticleEffect) particle;
|
||||
@@ -77,6 +83,7 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
EditorLore.updateParticleDescription(item, targetHat, particleIndex);
|
||||
|
||||
modifiedParticles.put(particleIndex, true);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorParticleSelectionMenu);
|
||||
@@ -86,14 +93,17 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
} else if (event.isRightClick()) {
|
||||
|
||||
editorMainMenu.onParticleEdit(getItem(slot), particleIndex);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), editAction);
|
||||
|
||||
}
|
||||
|
||||
String itemTitle = Message.EDITOR_PARTICLE_OVERVIEW_PARTICLE_NAME.getValue();
|
||||
@@ -111,7 +121,9 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
EditorLore.updateParticleDescription(item, targetHat, i);
|
||||
|
||||
setItem(getNormalIndex(i, 10, 2), item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,7 +136,9 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
if (entry.getValue()) {
|
||||
|
||||
database.saveParticleData(menuName, targetHat, entry.getKey());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < targetHat.getType().getParticlesSupported(); i++) {
|
||||
@@ -132,10 +146,16 @@ public class EditorParticleMenuOverview extends AbstractStaticMenu {
|
||||
if (targetHat.getParticleData(i).hasPropertyChanges()) {
|
||||
|
||||
database.saveParticleData(menuName, targetHat, i);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -46,12 +46,9 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
private int currentColorPage = 0;
|
||||
private int currentDataPage = 0;
|
||||
|
||||
public EditorParticleSelectionMenu(
|
||||
CosmeticsOG core,
|
||||
EditorMenuManager menuManager,
|
||||
Player owner,
|
||||
int particleIndex,
|
||||
MenuObjectCallback callback) {
|
||||
public EditorParticleSelectionMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex,
|
||||
MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
@@ -61,8 +58,8 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
this.particleMenus = new HashMap<Integer, Inventory>();
|
||||
this.colorFilterMenus = new HashMap<Integer, Inventory>();
|
||||
this.dataFilterMenus = new HashMap<Integer, Inventory>();
|
||||
this.recentFilterMenu = Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_PARTICLE_MENU_RECENT_FILTER_TITLE.getValue()));
|
||||
this.recentFilterMenu = Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_PARTICLE_MENU_RECENT_FILTER_TITLE.getValue()));
|
||||
|
||||
this.particles = new HashMap<Integer, ParticleEffect>();
|
||||
this.colorParticles = new HashMap<Integer, ParticleEffect>();
|
||||
@@ -76,13 +73,16 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
this.inventory = Bukkit.createInventory(null, 54, Component.text(""));
|
||||
|
||||
this.particleSelectionAction = (event, slot) -> {
|
||||
|
||||
int index = slot;
|
||||
switch (menuType) {
|
||||
|
||||
case COLOR:
|
||||
index = slot + (currentColorPage * 45);
|
||||
if (colorParticles.containsKey(index)) {
|
||||
|
||||
callback.onSelect(colorParticles.get(index));
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -91,6 +91,7 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
if (dataParticles.containsKey(index)) {
|
||||
|
||||
callback.onSelect(dataParticles.get(index));
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -99,6 +100,7 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
if (recentParticles.containsKey(index)) {
|
||||
|
||||
callback.onSelect(recentParticles.get(index));
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -107,13 +109,17 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
if (particles.containsKey(index)) {
|
||||
|
||||
callback.onSelect(particles.get(index));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -122,12 +128,14 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
Inventory inventory = particleMenus.get(currentParticlePage);
|
||||
|
||||
open(inventory);
|
||||
|
||||
}
|
||||
|
||||
private void open(Inventory inventory) {
|
||||
|
||||
menuManager.isOpeningMenu(this);
|
||||
owner.openInventory(inventory);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -144,61 +152,67 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
|
||||
// Recents filter.
|
||||
recentFilterMenu.setItem(49, backButtonItem);
|
||||
recentFilterMenu.setItem(
|
||||
45, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_NORMAL_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(
|
||||
46, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_COLOUR_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(
|
||||
47, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_DATA_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(
|
||||
53,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_PARTICLE_MENU_RECENT_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(45,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_NORMAL_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(46,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_COLOUR_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(47,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_DATA_FILTER.getValue()));
|
||||
recentFilterMenu.setItem(53, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_PARTICLE_MENU_RECENT_FILTER.getValue()));
|
||||
|
||||
// Back button.
|
||||
setAction(49, backButtonAction);
|
||||
|
||||
// All particles filter.
|
||||
setAction(45, (event, slot) -> {
|
||||
|
||||
menuType = MenuType.PARTICLES;
|
||||
|
||||
open(particleMenus.get(currentParticlePage));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Color filter.
|
||||
setAction(46, (event, slot) -> {
|
||||
|
||||
menuType = MenuType.COLOR;
|
||||
|
||||
open(colorFilterMenus.get(currentColorPage));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Data filter.
|
||||
setAction(47, (event, slot) -> {
|
||||
|
||||
menuType = MenuType.DATA;
|
||||
|
||||
open(dataFilterMenus.get(currentDataPage));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Recents filter.
|
||||
setAction(53, (event, slot) -> {
|
||||
|
||||
menuType = MenuType.RECENTS;
|
||||
|
||||
open(recentFilterMenu);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Previous page.
|
||||
setAction(48, (event, slot) -> {
|
||||
|
||||
switch (menuType) {
|
||||
|
||||
case COLOR:
|
||||
open(colorFilterMenus.get(--currentColorPage));
|
||||
|
||||
@@ -209,14 +223,18 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
break;
|
||||
default:
|
||||
open(particleMenus.get(--currentParticlePage));
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Next page.
|
||||
setAction(50, (event, slot) -> {
|
||||
|
||||
switch (menuType) {
|
||||
|
||||
case COLOR:
|
||||
open(colorFilterMenus.get(++currentColorPage));
|
||||
|
||||
@@ -227,14 +245,17 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
break;
|
||||
default:
|
||||
open(particleMenus.get(++currentParticlePage));
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
for (int i = 0; i < 45; i++) {
|
||||
|
||||
setAction(i, particleSelectionAction);
|
||||
|
||||
}
|
||||
|
||||
ParticleEffect currentEffect = targetHat.getParticle(particleIndex);
|
||||
@@ -256,6 +277,7 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
if (!pe.isSupported()) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
ItemStack item = pe.getItem().clone();
|
||||
@@ -267,6 +289,7 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
isSelected = true;
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateParticleItemDescription(item, pe, isSelected);
|
||||
@@ -275,12 +298,14 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
|
||||
colorFilterMenus.get(colorPage).setItem(colorItemIndex++, item);
|
||||
colorParticles.put(colorParticleIndex++, pe);
|
||||
|
||||
}
|
||||
|
||||
if (pe.hasData()) {
|
||||
|
||||
dataFilterMenus.get(dataPage).setItem(dataItemIndex++, item);
|
||||
dataParticles.put(dataParticleIndex++, pe);
|
||||
|
||||
}
|
||||
|
||||
particleMenus.get(particlePage).setItem(particleItemIndex++, item);
|
||||
@@ -291,12 +316,14 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
particleItemIndex = 0;
|
||||
|
||||
particlePage++;
|
||||
|
||||
}
|
||||
|
||||
if (colorItemIndex > 0 && colorItemIndex % 45 == 0) {
|
||||
|
||||
colorItemIndex = 0;
|
||||
colorPage = 0;
|
||||
|
||||
}
|
||||
|
||||
if (dataItemIndex > 0 && dataItemIndex % 45 == 0) {
|
||||
@@ -304,7 +331,9 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
dataItemIndex = 0;
|
||||
|
||||
dataPage++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Recently used.
|
||||
@@ -320,25 +349,33 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
selected = true;
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateParticleItemDescription(item, pe, selected);
|
||||
|
||||
recentParticles.put(index, pe);
|
||||
recentFilterMenu.setItem(getNormalIndex(index++, 10, 2), item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasInventory(Inventory inventory) {
|
||||
|
||||
switch (menuType) {
|
||||
|
||||
case COLOR:
|
||||
return colorFilterMenus.containsValue(inventory);
|
||||
case DATA:
|
||||
@@ -347,87 +384,71 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
return recentFilterMenu.equals(inventory);
|
||||
default:
|
||||
return particleMenus.containsValue(inventory);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void generateMenus(Map<Integer, Inventory> pages, Message title, int totalPages, MenuType type) {
|
||||
|
||||
for (int i = 0; i < totalPages; i++) {
|
||||
|
||||
String menuTitle =
|
||||
title.replace("{1}", Integer.toString(i + 1)).replace("{2}", Integer.toString(totalPages));
|
||||
String menuTitle = title.replace("{1}", Integer.toString(i + 1)).replace("{2}",
|
||||
Integer.toString(totalPages));
|
||||
Inventory inventory = Bukkit.createInventory(null, 54, Utils.legacySerializerAnyCase(menuTitle));
|
||||
|
||||
inventory.setItem(49, backButtonItem);
|
||||
inventory.setItem(
|
||||
45, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_NORMAL_FILTER.getValue()));
|
||||
inventory.setItem(
|
||||
46, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_COLOUR_FILTER.getValue()));
|
||||
inventory.setItem(
|
||||
47, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_DATA_FILTER.getValue()));
|
||||
inventory.setItem(
|
||||
53, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_RECENT_FILTER.getValue()));
|
||||
inventory.setItem(45,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_NORMAL_FILTER.getValue()));
|
||||
inventory.setItem(46,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_COLOUR_FILTER.getValue()));
|
||||
inventory.setItem(47,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_DATA_FILTER.getValue()));
|
||||
inventory.setItem(53,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_PARTICLE_MENU_RECENT_FILTER.getValue()));
|
||||
|
||||
if ((i + 1) < totalPages) {
|
||||
|
||||
inventory.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
inventory.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
inventory.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
inventory.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
|
||||
case COLOR:
|
||||
inventory.setItem(
|
||||
46,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_PARTICLE_MENU_COLOUR_FILTER.getValue()));
|
||||
inventory.setItem(46, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_PARTICLE_MENU_COLOUR_FILTER.getValue()));
|
||||
break;
|
||||
case DATA:
|
||||
inventory.setItem(
|
||||
47,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_PARTICLE_MENU_DATA_FILTER.getValue()));
|
||||
inventory.setItem(47, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_PARTICLE_MENU_DATA_FILTER.getValue()));
|
||||
|
||||
break;
|
||||
case RECENTS:
|
||||
inventory.setItem(
|
||||
53,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_PARTICLE_MENU_RECENT_FILTER.getValue()));
|
||||
inventory.setItem(53, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_PARTICLE_MENU_RECENT_FILTER.getValue()));
|
||||
|
||||
break;
|
||||
default:
|
||||
inventory.setItem(
|
||||
45,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_PARTICLE_MENU_NORMAL_FILTER.getValue()));
|
||||
inventory.setItem(45, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_PARTICLE_MENU_NORMAL_FILTER.getValue()));
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
pages.put(i, inventory);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private int getParticleCountWithTag(MenuType type) {
|
||||
@@ -438,13 +459,16 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
if (!pe.isSupported()) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
|
||||
case COLOR:
|
||||
if (pe.hasColorData()) {
|
||||
|
||||
count++;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -452,21 +476,23 @@ public class EditorParticleSelectionMenu extends AbstractStaticMenu {
|
||||
if (pe.hasData()) {
|
||||
|
||||
count++;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
count++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return count;
|
||||
|
||||
}
|
||||
|
||||
private enum MenuType {
|
||||
PARTICLES,
|
||||
COLOR,
|
||||
DATA,
|
||||
RECENTS;
|
||||
PARTICLES, COLOR, DATA, RECENTS;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,8 +34,8 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
private final String potionTitle = Message.EDITOR_POTION_MENU_POTION_TITLE.getValue();
|
||||
private final String potionSelected = Message.EDITOR_POTION_MENU_POTION_DESCRIPTION.getValue();
|
||||
|
||||
private final List<String> potionBlacklist =
|
||||
Arrays.asList("CONFUSION", "HARM", "POISON", "WEAKNESS", "WITHER", "UNLUCK", "HUNGER", "BAD_OMEN");
|
||||
private final List<String> potionBlacklist = Arrays.asList("CONFUSION", "HARM", "POISON", "WEAKNESS", "WITHER",
|
||||
"UNLUCK", "HUNGER", "BAD_OMEN");
|
||||
|
||||
private List<PotionEffectType> supportedPotions;
|
||||
private Map<Integer, PotionEffectType> potions;
|
||||
@@ -55,34 +55,42 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
if (potion == null) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (!useBlacklist && potionBlacklist.contains(potion.getName())) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
supportedPotions.add(potion);
|
||||
|
||||
}
|
||||
|
||||
this.totalPages = MathUtil.calculatePageCount(supportedPotions.size(), 28);
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {}
|
||||
public void insertEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {}
|
||||
public void removeEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
|
||||
for (int i = 0; i < totalPages; i++) {
|
||||
|
||||
String title =
|
||||
menuTitle.replace("{1}", Integer.toString(i + 1)).replace("{2}", Integer.toString(totalPages));
|
||||
String title = menuTitle.replace("{1}", Integer.toString(i + 1)).replace("{2}",
|
||||
Integer.toString(totalPages));
|
||||
Inventory menu = Bukkit.createInventory(null, 54, Utils.legacySerializerAnyCase(title));
|
||||
|
||||
menu.setItem(49, backButtonItem);
|
||||
@@ -90,74 +98,77 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
// Next page.
|
||||
if ((i + 1) < totalPages) {
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Previous page.
|
||||
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
menu.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
menu.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Potion strength.
|
||||
menu.setItem(
|
||||
52,
|
||||
menu.setItem(52,
|
||||
ItemUtil.createItem(Material.GHAST_TEAR, 1, Message.EDITOR_POTION_MENU_SET_STRENGTH.getValue()));
|
||||
|
||||
EditorLore.updatePotionStrengthDescription(menu.getItem(52), targetHat.getPotion());
|
||||
|
||||
setMenu(i, menu);
|
||||
|
||||
}
|
||||
|
||||
MenuAction selectAction = (event, slot) -> {
|
||||
|
||||
int index = getClampedIndex(slot, 10, 2) + (currentPage * 28);
|
||||
if (potions.containsKey(index)) {
|
||||
|
||||
targetHat.setPotion(potions.get(index), targetHat.getPotionAmplifier());
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), selectAction);
|
||||
|
||||
}
|
||||
|
||||
setAction(49, backButtonAction);
|
||||
|
||||
// Previous page.
|
||||
setAction(48, (clickEvent, slot) -> {
|
||||
|
||||
currentPage--;
|
||||
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Next page.
|
||||
setAction(50, (clickEvent, slot) -> {
|
||||
|
||||
currentPage++;
|
||||
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
setAction(52, (event, slot) -> {
|
||||
|
||||
int strength = 1;
|
||||
PotionEffect pe = targetHat.getPotion();
|
||||
if (pe != null) {
|
||||
@@ -166,12 +177,14 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
strength += event.isLeftClick() ? 1 : -1;
|
||||
|
||||
targetHat.setPotionAmplifier(strength);
|
||||
|
||||
}
|
||||
|
||||
ItemStack item = menus.get(currentPage).getItem(52);
|
||||
EditorLore.updatePotionStrengthDescription(item, targetHat.getPotion());
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
});
|
||||
|
||||
PotionEffect currentPotion = targetHat.getPotion();
|
||||
@@ -180,6 +193,7 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
if (currentPotion != null) {
|
||||
|
||||
currentType = currentPotion.getType();
|
||||
|
||||
}
|
||||
|
||||
String[] selectInfo = StringUtil.parseValue(potionSelected, "1");
|
||||
@@ -198,17 +212,17 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
String description =
|
||||
potionSelected.replace(selectInfo[0], "").replace(selectedInfo[0], selectedInfo[1]);
|
||||
String description = potionSelected.replace(selectInfo[0], "").replace(selectedInfo[0],
|
||||
selectedInfo[1]);
|
||||
|
||||
ItemUtil.setItemDescription(item, StringUtil.parseDescription(description));
|
||||
|
||||
} else {
|
||||
|
||||
String description =
|
||||
potionSelected.replace(selectInfo[0], selectInfo[1]).replace(selectedInfo[0], "");
|
||||
String description = potionSelected.replace(selectInfo[0], selectInfo[1]).replace(selectedInfo[0], "");
|
||||
|
||||
ItemUtil.setItemDescription(item, StringUtil.parseDescription(description));
|
||||
|
||||
}
|
||||
|
||||
menus.get(page).setItem(getNormalIndex(index, 10, 2), item);
|
||||
@@ -221,8 +235,11 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -231,9 +248,14 @@ public class EditorPotionMenu extends AbstractListMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,22 +23,25 @@ public class EditorResizeMenu extends AbstractStaticMenu {
|
||||
super(core, menuManager, owner);
|
||||
|
||||
this.editorBaseMenu = editorBaseMenu;
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 27, Utils.legacySerializerAnyCase(Message.EDITOR_RESIZE_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 27,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_RESIZE_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
|
||||
final MenuAction resizeAction = (event, slot) -> {
|
||||
|
||||
int size = (slot - 10) + (slot < 13 ? 1 : 0);
|
||||
|
||||
editorBaseMenu.resizeTo(size);
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
String title = Message.EDITOR_RESIZE_MENU_SET_ROW_SIZE.getValue();
|
||||
@@ -50,10 +53,11 @@ public class EditorResizeMenu extends AbstractStaticMenu {
|
||||
if (i == 3) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
String t = title.replace("{1}", Integer.toString((i + 1) - (i > 3 ? 1 : 0)))
|
||||
.replace(suffixInfo[0], i == 0 ? "" : suffixInfo[1]);
|
||||
String t = title.replace("{1}", Integer.toString((i + 1) - (i > 3 ? 1 : 0))).replace(suffixInfo[0],
|
||||
i == 0 ? "" : suffixInfo[1]);
|
||||
String description = Message.EDITOR_RESIZE_MENU_SET_ROW_DESCRIPTION.getValue();
|
||||
|
||||
List<TextComponent> descriptionList = List.of(Utils.legacySerializerAnyCase(description));
|
||||
@@ -61,6 +65,7 @@ public class EditorResizeMenu extends AbstractStaticMenu {
|
||||
ItemStack row = ItemUtil.createItem(CompatibleMaterial.GRAY_DYE.getMaterial(), 1, t, descriptionList);
|
||||
|
||||
setButton(i + 10, row, resizeAction);
|
||||
|
||||
}
|
||||
|
||||
int currentRows = editorBaseMenu.rows();
|
||||
@@ -69,11 +74,17 @@ public class EditorResizeMenu extends AbstractStaticMenu {
|
||||
|
||||
ItemUtil.setItemType(row, CompatibleMaterial.LIME_DYE);
|
||||
ItemUtil.highlightItem(row);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,8 +27,9 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
|
||||
private final String menuTitle;
|
||||
|
||||
public EditorSearchMenu(
|
||||
CosmeticsOG core, MenuManager menuManager, Player owner, String searchQuery, MenuObjectCallback callback) {
|
||||
public EditorSearchMenu(CosmeticsOG core, MenuManager menuManager, Player owner, String searchQuery,
|
||||
MenuObjectCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner, false);
|
||||
|
||||
@@ -43,6 +44,7 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
if (blacklist.contains(material)) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
String materialName = material.toString().toLowerCase();
|
||||
@@ -51,36 +53,43 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
if (materialName.contains(q)) {
|
||||
|
||||
matchingResults.add(material);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.totalPages = MathUtil.calculatePageCount(matchingResults.size(), 45);
|
||||
this.selectAction = (event, slot) -> {
|
||||
|
||||
int index = slot + (currentPage * 45);
|
||||
if (index < matchingResults.size()) {
|
||||
|
||||
callback.onSelect(new ItemStack(matchingResults.get(index)));
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {
|
||||
|
||||
setItem(
|
||||
0,
|
||||
22,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.BARRIER.getMaterial(), 1, Message.EDITOR_SEARCH_MENU_NO_RESULTS.getValue()));
|
||||
setItem(0, 22, ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1,
|
||||
Message.EDITOR_SEARCH_MENU_NO_RESULTS.getValue()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {}
|
||||
public void removeEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
@@ -90,25 +99,30 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
|
||||
// Previous page.
|
||||
setAction(48, (event, slot) -> {
|
||||
|
||||
currentPage--;
|
||||
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Next page.
|
||||
setAction(50, (event, slot) -> {
|
||||
|
||||
currentPage++;
|
||||
|
||||
open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
for (int i = 0; i < 45; i++) {
|
||||
|
||||
setAction(i, selectAction);
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < totalPages; i++) {
|
||||
@@ -119,25 +133,20 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
|
||||
if ((i + 1) < totalPages) {
|
||||
|
||||
inventory.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
inventory.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
inventory.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
inventory.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
setMenu(i, inventory);
|
||||
|
||||
}
|
||||
|
||||
if (matchingResults.isEmpty()) {
|
||||
@@ -145,6 +154,7 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
setEmpty(true);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
@@ -158,13 +168,21 @@ public class EditorSearchMenu extends AbstractListMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,18 +22,20 @@ public class EditorSettingsMenu extends AbstractStaticMenu {
|
||||
private final EditorBaseMenu editorBaseMenu;
|
||||
private final MenuInventory menuInventory;
|
||||
|
||||
public EditorSettingsMenu(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, EditorBaseMenu editorBaseMenu) {
|
||||
public EditorSettingsMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner,
|
||||
EditorBaseMenu editorBaseMenu)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
this.editorManager = menuManager;
|
||||
this.editorBaseMenu = editorBaseMenu;
|
||||
this.menuInventory = editorBaseMenu.getMenuInventory();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_SETTINGS_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_SETTINGS_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,9 +45,10 @@ public class EditorSettingsMenu extends AbstractStaticMenu {
|
||||
setButton(49, backButtonItem, backButtonAction);
|
||||
|
||||
// Set title.
|
||||
ItemStack titleItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.SIGN.getMaterial(), 1, Message.EDITOR_SETTINGS_MENU_SET_TITLE.getValue());
|
||||
ItemStack titleItem = ItemUtil.createItem(CompatibleMaterial.SIGN.getMaterial(), 1,
|
||||
Message.EDITOR_SETTINGS_MENU_SET_TITLE.getValue());
|
||||
setButton(11, titleItem, (event, slot) -> {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.MENU_TITLE);
|
||||
|
||||
core.prompt(owner, MetaState.MENU_TITLE);
|
||||
@@ -53,12 +56,14 @@ public class EditorSettingsMenu extends AbstractStaticMenu {
|
||||
menuManager.closeInventory();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Set alias.
|
||||
ItemStack aliasItem =
|
||||
ItemUtil.createItem(Material.NAME_TAG, 1, Message.EDITOR_SETTINGS_MENU_SET_ALIAS.getValue());
|
||||
ItemStack aliasItem = ItemUtil.createItem(Material.NAME_TAG, 1,
|
||||
Message.EDITOR_SETTINGS_MENU_SET_ALIAS.getValue());
|
||||
setButton(13, aliasItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
editorManager.getOwnerState().setMetaState(MetaState.MENU_ALIAS);
|
||||
@@ -74,58 +79,68 @@ public class EditorSettingsMenu extends AbstractStaticMenu {
|
||||
core.getDatabase().saveMenuAlias(menuInventory.getName(), "NULL");
|
||||
|
||||
EditorLore.updateAliasDescription(inventory.getItem(13), menuInventory.getAlias());
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Set size.
|
||||
ItemStack sizeItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.COMPARATOR.getMaterial(), 1, Message.EDITOR_SETTINGS_MENU_SET_SIZE.getValue());
|
||||
ItemStack sizeItem = ItemUtil.createItem(CompatibleMaterial.COMPARATOR.getMaterial(), 1,
|
||||
Message.EDITOR_SETTINGS_MENU_SET_SIZE.getValue());
|
||||
setButton(15, sizeItem, (event, slot) -> {
|
||||
|
||||
EditorResizeMenu editorResizeMenu = new EditorResizeMenu(core, menuManager, owner, editorBaseMenu);
|
||||
menuManager.addMenu(editorResizeMenu);
|
||||
|
||||
editorResizeMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Toggle live updates.
|
||||
ItemStack liveItem =
|
||||
ItemUtil.createItem(Material.LEVER, 1, Message.EDITOR_SETTINGS_MENU_TOGGLE_LIVE_MENU.getValue());
|
||||
EditorLore.updateBooleanDescription(
|
||||
liveItem, editorBaseMenu.canUpdate(), Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
ItemStack liveItem = ItemUtil.createItem(Material.LEVER, 1,
|
||||
Message.EDITOR_SETTINGS_MENU_TOGGLE_LIVE_MENU.getValue());
|
||||
EditorLore.updateBooleanDescription(liveItem, editorBaseMenu.canUpdate(),
|
||||
Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
setButton(29, liveItem, (event, slot) -> {
|
||||
|
||||
editorBaseMenu.toggleUpdates();
|
||||
|
||||
EditorLore.updateBooleanDescription(
|
||||
getItem(29), editorBaseMenu.canUpdate(), Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
EditorLore.updateBooleanDescription(getItem(29), editorBaseMenu.canUpdate(),
|
||||
Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Sync icons.
|
||||
ItemStack syncItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.CONDUIT.getMaterial(),
|
||||
ItemStack syncItem = ItemUtil.createItem(CompatibleMaterial.CONDUIT.getMaterial(),
|
||||
Message.EDITOR_SETTINGS_MENU_SYNC_ICONS.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_SETTINGS_SYNC_DESCRIPTION.getValue()));
|
||||
setButton(31, syncItem, (event, slot) -> {
|
||||
|
||||
editorBaseMenu.syncItems();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Delete.
|
||||
ItemStack deleteItem = ItemUtil.createItem(Material.TNT, 1, Message.EDITOR_SETTINGS_MENU_DELETE.getValue());
|
||||
setButton(33, deleteItem, (event, slot) -> {
|
||||
|
||||
EditorDeleteMenu editorDeleteMenu = new EditorDeleteMenu(core, menuManager, owner, editorBaseMenu);
|
||||
menuManager.addMenu(editorDeleteMenu);
|
||||
|
||||
editorDeleteMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -137,20 +152,28 @@ public class EditorSettingsMenu extends AbstractStaticMenu {
|
||||
if (titleItem != null) {
|
||||
|
||||
ItemUtil.setItemDescription(titleItem, StringUtil.parseDescription(title));
|
||||
|
||||
}
|
||||
|
||||
ItemStack aliasItem = getItem(13);
|
||||
if (aliasItem != null) {
|
||||
|
||||
EditorLore.updateAliasDescription(aliasItem, menuInventory.getAlias());
|
||||
|
||||
}
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,12 +22,9 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
private final boolean cloning;
|
||||
private final int size;
|
||||
|
||||
public EditorSlotMenu(
|
||||
CosmeticsOG core,
|
||||
EditorMenuManager menuManager,
|
||||
Player owner,
|
||||
EditorBaseMenu editorBaseMenu,
|
||||
boolean cloning) {
|
||||
public EditorSlotMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, EditorBaseMenu editorBaseMenu,
|
||||
boolean cloning)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
@@ -35,10 +32,11 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
this.editorBaseMenu = editorBaseMenu;
|
||||
this.cloning = cloning;
|
||||
this.size = editorBaseMenu.getMenuInventory().getSize();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, size, Utils.legacySerializerAnyCase(Message.EDITOR_SLOT_MENU_TITlE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, size,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_SLOT_MENU_TITlE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,6 +44,7 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
|
||||
int targetSlot = editorManager.getTargetSlot();
|
||||
final MenuAction selectAction = (event, slot) -> {
|
||||
|
||||
if (cloning) {
|
||||
|
||||
editorBaseMenu.cloneHat(targetSlot, slot);
|
||||
@@ -53,6 +52,7 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
editorManager.returnToBaseMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
}
|
||||
|
||||
editorBaseMenu.changeSlots(targetSlot, slot, false);
|
||||
@@ -60,20 +60,25 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
final MenuAction swapAction = (event, slot) -> {
|
||||
|
||||
editorBaseMenu.changeSlots(targetSlot, slot, true);
|
||||
|
||||
editorManager.returnToBaseMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
final MenuAction secretAction = (event, slot) -> {
|
||||
|
||||
CompatibleSound.ENTITY_VILLAGER_NO.play(owner, 0.5f, 1.0f);
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
@@ -86,10 +91,9 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
|
||||
} else {
|
||||
|
||||
item = ItemUtil.createItem(
|
||||
CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(),
|
||||
1,
|
||||
item = ItemUtil.createItem(CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(), 1,
|
||||
Message.EDITOR_SLOT_MENU_SELECT.getValue());
|
||||
|
||||
}
|
||||
|
||||
String displayName = Message.EDITOR_SLOT_MENU_SELECT.getValue();
|
||||
@@ -102,6 +106,7 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
setAction(i, backButtonAction);
|
||||
|
||||
} else if (editorBaseMenu.getMenuInventory().getHat(i) != null) {
|
||||
|
||||
if (!cloning) {
|
||||
|
||||
displayName = Message.EDITOR_SLOT_MENU_SWAP.getValue();
|
||||
@@ -113,23 +118,32 @@ public class EditorSlotMenu extends AbstractStaticMenu {
|
||||
displayName = Message.EDITOR_SLOT_MENU_OCCUPIED.getValue();
|
||||
|
||||
setAction(i, secretAction);
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
setAction(i, selectAction);
|
||||
|
||||
}
|
||||
|
||||
ItemUtil.setItemName(item, displayName);
|
||||
ItemUtil.setItemDescription(item, Arrays.asList());
|
||||
|
||||
inventory.setItem(i, item);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -52,79 +52,25 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
private SoundFilter currentFilter = SoundFilter.MISC;
|
||||
|
||||
// Disable sounds that are too long.
|
||||
private final List<String> blacklist = Arrays.asList(
|
||||
"MUSIC_CREATIVE",
|
||||
"MUSIC_CREDITS",
|
||||
"MUSIC_DRAGON",
|
||||
"MUSIC_END",
|
||||
"MUSIC_GAME",
|
||||
"MUSIC_MENU",
|
||||
"MUSIC_NETHER",
|
||||
"MUSIC_NETHER_BASALT_DELTAS",
|
||||
"MUSIC_NETHER_CRIMSON_FOREST",
|
||||
"MUSIC_NETHER_NETHER_WASTES",
|
||||
"MUSIC_NETHER_SOUL_SAND_VALLEY",
|
||||
"MUSIC_NETHER_WARPED_FOREST",
|
||||
"MUSIC_UNDER_WATER",
|
||||
"AMBIENT_CAVE",
|
||||
"AMBIENT_UNDERWATER_ENTER",
|
||||
"AMBIENT_UNDERWATER_EXIT",
|
||||
"AMBIENT_UNDERWATER_LOOP",
|
||||
"AMBIENT_UNDERWATER_LOOP_ADDITIONS",
|
||||
"AMBIENT_UNDERWATER_LOOP_ADDITIONS_RARE",
|
||||
"AMBIENT_UNDERWATER_LOOP_ADDITIONS_ULTRA_RARE",
|
||||
"AMBIENT_BASALT_DELTAS_ADDITIONS",
|
||||
"AMBIENT_BASALT_DELTAS_LOOP",
|
||||
"AMBIENT_BASALT_DELTAS_MOOD",
|
||||
"AMBIENT_CAVE",
|
||||
"AMBIENT_CRIMSON_FOREST_ADDITIONS",
|
||||
"AMBIENT_CRIMSON_FOREST_LOOP",
|
||||
"AMBIENT_CRIMSON_FOREST_MOOD",
|
||||
"AMBIENT_NETHER_WASTES_ADDITIONS",
|
||||
"AMBIENT_NETHER_WASTES_LOOP",
|
||||
"AMBIENT_NETHER_WASTES_MOOD",
|
||||
"AMBIENT_SOUL_SAND_VALLEY_ADDITIONS",
|
||||
"AMBIENT_SOUL_SAND_VALLEY_LOOP",
|
||||
"AMBIENT_SOUL_SAND_VALLEY_MOOD",
|
||||
"AMBIENT_WARPED_FOREST_ADDITIONS",
|
||||
"AMBIENT_WARPED_FOREST_LOOP",
|
||||
"AMBIENT_WARPED_FOREST_MOOD",
|
||||
"ITEM_ELYTRA_FLYING",
|
||||
"ENTITY_ENDER_DRAGON_DEATH",
|
||||
"MUSIC_DISC_11",
|
||||
"MUSIC_DISC_13",
|
||||
"MUSIC_DISC_BLOCKS",
|
||||
"MUSIC_DISC_CAT",
|
||||
"MUSIC_DISC_CHIRP",
|
||||
"MUSIC_DISC_FAR",
|
||||
"MUSIC_DISC_MALL",
|
||||
"MUSIC_DISC_MELLOHI",
|
||||
"MUSIC_DISC_STAL",
|
||||
"MUSIC_DISC_STRAD",
|
||||
"MUSIC_DISC_WAIT",
|
||||
"MUSIC_DISC_WARD",
|
||||
"MUSIC_DISC_PIGSTEP",
|
||||
"MUSIC_DISC_OTHERSIDE",
|
||||
"MUSIC_OVERWORLD_DRIPSTONE_CAVES",
|
||||
"MUSIC_OVERWORLD_FROZEN_PEAKS",
|
||||
"MUSIC_OVERWORLD_GROVE",
|
||||
"MUSIC_OVERWORLD_JAGGED_PEAKS",
|
||||
"MUSIC_OVERWORLD_LUSH_CAVES",
|
||||
"MUSIC_OVERWORLD_MEADOW",
|
||||
"MUSIC_OVERWORLD_SNOWY_SLOPES",
|
||||
"MUSIC_OVERWORLD_STONY_PEAKS",
|
||||
"RECORD_11",
|
||||
"RECORD_13",
|
||||
"RECORD_BLOCKS",
|
||||
"RECORD_CAT",
|
||||
"RECORD_CHIRP",
|
||||
"RECORD_FAR",
|
||||
"RECORD_MALL",
|
||||
"RECORD_MELLOHI",
|
||||
"RECORD_STAL",
|
||||
"RECORD_STRAD",
|
||||
"RECORD_WAIT",
|
||||
"RECORD_WARD");
|
||||
private final List<String> blacklist = Arrays.asList("MUSIC_CREATIVE", "MUSIC_CREDITS", "MUSIC_DRAGON", "MUSIC_END",
|
||||
"MUSIC_GAME", "MUSIC_MENU", "MUSIC_NETHER", "MUSIC_NETHER_BASALT_DELTAS", "MUSIC_NETHER_CRIMSON_FOREST",
|
||||
"MUSIC_NETHER_NETHER_WASTES", "MUSIC_NETHER_SOUL_SAND_VALLEY", "MUSIC_NETHER_WARPED_FOREST",
|
||||
"MUSIC_UNDER_WATER", "AMBIENT_CAVE", "AMBIENT_UNDERWATER_ENTER", "AMBIENT_UNDERWATER_EXIT",
|
||||
"AMBIENT_UNDERWATER_LOOP", "AMBIENT_UNDERWATER_LOOP_ADDITIONS", "AMBIENT_UNDERWATER_LOOP_ADDITIONS_RARE",
|
||||
"AMBIENT_UNDERWATER_LOOP_ADDITIONS_ULTRA_RARE", "AMBIENT_BASALT_DELTAS_ADDITIONS",
|
||||
"AMBIENT_BASALT_DELTAS_LOOP", "AMBIENT_BASALT_DELTAS_MOOD", "AMBIENT_CAVE",
|
||||
"AMBIENT_CRIMSON_FOREST_ADDITIONS", "AMBIENT_CRIMSON_FOREST_LOOP", "AMBIENT_CRIMSON_FOREST_MOOD",
|
||||
"AMBIENT_NETHER_WASTES_ADDITIONS", "AMBIENT_NETHER_WASTES_LOOP", "AMBIENT_NETHER_WASTES_MOOD",
|
||||
"AMBIENT_SOUL_SAND_VALLEY_ADDITIONS", "AMBIENT_SOUL_SAND_VALLEY_LOOP", "AMBIENT_SOUL_SAND_VALLEY_MOOD",
|
||||
"AMBIENT_WARPED_FOREST_ADDITIONS", "AMBIENT_WARPED_FOREST_LOOP", "AMBIENT_WARPED_FOREST_MOOD",
|
||||
"ITEM_ELYTRA_FLYING", "ENTITY_ENDER_DRAGON_DEATH", "MUSIC_DISC_11", "MUSIC_DISC_13", "MUSIC_DISC_BLOCKS",
|
||||
"MUSIC_DISC_CAT", "MUSIC_DISC_CHIRP", "MUSIC_DISC_FAR", "MUSIC_DISC_MALL", "MUSIC_DISC_MELLOHI",
|
||||
"MUSIC_DISC_STAL", "MUSIC_DISC_STRAD", "MUSIC_DISC_WAIT", "MUSIC_DISC_WARD", "MUSIC_DISC_PIGSTEP",
|
||||
"MUSIC_DISC_OTHERSIDE", "MUSIC_OVERWORLD_DRIPSTONE_CAVES", "MUSIC_OVERWORLD_FROZEN_PEAKS",
|
||||
"MUSIC_OVERWORLD_GROVE", "MUSIC_OVERWORLD_JAGGED_PEAKS", "MUSIC_OVERWORLD_LUSH_CAVES",
|
||||
"MUSIC_OVERWORLD_MEADOW", "MUSIC_OVERWORLD_SNOWY_SLOPES", "MUSIC_OVERWORLD_STONY_PEAKS", "RECORD_11",
|
||||
"RECORD_13", "RECORD_BLOCKS", "RECORD_CAT", "RECORD_CHIRP", "RECORD_FAR", "RECORD_MALL", "RECORD_MELLOHI",
|
||||
"RECORD_STAL", "RECORD_STRAD", "RECORD_WAIT", "RECORD_WARD");
|
||||
|
||||
public EditorSoundMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, MenuObjectCallback callback) {
|
||||
|
||||
@@ -141,10 +87,10 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
this.pitchItem = ItemUtil.createItem(Material.LEVER, 1, Message.EDITOR_SOUND_MENU_SET_PITCH.getValue());
|
||||
this.volumeItem = ItemUtil.createItem(Material.LEVER, 1, Message.EDITOR_SOUND_MENU_SET_VOLUME.getValue());
|
||||
|
||||
EditorLore.updateDoubleDescription(
|
||||
volumeItem, targetHat.getSoundVolume(), Message.EDITOR_SOUND_MENU_PITCH_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(
|
||||
pitchItem, targetHat.getSoundPitch(), Message.EDITOR_SOUND_MENU_PITCH_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(volumeItem, targetHat.getSoundVolume(),
|
||||
Message.EDITOR_SOUND_MENU_PITCH_DESCRIPTION);
|
||||
EditorLore.updateDoubleDescription(pitchItem, targetHat.getSoundPitch(),
|
||||
Message.EDITOR_SOUND_MENU_PITCH_DESCRIPTION);
|
||||
|
||||
boolean useBlacklist = SettingsManager.EDITOR_SHOW_BLACKLISTED_SOUNDS.getBoolean();
|
||||
for (Sound sound : Sound.values()) {
|
||||
@@ -152,10 +98,12 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
if (!useBlacklist && blacklist.contains(sound.toString())) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
String category = sound.toString().split("_")[0];
|
||||
switch (category) {
|
||||
|
||||
case "BLOCK":
|
||||
blockSounds.add(sound);
|
||||
|
||||
@@ -166,7 +114,9 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
break;
|
||||
default:
|
||||
miscSounds.add(sound);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.miscPages = MathUtil.calculatePageCount(miscSounds.size(), 45);
|
||||
@@ -174,12 +124,14 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
this.entityPages = MathUtil.calculatePageCount(entitySounds.size(), 45);
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() {
|
||||
|
||||
openMenu(miscMenus, currentMiscPage);
|
||||
|
||||
}
|
||||
|
||||
public void openMenu(Map<Integer, Inventory> menus, int currentPage) {
|
||||
@@ -193,7 +145,9 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
|
||||
menuManager.isOpeningMenu(this);
|
||||
owner.openInventory(menu);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -216,33 +170,40 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
|
||||
// Misc filter.
|
||||
setAction(45, (event, slot) -> {
|
||||
|
||||
currentFilter = SoundFilter.MISC;
|
||||
|
||||
openMenu(miscMenus, currentMiscPage);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Block filter.
|
||||
setAction(46, (event, slot) -> {
|
||||
|
||||
currentFilter = SoundFilter.BLOCKS;
|
||||
|
||||
openMenu(blockMenus, currentBlockPage);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Entity filter.
|
||||
setAction(47, (event, slot) -> {
|
||||
|
||||
currentFilter = SoundFilter.ENTITIES;
|
||||
|
||||
openMenu(entityMenus, currentEntityPage);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Previous page.
|
||||
setAction(48, (event, slot) -> {
|
||||
|
||||
final Map<Integer, Inventory> menus = getCurrentFilter();
|
||||
int currentPage = getCurrentFilterPage();
|
||||
|
||||
@@ -253,10 +214,12 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
openMenu(menus, currentPage);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Next page.
|
||||
setAction(50, (event, slot) -> {
|
||||
|
||||
final Map<Integer, Inventory> menus = getCurrentFilter();
|
||||
int currentPage = getCurrentFilterPage();
|
||||
|
||||
@@ -267,10 +230,12 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
openMenu(menus, currentPage);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Volume.
|
||||
setAction(52, (event, slot) -> {
|
||||
|
||||
final double increment = (event.isLeftClick() ? 0.1 : -0.1) * (event.isShiftClick() ? 10 : 1);
|
||||
double volume = MathUtil.round(MathUtil.clamp(targetHat.getSoundVolume() + increment, 0, 2), 2);
|
||||
|
||||
@@ -281,10 +246,12 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
getOpenMenu().setItem(52, volumeItem);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Pitch.
|
||||
setAction(53, (event, slot) -> {
|
||||
|
||||
final double increment = (event.isLeftClick() ? 0.1 : -0.1) * (event.isShiftClick() ? 10 : 1);
|
||||
double pitch = MathUtil.round(MathUtil.clamp(targetHat.getSoundPitch() + increment, 0, 2), 2);
|
||||
|
||||
@@ -295,9 +262,11 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
getOpenMenu().setItem(53, pitchItem);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
MenuAction setSoundAction = (event, slot) -> {
|
||||
|
||||
final List<Sound> sounds = getCurrentFilterSounds();
|
||||
final int currentPage = getCurrentFilterPage();
|
||||
|
||||
@@ -315,52 +284,61 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
|
||||
currentPlayingSound = sound;
|
||||
|
||||
owner.playSound(owner.getLocation(), sound, (float) targetHat.getSoundVolume(), (float)
|
||||
targetHat.getSoundPitch());
|
||||
owner.playSound(owner.getLocation(), sound, (float) targetHat.getSoundVolume(),
|
||||
(float) targetHat.getSoundPitch());
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < 45; i++) {
|
||||
|
||||
setAction(i, setSoundAction);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
stopSound();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasInventory(Inventory inventory) {
|
||||
|
||||
switch (currentFilter) {
|
||||
|
||||
default:
|
||||
return miscMenus.containsValue(inventory);
|
||||
case BLOCKS:
|
||||
return blockMenus.containsValue(inventory);
|
||||
case ENTITIES:
|
||||
return entityMenus.containsValue(inventory);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void generateSoundMenu(Map<Integer, Inventory> menus, int pages, Message startingTitle, int categoryIndex) {
|
||||
|
||||
for (int i = 0; i < pages; i++) {
|
||||
|
||||
String menuTitle = startingTitle
|
||||
.getValue()
|
||||
.replace("{1}", Integer.toString(i + 1))
|
||||
.replace("{2}", Integer.toString(pages));
|
||||
String menuTitle = startingTitle.getValue().replace("{1}", Integer.toString(i + 1)).replace("{2}",
|
||||
Integer.toString(pages));
|
||||
Inventory menu = Bukkit.createInventory(null, 54, Utils.legacySerializerAnyCase(menuTitle));
|
||||
|
||||
// Filters.
|
||||
@@ -372,6 +350,7 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
menu.setItem(49, backButtonItem);
|
||||
|
||||
switch (categoryIndex) {
|
||||
|
||||
case 0:
|
||||
ItemUtil.setItemType(menu.getItem(45), CompatibleMaterial.MUSHROOM_STEW);
|
||||
break;
|
||||
@@ -381,40 +360,34 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
case 2:
|
||||
ItemUtil.setItemType(menu.getItem(47), CompatibleMaterial.MUSHROOM_STEW);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// Next page.
|
||||
if ((i + 1) < pages) {
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Previous page.
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
menu.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
menu.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
menus.put(i, menu);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void populateSoundMenu(
|
||||
List<Sound> sounds,
|
||||
Map<Integer, Inventory> menus,
|
||||
CompatibleMaterial disc,
|
||||
int blockSoundSize,
|
||||
int entitySoundSize) {
|
||||
private void populateSoundMenu(List<Sound> sounds, Map<Integer, Inventory> menus, CompatibleMaterial disc,
|
||||
int blockSoundSize, int entitySoundSize)
|
||||
{
|
||||
|
||||
int index = 0;
|
||||
int page = 0;
|
||||
@@ -432,6 +405,7 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
if (targetHatSound != null && targetHatSound.equals(s)) {
|
||||
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
}
|
||||
|
||||
Inventory menu = menus.get(page);
|
||||
@@ -440,11 +414,13 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
if (blockSoundSize == 0) {
|
||||
|
||||
menu.setItem(46, null);
|
||||
|
||||
}
|
||||
|
||||
if (entitySoundSize == 0) {
|
||||
|
||||
menu.setItem(47, null);
|
||||
|
||||
}
|
||||
|
||||
index++;
|
||||
@@ -453,61 +429,77 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Inventory getOpenMenu() {
|
||||
|
||||
switch (currentFilter) {
|
||||
|
||||
default:
|
||||
return miscMenus.get(currentMiscPage);
|
||||
case BLOCKS:
|
||||
return blockMenus.get(currentBlockPage);
|
||||
case ENTITIES:
|
||||
return entityMenus.get(currentEntityPage);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Map<Integer, Inventory> getCurrentFilter() {
|
||||
|
||||
switch (currentFilter) {
|
||||
|
||||
default:
|
||||
return miscMenus;
|
||||
case BLOCKS:
|
||||
return blockMenus;
|
||||
case ENTITIES:
|
||||
return entityMenus;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private int getCurrentFilterPage() {
|
||||
|
||||
switch (currentFilter) {
|
||||
|
||||
default:
|
||||
return currentMiscPage;
|
||||
case BLOCKS:
|
||||
return currentBlockPage;
|
||||
case ENTITIES:
|
||||
return currentEntityPage;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private List<Sound> getCurrentFilterSounds() {
|
||||
|
||||
switch (currentFilter) {
|
||||
|
||||
default:
|
||||
return miscSounds;
|
||||
case BLOCKS:
|
||||
return blockSounds;
|
||||
case ENTITIES:
|
||||
return entitySounds;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void setCurrentFilterPage(int page) {
|
||||
|
||||
switch (currentFilter) {
|
||||
|
||||
case MISC:
|
||||
currentMiscPage = page;
|
||||
|
||||
@@ -520,7 +512,9 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
currentEntityPage = page;
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void stopSound() {
|
||||
@@ -532,13 +526,15 @@ public class EditorSoundMenu extends AbstractStaticMenu {
|
||||
owner.stopSound(currentPlayingSound);
|
||||
|
||||
} catch (NoSuchMethodError error) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private enum SoundFilter {
|
||||
MISC,
|
||||
BLOCKS,
|
||||
ENTITIES;
|
||||
MISC, BLOCKS, ENTITIES;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,25 +32,33 @@ public class EditorTagMenu extends AbstractListMenu {
|
||||
this.totalPages = MathUtil.calculatePageCount(ParticleTag.values().length, 28);
|
||||
|
||||
this.selectAction = (event, slot) -> {
|
||||
|
||||
int index = getClampedIndex(slot, 10, 2);
|
||||
if (storedTags.containsKey(index)) {
|
||||
|
||||
callback.onSelect(storedTags.get(index));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {}
|
||||
public void insertEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {}
|
||||
public void removeEmptyItem() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
@@ -65,26 +73,21 @@ public class EditorTagMenu extends AbstractListMenu {
|
||||
// Next page.
|
||||
if ((i + 1) < totalPages) {
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Previous page.
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
menu.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
menu.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
setMenu(i, menu);
|
||||
|
||||
}
|
||||
|
||||
setAction(49, backButtonAction);
|
||||
@@ -97,12 +100,11 @@ public class EditorTagMenu extends AbstractListMenu {
|
||||
if (tag == ParticleTag.NONE || tag == ParticleTag.CUSTOM) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
ItemStack tagItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
tagTitle.replace("{1}", tag.getDisplayName()),
|
||||
StringUtil.parseDescription(tag.getDescription()));
|
||||
ItemStack tagItem = ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
tagTitle.replace("{1}", tag.getDisplayName()), StringUtil.parseDescription(tag.getDescription()));
|
||||
setItem(page, getNormalIndex(index, 10, 2), tagItem);
|
||||
|
||||
storedTags.put(index++, tag);
|
||||
@@ -112,18 +114,27 @@ public class EditorTagMenu extends AbstractListMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), selectAction);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,8 +23,8 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
private final EditorMenuManager editorManager;
|
||||
private final Hat targetHat;
|
||||
private final String tagTitle = Message.EDITOR_TAG_OVERVIEW_MENU_TAG_TITLE.getValue();
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.BARRIER.getMaterial(), 1, Message.EDITOR_TAG_OVERVIEW_MENU_EMPTY.getValue());
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1,
|
||||
Message.EDITOR_TAG_OVERVIEW_MENU_EMPTY.getValue());
|
||||
|
||||
private boolean isModified = false;
|
||||
|
||||
@@ -36,24 +36,25 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.totalPages = 1;
|
||||
|
||||
setMenu(
|
||||
0,
|
||||
Bukkit.createInventory(
|
||||
null, 54, Utils.legacySerializerAnyCase(Message.EDITOR_TAG_OVERVIEW_MENU_TITLE.getValue())));
|
||||
setMenu(0, Bukkit.createInventory(null, 54,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_TAG_OVERVIEW_MENU_TITLE.getValue())));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertEmptyItem() {
|
||||
|
||||
setItem(0, 22, emptyItem);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEmptyItem() {
|
||||
|
||||
setItem(0, 22, null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -61,29 +62,25 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
|
||||
setButton(0, 46, backButtonItem, backButtonAction);
|
||||
|
||||
List<TextComponent> overviewTitleTextComponents =
|
||||
StringUtil.parseDescription(Message.EDITOR_TAG_OVERVIEW_MENU_INFO.getValue()).stream()
|
||||
.map(component ->
|
||||
(TextComponent) component) // Convert list of Components to list of TextComponents.
|
||||
.collect(Collectors.toList());
|
||||
List<TextComponent> overviewTitleTextComponents = StringUtil
|
||||
.parseDescription(Message.EDITOR_TAG_OVERVIEW_MENU_INFO.getValue()).stream()
|
||||
.map(component -> (TextComponent) component) // Convert list of Components to list of TextComponents.
|
||||
.collect(Collectors.toList());
|
||||
|
||||
setItem(
|
||||
0,
|
||||
49,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.REDSTONE_TORCH.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_TAG_OVERVIEW_MENU_INFO_TITLE.getValue(),
|
||||
overviewTitleTextComponents));
|
||||
setItem(0, 49, ItemUtil.createItem(CompatibleMaterial.REDSTONE_TORCH.getMaterial(), 1,
|
||||
Message.EDITOR_TAG_OVERVIEW_MENU_INFO_TITLE.getValue(), overviewTitleTextComponents));
|
||||
|
||||
// Add tag.
|
||||
ItemStack addItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1, Message.EDITOR_TAG_OVERVIEW_MENU_ADD_TAG.getValue());
|
||||
ItemStack addItem = ItemUtil.createItem(CompatibleMaterial.TURTLE_HELMET.getMaterial(), 1,
|
||||
Message.EDITOR_TAG_OVERVIEW_MENU_ADD_TAG.getValue());
|
||||
setButton(0, 52, addItem, (event, slot) -> {
|
||||
|
||||
EditorTagMenu editorTagMenu = new EditorTagMenu(core, editorManager, owner, (tagName) -> {
|
||||
|
||||
if (tagName == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ParticleTag tag = (ParticleTag) tagName;
|
||||
@@ -93,36 +90,35 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
int size = tags.size();
|
||||
if (size < 28) {
|
||||
|
||||
List<TextComponent> overviewDescriptionTextComponents =
|
||||
StringUtil.parseDescription(Message.EDITOR_TAG_OVERVIEW_MENU_TAG_DESCRIPTION.getValue())
|
||||
.stream()
|
||||
.map(component -> (TextComponent) component)
|
||||
.collect(Collectors.toList());
|
||||
List<TextComponent> overviewDescriptionTextComponents = StringUtil
|
||||
.parseDescription(Message.EDITOR_TAG_OVERVIEW_MENU_TAG_DESCRIPTION.getValue()).stream()
|
||||
.map(component -> (TextComponent) component).collect(Collectors.toList());
|
||||
|
||||
ItemStack tagItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
tagTitle.replace("{1}", tag.getDisplayName()),
|
||||
overviewDescriptionTextComponents);
|
||||
ItemStack tagItem = ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
tagTitle.replace("{1}", tag.getDisplayName()), overviewDescriptionTextComponents);
|
||||
|
||||
setItem(0, getNormalIndex(size, 10, 2), tagItem);
|
||||
|
||||
tags.add(tag);
|
||||
|
||||
}
|
||||
|
||||
if (isEmpty) {
|
||||
|
||||
setEmpty(false);
|
||||
|
||||
}
|
||||
|
||||
isModified = true;
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorTagMenu);
|
||||
@@ -130,23 +126,28 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
editorTagMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Edit action.
|
||||
final MenuAction editAction = (event, slot) -> {
|
||||
|
||||
if (event.isShiftRightClick()) {
|
||||
|
||||
deleteSlot(0, slot);
|
||||
|
||||
return MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), editAction);
|
||||
|
||||
}
|
||||
|
||||
// Tags.
|
||||
@@ -157,23 +158,24 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
setEmpty(true);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < tags.size(); i++) {
|
||||
|
||||
ParticleTag tag = tags.get(i);
|
||||
String titleString = Utils.legacySerializerAnyCase(tagTitle.replace("{1}", tag.getDisplayName()))
|
||||
.content();
|
||||
List<TextComponent> textComponents =
|
||||
StringUtil.parseDescription(Message.EDITOR_TAG_OVERVIEW_MENU_TAG_DESCRIPTION.getValue()).stream()
|
||||
.map(component -> (TextComponent) component)
|
||||
.collect(Collectors.toList());
|
||||
String titleString = Utils.legacySerializerAnyCase(tagTitle.replace("{1}", tag.getDisplayName())).content();
|
||||
List<TextComponent> textComponents = StringUtil
|
||||
.parseDescription(Message.EDITOR_TAG_OVERVIEW_MENU_TAG_DESCRIPTION.getValue()).stream()
|
||||
.map(component -> (TextComponent) component).collect(Collectors.toList());
|
||||
|
||||
ItemStack tagItem =
|
||||
ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1, titleString, textComponents);
|
||||
ItemStack tagItem = ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1, titleString,
|
||||
textComponents);
|
||||
|
||||
setItem(0, getNormalIndex(i, 10, 2), tagItem);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -182,11 +184,15 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
if (isModified) {
|
||||
|
||||
core.getDatabase().saveMetaData(editorManager.getMenuName(), targetHat, DataType.TAGS, -1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSlot(int page, int slot) {
|
||||
@@ -201,8 +207,11 @@ public class EditorTagMenuOverview extends AbstractListMenu {
|
||||
if (tags.isEmpty()) {
|
||||
|
||||
setEmpty(true);
|
||||
|
||||
}
|
||||
|
||||
isModified = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,16 +22,13 @@ public class EditorTransferMenu extends AbstractStaticMenu {
|
||||
|
||||
private final EditorMenuManager editorManager;
|
||||
private final MenuInventory menuInventory;
|
||||
List<TextComponent> textComponents =
|
||||
StringUtil.parseDescription(Message.EDITOR_MOVE_MENU_MOVE_DESCRIPTION.getValue()).stream()
|
||||
.map(component ->
|
||||
(TextComponent) component) // Convert list of Components to list of TextComponents.
|
||||
.collect(Collectors.toList());
|
||||
List<TextComponent> textComponents = StringUtil
|
||||
.parseDescription(Message.EDITOR_MOVE_MENU_MOVE_DESCRIPTION.getValue()).stream()
|
||||
.map(component -> (TextComponent) component) // Convert list of Components to list of TextComponents.
|
||||
.collect(Collectors.toList());
|
||||
|
||||
private final ItemStack emptyItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MOVE_MENU_MOVE.getValue(),
|
||||
CompatibleMaterial.LIGHT_GRAY_STAINED_GLASS_PANE.getMaterial(), 1, Message.EDITOR_MOVE_MENU_MOVE.getValue(),
|
||||
textComponents);
|
||||
|
||||
private final String menuName;
|
||||
@@ -43,45 +40,40 @@ public class EditorTransferMenu extends AbstractStaticMenu {
|
||||
this.editorManager = menuManager;
|
||||
this.menuName = menuName;
|
||||
this.menuInventory = core.getDatabase().loadInventory(menuName, core.getPlayerState(owner));
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null,
|
||||
menuInventory.getSize(),
|
||||
Utils.legacySerializerAnyCase(EditorLore.getTrimmedMenuTitle(
|
||||
menuInventory.getTitle().content(), Message.EDITOR_MOVE_MENU_TITLE)));
|
||||
this.inventory = Bukkit.createInventory(null, menuInventory.getSize(), Utils.legacySerializerAnyCase(
|
||||
EditorLore.getTrimmedMenuTitle(menuInventory.getTitle().content(), Message.EDITOR_MOVE_MENU_TITLE)));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void build() {
|
||||
|
||||
final MenuAction moveAction = (event, slot) -> {
|
||||
|
||||
if (event.isRightClick()) {
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
}
|
||||
|
||||
int currentSlot = editorManager.getBaseHat().getSlot();
|
||||
|
||||
core.getDatabase()
|
||||
.moveHat(
|
||||
null,
|
||||
editorManager.getBaseHat(),
|
||||
editorManager.getMenuName(),
|
||||
menuName,
|
||||
currentSlot,
|
||||
slot,
|
||||
false);
|
||||
core.getDatabase().moveHat(null, editorManager.getBaseHat(), editorManager.getMenuName(), menuName,
|
||||
currentSlot, slot, false);
|
||||
|
||||
editorManager.getEditingMenu().removeButton(currentSlot);
|
||||
editorManager.returnToBaseMenu();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
final MenuAction cancelAction = (event, slot) -> {
|
||||
|
||||
if (event.isRightClick()) {
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
@@ -93,7 +85,9 @@ public class EditorTransferMenu extends AbstractStaticMenu {
|
||||
CompatibleSound.ENTITY_VILLAGER_NO.play(owner, 1.0f, 1.0f);
|
||||
|
||||
return MenuClickResult.NONE;
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
for (int i = 0; i < menuInventory.getSize(); i++) {
|
||||
@@ -105,19 +99,26 @@ public class EditorTransferMenu extends AbstractStaticMenu {
|
||||
|
||||
} else {
|
||||
|
||||
ItemUtil.setNameAndDescription(
|
||||
item,
|
||||
ItemUtil.setNameAndDescription(item,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_MOVE_MENU_OCCUPIED.getValue()),
|
||||
StringUtil.parseDescription(Message.EDITOR_MOVE_MENU_OCCUPIED_DESCRIPTION.getValue()));
|
||||
|
||||
setButton(i, item, cancelAction);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -75,6 +75,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
customTypeCurrentPage = 0;
|
||||
|
||||
setTypeAction = (event, slot) -> {
|
||||
|
||||
int index = getClampedIndex(slot, 10, 2);
|
||||
if (selectingFromIncludedTypes) {
|
||||
|
||||
@@ -84,6 +85,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
targetHat.setType(includedTypeData.get(typeIndex));
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -98,19 +100,24 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
targetHat.setCustomType(new PixelEffect(image, name));
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
};
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() {
|
||||
|
||||
open(includedTypeMenus.get(includedTypeCurrentPage));
|
||||
|
||||
}
|
||||
|
||||
private void open(Inventory inventory) {
|
||||
@@ -118,6 +125,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
menuManager.isOpeningMenu(this);
|
||||
|
||||
owner.openInventory(inventory);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -128,10 +136,12 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
for (int i = 0; i < 28; i++) {
|
||||
|
||||
setAction(getNormalIndex(i, 10, 2), setTypeAction);
|
||||
|
||||
}
|
||||
|
||||
// Previous page.
|
||||
setAction(48, (event, slot) -> {
|
||||
|
||||
if (selectingFromIncludedTypes) {
|
||||
|
||||
includedTypeCurrentPage--;
|
||||
@@ -143,13 +153,16 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
customTypeCurrentPage--;
|
||||
|
||||
open(customTypeMenus.get(customTypeCurrentPage));
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Next page.
|
||||
setAction(50, (event, slot) -> {
|
||||
|
||||
if (selectingFromIncludedTypes) {
|
||||
|
||||
includedTypeCurrentPage++;
|
||||
@@ -161,27 +174,33 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
customTypeCurrentPage++;
|
||||
|
||||
open(customTypeMenus.get(customTypeCurrentPage));
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Included types filter.
|
||||
setAction(46, (event, slot) -> {
|
||||
|
||||
selectingFromIncludedTypes = true;
|
||||
|
||||
open(includedTypeMenus.get(includedTypeCurrentPage));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Custom types filter.
|
||||
setAction(47, (event, slot) -> {
|
||||
|
||||
selectingFromIncludedTypes = false;
|
||||
|
||||
open(customTypeMenus.get(customTypeCurrentPage));
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Create included type menus.
|
||||
@@ -189,6 +208,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
|
||||
// Create custom type menus.
|
||||
generateCustomTypeMenus();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -197,11 +217,15 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onSelect(null);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasInventory(Inventory inventory) {
|
||||
@@ -209,9 +233,11 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
if (selectingFromIncludedTypes) {
|
||||
|
||||
return includedTypeMenus.get(includedTypeCurrentPage).equals(inventory);
|
||||
|
||||
}
|
||||
|
||||
return customTypeMenus.get(customTypeCurrentPage).equals(inventory);
|
||||
|
||||
}
|
||||
|
||||
private void generateIncludedTypeMenus() {
|
||||
@@ -228,6 +254,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
if (type.isCustom()) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (type.isDebug()) {
|
||||
@@ -235,7 +262,9 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
if (!CosmeticsOG.debugging) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
boolean selected = currentType.equals(type);
|
||||
@@ -249,6 +278,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
|
||||
ItemUtil.setItemType(item, CompatibleMaterial.CYAN_DYE);
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
}
|
||||
|
||||
includedTypeMenus.get(page).setItem(getNormalIndex(index++, 10, 2), item);
|
||||
@@ -259,8 +289,11 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void generateCustomTypeMenus() {
|
||||
@@ -273,14 +306,8 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
|
||||
if (customTypes.size() == 0) {
|
||||
|
||||
customTypeMenus
|
||||
.get(0)
|
||||
.setItem(
|
||||
22,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.BARRIER.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_TYPE_MENU_NO_CUSTOM_TYPES.getValue()));
|
||||
customTypeMenus.get(0).setItem(22, ItemUtil.createItem(CompatibleMaterial.BARRIER.getMaterial(), 1,
|
||||
Message.EDITOR_TYPE_MENU_NO_CUSTOM_TYPES.getValue()));
|
||||
|
||||
} else {
|
||||
|
||||
@@ -291,7 +318,9 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
if (customEffect != null) {
|
||||
|
||||
currentEffectName = customEffect.getImageName();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int page = 0;
|
||||
@@ -314,6 +343,7 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
if (isSelected) {
|
||||
|
||||
ItemUtil.highlightItem(item);
|
||||
|
||||
}
|
||||
|
||||
customTypeMenus.get(page).setItem(getNormalIndex(index++, 10, 2), item);
|
||||
@@ -328,9 +358,13 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
index = 0;
|
||||
|
||||
page++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void generateMenus(Map<Integer, Inventory> menus, int pages, int category) {
|
||||
@@ -345,49 +379,39 @@ public class EditorTypeMenu extends AbstractStaticMenu {
|
||||
// Next page.
|
||||
if ((i + 1) < pages) {
|
||||
|
||||
menu.setItem(
|
||||
50,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
menu.setItem(50, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_NEXT_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
// Previous page.
|
||||
if ((i + 1) > 1) {
|
||||
|
||||
menu.setItem(
|
||||
48,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.LIME_DYE.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
menu.setItem(48, ItemUtil.createItem(CompatibleMaterial.LIME_DYE.getMaterial(), 1,
|
||||
Message.EDITOR_MISC_PREVIOUS_PAGE.getValue()));
|
||||
|
||||
}
|
||||
|
||||
if (category == 0) {
|
||||
|
||||
menu.setItem(
|
||||
46,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_TYPE_MENU_INCLUDED_FILTER.getValue()));
|
||||
menu.setItem(
|
||||
47, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_TYPE_MENU_CUSTOM_FILTER.getValue()));
|
||||
menu.setItem(46, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_TYPE_MENU_INCLUDED_FILTER.getValue()));
|
||||
menu.setItem(47,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_TYPE_MENU_CUSTOM_FILTER.getValue()));
|
||||
|
||||
} else {
|
||||
|
||||
menu.setItem(
|
||||
46, ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_TYPE_MENU_INCLUDED_FILTER.getValue()));
|
||||
menu.setItem(
|
||||
47,
|
||||
ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSHROOM_STEW.getMaterial(),
|
||||
1,
|
||||
Message.EDITOR_TYPE_MENU_CUSTOM_FILTER.getValue()));
|
||||
menu.setItem(46,
|
||||
ItemUtil.createItem(Material.BOWL, 1, Message.EDITOR_TYPE_MENU_INCLUDED_FILTER.getValue()));
|
||||
menu.setItem(47, ItemUtil.createItem(CompatibleMaterial.MUSHROOM_STEW.getMaterial(), 1,
|
||||
Message.EDITOR_TYPE_MENU_CUSTOM_FILTER.getValue()));
|
||||
|
||||
}
|
||||
|
||||
menus.put(i, menu);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,18 +22,20 @@ public class EditorVelocityMenu extends AbstractStaticMenu {
|
||||
private final int particleIndex;
|
||||
private final MenuCallback callback;
|
||||
|
||||
public EditorVelocityMenu(
|
||||
CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex, MenuCallback callback) {
|
||||
public EditorVelocityMenu(CosmeticsOG core, EditorMenuManager menuManager, Player owner, int particleIndex,
|
||||
MenuCallback callback)
|
||||
{
|
||||
|
||||
super(core, menuManager, owner);
|
||||
|
||||
this.editorManager = menuManager;
|
||||
this.particleIndex = particleIndex;
|
||||
this.callback = callback;
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 27, Utils.legacySerializerAnyCase(Message.EDITOR_VELOCITY_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 27,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_VELOCITY_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,31 +46,38 @@ public class EditorVelocityMenu extends AbstractStaticMenu {
|
||||
Vector velocity = itemStackData.getVelocity();
|
||||
|
||||
// X Offset.
|
||||
ItemStack xItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_VELOCITY_MENU_SET_VELOCITY_X.getValue());
|
||||
ItemStack xItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_VELOCITY_MENU_SET_VELOCITY_X.getValue());
|
||||
EditorLore.updateVectorDescription(xItem, velocity, Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
setButton(14, xItem, (event, slot) -> {
|
||||
|
||||
return updateVelocity(event, targetHat, VectorAxis.X);
|
||||
|
||||
});
|
||||
|
||||
// Y Offset.
|
||||
ItemStack yItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_VELOCITY_MENU_SET_VELOCITY_Y.getValue());
|
||||
ItemStack yItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_VELOCITY_MENU_SET_VELOCITY_Y.getValue());
|
||||
EditorLore.updateVectorDescription(yItem, velocity, Message.EDITOR_OFFSET_MENU_OFFSET_Y_DESCRIPTION);
|
||||
setButton(15, yItem, (event, slot) -> {
|
||||
|
||||
return updateVelocity(event, targetHat, VectorAxis.Y);
|
||||
|
||||
});
|
||||
|
||||
// Z Offset.
|
||||
ItemStack zItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.REPEATER.getMaterial(), 1, Message.EDITOR_VELOCITY_MENU_SET_VELOCITY_Z.getValue());
|
||||
ItemStack zItem = ItemUtil.createItem(CompatibleMaterial.REPEATER.getMaterial(), 1,
|
||||
Message.EDITOR_VELOCITY_MENU_SET_VELOCITY_Z.getValue());
|
||||
EditorLore.updateVectorDescription(zItem, velocity, Message.EDITOR_OFFSET_MENU_OFFSET_Z_DESCRIPTION);
|
||||
setButton(16, zItem, (event, slot) -> {
|
||||
|
||||
return updateVelocity(event, targetHat, VectorAxis.Z);
|
||||
|
||||
});
|
||||
|
||||
// Back.
|
||||
setButton(10, backButtonItem, backButtonAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -77,11 +86,15 @@ public class EditorVelocityMenu extends AbstractStaticMenu {
|
||||
if (!forced) {
|
||||
|
||||
callback.onCallback();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
public MenuClickResult updateVelocity(MenuClickEvent event, Hat hat, VectorAxis axis) {
|
||||
|
||||
@@ -94,6 +107,7 @@ public class EditorVelocityMenu extends AbstractStaticMenu {
|
||||
Vector velocity = data.getVelocity();
|
||||
|
||||
switch (axis) {
|
||||
|
||||
case X:
|
||||
double vx = !isMiddleClick ? velocity.getX() + modifier : 0;
|
||||
|
||||
@@ -112,6 +126,7 @@ public class EditorVelocityMenu extends AbstractStaticMenu {
|
||||
data.setVelocityZ(vz);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
EditorLore.updateVectorDescription(getItem(14), velocity, Message.EDITOR_OFFSET_MENU_OFFSET_X_DESCRIPTION);
|
||||
@@ -125,6 +140,9 @@ public class EditorVelocityMenu extends AbstractStaticMenu {
|
||||
} else {
|
||||
|
||||
return event.isLeftClick() ? MenuClickResult.POSITIVE : MenuClickResult.NEGATIVE;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,20 +9,27 @@ import org.bukkit.entity.Player;
|
||||
public class PurchaseMenuManager extends EditorMenuManager {
|
||||
|
||||
public PurchaseMenuManager(CosmeticsOG core, Player owner) {
|
||||
|
||||
super(core, owner);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openMainMenu() {
|
||||
|
||||
PurchaseEditorMainMenu purchaseEditorMainMenu = new PurchaseEditorMainMenu(core, this, owner);
|
||||
addMenu(purchaseEditorMainMenu);
|
||||
purchaseEditorMainMenu.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openSettingsMenu() {
|
||||
|
||||
PurchaseEditorSettingsMenu purchaseEditorSettingsMenu = new PurchaseEditorSettingsMenu(core, this, owner);
|
||||
addMenu(purchaseEditorSettingsMenu);
|
||||
purchaseEditorSettingsMenu.open();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -39,10 +39,11 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
this.purchaseManager = menuManager;
|
||||
this.editorBaseMenu = menuManager.getEditingMenu();
|
||||
this.targetHat = menuManager.getBaseHat();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 36, Utils.legacySerializerAnyCase(Message.EDITOR_MAIN_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 36,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_MAIN_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -50,39 +51,43 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
setButton(31, backButtonItem, backButtonAction);
|
||||
|
||||
ItemStack actionItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.GUNPOWDER.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_ACTION.getValue());
|
||||
EditorLore.updateSpecificActionDescription(
|
||||
actionItem, targetHat, targetHat.getLeftClickAction(), targetHat.getLeftClickArgument());
|
||||
ItemStack actionItem = ItemUtil.createItem(CompatibleMaterial.GUNPOWDER.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_ACTION.getValue());
|
||||
EditorLore.updateSpecificActionDescription(actionItem, targetHat, targetHat.getLeftClickAction(),
|
||||
targetHat.getLeftClickArgument());
|
||||
setButton(11, actionItem, (event, slot) -> {
|
||||
EditorActionMenu editorActionMenu =
|
||||
new EditorActionMenu(core, purchaseManager, owner, true, true, (action) -> {
|
||||
|
||||
EditorActionMenu editorActionMenu = new EditorActionMenu(core, purchaseManager, owner, true, true,
|
||||
(action) ->
|
||||
{
|
||||
|
||||
if (action == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ParticleAction pa = (ParticleAction) action;
|
||||
targetHat.setLeftClickAction(pa);
|
||||
|
||||
EditorLore.updateSpecificActionDescription(
|
||||
getItem(11),
|
||||
targetHat,
|
||||
targetHat.getLeftClickAction(),
|
||||
targetHat.getLeftClickArgument());
|
||||
EditorLore.updateSpecificActionDescription(getItem(11), targetHat,
|
||||
targetHat.getLeftClickAction(), targetHat.getLeftClickArgument());
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorActionMenu);
|
||||
editorActionMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack nameItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.PLAYER_HEAD.getMaterial(), 1, Message.EDITOR_META_MENU_SET_NAME.getValue());
|
||||
ItemStack nameItem = ItemUtil.createItem(CompatibleMaterial.PLAYER_HEAD.getMaterial(), 1,
|
||||
Message.EDITOR_META_MENU_SET_NAME.getValue());
|
||||
setButton(13, nameItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
purchaseManager.getOwnerState().setMetaState(MetaState.HAT_NAME);
|
||||
@@ -93,18 +98,21 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.setName(Message.EDITOR_MISC_NEW_PARTICLE.getValue());
|
||||
EditorLore.updateNameDescription(getItem(13), targetHat);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack descriptionItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.WRITABLE_BOOK.getMaterial(), 1, Message.EDITOR_META_MENU_SET_DESCRIPTION.getValue());
|
||||
ItemStack descriptionItem = ItemUtil.createItem(CompatibleMaterial.WRITABLE_BOOK.getMaterial(), 1,
|
||||
Message.EDITOR_META_MENU_SET_DESCRIPTION.getValue());
|
||||
setButton(15, descriptionItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorDescriptionMenu editorDescriptionMenu =
|
||||
new EditorDescriptionMenu(core, purchaseManager, owner, true);
|
||||
EditorDescriptionMenu editorDescriptionMenu = new EditorDescriptionMenu(core, purchaseManager, owner,
|
||||
true);
|
||||
menuManager.addMenu(editorDescriptionMenu);
|
||||
editorDescriptionMenu.open();
|
||||
|
||||
@@ -119,30 +127,33 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
database.saveMetaData(menuName, targetHat, DataType.DESCRIPTION, 0);
|
||||
|
||||
EditorLore.updateDescriptionDescription(getItem(15), targetHat.getDescription());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack slotItem = ItemUtil.createItem(
|
||||
Material.ITEM_FRAME,
|
||||
Message.EDITOR_MAIN_MENU_SET_SLOT.getValue(),
|
||||
ItemStack slotItem = ItemUtil.createItem(Material.ITEM_FRAME, Message.EDITOR_MAIN_MENU_SET_SLOT.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_SLOT_DESCRIPTION.getValue()));
|
||||
setButton(19, slotItem, (event, slot) -> {
|
||||
|
||||
EditorSlotMenu editorSlotMenu = new EditorSlotMenu(core, purchaseManager, owner, editorBaseMenu, false);
|
||||
menuManager.addMenu(editorSlotMenu);
|
||||
|
||||
editorSlotMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack cloneItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.PRISMARINE_SHARD.getMaterial(),
|
||||
ItemStack cloneItem = ItemUtil.createItem(CompatibleMaterial.PRISMARINE_SHARD.getMaterial(),
|
||||
Message.EDITOR_MAIN_MENU_CLONE.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_MAIN_MENU_CLONE_DESCRIPTION.getValue()));
|
||||
setButton(21, cloneItem, (event, slot) -> {
|
||||
|
||||
if (targetHat.isModified()) {
|
||||
|
||||
int targetSlot = purchaseManager.getTargetSlot();
|
||||
@@ -150,6 +161,7 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
core.getDatabase().saveHat(editorBaseMenu.getMenuInventory().getName(), targetSlot, targetHat);
|
||||
|
||||
targetHat.clearPropertyChanges();
|
||||
|
||||
}
|
||||
|
||||
EditorSlotMenu editorSlotMenu = new EditorSlotMenu(core, purchaseManager, owner, editorBaseMenu, true);
|
||||
@@ -158,26 +170,31 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
editorSlotMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack soundItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.MUSIC_DISC_STRAD.getMaterial(), 1, Message.EDITOR_MAIN_MENU_SET_SOUND.getValue());
|
||||
ItemStack soundItem = ItemUtil.createItem(CompatibleMaterial.MUSIC_DISC_STRAD.getMaterial(), 1,
|
||||
Message.EDITOR_MAIN_MENU_SET_SOUND.getValue());
|
||||
EditorLore.updateSoundItemDescription(soundItem, targetHat);
|
||||
setButton(23, soundItem, (event, slot) -> {
|
||||
|
||||
if (event.isLeftClick()) {
|
||||
|
||||
EditorSoundMenu editorSoundMenu = new EditorSoundMenu(core, purchaseManager, owner, (sound) -> {
|
||||
|
||||
menuManager.closeCurrentMenu();
|
||||
|
||||
if (sound == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Sound s = (Sound) sound;
|
||||
|
||||
targetHat.setSound(s);
|
||||
EditorLore.updateSoundItemDescription(getItem(23), targetHat);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorSoundMenu);
|
||||
@@ -187,37 +204,48 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
|
||||
targetHat.removeSound();
|
||||
EditorLore.updateSoundItemDescription(getItem(23), targetHat);
|
||||
|
||||
}
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
ItemStack iconItem = targetHat.getItem();
|
||||
ItemUtil.setNameAndDescription(
|
||||
iconItem, Message.EDITOR_MAIN_MENU_SET_ICON, Message.EDITOR_MAIN_MENU_ICON_DESCRIPTION);
|
||||
ItemUtil.setNameAndDescription(iconItem, Message.EDITOR_MAIN_MENU_SET_ICON,
|
||||
Message.EDITOR_MAIN_MENU_ICON_DESCRIPTION);
|
||||
setButton(25, iconItem, (event, slot) -> {
|
||||
EditorIconMenuOverview editorIconMenuOverview =
|
||||
new EditorIconMenuOverview(core, purchaseManager, owner, (mainItem) -> {
|
||||
|
||||
EditorIconMenuOverview editorIconMenuOverview = new EditorIconMenuOverview(core, purchaseManager, owner,
|
||||
(mainItem) ->
|
||||
{
|
||||
|
||||
if (mainItem == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack item = (ItemStack) mainItem;
|
||||
|
||||
// Update the button with the new item.
|
||||
setButton(25, item, (menuEvent, menuSlot) -> MenuClickResult.NEUTRAL);
|
||||
|
||||
});
|
||||
|
||||
menuManager.addMenu(editorIconMenuOverview);
|
||||
editorIconMenuOverview.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() {
|
||||
@@ -226,8 +254,12 @@ public class PurchaseEditorMainMenu extends AbstractStaticMenu {
|
||||
EditorLore.updateDescriptionDescription(getItem(15), targetHat.getDescription());
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,10 +31,11 @@ public class PurchaseEditorSettingsMenu extends AbstractStaticMenu {
|
||||
this.purchaseManager = menuManager;
|
||||
this.editorBaseMenu = menuManager.getEditingMenu();
|
||||
this.menuInventory = editorBaseMenu.getMenuInventory();
|
||||
this.inventory = Bukkit.createInventory(
|
||||
null, 36, Utils.legacySerializerAnyCase(Message.EDITOR_SETTINGS_MENU_TITLE.getValue()));
|
||||
this.inventory = Bukkit.createInventory(null, 36,
|
||||
Utils.legacySerializerAnyCase(Message.EDITOR_SETTINGS_MENU_TITLE.getValue()));
|
||||
|
||||
build();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,54 +45,64 @@ public class PurchaseEditorSettingsMenu extends AbstractStaticMenu {
|
||||
setButton(31, backButtonItem, backButtonAction);
|
||||
|
||||
// Set Title.
|
||||
ItemStack titleItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.SIGN.getMaterial(), 1, Message.EDITOR_SETTINGS_MENU_SET_TITLE.getValue());
|
||||
ItemStack titleItem = ItemUtil.createItem(CompatibleMaterial.SIGN.getMaterial(), 1,
|
||||
Message.EDITOR_SETTINGS_MENU_SET_TITLE.getValue());
|
||||
setButton(10, titleItem, (event, slot) -> {
|
||||
|
||||
purchaseManager.getOwnerState().setMetaState(MetaState.MENU_TITLE);
|
||||
core.prompt(owner, MetaState.MENU_TITLE);
|
||||
menuManager.closeInventory();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Set Size.
|
||||
ItemStack sizeItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.COMPARATOR.getMaterial(), 1, Message.EDITOR_SETTINGS_MENU_SET_SIZE.getValue());
|
||||
ItemStack sizeItem = ItemUtil.createItem(CompatibleMaterial.COMPARATOR.getMaterial(), 1,
|
||||
Message.EDITOR_SETTINGS_MENU_SET_SIZE.getValue());
|
||||
setButton(12, sizeItem, (event, slot) -> {
|
||||
|
||||
EditorResizeMenu editorResizeMenu = new EditorResizeMenu(core, purchaseManager, owner, editorBaseMenu);
|
||||
menuManager.addMenu(editorResizeMenu);
|
||||
editorResizeMenu.open();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Toggle Live Updates.
|
||||
ItemStack liveItem =
|
||||
ItemUtil.createItem(Material.LEVER, 1, Message.EDITOR_SETTINGS_MENU_TOGGLE_LIVE_MENU.getValue());
|
||||
EditorLore.updateBooleanDescription(
|
||||
liveItem, editorBaseMenu.canUpdate(), Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
ItemStack liveItem = ItemUtil.createItem(Material.LEVER, 1,
|
||||
Message.EDITOR_SETTINGS_MENU_TOGGLE_LIVE_MENU.getValue());
|
||||
EditorLore.updateBooleanDescription(liveItem, editorBaseMenu.canUpdate(),
|
||||
Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
setButton(14, liveItem, (event, slot) -> {
|
||||
|
||||
editorBaseMenu.toggleUpdates();
|
||||
EditorLore.updateBooleanDescription(
|
||||
getItem(14), editorBaseMenu.canUpdate(), Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
EditorLore.updateBooleanDescription(getItem(14), editorBaseMenu.canUpdate(),
|
||||
Message.EDITOR_SETTINGS_MENU_ANIMATION_DESCRIPTION);
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
// Sync Icons.
|
||||
ItemStack syncItem = ItemUtil.createItem(
|
||||
CompatibleMaterial.CONDUIT.getMaterial(),
|
||||
ItemStack syncItem = ItemUtil.createItem(CompatibleMaterial.CONDUIT.getMaterial(),
|
||||
Message.EDITOR_SETTINGS_MENU_SYNC_ICONS.getValue(),
|
||||
StringUtil.parseDescription(Message.EDITOR_SETTINGS_SYNC_DESCRIPTION.getValue()));
|
||||
setButton(16, syncItem, (event, slot) -> {
|
||||
|
||||
editorBaseMenu.syncItems();
|
||||
|
||||
return MenuClickResult.NEUTRAL;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(boolean forced) {}
|
||||
public void onClose(boolean forced) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() {
|
||||
@@ -103,11 +114,16 @@ public class PurchaseEditorSettingsMenu extends AbstractStaticMenu {
|
||||
if (titleItem != null) {
|
||||
|
||||
ItemUtil.setItemDescription(titleItem, StringUtil.parseDescription(title));
|
||||
|
||||
}
|
||||
|
||||
super.open();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(int ticks) {}
|
||||
public void onTick(int ticks) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,30 +16,43 @@ public class HatEquipEvent extends Event implements Cancellable {
|
||||
private boolean cancelled = false;
|
||||
|
||||
public HatEquipEvent(final Player player, final Hat hat) {
|
||||
|
||||
this.player = player;
|
||||
this.hat = hat;
|
||||
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
|
||||
return player;
|
||||
|
||||
}
|
||||
|
||||
public Hat getHat() {
|
||||
|
||||
return hat;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
|
||||
return handlers;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
|
||||
return cancelled;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean cancelled) {
|
||||
|
||||
this.cancelled = cancelled;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,5 +7,7 @@ public class InvalidHatException extends Exception {
|
||||
public InvalidHatException(String s) {
|
||||
|
||||
super(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,5 +7,7 @@ public class InvalidLabelException extends Exception {
|
||||
public InvalidLabelException(String s) {
|
||||
|
||||
super(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ public interface CurrencyHook {
|
||||
|
||||
/**
|
||||
* Gets the players current economy balance
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@@ -13,6 +14,7 @@ public interface CurrencyHook {
|
||||
|
||||
/**
|
||||
* Withdraws the provided amount from the players economy balance
|
||||
*
|
||||
* @param id
|
||||
* @param amount
|
||||
* @return
|
||||
@@ -21,7 +23,9 @@ public interface CurrencyHook {
|
||||
|
||||
/**
|
||||
* Checks to see if this hook has been loaded
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isEnabled();
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ public interface VanishHook {
|
||||
|
||||
/**
|
||||
* Checks to see if this player is currently vanished
|
||||
*
|
||||
* @param player
|
||||
* @return
|
||||
*/
|
||||
@@ -15,4 +16,5 @@ public interface VanishHook {
|
||||
* Unregisters this hook
|
||||
*/
|
||||
public void unregister();
|
||||
|
||||
}
|
||||
@@ -11,22 +11,31 @@ public class TokenManagerHook implements CurrencyHook {
|
||||
private final TokenManager api;
|
||||
|
||||
public TokenManagerHook() {
|
||||
|
||||
api = (TokenManager) Bukkit.getServer().getPluginManager().getPlugin("TokenManager");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBalance(Player player) {
|
||||
|
||||
OptionalLong balance = api.getTokens(player);
|
||||
return (int) balance.orElse(0);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean withdraw(Player player, int amount) {
|
||||
|
||||
return api.removeTokens(player, amount);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
|
||||
return api != null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,26 +12,38 @@ public class VaultHook implements CurrencyHook {
|
||||
private boolean economyEnabled;
|
||||
|
||||
public VaultHook(final CosmeticsOG core) {
|
||||
RegisteredServiceProvider<Economy> econProvider =
|
||||
core.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||
|
||||
RegisteredServiceProvider<Economy> econProvider = core.getServer().getServicesManager()
|
||||
.getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||
if (econProvider != null) {
|
||||
|
||||
economy = econProvider.getProvider();
|
||||
|
||||
}
|
||||
|
||||
economyEnabled = economy != null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBalance(Player player) {
|
||||
|
||||
return (int) economy.getBalance(player);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean withdraw(Player player, int amount) {
|
||||
|
||||
return economy.withdrawPlayer(player, amount).transactionSuccess();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
|
||||
return economyEnabled;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import org.bukkit.event.Listener;
|
||||
|
||||
/**
|
||||
* Listens for a player editing meta properties through the menu editor
|
||||
*
|
||||
* @author MediusEcho
|
||||
*
|
||||
*/
|
||||
@@ -31,6 +32,7 @@ public class ChatListener implements Listener {
|
||||
this.core = core;
|
||||
|
||||
core.getServer().getPluginManager().registerEvents(this, core);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
@@ -47,12 +49,14 @@ public class ChatListener implements Listener {
|
||||
if (metaState.equals(MetaState.NONE)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
MenuManager menuManager = playerState.getMenuManager();
|
||||
if (!(menuManager instanceof EditorMenuManager)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
EditorMenuManager editorManager = (EditorMenuManager) menuManager;
|
||||
@@ -62,22 +66,26 @@ public class ChatListener implements Listener {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(CosmeticsOG.instance, () -> {
|
||||
|
||||
// Convert the Component to a plain string
|
||||
String messageString =
|
||||
PlainTextComponentSerializer.plainText().serialize(event.message());
|
||||
String messageString = PlainTextComponentSerializer.plainText().serialize(event.message());
|
||||
|
||||
if (Utils.stripColors(messageString).equals("cancel")) {
|
||||
|
||||
editorManager.reopen();
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
List<String> arguments = Arrays.asList(messageString.split(" "));
|
||||
|
||||
metaState.onMetaSet(editorManager, player, arguments);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -86,5 +94,7 @@ public class ChatListener implements Listener {
|
||||
public void unregister() {
|
||||
|
||||
AsyncChatEvent.getHandlerList().unregister(this);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,14 +19,19 @@ public class CommandListener implements Listener {
|
||||
private final CosmeticsOG core;
|
||||
|
||||
public CommandListener(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
core.getServer().getPluginManager().registerEvents(this, core);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCommand(PlayerCommandPreprocessEvent event) {
|
||||
|
||||
if (event.getMessage().contains(" ")) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Player player = event.getPlayer();
|
||||
@@ -34,19 +39,25 @@ public class CommandListener implements Listener {
|
||||
|
||||
// Cancel any commands if this player is editing a meta property
|
||||
if (SettingsManager.EDITOR_RESTRICT_COMMANDS.getBoolean() && playerState.hasEditorOpen()) {
|
||||
|
||||
MetaState metaState = playerState.getMetaState();
|
||||
if (metaState != MetaState.NONE) {
|
||||
|
||||
player.sendMessage(Message.COMMAND_ERROR_ALREADY_EDITING.getValue());
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check for menu aliases
|
||||
else {
|
||||
|
||||
String cmd = event.getMessage().replaceFirst("/", "");
|
||||
MenuInventory inventory = core.getDatabase().getInventoryFromAlias(cmd, playerState);
|
||||
|
||||
if (inventory != null) {
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
StaticMenuManager staticManager = core.getMenuManagerFactory().getStaticMenuManager(playerState);
|
||||
@@ -54,7 +65,11 @@ public class CommandListener implements Listener {
|
||||
|
||||
staticManager.addMenu(menu);
|
||||
menu.open();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,63 +23,93 @@ public class ConnectionListener implements Listener {
|
||||
private final CosmeticsOG core;
|
||||
|
||||
public ConnectionListener(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
core.getServer().getPluginManager().registerEvents(this, core);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
|
||||
Player player = event.getPlayer();
|
||||
UUID id = event.getPlayer().getUniqueId();
|
||||
PlayerState playerState = core.getNewPlayerState(player);
|
||||
|
||||
// Load equipped hats
|
||||
core.getDatabase().loadPlayerEquippedHats(id, (loadedHats) -> {
|
||||
|
||||
if (loadedHats instanceof List) {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Hat> hats = (ArrayList<Hat>) loadedHats;
|
||||
for (Hat hat : hats) {
|
||||
|
||||
playerState.addHat(hat);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Load purchased hats
|
||||
core.getDatabase().loadPlayerPurchasedHats(id, (purchasedHats) -> {
|
||||
|
||||
if (purchasedHats instanceof List) {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<HatReference> hats = (ArrayList<HatReference>) purchasedHats;
|
||||
for (HatReference hat : hats) {
|
||||
|
||||
playerState.addPurchasedHat(hat);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Load legacy purchased hats
|
||||
if (SettingsManager.CHECK_AGAINST_LEGACY_PURCHASES.getBoolean()
|
||||
&& core.getDatabaseType() == DatabaseType.YAML) {
|
||||
&& core.getDatabaseType() == DatabaseType.YAML)
|
||||
{
|
||||
|
||||
YamlDatabase database = (YamlDatabase) core.getDatabase();
|
||||
database.loadPlayerLegacyPurchasedHats(id, (legacyHats) -> {
|
||||
|
||||
if (legacyHats instanceof List) {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> hats = (ArrayList<String>) legacyHats;
|
||||
for (String path : hats) {
|
||||
|
||||
playerState.addLegacyPurchasedHat(path);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
VanishHook vanishHook = core.getHookManager().getVanishHook();
|
||||
if (vanishHook != null) {
|
||||
|
||||
if (vanishHook.isVanished(player)) {
|
||||
|
||||
playerState.getActiveHats().forEach(hat -> hat.setVanished(true));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
|
||||
Player player = event.getPlayer();
|
||||
UUID id = event.getPlayer().getUniqueId();
|
||||
PlayerState playerState = core.getPlayerState(player);
|
||||
@@ -89,5 +119,7 @@ public class ConnectionListener implements Listener {
|
||||
playerState.clearActiveHats();
|
||||
|
||||
core.removePlayerState(id);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -29,95 +29,139 @@ public class EntityListener implements Listener {
|
||||
private boolean checkNPC = false;
|
||||
|
||||
public EntityListener(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
core.getServer().getPluginManager().registerEvents(this, core);
|
||||
onReload();
|
||||
|
||||
}
|
||||
|
||||
public void onReload() {
|
||||
|
||||
checkPlayers = SettingsManager.COMBAT_CHECK_PLAYERS.getBoolean();
|
||||
checkAnimals = SettingsManager.COMBAT_CHECK_ANIMALS.getBoolean();
|
||||
checkMonsters = SettingsManager.COMBAT_CHECK_MONSTERS.getBoolean();
|
||||
checkNPC = SettingsManager.COMBAT_CHECK_NPC.getBoolean();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevents item from being picked up if they were created from the ItemStack particle effect
|
||||
* Prevents item from being picked up if they were created from the ItemStack
|
||||
* particle effect
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onItemPickup(InventoryPickupItemEvent event) {
|
||||
|
||||
Item item = event.getItem();
|
||||
if (item.hasMetadata("PH_DroppedItem")) {
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamage(EntityDamageByEntityEvent event) {
|
||||
|
||||
if (event.isCancelled()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Entity attacker = event.getDamager();
|
||||
Entity victim = event.getEntity();
|
||||
|
||||
if (checkCombat(victim)) {
|
||||
|
||||
handleCombat(attacker);
|
||||
|
||||
}
|
||||
|
||||
if (checkCombat(attacker)) {
|
||||
|
||||
handleCombat(victim);
|
||||
|
||||
}
|
||||
|
||||
if (attacker instanceof Arrow) {
|
||||
|
||||
Arrow arrow = (Arrow) attacker;
|
||||
if (arrow.getShooter() != null) {
|
||||
|
||||
ProjectileSource pShooter = arrow.getShooter();
|
||||
if (pShooter instanceof Entity) {
|
||||
|
||||
Entity shooter = (Entity) pShooter;
|
||||
|
||||
if (checkCombat(victim)) {
|
||||
|
||||
handleCombat((Entity) shooter);
|
||||
|
||||
}
|
||||
|
||||
if (checkCombat(shooter)) {
|
||||
|
||||
handleCombat(victim);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean checkCombat(Entity e) {
|
||||
|
||||
if (checkPlayers && e instanceof Player) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (checkAnimals && e instanceof Animals) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (checkMonsters && e instanceof Monster || e instanceof Slime) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (checkNPC && (e instanceof NPC || e.hasMetadata("NPC"))) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
private void handleCombat(Entity entity) {
|
||||
// We don't want to create a new EntityState if one doesn't exist for this entity
|
||||
|
||||
// We don't want to create a new EntityState if one doesn't exist for this
|
||||
// entity
|
||||
if (!core.hasEntityState(entity)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
EntityState entityState = core.getEntityState(entity);
|
||||
|
||||
entityState.setLastCombatTime(System.currentTimeMillis());
|
||||
entityState.setPVPState(PVPState.ENGAGED);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,24 +25,33 @@ public class InteractListener implements Listener {
|
||||
private final CosmeticsOG core;
|
||||
|
||||
public InteractListener(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
core.getServer().getPluginManager().registerEvents(this, core);
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@EventHandler
|
||||
public void onInteract(PlayerInteractEvent event) {
|
||||
|
||||
if (!SettingsManager.MENU_OPEN_WITH_ITEM.getBoolean()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack item = event.getItem();
|
||||
if (item != null) {
|
||||
|
||||
Material checkAgainst = SettingsManager.MENU_OPEN_WITH_ITEM_MATERIAL.getMaterial();
|
||||
if (item.getType().equals(checkAgainst)) {
|
||||
|
||||
short durability = (short) SettingsManager.MENU_OPEN_WITH_ITEM_DAMAGE.getInt();
|
||||
if (CosmeticsOG.serverVersion < 13 && item.getDurability() != durability) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Database database = core.getDatabase();
|
||||
@@ -50,18 +59,28 @@ public class InteractListener implements Listener {
|
||||
String menuName = "";
|
||||
|
||||
if (SettingsManager.MENU_OPEN_WITH_GROUP.getBoolean()) {
|
||||
|
||||
List<Group> groups = database.getGroups(true);
|
||||
for (Group g : groups) {
|
||||
|
||||
if (player.hasPermission(Permission.GROUP.append(g.getName()))) {
|
||||
|
||||
menuName = g.getDefaultMenu();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
menuName = SettingsManager.MENU_OPEN_DEFAULT_MENU.getString();
|
||||
|
||||
}
|
||||
|
||||
if (menuName.equals("")) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
menuName = ResourceUtil.removeExtension(menuName);
|
||||
@@ -69,9 +88,10 @@ public class InteractListener implements Listener {
|
||||
MenuInventory inventory = database.loadInventory(menuName, playerState);
|
||||
|
||||
if (inventory == null) {
|
||||
player.sendMessage(
|
||||
Message.COMMAND_ERROR_UNKNOWN_MENU.getValue().replace("{1}", menuName));
|
||||
|
||||
player.sendMessage(Message.COMMAND_ERROR_UNKNOWN_MENU.getValue().replace("{1}", menuName));
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
StaticMenuManager staticManager = core.getMenuManagerFactory().getStaticMenuManager(playerState);
|
||||
@@ -79,7 +99,11 @@ public class InteractListener implements Listener {
|
||||
|
||||
staticManager.addMenu(menu);
|
||||
menu.open();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,57 +16,82 @@ public class InventoryListener implements Listener {
|
||||
private final CosmeticsOG core;
|
||||
|
||||
public InventoryListener(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
core.getServer().getPluginManager().registerEvents(this, core);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent event) {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
ItemStack item = event.getCurrentItem();
|
||||
if (item != null && item.getType() != Material.AIR) {
|
||||
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
PlayerState playerState = core.getPlayerState(player);
|
||||
|
||||
if (playerState.hasMenuManager()) {
|
||||
|
||||
boolean inMenu = event.getRawSlot() < event.getInventory().getSize();
|
||||
playerState.getMenuManager().onClick(event, inMenu);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClose(InventoryCloseEvent event) {
|
||||
|
||||
if (!(event.getPlayer() instanceof Player)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Player player = (Player) event.getPlayer();
|
||||
if (player.hasMetadata("NPC")) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
PlayerState playerState = core.getPlayerState(player);
|
||||
|
||||
if (playerState.hasMenuManager()) {
|
||||
|
||||
playerState.getMenuManager().onInventoryClose(event);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryOpen(InventoryOpenEvent event) {
|
||||
|
||||
if (!(event.getPlayer() instanceof Player)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
Player player = (Player) event.getPlayer();
|
||||
PlayerState playerState = core.getPlayerState(player);
|
||||
|
||||
if (playerState.hasMenuManager()) {
|
||||
|
||||
playerState.getMenuManager().onInventoryOpen(event);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,31 +15,47 @@ public class PlayerListener implements Listener {
|
||||
private final CosmeticsOG plugin;
|
||||
|
||||
public PlayerListener(CosmeticsOG plugin) {
|
||||
|
||||
this.plugin = plugin;
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDeath(@NotNull PlayerDeathEvent event) {
|
||||
|
||||
togglePlayerHats(event.getEntity(), false);
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerRespawn(@NotNull PlayerRespawnEvent event) {
|
||||
|
||||
togglePlayerHats(event.getPlayer(), true);
|
||||
|
||||
}
|
||||
|
||||
private void togglePlayerHats(Player player, boolean state) {
|
||||
|
||||
if (!plugin.hasEntityState(player)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
PlayerState playerState = plugin.getPlayerState(player);
|
||||
for (Hat hat : playerState.getActiveHats()) {
|
||||
|
||||
if (hat.isHidden() || hat.isVanished()) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
hat.setIsDisplaying(state, player);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -37,6 +37,7 @@ public class CommandManager implements CommandExecutor, TabCompleter {
|
||||
private final MainCommand mainCommand;
|
||||
|
||||
public CommandManager(final CosmeticsOG core, final String command) {
|
||||
|
||||
this.core = core;
|
||||
|
||||
mainCommand = new MainCommand();
|
||||
@@ -55,74 +56,106 @@ public class CommandManager implements CommandExecutor, TabCompleter {
|
||||
mainCommand.register(new MetaCommand(core));
|
||||
|
||||
if (CosmeticsOG.debugging) {
|
||||
|
||||
mainCommand.register(new DebugDeleteMenu());
|
||||
mainCommand.register(new DebugCommand());
|
||||
|
||||
}
|
||||
|
||||
if (core.canUseBungee()) {
|
||||
|
||||
mainCommand.register(new SpigotHelpCommand(core, this));
|
||||
|
||||
} else {
|
||||
|
||||
mainCommand.register(new BukkitHelpCommand(core, this));
|
||||
|
||||
}
|
||||
|
||||
// Register our command executor
|
||||
core.getCommand(command).setExecutor(this);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(
|
||||
CommandSender commandSender, org.bukkit.command.Command cmd, String label, String[] args) {
|
||||
public List<String> onTabComplete(CommandSender commandSender, org.bukkit.command.Command cmd, String label,
|
||||
String[] args)
|
||||
{
|
||||
|
||||
Sender sender = new Sender(commandSender);
|
||||
|
||||
List<String> arguments =
|
||||
mainCommand.onTabComplete(core, sender, label, new ArrayList<String>(Arrays.asList(args)));
|
||||
List<String> arguments = mainCommand.onTabComplete(core, sender, label,
|
||||
new ArrayList<String>(Arrays.asList(args)));
|
||||
String currentCommand = args[args.length - 1];
|
||||
|
||||
return sortCommandSuggestions(arguments, currentCommand);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender commandSender, org.bukkit.command.Command cmd, String label, String[] args) {
|
||||
return mainCommand.onCommand(
|
||||
core, new Sender(commandSender), label, new ArrayList<String>(Arrays.asList(args)));
|
||||
|
||||
return mainCommand.onCommand(core, new Sender(commandSender), label,
|
||||
new ArrayList<String>(Arrays.asList(args)));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all registered commands
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Command> getCommands() {
|
||||
|
||||
LinkedHashMap<String, Command> commands = new LinkedHashMap<String, Command>();
|
||||
mainCommand.getSubCommands(commands);
|
||||
|
||||
return commands;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of commands matching the currentCommand
|
||||
* @param commands List of the commands the player can execute
|
||||
*
|
||||
* @param commands List of the commands the player can execute
|
||||
* @param currentCommand Command the player is currently typing
|
||||
* @return
|
||||
*/
|
||||
private List<String> sortCommandSuggestions(List<String> commands, String currentCommand) {
|
||||
|
||||
if (currentCommand.equals("")) {
|
||||
|
||||
return commands;
|
||||
|
||||
}
|
||||
|
||||
List<String> matchingCommands = new ArrayList<String>();
|
||||
if (commands != null) {
|
||||
commandLoop:
|
||||
for (String s : commands) {
|
||||
|
||||
commandLoop: for (String s : commands) {
|
||||
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
|
||||
if (i < currentCommand.length()) {
|
||||
|
||||
if (s.charAt(i) != currentCommand.charAt(i)) {
|
||||
|
||||
continue commandLoop;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
matchingCommands.add(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return matchingCommands;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@ public class EventManager {
|
||||
private final PlayerListener playerListener;
|
||||
|
||||
public EventManager(final CosmeticsOG core) {
|
||||
|
||||
this.core = core;
|
||||
|
||||
inventoryListener = new InventoryListener(core);
|
||||
@@ -33,9 +34,13 @@ public class EventManager {
|
||||
interactListener = new InteractListener(core);
|
||||
commandListener = new CommandListener(core);
|
||||
playerListener = new PlayerListener(core);
|
||||
|
||||
}
|
||||
|
||||
public void onReload() {
|
||||
|
||||
entityListener.onReload();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,29 +20,35 @@ public class HookManager {
|
||||
this.core = core;
|
||||
|
||||
loadHooks();
|
||||
|
||||
}
|
||||
|
||||
public void onReload() {
|
||||
|
||||
loadHooks();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this plugin's CurrencyHook
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public CurrencyHook getCurrencyHook() {
|
||||
|
||||
return currencyHook;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this plugin's VanishHook
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public VanishHook getVanishHook() {
|
||||
|
||||
return vanishHook;
|
||||
|
||||
}
|
||||
|
||||
private void loadHooks() {
|
||||
@@ -55,6 +61,7 @@ public class HookManager {
|
||||
if (currencyHook != null && currencyHook instanceof VaultHook) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (pluginManager.isPluginEnabled("Vault")) {
|
||||
@@ -70,6 +77,7 @@ public class HookManager {
|
||||
SettingsManager.FLAG_VAULT.addOverride(false);
|
||||
|
||||
currencyHook = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -80,6 +88,7 @@ public class HookManager {
|
||||
if (currencyHook != null && currencyHook instanceof TokenManagerHook) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (pluginManager.isPluginEnabled("TokenManager")) {
|
||||
@@ -95,7 +104,9 @@ public class HookManager {
|
||||
SettingsManager.FLAG_TOKEN_MANAGER.addOverride(false);
|
||||
|
||||
currencyHook = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Vanish Hooks.
|
||||
@@ -109,7 +120,11 @@ public class HookManager {
|
||||
|
||||
vanishHook.unregister();
|
||||
vanishHook = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,10 +32,12 @@ public class ParticleManager {
|
||||
this.core = core;
|
||||
|
||||
recentParticles = new HashMap<UUID, Deque<ParticleEffect>>();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds this particle to the list of recently used particles
|
||||
*
|
||||
* @param id
|
||||
* @param particle
|
||||
*/
|
||||
@@ -47,23 +49,28 @@ public class ParticleManager {
|
||||
particles = new ArrayDeque<ParticleEffect>();
|
||||
|
||||
recentParticles.put(id, particles);
|
||||
|
||||
}
|
||||
|
||||
// Only add unique particles, no duplicates.
|
||||
if (!particles.contains(particle)) {
|
||||
|
||||
particles.addFirst(particle);
|
||||
|
||||
}
|
||||
|
||||
// We're only showing one menu worth of particles, so limit it to 21 slots.
|
||||
if (particles.size() > 21) {
|
||||
|
||||
particles.removeLast();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all particles recently used by the player
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@@ -72,9 +79,11 @@ public class ParticleManager {
|
||||
if (recentParticles.containsKey(id)) {
|
||||
|
||||
return recentParticles.get(id);
|
||||
|
||||
}
|
||||
|
||||
return emptyRecents;
|
||||
|
||||
}
|
||||
|
||||
public boolean equipHat(Player player, Hat hat) {
|
||||
@@ -90,13 +99,17 @@ public class ParticleManager {
|
||||
if (menu instanceof StaticMenu) {
|
||||
|
||||
((StaticMenu) menu).equipHat(hat);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public boolean equipHat(Player player, Hat hat, boolean showEquipMessage) {
|
||||
@@ -111,17 +124,22 @@ public class ParticleManager {
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, Message.WORLD_DISABLED.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
// No world permission.
|
||||
if (SettingsManager.CHECK_WORLD_PERMISSION.getBoolean()) {
|
||||
|
||||
if (!player.hasPermission(Permission.WORLD_ALL.getPermission())
|
||||
&& !player.hasPermission(Permission.WORLD.append(worldName))) {
|
||||
&& !player.hasPermission(Permission.WORLD.append(worldName)))
|
||||
{
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, Message.WORLD_NO_PERMISSION.getValue());
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Too many hats equipped.
|
||||
@@ -132,17 +150,18 @@ public class ParticleManager {
|
||||
if (playerState.isEquipOverflowed()) {
|
||||
|
||||
playerState.removeLastHat();
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(
|
||||
player,
|
||||
Message.HAT_EQUIPPED_OVERFLOW.replace(
|
||||
"{1}", Integer.toString(SettingsManager.MAXIMUM_HAT_LIMIT.getInt())));
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, Message.HAT_EQUIPPED_OVERFLOW.replace("{1}",
|
||||
Integer.toString(SettingsManager.MAXIMUM_HAT_LIMIT.getInt())));
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (playerState.canEquip()) {
|
||||
@@ -154,7 +173,9 @@ public class ParticleManager {
|
||||
if (vanishHook != null) {
|
||||
|
||||
isVanished = vanishHook.isVanished(player);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
hat.setVanished(isVanished);
|
||||
@@ -173,10 +194,15 @@ public class ParticleManager {
|
||||
Message defaultMessage = hat.isVanished() ? Message.HAT_EQUIPPED_VANISHED : Message.HAT_EQUIPPED;
|
||||
|
||||
Utils.cosmeticsOGPlaceholderMessage(player, defaultMessage.replace("{1}", hat.getDisplayName()));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loaded 100 of 176 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user