Update gradle to 8.14.3, add formatting

This commit is contained in:
NotAlexNoyle committed 2025-08-15 16:23:04 -04:00
1 parent 3f4ff4678f
commit 437c5c95ce
15 files changed
+835 -137

No files matched your search

+69 -48
View File
@@ -1,83 +1,104 @@
/* This is free and unencumbered software released into the public domain */
/* ------------------------------ Plugins ------------------------------ */
plugins {
id("java") // Tell gradle this is a java project.
id("java-library") // Import helper for source-based libraries.
id("com.diffplug.spotless") version "7.0.4" // Import auto-formatter.
id("com.gradleup.shadow") version "8.3.6" // Import shadow API.
eclipse // Import eclipse plugin for IDE integration.
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("checkstyle") // Import Checkstyle plugin.
eclipse // Import Eclipse plugin.
kotlin("jvm") version "2.1.21" // Import Kotlin JVM plugin.
}
/* --------------------------- JDK / Kotlin ---------------------------- */
java {
// Declare java version.
sourceCompatibility = JavaVersion.VERSION_17
}
group = "me.barny1094875" // Declare bundle identifier.
version = "1.19.2" // Declare plugin version (will be in .jar).
val apiVersion = "1.19" // Declare minecraft server target version.
tasks.named<ProcessResources>("processResources") {
val props = mapOf("version" to version, "apiVersion" to apiVersion)
inputs.properties(props) // Indicates to rerun if version changes.
filesMatching("plugin.yml") { expand(props) }
from("LICENSE") { // Bundle license into .jars.
into("/")
sourceCompatibility = JavaVersion.VERSION_17 // Compile with JDK 17 compatibility.
toolchain { // Select Java toolchain.
languageVersion.set(JavaLanguageVersion.of(17)) // Use JDK 17.
vendor.set(JvmVendorSpec.GRAAL_VM) // Use GraalVM CE.
}
}
repositories {
mavenCentral()
gradlePluginPortal()
maven { url = uri("https://repo.purpurmc.org/snapshots") }
kotlin { jvmToolchain(17) }
/* ----------------------------- Metadata ------------------------------ */
group = "net.trueog.shulkerstacking-og" // Declare bundle identifier.
version = "1.0" // Declare plugin version (will be in .jar).
val apiVersion = "1.19" // Declare minecraft server target version.
/* ----------------------------- Resources ----------------------------- */
tasks.named<ProcessResources>("processResources") {
val props = mapOf("version" to version, "apiVersion" to apiVersion)
inputs.properties(props) // Indicates to rerun if version changes.
filesMatching("plugin.yml") { expand(props) }
from("LICENSE") { into("/") } // Bundle licenses into jarfiles.
}
/* ---------------------------- Repos ---------------------------------- */
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.
}
/* ---------------------- Java project deps ---------------------------- */
dependencies {
compileOnly("org.purpurmc.purpur:purpur-api:1.19.4-R0.1-SNAPSHOT") // Declare purpur API version to be packaged.
compileOnly("org.purpurmc.purpur:purpur-api:1.19.4-R0.1-SNAPSHOT") // Declare Purpur API version to be packaged.
compileOnly("io.github.miniplaceholders:miniplaceholders-api:2.2.3") // Import MiniPlaceholders API.
}
/* ---------------------- Reproducible jars ---------------------------- */
tasks.withType<AbstractArchiveTask>().configureEach { // Ensure reproducible .jars
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
}
/* ----------------------------- Shadow -------------------------------- */
tasks.shadowJar {
exclude("io.github.miniplaceholders.*") // Exclude the MiniPlaceholders package from being shadowed.
archiveClassifier.set("") // Use empty string instead of null.
minimize()
}
tasks.build {
dependsOn(tasks.spotlessApply)
dependsOn(tasks.shadowJar)
}
tasks.jar { archiveClassifier.set("part") } // Applies to root jarfile only.
tasks.jar { archiveClassifier.set("part") }
tasks.build { dependsOn(tasks.spotlessApply, tasks.shadowJar) } // Build depends on spotless and shadow.
/* --------------------------- Javac opts ------------------------------- */
tasks.withType<JavaCompile>().configureEach {
options.compilerArgs.add("-parameters")
options.compilerArgs.add("-Xlint:deprecation") // Triggers deprecation warning messages.
options.encoding = "UTF-8"
options.isFork = true
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
vendor = JvmVendorSpec.GRAAL_VM
}
options.compilerArgs.add("-parameters") // Enable reflection for java code.
options.isFork = true // Run javac in its own process.
options.compilerArgs.add("-Xlint:deprecation") // Trigger deprecation warning messages.
options.encoding = "UTF-8" // Use UTF-8 file encoding.
}
/* ----------------------------- Auto Formatting ------------------------ */
spotless {
java {
removeUnusedImports()
palantirJavaFormat()
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) }
target("build.gradle.kts", "settings.gradle.kts")
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.
isIgnoreFailures = true // Don't fail the build if checkstyle does not pass.
isShowViolations = true // Show the violations in any IDE with the checkstyle plugin.
}
tasks.named("compileJava") {
dependsOn("spotlessApply") // Run spotless before compiling with the JDK.
}
tasks.named("spotlessCheck") {
dependsOn("spotlessApply") // Run spotless before checking if spotless ran.
}
+34
View File
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
<property name="severity" value="error"/>
</module>
<module name="TreeWalker">
<module name="FinalLocalVariable"/>
<module name="AvoidStarImport"/>
<module name="Indentation">
<property name="severity" value="ignore"/>
</module>
</module>
<module name="RegexpSingleline">
<property name="format" value="\borg\.junit\.jupiter\.api\.Assertions\.fail\s*\(\s*&quot;Not yet implemented&quot;\s*\)\s*;"/>
<property name="message" value="Remove placeholder fail() and implement the test."/>
<property name="ignoreCase" value="true"/>
<property name="severity" value="warning"/>
</module>
<module name="RegexpSingleline">
<property name="format" value="(?&lt;!\w)fail\s*\(\s*&quot;Not yet implemented&quot;\s*\)\s*;"/>
<property name="message" value="Remove placeholder fail() and implement the test."/>
<property name="severity" value="warning"/>
</module>
</module>
+404
View 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>
View File
Whitespace-only changes.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
@@ -12,19 +12,25 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BlockStateMeta;
public class ShulkerBoxHopperHandler implements Listener {
@EventHandler
public void shulkerBoxHopperHandler(InventoryMoveItemEvent event) {
ItemStack eventItem = event.getItem();
Inventory eventDestination = event.getDestination();
Inventory eventSource = event.getSource();
// if the item is a shulker box
if (eventItem.getType().toString().contains("SHULKER_BOX")) {
// check that the shulker box is empty
BlockStateMeta shulkerMeta = (BlockStateMeta) eventItem.getItemMeta();
ShulkerBox shulker = (ShulkerBox) shulkerMeta.getBlockState();
if (!shulker.getInventory().isEmpty()) {
return;
}
// cancel the event so that I can guarantee where the item will be
event.setCancelled(true);
// item is always in eventSource now
@@ -32,46 +38,58 @@ public class ShulkerBoxHopperHandler implements Listener {
Material shulkerType = eventItem.getType();
// loop through the destination to see if there is a shulker box stack to add to
for (int i = 0; i < eventDestination.getSize(); i++) {
ItemStack destinationItem = eventDestination.getItem(i);
if (destinationItem == null) {
continue;
}
// if the item is the right kind of shulker box
if (destinationItem.getType().equals(shulkerType)) {
// check that the shulker boxes are emtpy
BlockStateMeta destinationShulkerMeta = (BlockStateMeta) destinationItem.getItemMeta();
ShulkerBox destinationShulker = (ShulkerBox) destinationShulkerMeta.getBlockState();
if (!destinationShulker.getInventory().isEmpty()) {
continue;
}
// check that the item stack is not full
if (destinationItem.getAmount() > 63) {
continue;
}
destinationItem.setAmount(destinationItem.getAmount() + 1);
Bukkit.getScheduler()
.runTaskLater(
ShulkerStacking_OG.getPlugin(),
() -> {
Bukkit.getScheduler().runTaskLater(ShulkerStacking_OG.getPlugin(), () -> {
eventItem.setAmount(eventItem.getAmount() - 1);
},
1);
}, 1);
return;
}
}
// if no shulker box was found, try to put it in the first empty slot
if (eventDestination.addItem(eventItem).isEmpty()) {
Bukkit.getScheduler()
.runTaskLater(
ShulkerStacking_OG.getPlugin(),
() -> {
Bukkit.getScheduler().runTaskLater(ShulkerStacking_OG.getPlugin(), () -> {
eventItem.setAmount(eventItem.getAmount() - 1);
},
1);
}, 1);
}
}
}
}
@@ -17,58 +17,87 @@ public class ShulkerBoxPickupHandler implements Listener {
ItemStack item = event.getItem().getItemStack();
if (!event.getEntity().getType().equals(EntityType.PLAYER)) {
return;
}
Player player = (Player) event.getEntity();
Inventory playerInventory = player.getInventory();
if (item.getType().toString().contains("SHULKER_BOX")) {
BlockStateMeta shulker1Meta = (BlockStateMeta) item.getItemMeta();
ShulkerBox shulker1 = (ShulkerBox) shulker1Meta.getBlockState();
// check the inventory of the ground item shulker
if (shulker1.getInventory().isEmpty()) {
// check for shulker box stacks to add to
for (int i = 0; i < playerInventory.getSize(); i++) {
ItemStack inventoryItem = playerInventory.getItem(i);
if (inventoryItem == null) {
continue;
}
if (inventoryItem.getType().equals(item.getType())) {
BlockStateMeta shulker2Meta = (BlockStateMeta) inventoryItem.getItemMeta();
ShulkerBox shulker2 = (ShulkerBox) shulker2Meta.getBlockState();
// check the inventory of the inventory shulker
if (shulker2.getInventory().isEmpty()) {
if (inventoryItem.getAmount() + item.getAmount() <= 64) {
inventoryItem.setAmount(inventoryItem.getAmount() + item.getAmount());
event.getItem().setHealth(-1);
event.setCancelled(true);
return;
}
if (inventoryItem.getAmount() <= 64) {
item.setAmount((item.getAmount() + inventoryItem.getAmount()) - 64);
if (item.getAmount() <= 0) {
event.getItem().setHealth(-1);
return;
}
event.getItem().setItemStack(item);
inventoryItem.setAmount(64);
event.setCancelled(true);
}
}
}
}
// look for air gaps to add the shulkers to
for (int i = 0; i < playerInventory.getSize(); i++) {
ItemStack inventoryItem = playerInventory.getItem(i);
if (inventoryItem == null) {
playerInventory.setItem(i, item);
event.getItem().setHealth(-1);
event.setCancelled(true);
return;
}
}
}
}
}
}
@@ -17,10 +17,15 @@ public class ShulkerBoxStackingController implements Listener {
public void shulkerBoxStacking(InventoryClickEvent event) {
if (event.getCurrentItem() == null) {
return;
}
if (event.getCursor() == null) {
return;
}
ItemStack currentItem = event.getCurrentItem();
@@ -29,28 +34,43 @@ public class ShulkerBoxStackingController implements Listener {
// if the player combines two shulker stacks
if (event.getClick().equals(ClickType.LEFT)) {
if (currentItem.getType().toString().contains("SHULKER_BOX")) {
if (cursorItem.getType().equals(currentItem.getType())) {
NormalLeftClick.NormalLeftClickShulkerBox(currentItem, cursorItem, event);
return;
}
}
}
// if the player sets down just one shulker box from a stack
if (event.getClick().equals(ClickType.RIGHT)) {
if (currentItem.getType().toString().contains("SHULKER_BOX")) {
if (cursorItem.getType().equals(currentItem.getType())) {
NormalRightClick.NormalRightClickShulkerBox(currentItem, cursorItem, event);
}
}
}
// if the player puts down a shulker box stack
if (event.getClick().equals(ClickType.LEFT)) {
if (cursorItem.getType().toString().contains("SHULKER_BOX")) {
// check if the shulker box stack only contains one shulker box
if (cursorItem.getAmount() != 1) {
// remove the stack from their cursor
// and replace it with whatever was in the slot
event.getWhoClicked().setItemOnCursor(currentItem);
@@ -59,8 +79,11 @@ public class ShulkerBoxStackingController implements Listener {
// stop default behaviors
event.setCancelled(true);
return;
}
}
}
// if the player double clicked in the inventory on a shulker box
@@ -68,35 +91,48 @@ public class ShulkerBoxStackingController implements Listener {
// including in their inventory
if (event.getClick().equals(ClickType.DOUBLE_CLICK)) {
if (cursorItem.getType().toString().contains("SHULKER_BOX")) {
DoubleClick.DoubleClickShulkerBox(cursorItem, event);
return;
}
}
// if the player shift clicks on a shukler box stack
// we need to handle the stacking logic
if (event.getClick().equals(ClickType.SHIFT_LEFT) || event.getClick().equals(ClickType.SHIFT_RIGHT)) {
if (currentItem.getType().toString().contains("SHULKER_BOX")) {
ShiftRightLeftClick.ShiftRightLeftClickShulkerBox(event);
}
}
// if the player users CTRL+<drop> on the shulkers
// drop the whole stack, instead of just one
if (event.getClick().equals(ClickType.CONTROL_DROP)) {
if (currentItem.getType().toString().contains("SHULKER_BOX")) {
event.getWhoClicked()
.getWorld()
.dropItem(event.getWhoClicked().getLocation(), event.getCurrentItem(), (Item) -> {
Item.setVelocity(event.getWhoClicked()
.getLocation()
.getDirection()
.multiply(0.35)
.setY(0.25));
event.getWhoClicked().getWorld().dropItem(event.getWhoClicked().getLocation(), event.getCurrentItem(),
(Item) ->
{
Item.setVelocity(
event.getWhoClicked().getLocation().getDirection().multiply(0.35).setY(0.25));
});
event.getCurrentItem().setAmount(0);
}
}
}
}
@@ -11,12 +11,11 @@ public class ShulkerDragDupePrevention implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void shulkerDragDupePrevent(InventoryCloseEvent event) {
ShulkerStacking_OG.isInventoryClosed.put(event.getPlayer().getUniqueId(), true);
Bukkit.getScheduler()
.runTaskLater(
ShulkerStacking_OG.getPlugin(),
() -> ShulkerStacking_OG.isInventoryClosed.put(
event.getPlayer().getUniqueId(), false),
2);
Bukkit.getScheduler().runTaskLater(ShulkerStacking_OG.getPlugin(),
() -> ShulkerStacking_OG.isInventoryClosed.put(event.getPlayer().getUniqueId(), false), 2);
}
}
@@ -17,100 +17,128 @@ public class ShulkerDragHandler implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void shulkerBoxDrag(InventoryDragEvent event) {
if (!event.getOldCursor().getType().toString().contains("SHULKER_BOX")) {
return;
}
// disable default behavior
event.setCancelled(true);
Bukkit.getScheduler().runTask(ShulkerStacking_OG.getPlugin(), () -> {
// check if the inventory was closed in the last tick
// this prevents a dupe glitch from occurring
if (ShulkerStacking_OG.isInventoryClosed.get(event.getWhoClicked().getUniqueId())) {
return;
}
ItemStack shulkerBoxes = event.getOldCursor();
int numberOfSlotsDragged = event.getInventorySlots().size();
ArrayList<Integer> slotsDragged =
new ArrayList<>(event.getInventorySlots().stream().toList());
ArrayList<Integer> slotsDragged = new ArrayList<>(event.getInventorySlots().stream().toList());
Inventory dragInventory = event.getView().getBottomInventory();
// right click drag
if (event.getType().equals(DragType.SINGLE)) {
// if the player drags a stack of shulker boxes
if (shulkerBoxes.getAmount() <= 1) {
return;
}
// set each slot to the appropriate amount of shulkers
for (int i = 0; i < numberOfSlotsDragged; i++) {
if (dragInventory.getItem(slotsDragged.get(i)) == null
|| dragInventory.getItem(slotsDragged.get(i)).getType() == Material.AIR) {
|| dragInventory.getItem(slotsDragged.get(i)).getType() == Material.AIR)
{
dragInventory.setItem(slotsDragged.get(i), new ItemStack(shulkerBoxes.getType(), 1));
} else if (dragInventory.getItem(slotsDragged.get(i)) != null
&& dragInventory
.getItem(slotsDragged.get(i))
.getType()
.equals(shulkerBoxes.getType())) {
dragInventory
.getItem(slotsDragged.get(i))
.setAmount(dragInventory
.getItem(slotsDragged.get(i))
.getAmount()
+ 1);
&& dragInventory.getItem(slotsDragged.get(i)).getType().equals(shulkerBoxes.getType()))
{
dragInventory.getItem(slotsDragged.get(i))
.setAmount(dragInventory.getItem(slotsDragged.get(i)).getAmount() + 1);
}
}
// remove the shulker boxes from the player's cursor
event.getWhoClicked()
.setItemOnCursor(
event.getWhoClicked().setItemOnCursor(
new ItemStack(shulkerBoxes.getType(), shulkerBoxes.getAmount() - numberOfSlotsDragged));
}
// left click drag
else if (event.getType().equals(DragType.EVEN)) {
// if the player drags a stack of shulker boxes
if (shulkerBoxes.getAmount() <= 1) {
return;
}
// set each slot to the appropriate amount of shulkers
for (int i = 0; i < numberOfSlotsDragged; i++) {
if (dragInventory.getItem(slotsDragged.get(i)) == null
|| dragInventory.getItem(slotsDragged.get(i)).getType() == Material.AIR) {
ItemStack newShulkerBoxes =
new ItemStack(shulkerBoxes.getType(), shulkerBoxes.getAmount() / numberOfSlotsDragged);
|| dragInventory.getItem(slotsDragged.get(i)).getType() == Material.AIR)
{
ItemStack newShulkerBoxes = new ItemStack(shulkerBoxes.getType(),
shulkerBoxes.getAmount() / numberOfSlotsDragged);
dragInventory.setItem(slotsDragged.get(i), newShulkerBoxes);
if (newShulkerBoxes.getAmount() > 64) {
shulkerBoxes.setAmount(shulkerBoxes.getAmount() - (64 - shulkerBoxes.getAmount()));
newShulkerBoxes.setAmount(64);
slotsDragged.remove(i);
break;
}
dragInventory.setItem(slotsDragged.get(i), newShulkerBoxes);
} else if (dragInventory.getItem(slotsDragged.get(i)) != null
&& dragInventory
.getItem(slotsDragged.get(i))
.getType()
.equals(shulkerBoxes.getType())) {
ItemStack newShulkerBoxes =
new ItemStack(shulkerBoxes.getType(), shulkerBoxes.getAmount() / numberOfSlotsDragged);
dragInventory
.getItem(slotsDragged.get(i))
.setAmount(dragInventory
.getItem(slotsDragged.get(i))
.getAmount()
&& dragInventory.getItem(slotsDragged.get(i)).getType().equals(shulkerBoxes.getType()))
{
ItemStack newShulkerBoxes = new ItemStack(shulkerBoxes.getType(),
shulkerBoxes.getAmount() / numberOfSlotsDragged);
dragInventory.getItem(slotsDragged.get(i))
.setAmount(dragInventory.getItem(slotsDragged.get(i)).getAmount()
+ shulkerBoxes.getAmount() / numberOfSlotsDragged);
if (newShulkerBoxes.getAmount() > 64) {
shulkerBoxes.setAmount(shulkerBoxes.getAmount() - (64 - shulkerBoxes.getAmount()));
newShulkerBoxes.setAmount(64);
slotsDragged.remove(i);
break;
}
dragInventory.setItem(slotsDragged.get(i), newShulkerBoxes);
}
}
event.getWhoClicked()
.setItemOnCursor(
event.getWhoClicked().setItemOnCursor(
new ItemStack(shulkerBoxes.getType(), shulkerBoxes.getAmount() % numberOfSlotsDragged));
((Player) event.getWhoClicked()).updateInventory();
}
});
}
}
@@ -13,10 +13,12 @@ import org.bukkit.inventory.meta.BlockStateMeta;
public class DoubleClick {
public static void DoubleClickShulkerBox(ItemStack cursorItem, InventoryClickEvent event) {
// check that the held shulker box is empty
Inventory heldShulkerInventory =
((ShulkerBox) ((BlockStateMeta) cursorItem.getItemMeta()).getBlockState()).getInventory();
Inventory heldShulkerInventory = ((ShulkerBox) ((BlockStateMeta) cursorItem.getItemMeta()).getBlockState())
.getInventory();
if (heldShulkerInventory.isEmpty()) {
// loop through the inventory, and the player's inventory
// and count up the shulker boxes
// ignore boxes in result slots
@@ -47,31 +49,35 @@ public class DoubleClick {
// up to 64 boxes
int shulkerBoxCount = cursorItem.getAmount();
while (tempContainerInventory.first(shulkerType) != -1) {
int firstShulker = tempContainerInventory.first(shulkerType);
// grab the inventory of the shulker box in that slot
Inventory shulkerInventory = ((ShulkerBox) ((BlockStateMeta) tempContainerInventory
.getItem(firstShulker)
.getItemMeta())
.getBlockState())
.getInventory();
// if that inventory is not empty, delete it from the temporary inventory, and continue on
.getItem(firstShulker).getItemMeta()).getBlockState()).getInventory();
// if that inventory is not empty, delete it from the temporary inventory, and
// continue on
// otherwise, do the rest of the logic
if (!shulkerInventory.isEmpty()) {
tempContainerInventory.setItem(firstShulker, new ItemStack(Material.AIR));
continue;
}
// if the shulker box is in a RESULT slot, then break from
// the loop, since that is always the last slot
InventoryType.SlotType slotType = eventView.getSlotType(firstShulker);
if (slotType.equals(InventoryType.SlotType.RESULT)) {
break;
}
// if the shulker box count would have gone above 64
ItemStack shulkerStackItem = containerInventory.getItem(firstShulker);
int shulkerStackAmount = shulkerStackItem.getAmount();
if (shulkerBoxCount + shulkerStackAmount > 64) {
// get how many shulker boxes we need to get to 64
int shulkersRequired = 64 - shulkerBoxCount;
// remove that many boxes from the stack
@@ -79,31 +85,36 @@ public class DoubleClick {
shulkerBoxCount += shulkersRequired;
// break from the loop, since we have a stack of shulkers collected
break;
} else {
// add the shulkerStackAmount to shulkerBoxCount
shulkerBoxCount += shulkerStackAmount;
// remove the shulkers from that slot
containerInventory.setItem(firstShulker, new ItemStack(Material.AIR));
tempContainerInventory.setItem(firstShulker, new ItemStack(Material.AIR));
}
}
// loop through the player's inventory
while (tempPlayerInventory.first(shulkerType) != -1) {
int firstShulker = tempPlayerInventory.first(shulkerType);
// grab the inventory of the shulker box in that slot
Inventory shulkerInventory = ((ShulkerBox) ((BlockStateMeta) tempPlayerInventory
.getItem(firstShulker)
.getItemMeta())
.getBlockState())
.getInventory();
// if that inventory is not empty, delete it from the temporary inventory, and continue on
Inventory shulkerInventory = ((ShulkerBox) ((BlockStateMeta) tempPlayerInventory.getItem(firstShulker)
.getItemMeta()).getBlockState()).getInventory();
// if that inventory is not empty, delete it from the temporary inventory, and
// continue on
// otherwise, do the rest of the logic
if (!shulkerInventory.isEmpty()) {
// remove this non-empty shulker from the temporary inventory
tempPlayerInventory.setItem(firstShulker, new ItemStack(Material.AIR));
continue;
}
// if the shulker box is in a RESULT slot, then break from
@@ -111,12 +122,16 @@ public class DoubleClick {
// add the container's size to the here to offset it to the player's inventory
InventoryType.SlotType slotType = eventView.getSlotType(firstShulker + containerSize);
if (slotType.equals(InventoryType.SlotType.RESULT)) {
break;
}
// if the shulker box count would have gone above 64
ItemStack shulkerStackItem = playerInventory.getItem(firstShulker);
int shulkerStackAmount = shulkerStackItem.getAmount();
if (shulkerBoxCount + shulkerStackAmount > 64) {
// get how many shulker boxes we need to get to 64
int shulkersRequired = 64 - shulkerBoxCount;
// remove that many boxes from the stack
@@ -124,24 +139,33 @@ public class DoubleClick {
shulkerBoxCount += shulkersRequired;
// break from the loop, since we have a stack of shulkers collected
break;
} else {
// add the shulkerStackAmount to shulkerBoxCount
shulkerBoxCount += shulkerStackAmount;
// remove the shulkers from that slot
playerInventory.setItem(firstShulker, new ItemStack(Material.AIR));
tempPlayerInventory.setItem(firstShulker, new ItemStack(Material.AIR));
}
}
// now that we have the number of shulkers to grab, put them into the cursor
// if the shulkerBoxCount was 1, then don't do anything
if (shulkerBoxCount != 1) {
ItemStack newShulkers = new ItemStack(shulkerType);
newShulkers.setAmount(shulkerBoxCount);
event.getWhoClicked().setItemOnCursor(newShulkers);
// cancel default behavior
event.setCancelled(true);
}
}
}
}
@@ -7,8 +7,10 @@ import org.bukkit.inventory.meta.BlockStateMeta;
public class NormalLeftClick {
public static void NormalLeftClickShulkerBox(
ItemStack currentItem, ItemStack cursorItem, InventoryClickEvent event) {
public static void NormalLeftClickShulkerBox(ItemStack currentItem, ItemStack cursorItem,
InventoryClickEvent event)
{
// check that both shulker boxes are empty
// get the inventories of the shulker boxes
BlockStateMeta shulker1Meta = (BlockStateMeta) currentItem.getItemMeta();
@@ -17,23 +19,32 @@ public class NormalLeftClick {
ShulkerBox shulker2 = (ShulkerBox) shulker2Meta.getBlockState();
// check the inventory of each shulker
if (shulker1.getInventory().isEmpty()) {
if (shulker2.getInventory().isEmpty()) {
if (currentItem.getAmount() + cursorItem.getAmount() <= 64) {
// add the shulker itemStacks together
event.getCurrentItem()
.setAmount(event.getCursor().getAmount()
+ event.getCurrentItem().getAmount());
.setAmount(event.getCursor().getAmount() + event.getCurrentItem().getAmount());
event.getWhoClicked().getItemOnCursor().setAmount(0);
} else {
// add the shulkers until we are at 64
event.getWhoClicked()
.getItemOnCursor()
event.getWhoClicked().getItemOnCursor()
.setAmount((currentItem.getAmount() + cursorItem.getAmount()) - 64);
event.getCurrentItem().setAmount(64);
}
// stop default behaviors
event.setCancelled(true);
}
}
}
}
@@ -7,8 +7,9 @@ import org.bukkit.inventory.meta.BlockStateMeta;
public class NormalRightClick {
public static void NormalRightClickShulkerBox(
ItemStack currentItem, ItemStack cursorItem, InventoryClickEvent event) {
public static void NormalRightClickShulkerBox(ItemStack currentItem, ItemStack cursorItem,
InventoryClickEvent event)
{
// check that both shulker boxes are empty
// get the inventories of the shulker boxes
@@ -18,13 +19,21 @@ public class NormalRightClick {
ShulkerBox shulker2 = (ShulkerBox) shulker2Meta.getBlockState();
// check the inventory of each shulker
if (shulker1.getInventory().isEmpty()) {
if (shulker2.getInventory().isEmpty()) {
if (currentItem.getAmount() < 64) {
event.getCurrentItem().setAmount(currentItem.getAmount() + 1);
event.getCursor().setAmount(cursorItem.getAmount() - 1);
event.setCancelled(true);
}
}
}
}
}
@@ -11,6 +11,7 @@ import org.bukkit.inventory.ItemStack;
public class ShiftRightLeftClick {
public static void ShiftRightLeftClickShulkerBox(InventoryClickEvent event) {
// check what kind of inventory was shift-clicked in
// regardless, loop through the inventory(ies) and add the
// shulker box stack to the
@@ -30,14 +31,19 @@ public class ShiftRightLeftClick {
// if it was the player's inventory
if (inventoryType.equals(InventoryType.CRAFTING)) {
// check if the slot was a hotbar slot or not
if (event.getSlotType().equals(InventoryType.SlotType.QUICKBAR)) {
// remove the hotbar of the tempInventory
for (int i = 0; i < 9; i++) {
tempPlayerInventory.setItem(i, new ItemStack(Material.AIR));
}
// check the top part of the inventory for any shulker stacks that are not 64 yet
// check the top part of the inventory for any shulker stacks that are not 64
// yet
while (tempPlayerInventory.first(shulkerBoxType) != -1) {
int firstShulkerSlot = tempPlayerInventory.first(shulkerBoxType);
@@ -45,8 +51,10 @@ public class ShiftRightLeftClick {
// if the shulker stack has 64 shulker boxes in it
// remove it from the temporary inventory and continue on
if (shulkerStack.getAmount() >= 64) {
tempPlayerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
continue;
}
// cancel default behavior since shulker boxes are being moved
@@ -54,49 +62,69 @@ public class ShiftRightLeftClick {
// stack up to 64 shulkers into the stack, and then continue on
if (shulkerStack.getAmount() + shulkerStackAmount <= 64) {
playerInventory
.getItem(firstShulkerSlot)
playerInventory.getItem(firstShulkerSlot)
.setAmount(shulkerStack.getAmount() + shulkerStackAmount);
shulkerStackAmount = 0;
break;
} else {
// remove shulker boxes until the shulker stack has 64 boxes
shulkerStackAmount -= 64 - shulkerStack.getAmount();
playerInventory.getItem(firstShulkerSlot).setAmount(64);
tempPlayerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
}
}
// change the shulker stack amount to what is left
// or remove it if nothing is left
if (shulkerStackAmount == 0) {
event.setCurrentItem(new ItemStack(Material.AIR));
} else {
event.getCurrentItem().setAmount(shulkerStackAmount);
// look for an air gap to put the rest of the shulker boxes
for (int i = 9; i < playerInventory.getSize(); i++) {
if (playerInventory.getItem(i) == null) {
playerInventory.setItem(i, event.getCurrentItem());
event.setCurrentItem(new ItemStack(Material.AIR));
}
}
}
}
// the slot was an inventory slot, so check the hotbar for boxes
else {
// remove everything from the upper inventory to prevent it from causing problems
// remove everything from the upper inventory to prevent it from causing
// problems
for (int i = 35; i > 8; i--) {
tempPlayerInventory.setItem(i, new ItemStack(Material.AIR));
}
while (tempPlayerInventory.first(shulkerBoxType) != -1) {
int firstShulkerSlot = tempPlayerInventory.first(shulkerBoxType);
ItemStack shulkerStack = tempPlayerInventory.getItem(firstShulkerSlot);
// if the shulker stack has 64 shulker boxes in it
// remove it from the temporary inventory and continue on
if (shulkerStack.getAmount() >= 64) {
tempPlayerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
continue;
}
// cancel default behavior since shulker boxes are being moved
@@ -104,47 +132,66 @@ public class ShiftRightLeftClick {
// stack up to 64 shulkers into the stack, and then continue on
if (shulkerStack.getAmount() + shulkerStackAmount <= 64) {
playerInventory
.getItem(firstShulkerSlot)
playerInventory.getItem(firstShulkerSlot)
.setAmount(shulkerStack.getAmount() + shulkerStackAmount);
shulkerStackAmount = 0;
break;
} else {
// remove shulker boxes until the shulker stack has 64 boxes
shulkerStackAmount -= 64 - shulkerStack.getAmount();
playerInventory.getItem(firstShulkerSlot).setAmount(64);
tempPlayerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
}
}
// change the shulker stack amount to what is left
// or remove it if nothing is left
if (shulkerStackAmount == 0) {
event.setCurrentItem(new ItemStack(Material.AIR));
} else {
event.getCurrentItem().setAmount(shulkerStackAmount);
// look for an air gap to put the rest of the shulker boxes
for (int i = 0; i < 9; i++) {
if (playerInventory.getItem(i) == null) {
playerInventory.setItem(i, event.getCurrentItem());
event.setCurrentItem(new ItemStack(Material.AIR));
}
}
}
}
}
// if it was anything else
else {
// check if the click was in the bottom
if (event.getRawSlot() > containerInventory.getSize()) {
while (tempContainerInventory.first(shulkerBoxType) != -1) {
int firstShulkerSlot = tempContainerInventory.first(shulkerBoxType);
ItemStack shulkerStack = tempContainerInventory.getItem(firstShulkerSlot);
// if the shulker stack has 64 shulker boxes in it
// remove it from the temporary inventory and continue on
if (shulkerStack.getAmount() >= 64) {
tempContainerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
continue;
}
// cancel default behavior since shulker boxes are being moved
@@ -152,44 +199,61 @@ public class ShiftRightLeftClick {
// stack up to 64 shulkers into the stack, and then continue on
if (shulkerStack.getAmount() + shulkerStackAmount <= 64) {
containerInventory
.getItem(firstShulkerSlot)
containerInventory.getItem(firstShulkerSlot)
.setAmount(shulkerStack.getAmount() + shulkerStackAmount);
shulkerStackAmount = 0;
break;
} else {
// remove shulker boxes until the shulker stack has 64 boxes
shulkerStackAmount -= 64 - shulkerStack.getAmount();
containerInventory.getItem(firstShulkerSlot).setAmount(64);
tempContainerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
}
}
// change the shulker stack amount to what is left
// or remove it if nothing is left
if (shulkerStackAmount == 0) {
event.setCurrentItem(new ItemStack(Material.AIR));
} else {
event.getCurrentItem().setAmount(shulkerStackAmount);
// look for an air gap to put the rest of the shulker boxes
for (int i = 0; i < containerInventory.getSize(); i++) {
if (containerInventory.getItem(i) == null) {
containerInventory.setItem(i, event.getCurrentItem());
event.setCurrentItem(new ItemStack(Material.AIR));
}
}
}
}
// the click was in the top inventory
else {
while (tempPlayerInventory.first(shulkerBoxType) != -1) {
int firstShulkerSlot = tempPlayerInventory.first(shulkerBoxType);
ItemStack shulkerStack = tempPlayerInventory.getItem(firstShulkerSlot);
// if the shulker stack has 64 shulker boxes in it
// remove it from the temporary inventory and continue on
if (shulkerStack.getAmount() >= 64) {
tempPlayerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
continue;
}
// cancel default behavior since shulker boxes are being moved
@@ -197,34 +261,50 @@ public class ShiftRightLeftClick {
// stack up to 64 shulkers into the stack, and then continue on
if (shulkerStack.getAmount() + shulkerStackAmount <= 64) {
playerInventory
.getItem(firstShulkerSlot)
playerInventory.getItem(firstShulkerSlot)
.setAmount(shulkerStack.getAmount() + shulkerStackAmount);
shulkerStackAmount = 0;
break;
} else {
// remove shulker boxes until the shulker stack has 64 boxes
shulkerStackAmount -= 64 - shulkerStack.getAmount();
playerInventory.getItem(firstShulkerSlot).setAmount(64);
tempPlayerInventory.setItem(firstShulkerSlot, new ItemStack(Material.AIR));
}
}
// change the shulker stack amount to what is left
// or remove it if nothing is left
if (shulkerStackAmount == 0) {
event.setCurrentItem(new ItemStack(Material.AIR));
} else {
event.getCurrentItem().setAmount(shulkerStackAmount);
// look for an air gap to put the rest of the shulker boxes
for (int i = 0; i < playerInventory.getSize(); i++) {
if (playerInventory.getItem(i) == null) {
playerInventory.setItem(i, event.getCurrentItem());
event.setCurrentItem(new ItemStack(Material.AIR));
}
}
}
}
}
}
}
@@ -14,6 +14,7 @@ public final class ShulkerStacking_OG extends JavaPlugin {
@Override
public void onEnable() {
plugin = this;
// Plugin startup logic
getServer().getPluginManager().registerEvents(new ShulkerBoxStackingController(), this);
@@ -21,9 +22,13 @@ public final class ShulkerStacking_OG extends JavaPlugin {
getServer().getPluginManager().registerEvents(new ShulkerDragHandler(), this);
getServer().getPluginManager().registerEvents(new ShulkerDragDupePrevention(), this);
getServer().getPluginManager().registerEvents(new ShulkerBoxHopperHandler(), this);
}
public static ShulkerStacking_OG getPlugin() {
return plugin;
}
}