From d40116763b6fbd89d98357391dd20c412904ae02 Mon Sep 17 00:00:00 2001 From: bloodshot Date: Sun, 28 Jun 2020 21:55:22 -0400 Subject: [PATCH] Update for 1.4.5 * Fix duplicate permission check. * (Bukkit) Improve BlockPhysicsEvent performance. * (Sponge) Only check collide-block if block is collidable. --- .../java/com/griefdefender/claim/GDClaimManager.java | 6 +++++- .../com/griefdefender/listener/BlockEventTracker.java | 10 +++------- .../com/griefdefender/listener/WorldEventHandler.java | 2 +- .../griefdefender/permission/GDPermissionManager.java | 10 +++------- bukkit/src/main/resources/1.12.2.json | 6 +++--- bukkit/src/main/resources/1.13.2.json | 6 +++--- bukkit/src/main/resources/1.14.2.json | 6 +++--- bukkit/src/main/resources/1.14.3.json | 6 +++--- bukkit/src/main/resources/1.14.4.json | 6 +++--- bukkit/src/main/resources/1.15.2.json | 6 +++--- bukkit/src/main/resources/1.15.json | 6 +++--- bukkit/src/main/resources/1.16.1.json | 6 +++--- bukkit/src/main/resources/1.8.8.json | 6 +++--- bukkit/src/main/resources/plugin.yml | 2 +- gradle.properties | 4 ++-- .../java/com/griefdefender/claim/GDClaimManager.java | 6 +++++- .../com/griefdefender/listener/BlockEventHandler.java | 7 +++++++ .../com/griefdefender/listener/WorldEventHandler.java | 2 +- .../griefdefender/permission/GDPermissionManager.java | 10 +++------- 19 files changed, 58 insertions(+), 55 deletions(-) diff --git a/bukkit/src/main/java/com/griefdefender/claim/GDClaimManager.java b/bukkit/src/main/java/com/griefdefender/claim/GDClaimManager.java index 46a43c9..d3781de 100644 --- a/bukkit/src/main/java/com/griefdefender/claim/GDClaimManager.java +++ b/bukkit/src/main/java/com/griefdefender/claim/GDClaimManager.java @@ -653,9 +653,13 @@ public UUID getWorldId() { } public GDChunk getChunk(Chunk chunk) { + return this.getChunk(chunk, true); + } + + public GDChunk getChunk(Chunk chunk, boolean force) { final long chunkKey = getChunkKey(chunk); GDChunk gdChunk = this.chunksToGDChunks.get(chunkKey); - if (gdChunk == null) { + if (gdChunk == null && force) { gdChunk = new GDChunk(chunk); this.chunksToGDChunks.put(chunkKey, gdChunk); if (this.chunksToClaimsMap.get(chunkKey) == null) { diff --git a/bukkit/src/main/java/com/griefdefender/listener/BlockEventTracker.java b/bukkit/src/main/java/com/griefdefender/listener/BlockEventTracker.java index 05c943d..9b87dea 100644 --- a/bukkit/src/main/java/com/griefdefender/listener/BlockEventTracker.java +++ b/bukkit/src/main/java/com/griefdefender/listener/BlockEventTracker.java @@ -139,8 +139,7 @@ public void onBlockPlaceMonitor(BlockPlaceEvent event) { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockPhysicsMonitor(BlockPhysicsEvent event) { - final String targetBlockName = GDPermissionManager.getInstance().getPermissionIdentifier(event.getBlock()); - if (targetBlockName.equals("minecraft:observer")) { + if (NMSUtil.getInstance().isBlockObserver(event.getBlock())) { return; } // Check if sign broke @@ -165,11 +164,8 @@ public void onBlockPhysicsMonitor(BlockPhysicsEvent event) { if (sourceLocation != null && sourceLocation.equals(block.getLocation())) { return; } - if (sourceBlock != null) { - final String sourceBlockName = GDPermissionManager.getInstance().getPermissionIdentifier(sourceBlock); - if (sourceBlockName.equals("minecraft:observer")) { - return; - } + if (sourceBlock != null && NMSUtil.getInstance().isBlockObserver(sourceBlock)) { + return; } final GDClaimManager claimWorldManager = GriefDefenderPlugin.getInstance().dataStore.getClaimWorldManager(block.getWorld().getUID()); diff --git a/bukkit/src/main/java/com/griefdefender/listener/WorldEventHandler.java b/bukkit/src/main/java/com/griefdefender/listener/WorldEventHandler.java index afdec1c..d22974f 100644 --- a/bukkit/src/main/java/com/griefdefender/listener/WorldEventHandler.java +++ b/bukkit/src/main/java/com/griefdefender/listener/WorldEventHandler.java @@ -92,7 +92,7 @@ public void onChunkUnload(ChunkUnloadEvent event) { } final GDClaimManager claimWorldManager = GriefDefenderPlugin.getInstance().dataStore.getClaimWorldManager(event.getWorld().getUID()); - final GDChunk gdChunk = claimWorldManager.getChunk(event.getChunk()); + final GDChunk gdChunk = claimWorldManager.getChunk(event.getChunk(), false); if (gdChunk != null) { if (gdChunk.getTrackedShortPlayerPositions().size() > 0) { gdChunk.saveChunkTrackingData(); diff --git a/bukkit/src/main/java/com/griefdefender/permission/GDPermissionManager.java b/bukkit/src/main/java/com/griefdefender/permission/GDPermissionManager.java index dece71f..195f3ce 100644 --- a/bukkit/src/main/java/com/griefdefender/permission/GDPermissionManager.java +++ b/bukkit/src/main/java/com/griefdefender/permission/GDPermissionManager.java @@ -348,13 +348,9 @@ private Tristate getUserPermission(GDPermissionHolder holder, Claim claim, Strin return value; } - - if (holder == GriefDefenderPlugin.DEFAULT_HOLDER) { - contexts.remove(claim.getContext()); - return getFlagDefaultPermission(claim, permission, contexts); - } - - return getClaimFlagPermission(claim, permission, contexts, inheritParents); + // Group MUST inherit default group or above will return undefined if no permission set on non-default group/user. + contexts.remove(claim.getContext()); + return getFlagDefaultPermission(claim, permission, contexts); } private Tristate getClaimFlagPermission(Claim claim, String permission) { diff --git a/bukkit/src/main/resources/1.12.2.json b/bukkit/src/main/resources/1.12.2.json index 6090b99..dd9ba3a 100644 --- a/bukkit/src/main/resources/1.12.2.json +++ b/bukkit/src/main/resources/1.12.2.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.12.2", - "sha1": "8603b6e638d0d4f0b60b56c03d6673c6d9fd04ad", - "path": "com/griefdefender/adapter/1.12.2-SNAPSHOT/adapter-1.12.2-20200627.035906-43.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.12.2-SNAPSHOT/adapter-1.12.2-20200627.035906-43.jar" + "sha1": "f1068dec6ed4290f45a14d295704cb068b37103c", + "path": "com/griefdefender/adapter/1.12.2-SNAPSHOT/adapter-1.12.2-20200628.025305-44.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.12.2-SNAPSHOT/adapter-1.12.2-20200628.025305-44.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.13.2.json b/bukkit/src/main/resources/1.13.2.json index d7b155f..fb27878 100644 --- a/bukkit/src/main/resources/1.13.2.json +++ b/bukkit/src/main/resources/1.13.2.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.13.2", - "sha1": "f999f5c89b991be69026305680578a66c07a4e9a", - "path": "com/griefdefender/adapter/1.13.2-SNAPSHOT/adapter-1.13.2-20200627.035749-41.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.13.2-SNAPSHOT/adapter-1.13.2-20200627.035749-41.jar" + "sha1": "9cb084ca06beab1b1407f4b8354f7ac77aac0a57", + "path": "com/griefdefender/adapter/1.13.2-SNAPSHOT/adapter-1.13.2-20200628.025121-42.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.13.2-SNAPSHOT/adapter-1.13.2-20200628.025121-42.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.14.2.json b/bukkit/src/main/resources/1.14.2.json index 4e2a6bc..4bcb735 100644 --- a/bukkit/src/main/resources/1.14.2.json +++ b/bukkit/src/main/resources/1.14.2.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.14.2", - "sha1": "1258cd7e767c081c22f103bf08825a942f7fa7e2", - "path": "com/griefdefender/adapter/1.14.2-SNAPSHOT/adapter-1.14.2-20200627.035642-41.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.14.2-SNAPSHOT/adapter-1.14.2-20200627.035642-41.jar" + "sha1": "1b1c97781dbe10493a2f3b5ebb629b69cfaf5722", + "path": "com/griefdefender/adapter/1.14.2-SNAPSHOT/adapter-1.14.2-20200628.024848-42.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.14.2-SNAPSHOT/adapter-1.14.2-20200628.024848-42.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.14.3.json b/bukkit/src/main/resources/1.14.3.json index 40f353f..fdda87a 100644 --- a/bukkit/src/main/resources/1.14.3.json +++ b/bukkit/src/main/resources/1.14.3.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.14.3", - "sha1": "30491bb998cb8c3c92eb5e03642d021a46bedca2", - "path": "com/griefdefender/adapter/1.14.3-SNAPSHOT/adapter-1.14.3-20200627.035551-42.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.14.3-SNAPSHOT/adapter-1.14.3-20200627.035551-42.jar" + "sha1": "9728a87ee02b837a4583762194ee472ff99ea6db", + "path": "com/griefdefender/adapter/1.14.3-SNAPSHOT/adapter-1.14.3-20200628.024742-44.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.14.3-SNAPSHOT/adapter-1.14.3-20200628.024742-44.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.14.4.json b/bukkit/src/main/resources/1.14.4.json index f41f547..45f0468 100644 --- a/bukkit/src/main/resources/1.14.4.json +++ b/bukkit/src/main/resources/1.14.4.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.14.4", - "sha1": "635483ad5f21a1934a91ebdd1cc2ae6a82e3eff8", - "path": "com/griefdefender/adapter/1.14.4-SNAPSHOT/adapter-1.14.4-20200627.035444-40.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.14.4-SNAPSHOT/adapter-1.14.4-20200627.035444-40.jar" + "sha1": "4a160936b918e9b6accbee8111abe87ddc2060b1", + "path": "com/griefdefender/adapter/1.14.4-SNAPSHOT/adapter-1.14.4-20200628.024718-42.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.14.4-SNAPSHOT/adapter-1.14.4-20200628.024718-42.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.15.2.json b/bukkit/src/main/resources/1.15.2.json index 40debe4..7af3d17 100644 --- a/bukkit/src/main/resources/1.15.2.json +++ b/bukkit/src/main/resources/1.15.2.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.15.2", - "sha1": "331aa3c5a0fd7025b4f3bca8d9d62ab466cc7622", - "path": "com/griefdefender/adapter/1.15.2-SNAPSHOT/adapter-1.15.2-20200627.035125-23.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.15.2-SNAPSHOT/adapter-1.15.2-20200627.035125-23.jar" + "sha1": "99d5fceed1e2797047f0c7e88c848ccad1ec504a", + "path": "com/griefdefender/adapter/1.15.2-SNAPSHOT/adapter-1.15.2-20200628.024612-25.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.15.2-SNAPSHOT/adapter-1.15.2-20200628.024612-25.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.15.json b/bukkit/src/main/resources/1.15.json index ebb635c..2875726 100644 --- a/bukkit/src/main/resources/1.15.json +++ b/bukkit/src/main/resources/1.15.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.15", - "sha1": "4cf98d03f25fad39de3bb268e6f7026d80e4ee71", - "path": "com/griefdefender/adapter/1.15-SNAPSHOT/adapter-1.15-20200627.035345-23.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.15-SNAPSHOT/adapter-1.15-20200627.035345-23.jar" + "sha1": "b9ed30a85daf0e3bc711621be29e4feff64b8cec", + "path": "com/griefdefender/adapter/1.15-SNAPSHOT/adapter-1.15-20200628.024650-25.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.15-SNAPSHOT/adapter-1.15-20200628.024650-25.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.16.1.json b/bukkit/src/main/resources/1.16.1.json index 5c5c88d..d5c51e6 100644 --- a/bukkit/src/main/resources/1.16.1.json +++ b/bukkit/src/main/resources/1.16.1.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.16.1", - "sha1": "5615f7855680579ad778d2a953293b929493d553", - "path": "com/griefdefender/adapter/1.16.1-SNAPSHOT/adapter-1.16.1-20200627.034742-3.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.16.1-SNAPSHOT/adapter-1.16.1-20200627.034742-3.jar" + "sha1": "a6b330cf3e61ef87410e359d367d5076e4ac87ff", + "path": "com/griefdefender/adapter/1.16.1-SNAPSHOT/adapter-1.16.1-20200628.024544-5.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.16.1-SNAPSHOT/adapter-1.16.1-20200628.024544-5.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/1.8.8.json b/bukkit/src/main/resources/1.8.8.json index c8c31ea..552d220 100644 --- a/bukkit/src/main/resources/1.8.8.json +++ b/bukkit/src/main/resources/1.8.8.json @@ -3,9 +3,9 @@ "libraries": [ { "name": "com.griefdefender:adapter:1.8.8", - "sha1": "77db47f03e027b795447f280d6b762e0f82246bb", - "path": "com/griefdefender/adapter/1.8.8-SNAPSHOT/adapter-1.8.8-20200627.040005-41.jar", - "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.8.8-SNAPSHOT/adapter-1.8.8-20200627.040005-41.jar" + "sha1": "fb8afde03ae6cde9bf76b1bd0d2cbea0517df5b4", + "path": "com/griefdefender/adapter/1.8.8-SNAPSHOT/adapter-1.8.8-20200628.025347-42.jar", + "url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/adapter/1.8.8-SNAPSHOT/adapter-1.8.8-20200628.025347-42.jar" }, { "name": "com.griefdefender:api:1.0.0", diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 7730efc..928274a 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -3,5 +3,5 @@ main: com.griefdefender.GDBootstrap softdepend: [dynmap, PlaceholderAPI, WorldEdit, WorldGuard, Vault] depend: [LuckPerms] load: STARTUP -version: '1.4.4' +version: '1.4.5' api-version: 1.13 diff --git a/gradle.properties b/gradle.properties index 250426d..e0dca32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,10 +2,10 @@ name=GriefDefender group=com.griefdefender url=https://github.com/bloodmc/GriefDefender -version=1.4.4 +version=1.4.5 apiVersion=1.0.0-20200528.202302-24 # Bukkit -adapterVersion=1.16.1-20200627.034742-3 +adapterVersion=1.16.1-20200628.024544-5 spigotVersion=1.16.1-R0.1-SNAPSHOT # Sponge adapterSpongeVersion=1.12.2-20200627.042712-12 diff --git a/sponge/src/main/java/com/griefdefender/claim/GDClaimManager.java b/sponge/src/main/java/com/griefdefender/claim/GDClaimManager.java index 4e367e2..fd14dc2 100644 --- a/sponge/src/main/java/com/griefdefender/claim/GDClaimManager.java +++ b/sponge/src/main/java/com/griefdefender/claim/GDClaimManager.java @@ -649,9 +649,13 @@ public UUID getWorldId() { } public GDChunk getChunk(Chunk chunk) { + return this.getChunk(chunk, true); + } + + public GDChunk getChunk(Chunk chunk, boolean force) { final long chunkKey = getChunkKey(chunk); GDChunk gdChunk = this.chunksToGDChunks.get(chunkKey); - if (gdChunk == null) { + if (gdChunk == null && force) { gdChunk = new GDChunk(chunk); this.chunksToGDChunks.put(chunkKey, gdChunk); if (this.chunksToClaimsMap.get(chunkKey) == null) { diff --git a/sponge/src/main/java/com/griefdefender/listener/BlockEventHandler.java b/sponge/src/main/java/com/griefdefender/listener/BlockEventHandler.java index 8cb1c0b..873ecdd 100644 --- a/sponge/src/main/java/com/griefdefender/listener/BlockEventHandler.java +++ b/sponge/src/main/java/com/griefdefender/listener/BlockEventHandler.java @@ -48,6 +48,8 @@ import com.griefdefender.configuration.GriefDefenderConfig; import com.griefdefender.configuration.MessageStorage; import com.griefdefender.event.GDCauseStackManager; +import com.griefdefender.internal.registry.BlockTypeRegistryModule; +import com.griefdefender.internal.registry.GDBlockType; import com.griefdefender.internal.util.BlockUtil; import com.griefdefender.internal.util.NMSUtil; import com.griefdefender.internal.visual.GDClaimVisual; @@ -427,6 +429,11 @@ public void onBlockCollide(CollideBlockEvent event, @Root Entity source) { if (!GDFlags.COLLIDE_BLOCK || source instanceof FallingBlock) { return; } + + final GDBlockType gdBlock = BlockTypeRegistryModule.getInstance().getById(event.getTargetBlock().getType().getId()).orElse(null); + if (gdBlock != null && !gdBlock.isCollidable()) { + return; + } if (GriefDefenderPlugin.isSourceIdBlacklisted(Flags.COLLIDE_BLOCK.getName(), source.getType().getId(), source.getWorld().getProperties())) { return; } diff --git a/sponge/src/main/java/com/griefdefender/listener/WorldEventHandler.java b/sponge/src/main/java/com/griefdefender/listener/WorldEventHandler.java index d559f81..b076c25 100644 --- a/sponge/src/main/java/com/griefdefender/listener/WorldEventHandler.java +++ b/sponge/src/main/java/com/griefdefender/listener/WorldEventHandler.java @@ -96,7 +96,7 @@ public void onChunkUnload(UnloadChunkEvent event) { } final GDClaimManager claimWorldManager = GriefDefenderPlugin.getInstance().dataStore.getClaimWorldManager(event.getTargetChunk().getWorld().getUniqueId()); - final GDChunk gdChunk = claimWorldManager.getChunk(event.getTargetChunk()); + final GDChunk gdChunk = claimWorldManager.getChunk(event.getTargetChunk(), false); if (gdChunk != null) { claimWorldManager.removeChunk(gdChunk.getChunkKey()); } diff --git a/sponge/src/main/java/com/griefdefender/permission/GDPermissionManager.java b/sponge/src/main/java/com/griefdefender/permission/GDPermissionManager.java index adaae41..40be4b4 100644 --- a/sponge/src/main/java/com/griefdefender/permission/GDPermissionManager.java +++ b/sponge/src/main/java/com/griefdefender/permission/GDPermissionManager.java @@ -401,13 +401,9 @@ private Tristate getUserPermission(GDPermissionHolder holder, Claim claim, Strin return value; } - - if (holder == GriefDefenderPlugin.DEFAULT_HOLDER) { - contexts.remove(claim.getContext()); - return getFlagDefaultPermission(claim, permission, contexts); - } - - return getClaimFlagPermission(claim, permission, contexts, inheritParents); + // Group MUST inherit default group or above will return undefined if no permission set on non-default group/user. + contexts.remove(claim.getContext()); + return getFlagDefaultPermission(claim, permission, contexts); } private Tristate getClaimFlagPermission(Claim claim, String permission) {