mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 03:03:43 +01:00 
			
		
		
		
	Compare commits
	
		
			86 Commits
		
	
	
		
			6.1.4
			...
			docs/v6/ja
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d628aaba34 | ||
| 
						 | 
					ff5d79699d | ||
| 
						 | 
					a0594c19ee | ||
| 
						 | 
					da41c136fe | ||
| 
						 | 
					6a5859ee0f | ||
| 
						 | 
					59e0b4b67a | ||
| 
						 | 
					5fc153d896 | ||
| 
						 | 
					a003836dbc | ||
| 
						 | 
					42bf413528 | ||
| 
						 | 
					827f46566c | ||
| 
						 | 
					6f4d2f6d5a | ||
| 
						 | 
					6073b96317 | ||
| 
						 | 
					74a490f9f0 | ||
| 
						 | 
					3a752db698 | ||
| 
						 | 
					7cdde5a822 | ||
| 
						 | 
					8b6e7b2f2b | ||
| 
						 | 
					06f0b42a97 | ||
| 
						 | 
					9a85080bf6 | ||
| 
						 | 
					d14d2caa2d | ||
| 
						 | 
					bcfe7c58dd | ||
| 
						 | 
					289f0f3bfd | ||
| 
						 | 
					6fc4005c72 | ||
| 
						 | 
					8f7c2e4c02 | ||
| 
						 | 
					b43d08f4aa | ||
| 
						 | 
					2c55c6a92e | ||
| 
						 | 
					31f48cc7d1 | ||
| 
						 | 
					4b77f1ab28 | ||
| 
						 | 
					7cc38b5fa8 | ||
| 
						 | 
					0c76d08b10 | ||
| 
						 | 
					9c474570c8 | ||
| 
						 | 
					7e1d56c849 | ||
| 
						 | 
					07d0f124b4 | ||
| 
						 | 
					8d6c621763 | ||
| 
						 | 
					cef7098014 | ||
| 
						 | 
					e1efa7266e | ||
| 
						 | 
					f363941719 | ||
| 
						 | 
					25095f4546 | ||
| 
						 | 
					fd0c2050d8 | ||
| 
						 | 
					07fdc94dd8 | ||
| 
						 | 
					b501a81e21 | ||
| 
						 | 
					eb334b3aac | ||
| 
						 | 
					a77a51b6f2 | ||
| 
						 | 
					7d981bc610 | ||
| 
						 | 
					3eb485e900 | ||
| 
						 | 
					9f4af889f7 | ||
| 
						 | 
					2559c889e2 | ||
| 
						 | 
					2cf268b99c | ||
| 
						 | 
					e6fad8309c | ||
| 
						 | 
					7551450cf9 | ||
| 
						 | 
					e042566bb7 | ||
| 
						 | 
					1f26808c7b | ||
| 
						 | 
					a7026047d0 | ||
| 
						 | 
					af2613202d | ||
| 
						 | 
					3da1e9255a | ||
| 
						 | 
					9394906a79 | ||
| 
						 | 
					d881cb6084 | ||
| 
						 | 
					b9d43897af | ||
| 
						 | 
					76b58485a9 | ||
| 
						 | 
					7002df0bc7 | ||
| 
						 | 
					958aac3cb1 | ||
| 
						 | 
					a93402e27b | ||
| 
						 | 
					92f41f43c5 | ||
| 
						 | 
					392ee9fa07 | ||
| 
						 | 
					8859871e89 | ||
| 
						 | 
					93d99630a9 | ||
| 
						 | 
					47ae79e123 | ||
| 
						 | 
					f9ad00c2c8 | ||
| 
						 | 
					566af259db | ||
| 
						 | 
					d9a6431078 | ||
| 
						 | 
					e9c9375e78 | ||
| 
						 | 
					7c99c8aabf | ||
| 
						 | 
					88eb8f88a7 | ||
| 
						 | 
					fd118c2c37 | ||
| 
						 | 
					858b6b5471 | ||
| 
						 | 
					f086826942 | ||
| 
						 | 
					9c84dc2bc0 | ||
| 
						 | 
					cba0f3ac1f | ||
| 
						 | 
					b9a130ab00 | ||
| 
						 | 
					688056352b | ||
| 
						 | 
					2a40f52dea | ||
| 
						 | 
					3ed369de19 | ||
| 
						 | 
					bec51401a3 | ||
| 
						 | 
					109f884b5f | ||
| 
						 | 
					8f3fa419c4 | ||
| 
						 | 
					a9f08bc885 | ||
| 
						 | 
					a8923ec729 | 
							
								
								
									
										4
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							@@ -18,8 +18,6 @@ body:
 | 
				
			|||||||
      options:
 | 
					      options:
 | 
				
			||||||
        - Paper
 | 
					        - Paper
 | 
				
			||||||
        - Spigot
 | 
					        - Spigot
 | 
				
			||||||
        - Tuinity
 | 
					 | 
				
			||||||
        - Purpur
 | 
					 | 
				
			||||||
    validations:
 | 
					    validations:
 | 
				
			||||||
      required: true
 | 
					      required: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,6 +27,8 @@ body:
 | 
				
			|||||||
      description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
 | 
					      description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
 | 
				
			||||||
      multiple: false
 | 
					      multiple: false
 | 
				
			||||||
      options:
 | 
					      options:
 | 
				
			||||||
 | 
					        - '1.18.1'
 | 
				
			||||||
 | 
					        - '1.18'
 | 
				
			||||||
        - '1.17.1'
 | 
					        - '1.17.1'
 | 
				
			||||||
        - '1.16.5'
 | 
					        - '1.16.5'
 | 
				
			||||||
        - '1.15.2'
 | 
					        - '1.15.2'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.github/stale.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/stale.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
daysUntilStale: 60
 | 
					daysUntilStale: 30
 | 
				
			||||||
daysUntilClose: 7
 | 
					daysUntilClose: 7
 | 
				
			||||||
only: issues
 | 
					only: issues
 | 
				
			||||||
exemptLabels:
 | 
					exemptLabels:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										54
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,41 +1,41 @@
 | 
				
			|||||||
name: "build"
 | 
					name: build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
on: [ "pull_request", "push" ]
 | 
					on: [ pull_request, push ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: "ubuntu-20.04"
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: "Checkout Repository"
 | 
					      - name: Checkout Repository
 | 
				
			||||||
        uses: "actions/checkout@v2.3.4"
 | 
					        uses: actions/checkout@v2.4.0
 | 
				
			||||||
      - name: "Validate Gradle Wrapper"
 | 
					      - name: Validate Gradle Wrapper"
 | 
				
			||||||
        uses: "gradle/wrapper-validation-action@v1.0.4"
 | 
					        uses: gradle/wrapper-validation-action@v1.0.4
 | 
				
			||||||
      - name: "Setup Java"
 | 
					      - name: Setup Java
 | 
				
			||||||
        uses: "actions/setup-java@v2.3.1"
 | 
					        uses: actions/setup-java@v2.5.0
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          distribution: "temurin"
 | 
					          distribution: temurin
 | 
				
			||||||
          java-version: "17"
 | 
					          java-version: 17
 | 
				
			||||||
      - name: "Clean Build"
 | 
					      - name: Clean Build
 | 
				
			||||||
        run: "./gradlew clean build"
 | 
					        run: ./gradlew clean build
 | 
				
			||||||
      - name: "Determine release status"
 | 
					      - name: Determine release status
 | 
				
			||||||
        if: "${{ runner.os == 'Linux' }}"
 | 
					        if: ${{ runner.os == 'Linux' }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          if [ "$(./gradlew properties | awk '/^version:/ { print $2; }' | grep '\-SNAPSHOT')" ]; then
 | 
					          if [ "$(./gradlew properties | awk '/^version:/ { print $2; }' | grep '\-SNAPSHOT')" ]; then
 | 
				
			||||||
            echo "STATUS=snapshot" >> $GITHUB_ENV
 | 
					            echo "STATUS=snapshot" >> $GITHUB_ENV
 | 
				
			||||||
          else
 | 
					          else
 | 
				
			||||||
            echo "STATUS=release" >> $GITHUB_ENV
 | 
					            echo "STATUS=release" >> $GITHUB_ENV
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
      - name: "Publish Release"
 | 
					      - name: Publish Release
 | 
				
			||||||
        if: "${{ runner.os == 'Linux' && env.STATUS == 'release' && github.event_name == 'push' && github.ref == 'refs/heads/v6'}}"
 | 
					        if: ${{ runner.os == 'Linux' && env.STATUS == 'release' && github.event_name == 'push' && github.ref == 'refs/heads/v6'}}
 | 
				
			||||||
        run: "./gradlew publishToSonatype closeSonatypeStagingRepository"
 | 
					        run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          ORG_GRADLE_PROJECT_sonatypeUsername: "${{ secrets.SONATYPE_USERNAME }}"
 | 
					          ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USERNAME }}
 | 
				
			||||||
          ORG_GRADLE_PROJECT_sonatypePassword: "${{ secrets.SONATYPE_PASSWORD }}"
 | 
					          ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
 | 
				
			||||||
          ORG_GRADLE_PROJECT_signingKey: "${{ secrets.SIGNING_KEY }}"
 | 
					          ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }}
 | 
				
			||||||
          ORG_GRADLE_PROJECT_signingPassword: "${{ secrets.SIGNING_PASSWORD }}"
 | 
					          ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }}
 | 
				
			||||||
      - name: "Publish Snapshot"
 | 
					      - name: Publish Snapshot
 | 
				
			||||||
        if: "${{ runner.os == 'Linux' && env.STATUS != 'release' && github.event_name == 'push' && github.ref == 'refs/heads/v6' }}"
 | 
					        if: ${{ runner.os == 'Linux' && env.STATUS != 'release' && github.event_name == 'push' && github.ref == 'refs/heads/v6' }}
 | 
				
			||||||
        run: "./gradlew publishToSonatype"
 | 
					        run: ./gradlew publishToSonatype
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          ORG_GRADLE_PROJECT_sonatypeUsername: "${{ secrets.SONATYPE_USERNAME }}"
 | 
					          ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USERNAME }}
 | 
				
			||||||
          ORG_GRADLE_PROJECT_sonatypePassword: "${{ secrets.SONATYPE_PASSWORD }}"
 | 
					          ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								.github/workflows/rebase.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/rebase.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					name: Rebase Pull Request
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  issue_comment:
 | 
				
			||||||
 | 
					    types: [created]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  rebase:
 | 
				
			||||||
 | 
					    name: Rebase
 | 
				
			||||||
 | 
					    if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') && github.event.comment.author_association == 'MEMBER'
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout Repository
 | 
				
			||||||
 | 
					        uses: actions/checkout@v2.4.0
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          token: ${{ secrets.REBASE_TOKEN }}
 | 
				
			||||||
 | 
					          fetch-depth: 0
 | 
				
			||||||
 | 
					      - name: Automatic Rebase
 | 
				
			||||||
 | 
					        uses: cirrus-actions/rebase@1.5
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GITHUB_TOKEN: ${{ secrets.REBASE_TOKEN }}
 | 
				
			||||||
							
								
								
									
										10
									
								
								.github/workflows/release-drafter.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/release-drafter.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,14 +1,18 @@
 | 
				
			|||||||
name: "draft release"
 | 
					name: draft release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
on:
 | 
					on:
 | 
				
			||||||
  push:
 | 
					  push:
 | 
				
			||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - v6
 | 
					      - v6
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					    types: [ opened, reopened, synchronize ]
 | 
				
			||||||
 | 
					  pull_request_target:
 | 
				
			||||||
 | 
					    types: [ opened, reopened, synchronize ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  update_release_draft:
 | 
					  update_release_draft:
 | 
				
			||||||
    runs-on: "ubuntu-latest"
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: "release-drafter/release-drafter@v5.15.0"
 | 
					      - uses: release-drafter/release-drafter@v5.17.6
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
					          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								.lift.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.lift.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					jdkVersion = "17"
 | 
				
			||||||
 | 
					build = "gradle clean build -x test"
 | 
				
			||||||
 | 
					tools = ["findsecbugs", "ErrorProne", "Semgrep", "Detekt", "Infer"]
 | 
				
			||||||
 | 
					ignoreRules = ["CatchAndPrintStackTrace", "ReferenceEquality", "FallThrough", "FutureReturnValueIgnored", "MixedMutabilityReturnType", "EmptyCatch", "MissingCasesInEnumSwitch", "OperatorPrecedence", "StaticAssignmentInConstructor", "ReferenceEquality", "EqualsHashCode", "EqualsGetClass", "TypeParameterUnusedInFormals", "StringSplitter", "InlineMeSuggester", "NULL_DEREFERENCE"]
 | 
				
			||||||
							
								
								
									
										13
									
								
								.whitesource
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.whitesource
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "scanSettings": {
 | 
				
			||||||
 | 
					    "baseBranches": ["v6"]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "checkRunSettings": {
 | 
				
			||||||
 | 
					    "vulnerableCheckRunConclusionLevel": "success",
 | 
				
			||||||
 | 
					    "displayMode": "diff"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "issueSettings": {
 | 
				
			||||||
 | 
					    "minSeverityLevel": "LOW"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "enableRenovate": "true"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -40,7 +40,6 @@ dependencies {
 | 
				
			|||||||
    compileOnly(libs.placeholderapi)
 | 
					    compileOnly(libs.placeholderapi)
 | 
				
			||||||
    compileOnly(libs.luckperms)
 | 
					    compileOnly(libs.luckperms)
 | 
				
			||||||
    compileOnly(libs.essentialsx)
 | 
					    compileOnly(libs.essentialsx)
 | 
				
			||||||
    compileOnly(libs.hyperverse) { isTransitive = false }
 | 
					 | 
				
			||||||
    compileOnly(libs.mvdwapi) { isTransitive = false }
 | 
					    compileOnly(libs.mvdwapi) { isTransitive = false }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Other libraries
 | 
					    // Other libraries
 | 
				
			||||||
@@ -75,7 +74,8 @@ tasks.named<ShadowJar>("shadowJar") {
 | 
				
			|||||||
    relocate("org.khelekore.prtree", "com.plotsquared.prtree")
 | 
					    relocate("org.khelekore.prtree", "com.plotsquared.prtree")
 | 
				
			||||||
    relocate("com.google.inject", "com.plotsquared.google")
 | 
					    relocate("com.google.inject", "com.plotsquared.google")
 | 
				
			||||||
    relocate("org.aopalliance", "com.plotsquared.core.aopalliance")
 | 
					    relocate("org.aopalliance", "com.plotsquared.core.aopalliance")
 | 
				
			||||||
    relocate("com.intellectualsites.services", "com.plotsquared.core.services")
 | 
					    relocate("cloud.commandframework.services", "com.plotsquared.core.services")
 | 
				
			||||||
 | 
					    relocate("io.leangen.geantyref", "com.plotsquared.core.geantyref")
 | 
				
			||||||
    relocate("com.intellectualsites.arkitektonika", "com.plotsquared.core.arkitektonika")
 | 
					    relocate("com.intellectualsites.arkitektonika", "com.plotsquared.core.arkitektonika")
 | 
				
			||||||
    relocate("com.intellectualsites.http", "com.plotsquared.core.http")
 | 
					    relocate("com.intellectualsites.http", "com.plotsquared.core.http")
 | 
				
			||||||
    relocate("com.intellectualsites.paster", "com.plotsquared.core.paster")
 | 
					    relocate("com.intellectualsites.paster", "com.plotsquared.core.paster")
 | 
				
			||||||
@@ -83,6 +83,7 @@ tasks.named<ShadowJar>("shadowJar") {
 | 
				
			|||||||
    relocate("org.jetbrains", "com.plotsquared.core.annotations")
 | 
					    relocate("org.jetbrains", "com.plotsquared.core.annotations")
 | 
				
			||||||
    relocate("org.intellij.lang", "com.plotsquared.core.intellij.annotations")
 | 
					    relocate("org.intellij.lang", "com.plotsquared.core.intellij.annotations")
 | 
				
			||||||
    relocate("javax.annotation", "com.plotsquared.core.annotation")
 | 
					    relocate("javax.annotation", "com.plotsquared.core.annotation")
 | 
				
			||||||
 | 
					    relocate("com.google.code.findbugs", "com.plotsquared.core.findbugs")
 | 
				
			||||||
    relocate("javax.inject", "com.plotsquared.core.annotation.inject")
 | 
					    relocate("javax.inject", "com.plotsquared.core.annotation.inject")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Get rid of all the libs which are 100% unused.
 | 
					    // Get rid of all the libs which are 100% unused.
 | 
				
			||||||
@@ -94,10 +95,10 @@ tasks.named<ShadowJar>("shadowJar") {
 | 
				
			|||||||
tasks {
 | 
					tasks {
 | 
				
			||||||
    withType<Javadoc> {
 | 
					    withType<Javadoc> {
 | 
				
			||||||
        val opt = options as StandardJavadocDocletOptions
 | 
					        val opt = options as StandardJavadocDocletOptions
 | 
				
			||||||
        opt.links("https://papermc.io/javadocs/paper/1.17/")
 | 
					        opt.links("https://papermc.io/javadocs/paper/1.18/")
 | 
				
			||||||
        opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-core/7.2.6/")
 | 
					        opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/7.2.8/")
 | 
				
			||||||
        opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/7.2.6/")
 | 
					        opt.links("https://javadoc.io/doc/com.plotsquared/PlotSquared-Core/latest/")
 | 
				
			||||||
        opt.links("https://jd.adventure.kyori.net/api/4.9.1/")
 | 
					        opt.links("https://jd.adventure.kyori.net/api/4.9.3/")
 | 
				
			||||||
        opt.links("https://google.github.io/guice/api-docs/5.0.1/javadoc/")
 | 
					        opt.links("https://google.github.io/guice/api-docs/5.0.1/javadoc/")
 | 
				
			||||||
        opt.links("https://checkerframework.org/api/")
 | 
					        opt.links("https://checkerframework.org/api/")
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -147,6 +147,8 @@ import java.io.File;
 | 
				
			|||||||
import java.lang.reflect.Method;
 | 
					import java.lang.reflect.Method;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.Arrays;
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
 | 
					import java.util.Comparator;
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
@@ -216,6 +218,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
    private PlatformWorldManager<World> worldManager;
 | 
					    private PlatformWorldManager<World> worldManager;
 | 
				
			||||||
    private Locale serverLocale;
 | 
					    private Locale serverLocale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("StringSplitter")
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public int @NonNull [] serverVersion() {
 | 
					    public int @NonNull [] serverVersion() {
 | 
				
			||||||
        if (this.version == null) {
 | 
					        if (this.version == null) {
 | 
				
			||||||
@@ -266,7 +269,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
                    faweHook = true;
 | 
					                    faweHook = true;
 | 
				
			||||||
                } catch (Exception ignored) {
 | 
					                } catch (Exception ignored) {
 | 
				
			||||||
                    LOGGER.error("Incompatible version of FAWE to enable hook, please upgrade: https://ci.athion" +
 | 
					                    LOGGER.error("Incompatible version of FAWE to enable hook, please upgrade: https://ci.athion" +
 | 
				
			||||||
                            ".net/job/FastAsyncWorldEdit-1.17/");
 | 
					                            ".net/job/FastAsyncWorldEdit/");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -321,8 +324,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
        // Comments
 | 
					        // Comments
 | 
				
			||||||
        CommentManager.registerDefaultInboxes();
 | 
					        CommentManager.registerDefaultInboxes();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        plotSquared.startExpiryTasks();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Do stuff that was previously done in PlotSquared
 | 
					        // Do stuff that was previously done in PlotSquared
 | 
				
			||||||
        // Kill entities
 | 
					        // Kill entities
 | 
				
			||||||
        if (Settings.Enabled_Components.KILL_ROAD_MOBS || Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
 | 
					        if (Settings.Enabled_Components.KILL_ROAD_MOBS || Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
 | 
				
			||||||
@@ -419,6 +420,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
            }, TaskTime.ticks(1L));
 | 
					            }, TaskTime.ticks(1L));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        plotSquared.startExpiryTasks();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Once the server has loaded force updating all generators known to P2
 | 
					        // Once the server has loaded force updating all generators known to P2
 | 
				
			||||||
        TaskManager.runTaskLater(() -> PlotSquared.platform().setupUtils().updateGenerators(true), TaskTime.ticks(1L));
 | 
					        TaskManager.runTaskLater(() -> PlotSquared.platform().setupUtils().updateGenerators(true), TaskTime.ticks(1L));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -968,7 +971,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
                                                }
 | 
					                                                }
 | 
				
			||||||
                                                iterator.remove();
 | 
					                                                iterator.remove();
 | 
				
			||||||
                                                entity.remove();
 | 
					                                                entity.remove();
 | 
				
			||||||
                                                continue;
 | 
					 | 
				
			||||||
                                            }
 | 
					                                            }
 | 
				
			||||||
                                        }
 | 
					                                        }
 | 
				
			||||||
                                    } else {
 | 
					                                    } else {
 | 
				
			||||||
@@ -980,7 +982,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
                                            }
 | 
					                                            }
 | 
				
			||||||
                                            iterator.remove();
 | 
					                                            iterator.remove();
 | 
				
			||||||
                                            entity.remove();
 | 
					                                            entity.remove();
 | 
				
			||||||
                                            continue;
 | 
					 | 
				
			||||||
                                        }
 | 
					                                        }
 | 
				
			||||||
                                    }
 | 
					                                    }
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
@@ -1141,8 +1142,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public @NonNull String pluginsFormatted() {
 | 
					    public @NonNull String pluginsFormatted() {
 | 
				
			||||||
        StringBuilder msg = new StringBuilder();
 | 
					        StringBuilder msg = new StringBuilder();
 | 
				
			||||||
        Plugin[] plugins = Bukkit.getServer().getPluginManager().getPlugins();
 | 
					        List<Plugin> plugins = new ArrayList<>();
 | 
				
			||||||
        msg.append("Plugins (").append(plugins.length).append("): \n");
 | 
					        Collections.addAll(plugins, Bukkit.getServer().getPluginManager().getPlugins());
 | 
				
			||||||
 | 
					        plugins.sort(Comparator.comparing(Plugin::getName));
 | 
				
			||||||
 | 
					        msg.append("Plugins (").append(plugins.size()).append("): \n");
 | 
				
			||||||
        for (Plugin p : plugins) {
 | 
					        for (Plugin p : plugins) {
 | 
				
			||||||
            msg.append(" - ").append(p.getName()).append(":").append("\n")
 | 
					            msg.append(" - ").append(p.getName()).append(":").append("\n")
 | 
				
			||||||
                    .append("  • Version: ").append(p.getDescription().getVersion()).append("\n")
 | 
					                    .append("  • Version: ").append(p.getDescription().getVersion()).append("\n")
 | 
				
			||||||
@@ -1156,6 +1159,21 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
        return msg.toString();
 | 
					        return msg.toString();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @SuppressWarnings("ConstantConditions")
 | 
				
			||||||
 | 
					    public @NonNull String worldEditImplementations() {
 | 
				
			||||||
 | 
					        StringBuilder msg = new StringBuilder();
 | 
				
			||||||
 | 
					        if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) {
 | 
				
			||||||
 | 
					            msg.append("FastAsyncWorldEdit: ").append(Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit").getDescription().getVersion());
 | 
				
			||||||
 | 
					        } else if (Bukkit.getPluginManager().getPlugin("AsyncWorldEdit") != null) {
 | 
				
			||||||
 | 
					            msg.append("AsyncWorldEdit: ").append(Bukkit.getPluginManager().getPlugin("AsyncWorldEdit").getDescription().getVersion()).append("\n");
 | 
				
			||||||
 | 
					            msg.append("WorldEdit: ").append(Bukkit.getPluginManager().getPlugin("WorldEdit").getDescription().getVersion());
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            msg.append("WorldEdit: ").append(Bukkit.getPluginManager().getPlugin("WorldEdit").getDescription().getVersion());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return msg.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public com.plotsquared.core.location.@NonNull World<?> getPlatformWorld(final @NonNull String worldName) {
 | 
					    public com.plotsquared.core.location.@NonNull World<?> getPlatformWorld(final @NonNull String worldName) {
 | 
				
			||||||
        return BukkitWorld.of(worldName);
 | 
					        return BukkitWorld.of(worldName);
 | 
				
			||||||
@@ -1204,7 +1222,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    @NonNull
 | 
					    @NonNull
 | 
				
			||||||
    @SuppressWarnings("ALL")
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
    public PlayerManager<? extends PlotPlayer<Player>, ? extends Player> playerManager() {
 | 
					    public PlayerManager<? extends PlotPlayer<Player>, ? extends Player> playerManager() {
 | 
				
			||||||
        return (PlayerManager<BukkitPlayer, Player>) injector().getInstance(PlayerManager.class);
 | 
					        return (PlayerManager<BukkitPlayer, Player>) injector().getInstance(PlayerManager.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -461,6 +461,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
 | 
				
			|||||||
        this.tamed.tamed = tamed.isTamed();
 | 
					        this.tamed.tamed = tamed.isTamed();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // Paper deprecation
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public Entity spawn(World world, int xOffset, int zOffset) {
 | 
					    public Entity spawn(World world, int xOffset, int zOffset) {
 | 
				
			||||||
        Location location = new Location(world, this.getX() + xOffset, this.getY(), this.z + zOffset);
 | 
					        Location location = new Location(world, this.getX() + xOffset, this.getY(), this.z + zOffset);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -29,7 +29,6 @@ import com.google.inject.AbstractModule;
 | 
				
			|||||||
import com.google.inject.Provides;
 | 
					import com.google.inject.Provides;
 | 
				
			||||||
import com.google.inject.Singleton;
 | 
					import com.google.inject.Singleton;
 | 
				
			||||||
import com.plotsquared.bukkit.managers.BukkitWorldManager;
 | 
					import com.plotsquared.bukkit.managers.BukkitWorldManager;
 | 
				
			||||||
import com.plotsquared.bukkit.managers.HyperverseWorldManager;
 | 
					 | 
				
			||||||
import com.plotsquared.bukkit.managers.MultiverseWorldManager;
 | 
					import com.plotsquared.bukkit.managers.MultiverseWorldManager;
 | 
				
			||||||
import com.plotsquared.core.util.PlatformWorldManager;
 | 
					import com.plotsquared.core.util.PlatformWorldManager;
 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
@@ -37,12 +36,11 @@ import org.bukkit.World;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class WorldManagerModule extends AbstractModule {
 | 
					public class WorldManagerModule extends AbstractModule {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("removal") // Internal use only
 | 
				
			||||||
    @Provides
 | 
					    @Provides
 | 
				
			||||||
    @Singleton
 | 
					    @Singleton
 | 
				
			||||||
    PlatformWorldManager<World> provideWorldManager() {
 | 
					    PlatformWorldManager<World> provideWorldManager() {
 | 
				
			||||||
        if (Bukkit.getPluginManager().getPlugin("Hyperverse") != null) {
 | 
					        if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) {
 | 
				
			||||||
            return new HyperverseWorldManager();
 | 
					 | 
				
			||||||
        } else if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) {
 | 
					 | 
				
			||||||
            return new MultiverseWorldManager();
 | 
					            return new MultiverseWorldManager();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return new BukkitWorldManager();
 | 
					            return new BukkitWorldManager();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -108,41 +108,11 @@ public class ChunkListener implements Listener {
 | 
				
			|||||||
                        this.isTrueForNotSave = false;
 | 
					                        this.isTrueForNotSave = false;
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        this.mustSave = classChunk.getField("mustNotSave");
 | 
					                        this.mustSave = classChunk.getField("mustNotSave");
 | 
				
			||||||
                        /*
 | 
					                    }
 | 
				
			||||||
                        this.worldServer = classCraftWorld.getField("world");
 | 
					 | 
				
			||||||
                        this.methodGetChunkProvider = getRefClass("{nms}.WorldServer").getMethod("getChunkProvider");
 | 
					 | 
				
			||||||
                        this.playerChunkMap = getRefClass("{nms}.ChunkProviderServer").getField("playerChunkMap");
 | 
					 | 
				
			||||||
                        RefClass classPlayerChunkMap = getRefClass("{nms}.PlayerChunkMap");
 | 
					 | 
				
			||||||
                        if (PaperLib.isPaper() && version == 16) {
 | 
					 | 
				
			||||||
                            this.updatingChunks = classPlayerChunkMap.getField("updatingChunks");
 | 
					 | 
				
			||||||
                            this.methodGetVisibleMap = getRefClass("com.destroystokyo.paper.util.map.QueuedChangesMapLong2Object").getMethod(
 | 
					 | 
				
			||||||
                                    "getVisibleMap");
 | 
					 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                            this.visibleChunks = classPlayerChunkMap.getField("visibleChunks");
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        this.methodGetFullChunk = getRefClass("{nms}.PlayerChunk").getMethod("getFullChunk");
 | 
					 | 
				
			||||||
                        this.methodGetBukkitChunk = getRefClass("{nms}.Chunk").getMethod("getBukkitChunk");
 | 
					 | 
				
			||||||
                        */
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                } else if (version == 17) {
 | 
					 | 
				
			||||||
                    RefClass classChunk = getRefClass("net.minecraft.world.level.chunk.Chunk");
 | 
					                    RefClass classChunk = getRefClass("net.minecraft.world.level.chunk.Chunk");
 | 
				
			||||||
                    this.mustSave = classChunk.getField("mustNotSave");
 | 
					                    this.mustSave = classChunk.getField("mustNotSave");
 | 
				
			||||||
                    /*
 | 
					
 | 
				
			||||||
                    this.worldServer = classCraftWorld.getField("world");
 | 
					 | 
				
			||||||
                    this.methodGetChunkProvider = getRefClass("net.minecraft.server.level.WorldServer").getMethod(
 | 
					 | 
				
			||||||
                            "getChunkProvider");
 | 
					 | 
				
			||||||
                    this.playerChunkMap = getRefClass("net.minecraft.server.level.ChunkProviderServer").getField("a");
 | 
					 | 
				
			||||||
                    RefClass classPlayerChunkMap = getRefClass("net.minecraft.server.level.PlayerChunkMap");
 | 
					 | 
				
			||||||
                    if (PaperLib.isPaper()) {
 | 
					 | 
				
			||||||
                        this.updatingChunks = classPlayerChunkMap.getField("updatingChunks");
 | 
					 | 
				
			||||||
                        this.methodGetVisibleMap = getRefClass("com.destroystokyo.paper.util.map.QueuedChangesMapLong2Object").getMethod(
 | 
					 | 
				
			||||||
                                "getVisibleMap");
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        this.visibleChunks = classPlayerChunkMap.getField("l");
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    this.methodGetFullChunk = getRefClass("net.minecraft.server.level.PlayerChunk").getMethod("getFullChunk");
 | 
					 | 
				
			||||||
                    this.methodGetBukkitChunk = getRefClass("net.minecraft.world.level.chunk.Chunk").getMethod("getBukkitChunk");
 | 
					 | 
				
			||||||
                     */
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } catch (NoSuchFieldException e) {
 | 
					            } catch (NoSuchFieldException e) {
 | 
				
			||||||
                e.printStackTrace();
 | 
					                e.printStackTrace();
 | 
				
			||||||
@@ -182,32 +152,7 @@ public class ChunkListener implements Listener {
 | 
				
			|||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            toUnload.add(chunk);
 | 
					                            toUnload.add(chunk);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }/* else {
 | 
					 | 
				
			||||||
                        Object worldServer = this.worldServer.of(craftWorld).get();
 | 
					 | 
				
			||||||
                        Object chunkProviderServer = methodGetChunkProvider.of(worldServer).call();
 | 
					 | 
				
			||||||
                        Object playerChunkMap = this.playerChunkMap.of(chunkProviderServer).get();
 | 
					 | 
				
			||||||
                        Long2ObjectLinkedOpenHashMap<?> chunks;
 | 
					 | 
				
			||||||
                        if (PaperLib.isPaper() && version > 15) {
 | 
					 | 
				
			||||||
                            Object updatingChunks = this.updatingChunks.of(playerChunkMap).get();
 | 
					 | 
				
			||||||
                            chunks = (Long2ObjectLinkedOpenHashMap<?>) this.methodGetVisibleMap.of(updatingChunks).call();
 | 
					 | 
				
			||||||
                        } else {
 | 
					 | 
				
			||||||
                            chunks = (Long2ObjectLinkedOpenHashMap<?>) this.visibleChunks.of(playerChunkMap).get();
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                        for (Object playerChunk : chunks.values()) {
 | 
					 | 
				
			||||||
                            Object nmsChunk = this.methodGetFullChunk.of(playerChunk).call();
 | 
					 | 
				
			||||||
                            if (nmsChunk == null) {
 | 
					 | 
				
			||||||
                                continue;
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            Chunk chunk = (Chunk) this.methodGetBukkitChunk.of(nmsChunk).call();
 | 
					 | 
				
			||||||
                            int x = chunk.getX();
 | 
					 | 
				
			||||||
                            int z = chunk.getZ();
 | 
					 | 
				
			||||||
                            if (!shouldSave(worldName, x, z)) {
 | 
					 | 
				
			||||||
                                unloadChunk(worldName, chunk, false);
 | 
					 | 
				
			||||||
                                continue;
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            toUnload.add(chunk);
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }*/
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (toUnload.isEmpty()) {
 | 
					                if (toUnload.isEmpty()) {
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -48,6 +48,7 @@ import com.plotsquared.core.util.Permissions;
 | 
				
			|||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
 | 
					import com.sk89q.worldedit.bukkit.BukkitAdapter;
 | 
				
			||||||
import com.sk89q.worldedit.world.block.BlockType;
 | 
					import com.sk89q.worldedit.world.block.BlockType;
 | 
				
			||||||
import org.bukkit.Material;
 | 
					import org.bukkit.Material;
 | 
				
			||||||
 | 
					import org.bukkit.Particle;
 | 
				
			||||||
import org.bukkit.World;
 | 
					import org.bukkit.World;
 | 
				
			||||||
import org.bukkit.block.Block;
 | 
					import org.bukkit.block.Block;
 | 
				
			||||||
import org.bukkit.entity.Ageable;
 | 
					import org.bukkit.entity.Ageable;
 | 
				
			||||||
@@ -323,6 +324,10 @@ public class EntityEventListener implements Listener {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        event.setCancelled(true);
 | 
					        event.setCancelled(true);
 | 
				
			||||||
 | 
					        //Spawn Explosion Particles when enabled in settings
 | 
				
			||||||
 | 
					        if (Settings.General.ALWAYS_SHOW_EXPLOSIONS) {
 | 
				
			||||||
 | 
					            event.getLocation().getWorld().spawnParticle(Particle.EXPLOSION_HUGE, event.getLocation(), 0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
 | 
					    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
 | 
				
			||||||
@@ -371,14 +376,14 @@ public class EntityEventListener implements Listener {
 | 
				
			|||||||
            if (shooter instanceof Player) {
 | 
					            if (shooter instanceof Player) {
 | 
				
			||||||
                PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter);
 | 
					                PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter);
 | 
				
			||||||
                if (plot == null) {
 | 
					                if (plot == null) {
 | 
				
			||||||
                    if (!Permissions.hasPermission(pp, Permission.PERMISSION_PROJECTILE_UNOWNED)) {
 | 
					                    if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
 | 
				
			||||||
                        entity.remove();
 | 
					                        entity.remove();
 | 
				
			||||||
                        event.setCancelled(true);
 | 
					                        event.setCancelled(true);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (plot.isAdded(pp.getUUID()) || Permissions
 | 
					                if (plot.isAdded(pp.getUUID()) || Permissions
 | 
				
			||||||
                        .hasPermission(pp, Permission.PERMISSION_PROJECTILE_OTHER)) {
 | 
					                        .hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                entity.remove();
 | 
					                entity.remove();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -60,7 +60,7 @@ import java.util.List;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class EntitySpawnListener implements Listener {
 | 
					public class EntitySpawnListener implements Listener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final static String KEY = "P2";
 | 
					    private static final String KEY = "P2";
 | 
				
			||||||
    private static boolean ignoreTP = false;
 | 
					    private static boolean ignoreTP = false;
 | 
				
			||||||
    private static boolean hasPlotArea = false;
 | 
					    private static boolean hasPlotArea = false;
 | 
				
			||||||
    private static String areaName = null;
 | 
					    private static String areaName = null;
 | 
				
			||||||
@@ -75,8 +75,7 @@ public class EntitySpawnListener implements Listener {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public static void testCreate(final Entity entity) {
 | 
					    public static void testCreate(final Entity entity) {
 | 
				
			||||||
        @NonNull World world = entity.getWorld();
 | 
					        @NonNull World world = entity.getWorld();
 | 
				
			||||||
        if (areaName == world.getName()) {
 | 
					        if (!world.getName().equals(areaName)) {
 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            areaName = world.getName();
 | 
					            areaName = world.getName();
 | 
				
			||||||
            hasPlotArea = PlotSquared.get().getPlotAreaManager().hasPlotArea(areaName);
 | 
					            hasPlotArea = PlotSquared.get().getPlotAreaManager().hasPlotArea(areaName);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -39,11 +39,13 @@ import com.plotsquared.core.command.MainCommand;
 | 
				
			|||||||
import com.plotsquared.core.configuration.Settings;
 | 
					import com.plotsquared.core.configuration.Settings;
 | 
				
			||||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
 | 
					import com.plotsquared.core.configuration.caption.TranslatableCaption;
 | 
				
			||||||
import com.plotsquared.core.location.Location;
 | 
					import com.plotsquared.core.location.Location;
 | 
				
			||||||
 | 
					import com.plotsquared.core.permissions.Permission;
 | 
				
			||||||
import com.plotsquared.core.player.PlotPlayer;
 | 
					import com.plotsquared.core.player.PlotPlayer;
 | 
				
			||||||
import com.plotsquared.core.plot.Plot;
 | 
					import com.plotsquared.core.plot.Plot;
 | 
				
			||||||
import com.plotsquared.core.plot.PlotArea;
 | 
					import com.plotsquared.core.plot.PlotArea;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.DoneFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.DoneFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
					import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
				
			||||||
 | 
					import com.plotsquared.core.util.Permissions;
 | 
				
			||||||
import net.kyori.adventure.text.minimessage.Template;
 | 
					import net.kyori.adventure.text.minimessage.Template;
 | 
				
			||||||
import org.bukkit.Chunk;
 | 
					import org.bukkit.Chunk;
 | 
				
			||||||
import org.bukkit.block.Block;
 | 
					import org.bukkit.block.Block;
 | 
				
			||||||
@@ -53,7 +55,6 @@ import org.bukkit.entity.EntityType;
 | 
				
			|||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
import org.bukkit.entity.Projectile;
 | 
					import org.bukkit.entity.Projectile;
 | 
				
			||||||
import org.bukkit.entity.Slime;
 | 
					import org.bukkit.entity.Slime;
 | 
				
			||||||
import org.bukkit.entity.ThrownPotion;
 | 
					 | 
				
			||||||
import org.bukkit.event.EventHandler;
 | 
					import org.bukkit.event.EventHandler;
 | 
				
			||||||
import org.bukkit.event.EventPriority;
 | 
					import org.bukkit.event.EventPriority;
 | 
				
			||||||
import org.bukkit.event.Listener;
 | 
					import org.bukkit.event.Listener;
 | 
				
			||||||
@@ -321,9 +322,6 @@ public class PaperListener implements Listener {
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Projectile entity = event.getProjectile();
 | 
					        Projectile entity = event.getProjectile();
 | 
				
			||||||
        if (!(entity instanceof ThrownPotion)) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        ProjectileSource shooter = entity.getShooter();
 | 
					        ProjectileSource shooter = entity.getShooter();
 | 
				
			||||||
        if (!(shooter instanceof Player)) {
 | 
					        if (!(shooter instanceof Player)) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@@ -332,12 +330,37 @@ public class PaperListener implements Listener {
 | 
				
			|||||||
        if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) {
 | 
					        if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter);
 | 
					        PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter);
 | 
				
			||||||
        Plot plot = location.getOwnedPlot();
 | 
					        Plot plot = location.getOwnedPlot();
 | 
				
			||||||
        if (plot != null && !plot.isAdded(pp.getUUID())) {
 | 
					
 | 
				
			||||||
 | 
					        if (plot == null) {
 | 
				
			||||||
 | 
					            if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) {
 | 
				
			||||||
 | 
					                pp.sendMessage(
 | 
				
			||||||
 | 
					                        TranslatableCaption.of("permission.no_permission_event"),
 | 
				
			||||||
 | 
					                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
                entity.remove();
 | 
					                entity.remove();
 | 
				
			||||||
                event.setCancelled(true);
 | 
					                event.setCancelled(true);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (!plot.hasOwner()) {
 | 
				
			||||||
 | 
					            if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
 | 
				
			||||||
 | 
					                pp.sendMessage(
 | 
				
			||||||
 | 
					                        TranslatableCaption.of("permission.no_permission_event"),
 | 
				
			||||||
 | 
					                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                entity.remove();
 | 
				
			||||||
 | 
					                event.setCancelled(true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (!plot.isAdded(pp.getUUID())) {
 | 
				
			||||||
 | 
					            if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
 | 
				
			||||||
 | 
					                pp.sendMessage(
 | 
				
			||||||
 | 
					                        TranslatableCaption.of("permission.no_permission_event"),
 | 
				
			||||||
 | 
					                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                entity.remove();
 | 
				
			||||||
 | 
					                event.setCancelled(true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -36,7 +36,6 @@ import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
				
			|||||||
import net.kyori.adventure.text.minimessage.Template;
 | 
					import net.kyori.adventure.text.minimessage.Template;
 | 
				
			||||||
import org.bukkit.block.Banner;
 | 
					import org.bukkit.block.Banner;
 | 
				
			||||||
import org.bukkit.block.Beacon;
 | 
					import org.bukkit.block.Beacon;
 | 
				
			||||||
import org.bukkit.block.Bed;
 | 
					 | 
				
			||||||
import org.bukkit.block.BlockState;
 | 
					import org.bukkit.block.BlockState;
 | 
				
			||||||
import org.bukkit.block.CommandBlock;
 | 
					import org.bukkit.block.CommandBlock;
 | 
				
			||||||
import org.bukkit.block.Comparator;
 | 
					import org.bukkit.block.Comparator;
 | 
				
			||||||
@@ -51,6 +50,7 @@ import org.bukkit.block.Jukebox;
 | 
				
			|||||||
import org.bukkit.block.Sign;
 | 
					import org.bukkit.block.Sign;
 | 
				
			||||||
import org.bukkit.block.Skull;
 | 
					import org.bukkit.block.Skull;
 | 
				
			||||||
import org.bukkit.block.Structure;
 | 
					import org.bukkit.block.Structure;
 | 
				
			||||||
 | 
					import org.bukkit.block.data.type.Bed;
 | 
				
			||||||
import org.bukkit.event.EventHandler;
 | 
					import org.bukkit.event.EventHandler;
 | 
				
			||||||
import org.bukkit.event.block.BlockPlaceEvent;
 | 
					import org.bukkit.event.block.BlockPlaceEvent;
 | 
				
			||||||
import org.checkerframework.checker.nullness.qual.NonNull;
 | 
					import org.checkerframework.checker.nullness.qual.NonNull;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -68,11 +68,9 @@ import com.plotsquared.core.plot.flag.implementations.PlayerInteractFlag;
 | 
				
			|||||||
import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.TamedInteractFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.TamedInteractFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.UseFlag;
 | 
					 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.VehicleBreakFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.VehicleBreakFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.VehicleUseFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.VehicleUseFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.implementations.VillagerInteractFlag;
 | 
					import com.plotsquared.core.plot.flag.implementations.VillagerInteractFlag;
 | 
				
			||||||
import com.plotsquared.core.plot.flag.types.BlockTypeWrapper;
 | 
					 | 
				
			||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
					import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
				
			||||||
import com.plotsquared.core.util.EventDispatcher;
 | 
					import com.plotsquared.core.util.EventDispatcher;
 | 
				
			||||||
import com.plotsquared.core.util.MathMan;
 | 
					import com.plotsquared.core.util.MathMan;
 | 
				
			||||||
@@ -94,6 +92,7 @@ import org.bukkit.FluidCollisionMode;
 | 
				
			|||||||
import org.bukkit.Material;
 | 
					import org.bukkit.Material;
 | 
				
			||||||
import org.bukkit.block.Block;
 | 
					import org.bukkit.block.Block;
 | 
				
			||||||
import org.bukkit.block.BlockFace;
 | 
					import org.bukkit.block.BlockFace;
 | 
				
			||||||
 | 
					import org.bukkit.block.BlockState;
 | 
				
			||||||
import org.bukkit.block.data.Waterlogged;
 | 
					import org.bukkit.block.data.Waterlogged;
 | 
				
			||||||
import org.bukkit.command.PluginCommand;
 | 
					import org.bukkit.command.PluginCommand;
 | 
				
			||||||
import org.bukkit.entity.ArmorStand;
 | 
					import org.bukkit.entity.ArmorStand;
 | 
				
			||||||
@@ -127,7 +126,6 @@ import org.bukkit.event.player.PlayerBucketFillEvent;
 | 
				
			|||||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
 | 
					import org.bukkit.event.player.PlayerChangedWorldEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
 | 
					import org.bukkit.event.player.PlayerCommandPreprocessEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerDropItemEvent;
 | 
					import org.bukkit.event.player.PlayerDropItemEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerEggThrowEvent;
 | 
					 | 
				
			||||||
import org.bukkit.event.player.PlayerEvent;
 | 
					import org.bukkit.event.player.PlayerEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
 | 
					import org.bukkit.event.player.PlayerInteractAtEntityEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
 | 
					import org.bukkit.event.player.PlayerInteractEntityEvent;
 | 
				
			||||||
@@ -225,6 +223,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("StringSplitter")
 | 
				
			||||||
    @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
 | 
					    @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
 | 
				
			||||||
    public void playerCommand(PlayerCommandPreprocessEvent event) {
 | 
					    public void playerCommand(PlayerCommandPreprocessEvent event) {
 | 
				
			||||||
        String msg = event.getMessage().toLowerCase().replaceAll("/", "").trim();
 | 
					        String msg = event.getMessage().toLowerCase().replaceAll("/", "").trim();
 | 
				
			||||||
@@ -380,6 +379,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
        this.eventDispatcher.doRespawnTask(pp);
 | 
					        this.eventDispatcher.doRespawnTask(pp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // We explicitly want #getHomeSynchronous here
 | 
				
			||||||
    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
 | 
					    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
 | 
				
			||||||
    public void onTeleport(PlayerTeleportEvent event) {
 | 
					    public void onTeleport(PlayerTeleportEvent event) {
 | 
				
			||||||
        Player player = event.getPlayer();
 | 
					        Player player = event.getPlayer();
 | 
				
			||||||
@@ -418,8 +418,8 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                            .getHomeSynchronous()
 | 
					                            .getHomeSynchronous()
 | 
				
			||||||
                            .equals(BukkitUtil.adaptComplete(to)))) {
 | 
					                            .equals(BukkitUtil.adaptComplete(to)))) {
 | 
				
			||||||
                        pp.sendMessage(
 | 
					                        pp.sendMessage(
 | 
				
			||||||
                                TranslatableCaption.of("permission.no_permission_event"),
 | 
					                                TranslatableCaption.of("deny.no_enter"),
 | 
				
			||||||
                                Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED))
 | 
					                                Template.of("plot", plot.toString())
 | 
				
			||||||
                        );
 | 
					                        );
 | 
				
			||||||
                        event.setCancelled(true);
 | 
					                        event.setCancelled(true);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -552,8 +552,8 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                ForceFieldListener.handleForcefield(player, pp, now);
 | 
					                ForceFieldListener.handleForcefield(player, pp, now);
 | 
				
			||||||
            } else if (!plotEntry(pp, now) && this.tmpTeleport) {
 | 
					            } else if (!plotEntry(pp, now) && this.tmpTeleport) {
 | 
				
			||||||
                pp.sendMessage(
 | 
					                pp.sendMessage(
 | 
				
			||||||
                        TranslatableCaption.of("permission.no_permission_event"),
 | 
					                        TranslatableCaption.of("deny.no_enter"),
 | 
				
			||||||
                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED))
 | 
					                        Template.of("plot", now.toString())
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
                this.tmpTeleport = false;
 | 
					                this.tmpTeleport = false;
 | 
				
			||||||
                to.setX(from.getBlockX());
 | 
					                to.setX(from.getBlockX());
 | 
				
			||||||
@@ -572,7 +572,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                    player.teleport(event.getTo());
 | 
					                    player.teleport(event.getTo());
 | 
				
			||||||
                    this.tmpTeleport = true;
 | 
					                    this.tmpTeleport = true;
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
				
			||||||
                } else {
 | 
					                } else if (MathMan.roundInt(from.getX()) <= border) { // Only send if they just moved out of the border
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else if (x2 < -border && this.tmpTeleport) {
 | 
					            } else if (x2 < -border && this.tmpTeleport) {
 | 
				
			||||||
@@ -582,7 +582,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                    player.teleport(event.getTo());
 | 
					                    player.teleport(event.getTo());
 | 
				
			||||||
                    this.tmpTeleport = true;
 | 
					                    this.tmpTeleport = true;
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
				
			||||||
                } else {
 | 
					                } else if (MathMan.roundInt(from.getX()) >= -border) { // Only send if they just moved out of the border
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else if (((x1 = MathMan.roundInt(from.getX())) >= border && x2 <= border) || (x1 <= -border && x2 >= -border)) {
 | 
					            } else if (((x1 = MathMan.roundInt(from.getX())) >= border && x2 <= border) || (x1 <= -border && x2 >= -border)) {
 | 
				
			||||||
@@ -613,13 +613,13 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            Plot now = area.getPlot(location);
 | 
					            Plot plot = area.getPlot(location);
 | 
				
			||||||
            Plot lastPlot;
 | 
					            Plot lastPlot;
 | 
				
			||||||
            try (final MetaDataAccess<Plot> lastPlotAccess =
 | 
					            try (final MetaDataAccess<Plot> lastPlotAccess =
 | 
				
			||||||
                         pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) {
 | 
					                         pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) {
 | 
				
			||||||
                lastPlot = lastPlotAccess.get().orElse(null);
 | 
					                lastPlot = lastPlotAccess.get().orElse(null);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (now == null) {
 | 
					            if (plot == null) {
 | 
				
			||||||
                try (final MetaDataAccess<Boolean> kickAccess =
 | 
					                try (final MetaDataAccess<Boolean> kickAccess =
 | 
				
			||||||
                             pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_KICK)) {
 | 
					                             pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_KICK)) {
 | 
				
			||||||
                    if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) {
 | 
					                    if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) {
 | 
				
			||||||
@@ -638,12 +638,12 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else if (now.equals(lastPlot)) {
 | 
					            } else if (plot.equals(lastPlot)) {
 | 
				
			||||||
                ForceFieldListener.handleForcefield(player, pp, now);
 | 
					                ForceFieldListener.handleForcefield(player, pp, plot);
 | 
				
			||||||
            } else if (!plotEntry(pp, now) && this.tmpTeleport) {
 | 
					            } else if (!plotEntry(pp, plot) && this.tmpTeleport) {
 | 
				
			||||||
                pp.sendMessage(
 | 
					                pp.sendMessage(
 | 
				
			||||||
                        TranslatableCaption.of("permission.no_permission_event"),
 | 
					                        TranslatableCaption.of("deny.no_enter"),
 | 
				
			||||||
                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED))
 | 
					                        Template.of("plot", plot.toString())
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
                this.tmpTeleport = false;
 | 
					                this.tmpTeleport = false;
 | 
				
			||||||
                player.teleport(from);
 | 
					                player.teleport(from);
 | 
				
			||||||
@@ -663,7 +663,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                    player.teleport(event.getTo());
 | 
					                    player.teleport(event.getTo());
 | 
				
			||||||
                    this.tmpTeleport = true;
 | 
					                    this.tmpTeleport = true;
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
				
			||||||
                } else {
 | 
					                } else if (MathMan.roundInt(from.getZ()) <= border) { // Only send if they just moved out of the border
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else if (z2 < -border && this.tmpTeleport) {
 | 
					            } else if (z2 < -border && this.tmpTeleport) {
 | 
				
			||||||
@@ -673,7 +673,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
                    player.teleport(event.getTo());
 | 
					                    player.teleport(event.getTo());
 | 
				
			||||||
                    this.tmpTeleport = true;
 | 
					                    this.tmpTeleport = true;
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.denied"));
 | 
				
			||||||
                } else {
 | 
					                } else if (MathMan.roundInt(from.getZ()) >= -border) { // Only send if they just moved out of the border
 | 
				
			||||||
                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
					                    pp.sendMessage(TranslatableCaption.of("border.bypass.exited"));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else if (((z1 = MathMan.roundInt(from.getZ())) >= border && z2 <= border) || (z1 <= -border && z2 >= -border)) {
 | 
					            } else if (((z1 = MathMan.roundInt(from.getZ())) >= border && z2 <= border) || (z1 <= -border && z2 >= -border)) {
 | 
				
			||||||
@@ -1064,9 +1064,13 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
        if (area == null) {
 | 
					        if (area == null) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        PlayerBlockEventType eventType = null;
 | 
					        PlayerBlockEventType eventType;
 | 
				
			||||||
        BlockType blocktype1;
 | 
					        BlockType blocktype1;
 | 
				
			||||||
        Block block = event.getClickedBlock();
 | 
					        Block block = event.getClickedBlock();
 | 
				
			||||||
 | 
					        if (block == null) {
 | 
				
			||||||
 | 
					            // We do not care in this case, the player is likely interacting with air ("nothing").
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        Location location = BukkitUtil.adapt(block.getLocation());
 | 
					        Location location = BukkitUtil.adapt(block.getLocation());
 | 
				
			||||||
        Action action = event.getAction();
 | 
					        Action action = event.getAction();
 | 
				
			||||||
        switch (action) {
 | 
					        switch (action) {
 | 
				
			||||||
@@ -1239,13 +1243,6 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
            );
 | 
					            );
 | 
				
			||||||
            event.setCancelled(true);
 | 
					            event.setCancelled(true);
 | 
				
			||||||
        } else if (!plot.isAdded(pp.getUUID())) {
 | 
					        } else if (!plot.isAdded(pp.getUUID())) {
 | 
				
			||||||
            List<BlockTypeWrapper> use = plot.getFlag(UseFlag.class);
 | 
					 | 
				
			||||||
            final BlockType blockType = BukkitAdapter.asBlockType(block.getType());
 | 
					 | 
				
			||||||
            for (final BlockTypeWrapper blockTypeWrapper : use) {
 | 
					 | 
				
			||||||
                if (blockTypeWrapper.accepts(blockType)) {
 | 
					 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
 | 
					            if (Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -1311,14 +1308,6 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
            );
 | 
					            );
 | 
				
			||||||
            event.setCancelled(true);
 | 
					            event.setCancelled(true);
 | 
				
			||||||
        } else if (!plot.isAdded(plotPlayer.getUUID())) {
 | 
					        } else if (!plot.isAdded(plotPlayer.getUUID())) {
 | 
				
			||||||
            List<BlockTypeWrapper> use = plot.getFlag(UseFlag.class);
 | 
					 | 
				
			||||||
            Block block = event.getBlockClicked();
 | 
					 | 
				
			||||||
            final BlockType blockType = BukkitAdapter.asBlockType(block.getType());
 | 
					 | 
				
			||||||
            for (final BlockTypeWrapper blockTypeWrapper : use) {
 | 
					 | 
				
			||||||
                if (blockTypeWrapper.accepts(blockType)) {
 | 
					 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
 | 
					            if (Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -1610,43 +1599,6 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
 | 
					 | 
				
			||||||
    public void onPlayerEggThrow(PlayerEggThrowEvent event) {
 | 
					 | 
				
			||||||
        Location location = BukkitUtil.adapt(event.getEgg().getLocation());
 | 
					 | 
				
			||||||
        PlotArea area = location.getPlotArea();
 | 
					 | 
				
			||||||
        if (area == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        Player player = event.getPlayer();
 | 
					 | 
				
			||||||
        BukkitPlayer plotPlayer = BukkitUtil.adapt(player);
 | 
					 | 
				
			||||||
        Plot plot = area.getPlot(location);
 | 
					 | 
				
			||||||
        if (plot == null) {
 | 
					 | 
				
			||||||
            if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) {
 | 
					 | 
				
			||||||
                plotPlayer.sendMessage(
 | 
					 | 
				
			||||||
                        TranslatableCaption.of("permission.no_permission_event"),
 | 
					 | 
				
			||||||
                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD))
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
                event.setHatching(false);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else if (!plot.hasOwner()) {
 | 
					 | 
				
			||||||
            if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
 | 
					 | 
				
			||||||
                plotPlayer.sendMessage(
 | 
					 | 
				
			||||||
                        TranslatableCaption.of("permission.no_permission_event"),
 | 
					 | 
				
			||||||
                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED))
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
                event.setHatching(false);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else if (!plot.isAdded(plotPlayer.getUUID())) {
 | 
					 | 
				
			||||||
            if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
 | 
					 | 
				
			||||||
                plotPlayer.sendMessage(
 | 
					 | 
				
			||||||
                        TranslatableCaption.of("permission.no_permission_event"),
 | 
					 | 
				
			||||||
                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER))
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
                event.setHatching(false);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onItemDrop(PlayerDropItemEvent event) {
 | 
					    public void onItemDrop(PlayerDropItemEvent event) {
 | 
				
			||||||
        Player player = event.getPlayer();
 | 
					        Player player = event.getPlayer();
 | 
				
			||||||
@@ -1720,6 +1672,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // #getLocate is needed for Spigot compatibility
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onLocaleChange(final PlayerLocaleChangeEvent event) {
 | 
					    public void onLocaleChange(final PlayerLocaleChangeEvent event) {
 | 
				
			||||||
        // The event is fired before the player is deemed online upon login
 | 
					        // The event is fired before the player is deemed online upon login
 | 
				
			||||||
@@ -1755,22 +1708,49 @@ public class PlayerEventListener extends PlotListener implements Listener {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onPortalCreation(PortalCreateEvent event) {
 | 
					    public void onPortalCreation(PortalCreateEvent event) {
 | 
				
			||||||
        Location location = BukkitUtil.adapt(event.getEntity().getLocation());
 | 
					        String world = event.getWorld().getName();
 | 
				
			||||||
 | 
					        if (PlotSquared.get().getPlotAreaManager().getPlotAreasSet(world).size() == 0) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        int minX = Integer.MAX_VALUE;
 | 
				
			||||||
 | 
					        int maxX = Integer.MIN_VALUE;
 | 
				
			||||||
 | 
					        int minZ = Integer.MAX_VALUE;
 | 
				
			||||||
 | 
					        int maxZ = Integer.MIN_VALUE;
 | 
				
			||||||
 | 
					        for (BlockState state : event.getBlocks()) {
 | 
				
			||||||
 | 
					            minX = Math.min(state.getX(), minX);
 | 
				
			||||||
 | 
					            maxX = Math.max(state.getX(), maxX);
 | 
				
			||||||
 | 
					            minZ = Math.min(state.getZ(), minZ);
 | 
				
			||||||
 | 
					            maxZ = Math.max(state.getZ(), maxZ);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        int y = event.getBlocks().get(0).getY(); // Don't need to worry about this too much
 | 
				
			||||||
 | 
					        for (Location location : Set.of( // Use Set to lazily avoid duplicate locations
 | 
				
			||||||
 | 
					                Location.at(world, minX, y, maxX),
 | 
				
			||||||
 | 
					                Location.at(world, minZ, y, maxZ),
 | 
				
			||||||
 | 
					                Location.at(world, minX, y, maxZ),
 | 
				
			||||||
 | 
					                Location.at(world, minZ, y, maxX)
 | 
				
			||||||
 | 
					        )) {
 | 
				
			||||||
            PlotArea area = location.getPlotArea();
 | 
					            PlotArea area = location.getPlotArea();
 | 
				
			||||||
            if (area == null) {
 | 
					            if (area == null) {
 | 
				
			||||||
            return;
 | 
					                continue;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            Plot plot = location.getOwnedPlot();
 | 
					            Plot plot = location.getOwnedPlot();
 | 
				
			||||||
            if (plot == null) {
 | 
					            if (plot == null) {
 | 
				
			||||||
                if (area.isRoadFlags() && area.getRoadFlag(DenyPortalsFlag.class)) {
 | 
					                if (area.isRoadFlags() && area.getRoadFlag(DenyPortalsFlag.class)) {
 | 
				
			||||||
                    event.setCancelled(true);
 | 
					                    event.setCancelled(true);
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if (plot.getFlag(DenyPortalsFlag.class)) {
 | 
					            if (plot.getFlag(DenyPortalsFlag.class)) {
 | 
				
			||||||
            if (plot.getFlag(DenyPortalsFlag.class)) {
 | 
					                StringBuilder builder = new StringBuilder();
 | 
				
			||||||
                plot.debug(event.getEntity().getName() + " did not create a portal because of deny-portals = true");
 | 
					                if (event.getEntity() != null) {
 | 
				
			||||||
 | 
					                    builder.append(event.getEntity().getName()).append(" did not create a portal");
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    builder.append("Portal creation cancelled");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                plot.debug(builder.append(" because of deny-portals = true").toString());
 | 
				
			||||||
                event.setCancelled(true);
 | 
					                event.setCancelled(true);
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -28,6 +28,7 @@ package com.plotsquared.bukkit.listener;
 | 
				
			|||||||
import com.google.inject.Inject;
 | 
					import com.google.inject.Inject;
 | 
				
			||||||
import com.plotsquared.bukkit.util.BukkitEntityUtil;
 | 
					import com.plotsquared.bukkit.util.BukkitEntityUtil;
 | 
				
			||||||
import com.plotsquared.bukkit.util.BukkitUtil;
 | 
					import com.plotsquared.bukkit.util.BukkitUtil;
 | 
				
			||||||
 | 
					import com.plotsquared.core.configuration.caption.TranslatableCaption;
 | 
				
			||||||
import com.plotsquared.core.location.Location;
 | 
					import com.plotsquared.core.location.Location;
 | 
				
			||||||
import com.plotsquared.core.permissions.Permission;
 | 
					import com.plotsquared.core.permissions.Permission;
 | 
				
			||||||
import com.plotsquared.core.player.PlotPlayer;
 | 
					import com.plotsquared.core.player.PlotPlayer;
 | 
				
			||||||
@@ -36,6 +37,7 @@ import com.plotsquared.core.plot.PlotArea;
 | 
				
			|||||||
import com.plotsquared.core.plot.PlotHandler;
 | 
					import com.plotsquared.core.plot.PlotHandler;
 | 
				
			||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
					import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
				
			||||||
import com.plotsquared.core.util.Permissions;
 | 
					import com.plotsquared.core.util.Permissions;
 | 
				
			||||||
 | 
					import net.kyori.adventure.text.minimessage.Template;
 | 
				
			||||||
import org.bukkit.entity.Entity;
 | 
					import org.bukkit.entity.Entity;
 | 
				
			||||||
import org.bukkit.entity.LivingEntity;
 | 
					import org.bukkit.entity.LivingEntity;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
@@ -96,9 +98,6 @@ public class ProjectileEventListener implements Listener {
 | 
				
			|||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
    public void onProjectileLaunch(ProjectileLaunchEvent event) {
 | 
					    public void onProjectileLaunch(ProjectileLaunchEvent event) {
 | 
				
			||||||
        Projectile entity = event.getEntity();
 | 
					        Projectile entity = event.getEntity();
 | 
				
			||||||
        if (!(entity instanceof ThrownPotion)) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        ProjectileSource shooter = entity.getShooter();
 | 
					        ProjectileSource shooter = entity.getShooter();
 | 
				
			||||||
        if (!(shooter instanceof Player)) {
 | 
					        if (!(shooter instanceof Player)) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@@ -109,10 +108,35 @@ public class ProjectileEventListener implements Listener {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter);
 | 
					        PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter);
 | 
				
			||||||
        Plot plot = location.getOwnedPlot();
 | 
					        Plot plot = location.getOwnedPlot();
 | 
				
			||||||
        if (plot != null && !plot.isAdded(pp.getUUID())) {
 | 
					
 | 
				
			||||||
 | 
					        if (plot == null) {
 | 
				
			||||||
 | 
					            if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) {
 | 
				
			||||||
 | 
					                pp.sendMessage(
 | 
				
			||||||
 | 
					                        TranslatableCaption.of("permission.no_permission_event"),
 | 
				
			||||||
 | 
					                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
                entity.remove();
 | 
					                entity.remove();
 | 
				
			||||||
                event.setCancelled(true);
 | 
					                event.setCancelled(true);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (!plot.hasOwner()) {
 | 
				
			||||||
 | 
					            if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
 | 
				
			||||||
 | 
					                pp.sendMessage(
 | 
				
			||||||
 | 
					                        TranslatableCaption.of("permission.no_permission_event"),
 | 
				
			||||||
 | 
					                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                entity.remove();
 | 
				
			||||||
 | 
					                event.setCancelled(true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (!plot.isAdded(pp.getUUID())) {
 | 
				
			||||||
 | 
					            if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
 | 
				
			||||||
 | 
					                pp.sendMessage(
 | 
				
			||||||
 | 
					                        TranslatableCaption.of("permission.no_permission_event"),
 | 
				
			||||||
 | 
					                        Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                entity.remove();
 | 
				
			||||||
 | 
					                event.setCancelled(true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @EventHandler
 | 
					    @EventHandler
 | 
				
			||||||
@@ -131,14 +155,14 @@ public class ProjectileEventListener implements Listener {
 | 
				
			|||||||
        if (shooter instanceof Player) {
 | 
					        if (shooter instanceof Player) {
 | 
				
			||||||
            PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter);
 | 
					            PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter);
 | 
				
			||||||
            if (plot == null) {
 | 
					            if (plot == null) {
 | 
				
			||||||
                if (!Permissions.hasPermission(pp, Permission.PERMISSION_PROJECTILE_UNOWNED)) {
 | 
					                if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
 | 
				
			||||||
                    entity.remove();
 | 
					                    entity.remove();
 | 
				
			||||||
                    event.setCancelled(true);
 | 
					                    event.setCancelled(true);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (plot.isAdded(pp.getUUID()) || Permissions
 | 
					            if (plot.isAdded(pp.getUUID()) || Permissions
 | 
				
			||||||
                    .hasPermission(pp, Permission.PERMISSION_PROJECTILE_OTHER)) {
 | 
					                    .hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            entity.remove();
 | 
					            entity.remove();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -43,7 +43,6 @@ import java.lang.reflect.Method;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import static com.plotsquared.core.util.ReflectionUtils.getRefClass;
 | 
					import static com.plotsquared.core.util.ReflectionUtils.getRefClass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SuppressWarnings("unused")
 | 
					 | 
				
			||||||
public class SingleWorldListener implements Listener {
 | 
					public class SingleWorldListener implements Listener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final Method methodGetHandleChunk;
 | 
					    private final Method methodGetHandleChunk;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -25,6 +25,7 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package com.plotsquared.bukkit.managers;
 | 
					package com.plotsquared.bukkit.managers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
import com.google.inject.Singleton;
 | 
					import com.google.inject.Singleton;
 | 
				
			||||||
import org.bukkit.World;
 | 
					import org.bukkit.World;
 | 
				
			||||||
import org.checkerframework.checker.nullness.qual.NonNull;
 | 
					import org.checkerframework.checker.nullness.qual.NonNull;
 | 
				
			||||||
@@ -35,10 +36,9 @@ import se.hyperver.hyperverse.world.WorldConfigurationBuilder;
 | 
				
			|||||||
import se.hyperver.hyperverse.world.WorldFeatures;
 | 
					import se.hyperver.hyperverse.world.WorldFeatures;
 | 
				
			||||||
import se.hyperver.hyperverse.world.WorldType;
 | 
					import se.hyperver.hyperverse.world.WorldType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					Hyperverse implementation is currently put on ice until Hyperverse is released on a stable line and deployed to the central
 | 
				
			||||||
 * Hyperverse specific manager that creates worlds
 | 
					repository.
 | 
				
			||||||
 * using Hyperverse's API
 | 
					
 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@Singleton
 | 
					@Singleton
 | 
				
			||||||
public class HyperverseWorldManager extends BukkitWorldManager {
 | 
					public class HyperverseWorldManager extends BukkitWorldManager {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -67,3 +67,4 @@ public class HyperverseWorldManager extends BukkitWorldManager {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -38,7 +38,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 | 
				
			|||||||
 * @deprecated Deprecated and scheduled for removal without replacement
 | 
					 * @deprecated Deprecated and scheduled for removal without replacement
 | 
				
			||||||
 *         in favor of the build in setup wizard.
 | 
					 *         in favor of the build in setup wizard.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@Deprecated(forRemoval = true)
 | 
					@Deprecated(forRemoval = true, since = "6.0.0")
 | 
				
			||||||
@Singleton
 | 
					@Singleton
 | 
				
			||||||
public class MultiverseWorldManager extends BukkitWorldManager {
 | 
					public class MultiverseWorldManager extends BukkitWorldManager {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -162,6 +162,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("StringSplitter")
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    @NonNegative
 | 
					    @NonNegative
 | 
				
			||||||
    public int hasPermissionRange(
 | 
					    public int hasPermissionRange(
 | 
				
			||||||
@@ -319,7 +320,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
 | 
				
			|||||||
        if (id == ItemTypes.AIR) {
 | 
					        if (id == ItemTypes.AIR) {
 | 
				
			||||||
            // Let's just stop all the discs because why not?
 | 
					            // Let's just stop all the discs because why not?
 | 
				
			||||||
            for (final Sound sound : Arrays.stream(Sound.values())
 | 
					            for (final Sound sound : Arrays.stream(Sound.values())
 | 
				
			||||||
                    .filter(sound -> sound.name().contains("DISC")).collect(Collectors.toList())) {
 | 
					                    .filter(sound -> sound.name().contains("DISC")).toList()) {
 | 
				
			||||||
                player.stopSound(sound);
 | 
					                player.stopSound(sound);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, Material.AIR);
 | 
					            // this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, Material.AIR);
 | 
				
			||||||
@@ -331,6 +332,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // Needed for Spigot compatibility
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void kick(final String message) {
 | 
					    public void kick(final String message) {
 | 
				
			||||||
        this.player.kickPlayer(message);
 | 
					        this.player.kickPlayer(message);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -51,7 +51,6 @@ import com.sk89q.worldedit.world.biome.BiomeType;
 | 
				
			|||||||
import com.sk89q.worldedit.world.block.BaseBlock;
 | 
					import com.sk89q.worldedit.world.block.BaseBlock;
 | 
				
			||||||
import com.sk89q.worldedit.world.block.BlockState;
 | 
					import com.sk89q.worldedit.world.block.BlockState;
 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
import org.bukkit.Chunk;
 | 
					 | 
				
			||||||
import org.bukkit.block.Block;
 | 
					import org.bukkit.block.Block;
 | 
				
			||||||
import org.bukkit.block.Container;
 | 
					import org.bukkit.block.Container;
 | 
				
			||||||
import org.bukkit.block.data.BlockData;
 | 
					import org.bukkit.block.data.BlockData;
 | 
				
			||||||
@@ -199,7 +198,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (localChunk.getTiles().size() > 0) {
 | 
					                if (localChunk.getTiles().size() > 0) {
 | 
				
			||||||
                    localChunk.getTiles().forEach(((blockVector3, tag) -> {
 | 
					                    localChunk.getTiles().forEach((blockVector3, tag) -> {
 | 
				
			||||||
                        try {
 | 
					                        try {
 | 
				
			||||||
                            BaseBlock block = getWorld().getBlock(blockVector3).toBaseBlock(tag);
 | 
					                            BaseBlock block = getWorld().getBlock(blockVector3).toBaseBlock(tag);
 | 
				
			||||||
                            getWorld().setBlock(blockVector3, block, noSideEffectSet);
 | 
					                            getWorld().setBlock(blockVector3, block, noSideEffectSet);
 | 
				
			||||||
@@ -207,7 +206,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
 | 
				
			|||||||
                            StateWrapper sw = new StateWrapper(tag);
 | 
					                            StateWrapper sw = new StateWrapper(tag);
 | 
				
			||||||
                            sw.restoreTag(getWorld().getName(), blockVector3.getX(), blockVector3.getY(), blockVector3.getZ());
 | 
					                            sw.restoreTag(getWorld().getName(), blockVector3.getX(), blockVector3.getY(), blockVector3.getZ());
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }));
 | 
					                    });
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (localChunk.getEntities().size() > 0) {
 | 
					                if (localChunk.getEntities().size() > 0) {
 | 
				
			||||||
                    localChunk.getEntities().forEach((location, entity) -> getWorld().createEntity(location, entity));
 | 
					                    localChunk.getEntities().forEach((location, entity) -> getWorld().createEntity(location, entity));
 | 
				
			||||||
@@ -238,6 +237,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Set a block to the world. First tries WNA but defaults to normal block setting methods if that fails
 | 
					     * Set a block to the world. First tries WNA but defaults to normal block setting methods if that fails
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @SuppressWarnings("unused")
 | 
				
			||||||
    private void setWorldBlock(int x, int y, int z, @NonNull BaseBlock block, @NonNull BlockVector2 blockVector2, boolean edge) {
 | 
					    private void setWorldBlock(int x, int y, int z, @NonNull BaseBlock block, @NonNull BlockVector2 blockVector2, boolean edge) {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            BlockVector3 loc = BlockVector3.at(x, y, z);
 | 
					            BlockVector3 loc = BlockVector3.at(x, y, z);
 | 
				
			||||||
@@ -266,9 +266,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
 | 
				
			|||||||
        } catch (WorldEditException ignored) {
 | 
					        } catch (WorldEditException ignored) {
 | 
				
			||||||
            // Fallback to not so nice method
 | 
					            // Fallback to not so nice method
 | 
				
			||||||
            BlockData blockData = BukkitAdapter.adapt(block);
 | 
					            BlockData blockData = BukkitAdapter.adapt(block);
 | 
				
			||||||
            Chunk chunk = getBukkitWorld().getChunkAt(blockVector2.getX(), blockVector2.getZ());
 | 
					            Block existing = getBukkitWorld().getBlockAt(x, y, z);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            Block existing = chunk.getBlock(x, y, z);
 | 
					 | 
				
			||||||
            final BlockState existingBaseBlock = BukkitAdapter.adapt(existing.getBlockData());
 | 
					            final BlockState existingBaseBlock = BukkitAdapter.adapt(existing.getBlockData());
 | 
				
			||||||
            if (BukkitBlockUtil.get(existing).equals(existingBaseBlock) && existing.getBlockData().matches(blockData)) {
 | 
					            if (BukkitBlockUtil.get(existing).equals(existingBaseBlock) && existing.getBlockData().matches(blockData)) {
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -166,6 +166,7 @@ public class StateWrapper {
 | 
				
			|||||||
        return str;
 | 
					        return str;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // #setLine is needed for Spigot compatibility
 | 
				
			||||||
    public boolean restoreTag(String worldName, int x, int y, int z) {
 | 
					    public boolean restoreTag(String worldName, int x, int y, int z) {
 | 
				
			||||||
        if (this.tag == null) {
 | 
					        if (this.tag == null) {
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -77,6 +77,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
 | 
				
			|||||||
        return stack;
 | 
					        return stack;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // Paper deprecation
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void open(PlotInventory inv) {
 | 
					    public void open(PlotInventory inv) {
 | 
				
			||||||
        BukkitPlayer bp = (BukkitPlayer) inv.getPlayer();
 | 
					        BukkitPlayer bp = (BukkitPlayer) inv.getPlayer();
 | 
				
			||||||
@@ -113,6 +114,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
 | 
				
			|||||||
        bp.player.updateInventory();
 | 
					        bp.player.updateInventory();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // Paper deprecation
 | 
				
			||||||
    public PlotItemStack getItem(ItemStack item) {
 | 
					    public PlotItemStack getItem(ItemStack item) {
 | 
				
			||||||
        if (item == null) {
 | 
					        if (item == null) {
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
@@ -145,6 +147,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
 | 
				
			|||||||
                .toArray(PlotItemStack[]::new);
 | 
					                .toArray(PlotItemStack[]::new);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("deprecation") // #getTitle is needed for Spigot compatibility
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean isOpen(PlotInventory plotInventory) {
 | 
					    public boolean isOpen(PlotInventory plotInventory) {
 | 
				
			||||||
        if (!plotInventory.isOpen()) {
 | 
					        if (!plotInventory.isOpen()) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -61,6 +61,7 @@ public class UpdateUtility implements Listener {
 | 
				
			|||||||
        internalVersion = PlotSquared.get().getVersion();
 | 
					        internalVersion = PlotSquared.get().getVersion();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings({"deprecation", "DefaultCharset"}) // Suppress Json deprecation, we can't use features from gson 2.8.1 and newer yet
 | 
				
			||||||
    public void updateChecker() {
 | 
					    public void updateChecker() {
 | 
				
			||||||
        task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
 | 
					        task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
@@ -68,7 +69,7 @@ public class UpdateUtility implements Listener {
 | 
				
			|||||||
                        "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
 | 
					                        "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
 | 
				
			||||||
                        .openConnection();
 | 
					                        .openConnection();
 | 
				
			||||||
                connection.setRequestMethod("GET");
 | 
					                connection.setRequestMethod("GET");
 | 
				
			||||||
                JsonObject result = (new JsonParser())
 | 
					                JsonObject result = new JsonParser()
 | 
				
			||||||
                        .parse(new JsonReader(new InputStreamReader(connection.getInputStream())))
 | 
					                        .parse(new JsonReader(new InputStreamReader(connection.getInputStream())))
 | 
				
			||||||
                        .getAsJsonObject();
 | 
					                        .getAsJsonObject();
 | 
				
			||||||
                spigotVersion = result.get("current_version").getAsString();
 | 
					                spigotVersion = result.get("current_version").getAsString();
 | 
				
			||||||
@@ -91,7 +92,7 @@ public class UpdateUtility implements Listener {
 | 
				
			|||||||
                notify = false;
 | 
					                notify = false;
 | 
				
			||||||
                LOGGER.info("Congratulations! You are running the latest PlotSquared version");
 | 
					                LOGGER.info("Congratulations! You are running the latest PlotSquared version");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }, 0L, Settings.UpdateChecker.POLL_RATE * 60 * 20);
 | 
					        }, 0L, (long) Settings.UpdateChecker.POLL_RATE * 60 * 20);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void cancelTask() {
 | 
					    private void cancelTask() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -75,6 +75,7 @@ public class FaweSchematicHandler extends SchematicHandler {
 | 
				
			|||||||
        return delegate.save(tag, path);
 | 
					        return delegate.save(tag, path);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("removal") // Just the override
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void upload(final CompoundTag tag, final UUID uuid, final String file, final RunnableVal<URL> whenDone) {
 | 
					    public void upload(final CompoundTag tag, final UUID uuid, final String file, final RunnableVal<URL> whenDone) {
 | 
				
			||||||
        delegate.upload(tag, uuid, file, whenDone);
 | 
					        delegate.upload(tag, uuid, file, whenDone);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,8 +5,8 @@ dependencies {
 | 
				
			|||||||
    compileOnlyApi(libs.checkerqual)
 | 
					    compileOnlyApi(libs.checkerqual)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Minecraft expectations
 | 
					    // Minecraft expectations
 | 
				
			||||||
    compileOnlyApi(libs.guava)
 | 
					 | 
				
			||||||
    compileOnlyApi(libs.gson)
 | 
					    compileOnlyApi(libs.gson)
 | 
				
			||||||
 | 
					    compileOnly(libs.guava)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Platform expectations
 | 
					    // Platform expectations
 | 
				
			||||||
    compileOnlyApi(libs.snakeyaml)
 | 
					    compileOnlyApi(libs.snakeyaml)
 | 
				
			||||||
@@ -22,7 +22,7 @@ dependencies {
 | 
				
			|||||||
    api(libs.guiceassistedinject) {
 | 
					    api(libs.guiceassistedinject) {
 | 
				
			||||||
        exclude("com.google.inject", "guice")
 | 
					        exclude("com.google.inject", "guice")
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    compileOnlyApi(libs.findbugs)
 | 
					    api(libs.findbugs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Plugins
 | 
					    // Plugins
 | 
				
			||||||
    compileOnly(libs.worldeditCore) {
 | 
					    compileOnly(libs.worldeditCore) {
 | 
				
			||||||
@@ -40,9 +40,7 @@ dependencies {
 | 
				
			|||||||
    // Other libraries
 | 
					    // Other libraries
 | 
				
			||||||
    api(libs.prtree)
 | 
					    api(libs.prtree)
 | 
				
			||||||
    api(libs.aopalliance)
 | 
					    api(libs.aopalliance)
 | 
				
			||||||
    api(libs.pipeline) {
 | 
					    api(libs.cloudServices)
 | 
				
			||||||
        exclude(group = "com.google.guava")
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    api(libs.arkitektonika)
 | 
					    api(libs.arkitektonika)
 | 
				
			||||||
    api(libs.paster)
 | 
					    api(libs.paster)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -56,3 +54,13 @@ tasks.processResources {
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tasks {
 | 
				
			||||||
 | 
					    withType<Javadoc> {
 | 
				
			||||||
 | 
					        val opt = options as StandardJavadocDocletOptions
 | 
				
			||||||
 | 
					        opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-core/7.2.8/")
 | 
				
			||||||
 | 
					        opt.links("https://jd.adventure.kyori.net/api/4.9.3/")
 | 
				
			||||||
 | 
					        opt.links("https://google.github.io/guice/api-docs/5.0.1/javadoc/")
 | 
				
			||||||
 | 
					        opt.links("https://checkerframework.org/api/")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -25,10 +25,10 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package com.plotsquared.core;
 | 
					package com.plotsquared.core;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cloud.commandframework.services.ServicePipeline;
 | 
				
			||||||
import com.google.inject.Injector;
 | 
					import com.google.inject.Injector;
 | 
				
			||||||
import com.google.inject.Key;
 | 
					import com.google.inject.Key;
 | 
				
			||||||
import com.google.inject.TypeLiteral;
 | 
					import com.google.inject.TypeLiteral;
 | 
				
			||||||
import com.intellectualsites.services.ServicePipeline;
 | 
					 | 
				
			||||||
import com.plotsquared.core.backup.BackupManager;
 | 
					import com.plotsquared.core.backup.BackupManager;
 | 
				
			||||||
import com.plotsquared.core.configuration.caption.LocaleHolder;
 | 
					import com.plotsquared.core.configuration.caption.LocaleHolder;
 | 
				
			||||||
import com.plotsquared.core.generator.GeneratorWrapper;
 | 
					import com.plotsquared.core.generator.GeneratorWrapper;
 | 
				
			||||||
@@ -40,6 +40,7 @@ import com.plotsquared.core.permissions.PermissionHandler;
 | 
				
			|||||||
import com.plotsquared.core.player.PlotPlayer;
 | 
					import com.plotsquared.core.player.PlotPlayer;
 | 
				
			||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
					import com.plotsquared.core.plot.world.PlotAreaManager;
 | 
				
			||||||
import com.plotsquared.core.queue.GlobalBlockQueue;
 | 
					import com.plotsquared.core.queue.GlobalBlockQueue;
 | 
				
			||||||
 | 
					import com.plotsquared.core.util.AnnotationHelper;
 | 
				
			||||||
import com.plotsquared.core.util.ChunkManager;
 | 
					import com.plotsquared.core.util.ChunkManager;
 | 
				
			||||||
import com.plotsquared.core.util.EconHandler;
 | 
					import com.plotsquared.core.util.EconHandler;
 | 
				
			||||||
import com.plotsquared.core.util.PlatformWorldManager;
 | 
					import com.plotsquared.core.util.PlatformWorldManager;
 | 
				
			||||||
@@ -273,6 +274,7 @@ public interface PlotPlatform<P> extends LocaleHolder {
 | 
				
			|||||||
     * Get the {@link PlotAreaManager} implementation.
 | 
					     * Get the {@link PlotAreaManager} implementation.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return the PlotAreaManager
 | 
					     * @return the PlotAreaManager
 | 
				
			||||||
 | 
					     * @since 6.1.4
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @NonNull PlotAreaManager plotAreaManager();
 | 
					    @NonNull PlotAreaManager plotAreaManager();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -291,6 +293,15 @@ public interface PlotPlatform<P> extends LocaleHolder {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @NonNull String pluginsFormatted();
 | 
					    @NonNull String pluginsFormatted();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the kind of WorldEdit implementation
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return worldedit implementations
 | 
				
			||||||
 | 
					     * @since 6.3.0
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @AnnotationHelper.ApiDescription(info = "Internal use only")
 | 
				
			||||||
 | 
					    @NonNull String worldEditImplementations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Load the caption maps
 | 
					     * Load the caption maps
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -306,7 +306,7 @@ public class PlotSquared {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param version  First version
 | 
					     * @param version  First version
 | 
				
			||||||
     * @param version2 Second version
 | 
					     * @param version2 Second version
 | 
				
			||||||
     * @return true if `version` is >= `version2`
 | 
					     * @return {@code true} if `version` is >= `version2`
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean checkVersion(
 | 
					    public boolean checkVersion(
 | 
				
			||||||
            final int[] version,
 | 
					            final int[] version,
 | 
				
			||||||
@@ -338,10 +338,13 @@ public class PlotSquared {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Add a global reference to a plot world.
 | 
					     * Add a global reference to a plot world.
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * You can remove the reference by calling {@link #removePlotArea(PlotArea)}
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param plotArea the {@link PlotArea} to add.
 | 
					     * @param plotArea the {@link PlotArea} to add.
 | 
				
			||||||
     * @see #removePlotArea(PlotArea) To remove the reference
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
    public void addPlotArea(final @NonNull PlotArea plotArea) {
 | 
					    public void addPlotArea(final @NonNull PlotArea plotArea) {
 | 
				
			||||||
        HashMap<PlotId, Plot> plots;
 | 
					        HashMap<PlotId, Plot> plots;
 | 
				
			||||||
        if (plots_tmp == null || (plots = plots_tmp.remove(plotArea.toString())) == null) {
 | 
					        if (plots_tmp == null || (plots = plots_tmp.remove(plotArea.toString())) == null) {
 | 
				
			||||||
@@ -556,6 +559,7 @@ public class PlotSquared {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param input an array of plots to sort
 | 
					     * @param input an array of plots to sort
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
    private void sortPlotsByHash(final @NonNull Plot @NonNull [] input) {
 | 
					    private void sortPlotsByHash(final @NonNull Plot @NonNull [] input) {
 | 
				
			||||||
        List<Plot>[] bucket = new ArrayList[32];
 | 
					        List<Plot>[] bucket = new ArrayList[32];
 | 
				
			||||||
        Arrays.fill(bucket, new ArrayList<>());
 | 
					        Arrays.fill(bucket, new ArrayList<>());
 | 
				
			||||||
@@ -696,20 +700,12 @@ public class PlotSquared {
 | 
				
			|||||||
        ArrayList<Plot> toReturn = new ArrayList<>(plots.size());
 | 
					        ArrayList<Plot> toReturn = new ArrayList<>(plots.size());
 | 
				
			||||||
        for (PlotArea area : areas) {
 | 
					        for (PlotArea area : areas) {
 | 
				
			||||||
            switch (type) {
 | 
					            switch (type) {
 | 
				
			||||||
                case CREATION_DATE:
 | 
					                case CREATION_DATE -> toReturn.addAll(sortPlotsByTemp(map.get(area)));
 | 
				
			||||||
                    toReturn.addAll(sortPlotsByTemp(map.get(area)));
 | 
					                case CREATION_DATE_TIMESTAMP -> toReturn.addAll(sortPlotsByTimestamp(map.get(area)));
 | 
				
			||||||
                    break;
 | 
					                case DISTANCE_FROM_ORIGIN -> toReturn.addAll(sortPlotsByHash(map.get(area)));
 | 
				
			||||||
                case CREATION_DATE_TIMESTAMP:
 | 
					                case LAST_MODIFIED -> toReturn.addAll(sortPlotsByModified(map.get(area)));
 | 
				
			||||||
                    toReturn.addAll(sortPlotsByTimestamp(map.get(area)));
 | 
					                default -> {
 | 
				
			||||||
                    break;
 | 
					                }
 | 
				
			||||||
                case DISTANCE_FROM_ORIGIN:
 | 
					 | 
				
			||||||
                    toReturn.addAll(sortPlotsByHash(map.get(area)));
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                case LAST_MODIFIED:
 | 
					 | 
				
			||||||
                    toReturn.addAll(sortPlotsByModified(map.get(area)));
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                default:
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return toReturn;
 | 
					        return toReturn;
 | 
				
			||||||
@@ -739,7 +735,7 @@ public class PlotSquared {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param plot      the plot to remove
 | 
					     * @param plot      the plot to remove
 | 
				
			||||||
     * @param callEvent If to call an event about the plot being removed
 | 
					     * @param callEvent If to call an event about the plot being removed
 | 
				
			||||||
     * @return true if plot existed | false if it didn't
 | 
					     * @return {@code true} if plot existed | {@code false} if it didn't
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean removePlot(
 | 
					    public boolean removePlot(
 | 
				
			||||||
            final @NonNull Plot plot,
 | 
					            final @NonNull Plot plot,
 | 
				
			||||||
@@ -758,6 +754,9 @@ public class PlotSquared {
 | 
				
			|||||||
            if (this_max < last_max) {
 | 
					            if (this_max < last_max) {
 | 
				
			||||||
                plot.getArea().setMeta("lastPlot", plot.getId());
 | 
					                plot.getArea().setMeta("lastPlot", plot.getId());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (callEvent) {
 | 
				
			||||||
 | 
					                eventDispatcher.callPostDelete(plot);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
@@ -1479,7 +1478,7 @@ public class PlotSquared {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param world            World name
 | 
					     * @param world            World name
 | 
				
			||||||
     * @param chunkCoordinates Chunk coordinates
 | 
					     * @param chunkCoordinates Chunk coordinates
 | 
				
			||||||
     * @return True if the chunk uses non-standard generation, false if not
 | 
					     * @return {@code true} if the chunk uses non-standard generation, {@code false} if not
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean isNonStandardGeneration(
 | 
					    public boolean isNonStandardGeneration(
 | 
				
			||||||
            final @NonNull String world,
 | 
					            final @NonNull String world,
 | 
				
			||||||
@@ -1524,10 +1523,12 @@ public class PlotSquared {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get the caption map belonging to a namespace. If none exists, a dummy
 | 
					     * Get the caption map belonging to a namespace. If none exists, a dummy
 | 
				
			||||||
     * caption map will be returned.
 | 
					     * caption map will be returned.
 | 
				
			||||||
 | 
					     * <p>
 | 
				
			||||||
 | 
					     * You can register a caption map by calling {@link #registerCaptionMap(String, CaptionMap)}
 | 
				
			||||||
 | 
					     * </p>
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param namespace Namespace
 | 
					     * @param namespace Namespace
 | 
				
			||||||
     * @return Map instance
 | 
					     * @return Map instance
 | 
				
			||||||
     * @see #registerCaptionMap(String, CaptionMap) To register a caption map
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public @NonNull CaptionMap getCaptionMap(final @NonNull String namespace) {
 | 
					    public @NonNull CaptionMap getCaptionMap(final @NonNull String namespace) {
 | 
				
			||||||
        return this.captionMaps.computeIfAbsent(
 | 
					        return this.captionMaps.computeIfAbsent(
 | 
				
			||||||
@@ -1537,7 +1538,7 @@ public class PlotSquared {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Register a caption map. The namespace needs be equal to the namespace used for
 | 
					     * Register a caption map. The namespace needs to be equal to the namespace used for
 | 
				
			||||||
     * the {@link TranslatableCaption}s inside the map.
 | 
					     * the {@link TranslatableCaption}s inside the map.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param namespace  Namespace
 | 
					     * @param namespace  Namespace
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -122,7 +122,7 @@ public final class PlotVersion {
 | 
				
			|||||||
     * Compare a given version string with the one cached here.
 | 
					     * Compare a given version string with the one cached here.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param versionString the version to compare
 | 
					     * @param versionString the version to compare
 | 
				
			||||||
     * @return true if the given version is a "later" version
 | 
					     * @return {@code true} if the given version is a "later" version
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean isLaterVersion(final @NonNull String versionString) {
 | 
					    public boolean isLaterVersion(final @NonNull String versionString) {
 | 
				
			||||||
        int dash = versionString.indexOf('-');
 | 
					        int dash = versionString.indexOf('-');
 | 
				
			||||||
@@ -144,7 +144,7 @@ public final class PlotVersion {
 | 
				
			|||||||
     * Compare a given version with the one cached here.
 | 
					     * Compare a given version with the one cached here.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param verArray the version to compare
 | 
					     * @param verArray the version to compare
 | 
				
			||||||
     * @return true if the given version is a "later" version
 | 
					     * @return {@code true} if the given version is a "later" version
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean isLaterVersion(int[] verArray) {
 | 
					    public boolean isLaterVersion(int[] verArray) {
 | 
				
			||||||
        if (verArray[0] > version[0]) {
 | 
					        if (verArray[0] > version[0]) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -88,7 +88,7 @@ public interface BackupManager {
 | 
				
			|||||||
     * Returns true if (potentially) destructive actions should cause
 | 
					     * Returns true if (potentially) destructive actions should cause
 | 
				
			||||||
     * PlotSquared to create automatic plot backups
 | 
					     * PlotSquared to create automatic plot backups
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return True if automatic backups are enabled
 | 
					     * @return {@code true} if automatic backups are enabled
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    boolean shouldAutomaticallyBackup();
 | 
					    boolean shouldAutomaticallyBackup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -29,7 +29,8 @@ import java.util.Arrays;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class ArrayUtil {
 | 
					public class ArrayUtil {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static final <T> T[] concatAll(T[] first, T[]... rest) {
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
 | 
					    public static <T> T[] concatAll(T[] first, T[]... rest) {
 | 
				
			||||||
        int totalLength = first.length;
 | 
					        int totalLength = first.length;
 | 
				
			||||||
        for (T[] array : rest) {
 | 
					        for (T[] array : rest) {
 | 
				
			||||||
            totalLength += array.length;
 | 
					            totalLength += array.length;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -35,6 +35,7 @@ public class FlatRandomCollection<T> extends RandomCollection<T> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private final T[] values;
 | 
					    private final T[] values;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
    public FlatRandomCollection(Map<T, Double> weights, Random random) {
 | 
					    public FlatRandomCollection(Map<T, Double> weights, Random random) {
 | 
				
			||||||
        super(weights, random);
 | 
					        super(weights, random);
 | 
				
			||||||
        int max = 0;
 | 
					        int max = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -241,6 +241,7 @@ public class QuadMap<T> {
 | 
				
			|||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("unchecked")
 | 
				
			||||||
    public void recalculateSkip() {
 | 
					    public void recalculateSkip() {
 | 
				
			||||||
        QuadMap<T> map = null;
 | 
					        QuadMap<T> map = null;
 | 
				
			||||||
        for (QuadMap<T> current : new QuadMap[]{this.one, this.two, this.three, this.four}) {
 | 
					        for (QuadMap<T> current : new QuadMap[]{this.one, this.two, this.three, this.four}) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -106,7 +106,7 @@ public class Add extends Command {
 | 
				
			|||||||
                                        .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
 | 
					                                        .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
 | 
				
			||||||
                            player.sendMessage(
 | 
					                            player.sendMessage(
 | 
				
			||||||
                                    TranslatableCaption.of("errors.invalid_player"),
 | 
					                                    TranslatableCaption.of("errors.invalid_player"),
 | 
				
			||||||
                                    Template.of("value", PlayerManager.getName(uuid))
 | 
					                                    Template.of("value", PlayerManager.resolveName(uuid).getComponent(player))
 | 
				
			||||||
                            );
 | 
					                            );
 | 
				
			||||||
                            iterator.remove();
 | 
					                            iterator.remove();
 | 
				
			||||||
                            continue;
 | 
					                            continue;
 | 
				
			||||||
@@ -114,7 +114,7 @@ public class Add extends Command {
 | 
				
			|||||||
                        if (plot.isOwner(uuid)) {
 | 
					                        if (plot.isOwner(uuid)) {
 | 
				
			||||||
                            player.sendMessage(
 | 
					                            player.sendMessage(
 | 
				
			||||||
                                    TranslatableCaption.of("member.already_added"),
 | 
					                                    TranslatableCaption.of("member.already_added"),
 | 
				
			||||||
                                    Template.of("player", PlayerManager.getName(uuid))
 | 
					                                    Template.of("player", PlayerManager.resolveName(uuid).getComponent(player))
 | 
				
			||||||
                            );
 | 
					                            );
 | 
				
			||||||
                            iterator.remove();
 | 
					                            iterator.remove();
 | 
				
			||||||
                            continue;
 | 
					                            continue;
 | 
				
			||||||
@@ -122,7 +122,7 @@ public class Add extends Command {
 | 
				
			|||||||
                        if (plot.getMembers().contains(uuid)) {
 | 
					                        if (plot.getMembers().contains(uuid)) {
 | 
				
			||||||
                            player.sendMessage(
 | 
					                            player.sendMessage(
 | 
				
			||||||
                                    TranslatableCaption.of("member.already_added"),
 | 
					                                    TranslatableCaption.of("member.already_added"),
 | 
				
			||||||
                                    Template.of("player", PlayerManager.getName(uuid))
 | 
					                                    Template.of("player", PlayerManager.resolveName(uuid).getComponent(player))
 | 
				
			||||||
                            );
 | 
					                            );
 | 
				
			||||||
                            iterator.remove();
 | 
					                            iterator.remove();
 | 
				
			||||||
                            continue;
 | 
					                            continue;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
 *                                    | |
 | 
					 *                                    | |
 | 
				
			||||||
 *                                    |_|
 | 
					 *                                    |_|
 | 
				
			||||||
 *            PlotSquared plot management system for Minecraft
 | 
					 *            PlotSquared plot management system for Minecraft
 | 
				
			||||||
 *                  Copyright (C) 2021 IntellectualSites
 | 
					 *               Copyright (C) 2014 - 2022 IntellectualSites
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     This program is free software: you can redistribute it and/or modify
 | 
					 *     This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 *     it under the terms of the GNU General Public License as published by
 | 
					 *     it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user