Claims.ExtendIntoGroundDistance is ignored
axctal opened this issue ยท 7 comments
Observed Behavior
Value set in Claims.ExtendIntoGroundDistance is being ignored
New claim's depth is going all the way to the value set in MaximumDepth
Expected Behavior
As described in the manual, claim's lowest Y coordinate should be 'lowest point - Claims.ExtendIntoGroundDistance' and go down when player digs and builds lower.
Reproduction steps
- Set Claims.ExtendIntoGroundDistance = 5 ( default ) in config
- Set MaximumDepth to some 'value1'
- Clean server start, create new claim
- Examine blocks below the claim and see that claim's lowest boundary is defined by variable MaximumDepth ( Y coord = value1 )
- Set MaximumDepth to some 'value2' and repeat experiment (set new claim) -- now the lowest claim's boundary is defined by 'value2'
Examining was done "with a stick" as well as "try breaking a block" -
claim is clearly/correctly reporting itself as well as can't break block unless using '/ignoreclaims'.
Stack trace or error log
N/A - no errors or stacks generated
Server version
[15:46:25 INFO]: This server is running Paper version git-Paper-516 (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT) (Git: f7717c3)
GriefPrevention version
> version GriefPrevention
[15:47:12 INFO]: GriefPrevention version 16.18.1
Configuration
# Default values are perfect for most servers. If you want to customize and have a question, look for the answer here first: http://dev.bukkit.org/bukkit-plugins/grief-prevention/pages/setup-and-configuration/
GriefPrevention:
SeaLevelOverrides:
world: -1
world_nether: -1
world_the_end: -1
staging: -1
Claims:
Mode:
world: Survival
staging: Survival
world_the_end: Disabled
world_nether: Disabled
PreventGlobalMonsterEggs: true
PreventTheft: true
ProtectCreatures: true
PreventButtonsSwitches: true
LockWoodenDoors: false
LockTrapDoors: false
LockFenceGates: true
EnderPearlsRequireAccessTrust: true
RaidTriggersRequireBuildTrust: true
ProtectHorses: true
ProtectDonkeys: true
ProtectLlamas: true
InitialBlocks: 100
Claim Blocks Accrued Per Hour:
Default: 100
Max Accrued Claim Blocks:
Default: 80000
Accrued Idle Threshold: 0
AccruedIdlePercent: 0
AbandonReturnRatio: 1.0
AutomaticNewPlayerClaimsRadius: 4
AutomaticNewPlayerClaimsRadiusMinimum: 0
ExtendIntoGroundDistance: 5
MinimumWidth: 5
MinimumArea: 100
MaximumDepth: 0
InvestigationTool: STICK
ModificationTool: GOLDEN_SHOVEL
Expiration:
ChestClaimDays: 7
UnusedClaimDays: 14
AllClaims:
DaysInactive: 60
ExceptWhenOwnerHasTotalClaimBlocks: 10000
ExceptWhenOwnerHasBonusClaimBlocks: 5000
AutomaticNatureRestoration:
SurvivalWorlds: false
AllowTrappedInAdminClaims: false
MaximumNumberOfClaimsPerPlayer: 0
CreationRequiresWorldGuardBuildPermission: true
VillagerTradingRequiresPermission: false
CommandsRequiringAccessTrust: /sethome
DeliverManuals: true
ManualDeliveryDelaySeconds: 30
RavagersBreakBlocks: true
FireSpreadsInClaims: false
FireDamagesInClaims: false
LecternReadingRequiresAccessTrust: true
Spam:
Enabled: true
LoginCooldownSeconds: 60
LoginLogoutNotificationsPerMinute: 5
ChatSlashCommands: /me;/global;/local
WhisperSlashCommands: /tell;/pm;/r;/whisper;/msg
WarningMessage: Please reduce your noise level. Spammers will be banned.
BanOffenders: true
BanMessage: Banned for spam.
AllowedIpAddresses: 1.2.3.4; 5.6.7.8
DeathMessageCooldownSeconds: 120
Logout Message Delay In Seconds: 0
PvP:
RulesEnabledInWorld:
world: true
world_nether: true
world_the_end: true
staging: true
ProtectFreshSpawns: true
PunishLogout: true
CombatTimeoutSeconds: 15
AllowCombatItemDrop: false
BlockedSlashCommands: /home;/vanish;/spawn;/tpa
ProtectPlayersInLandClaims:
PlayerOwnedClaims: true
AdministrativeClaims: true
AdministrativeSubdivisions: true
AllowLavaDumpingNearOtherPlayers:
PvPWorlds: true
NonPvPWorlds: false
AllowFlintAndSteelNearOtherPlayers:
PvPWorlds: true
NonPvPWorlds: false
ProtectPetsOutsideLandClaims: false
Economy:
ClaimBlocksMaxBonus: 0
ClaimBlocksPurchaseCost: 10.0
ClaimBlocksSellValue: 10.0
ProtectItemsDroppedOnDeath:
PvPWorlds: false
NonPvPWorlds: true
BlockLandClaimExplosions: true
BlockSurfaceCreeperExplosions: true
BlockSurfaceOtherExplosions: true
LimitSkyTrees: true
LimitTreeGrowth: false
PistonMovement: EVERYWHERE_SIMPLE
PistonExplosionSound: true
FireSpreads: false
FireDestroys: false
AdminsGetWhispers: true
AdminsGetSignNotifications: true
VisualizationAntiCheatCompatMode: false
SmartBan: true
Mute New Players Using Banned Words: true
MaxPlayersPerIpAddress: 3
SilenceBans: true
Siege:
Worlds: []
BreakableBlocks:
- GRASS_BLOCK
- DIRT
- COBBLESTONE
- OAK_PLANKS
- SPRUCE_PLANKS
- BIRCH_PLANKS
- JUNGLE_PLANKS
- ACACIA_PLANKS
- DARK_OAK_PLANKS
- SAND
- GRAVEL
- GLASS
- GRASS
- FERN
- DEAD_BUSH
- WHITE_WOOL
- ORANGE_WOOL
- MAGENTA_WOOL
- LIGHT_BLUE_WOOL
- YELLOW_WOOL
- LIME_WOOL
- PINK_WOOL
- GRAY_WOOL
- LIGHT_GRAY_WOOL
- CYAN_WOOL
- PURPLE_WOOL
- BLUE_WOOL
- BROWN_WOOL
- GREEN_WOOL
- RED_WOOL
- BLACK_WOOL
- SNOW
- GLASS_PANE
DoorsOpenDelayInSeconds: 300
CooldownEndInMinutes: 60
EndermenMoveBlocks: false
SilverfishBreakBlocks: false
CreaturesTrampleCrops: false
RabbitsEatCrops: true
HardModeZombiesBreakDoors: false
Database:
URL: jdbc:mysql://mdba-1.srv.home:3306/minecraft_cubedpants_gp
UserName: mcr_cubed_gp
Password: nKJ9yHTCMdXL4mgkiSqJQUrSe
UseBanCommand: false
BanCommandPattern: ban %name% %reason%
Advanced:
fixNegativeClaimblockAmounts: true
ClaimExpirationCheckRate: 60
OfflinePlayer_cache_days: 90
Abridged Logs:
Days To Keep: 7
Included Entry Types:
Social Activity: true
Suspicious Activity: true
Administrative Activity: false
Debug: false
Muted Chat Messages: false
ConfigVersion: 1
Plugin list
> plugins
[15:48:44 INFO]: Server Plugins (13):
[15:48:44 INFO]: Bukkit Plugins:
[15:48:44 INFO]: - ChestShop, Essentials, EssentialsChat, EssentialsSpawn, Graves, GriefPrevention, GSit, LuckPerms, Multiverse-Core, Multiverse-Inventories
[15:48:44 INFO]: TAB, Vault, WorldEdit
>
Running without GriefPrevention
- I attempted running the server without GriefPrevention installed.
- The problem does not occur when GriefPrevention is removed from the server.
Running with only GriefPrevention
- I attempted running only GriefPrevention on the server.
- The issue still occurs when GriefPrevention is the only plugin running.
Running on a fresh, clean server installation
- I attempted testing for the issue on a new server.
- The issue still occurs on a new server.
Using unmodified client
- I attempted testing for the issue with the vanilla client.
- The issue still occurs when using the vanilla client.
We appreciate you taking the time to fill out a bug report!
- I searched for similar issues before submitting this bug report.
Willing to bet it's gravel/sandstone.
The fact that I managed to stumble on a 10x10 area on modern world generation with no gravel when testing this is kinda wild, gravel is everywhere now.In my test in a "real" world, I have not placed or altered ANY blocks - i only created a claim and then examined it with a stick.
So, it seems it takes some "natural" blocks and counts them as a "unnatural" when determining the "depth of a player's build within a claim".
Does it use the above code when determining how deep player have built ?
Possibility of two [maybe somewhat conflicting] lists hardcoded ? ( if so, an extra reason to move list to a config file )
Please verify that you are not claiming over a location that happens to coincide with some form of structure. GP attempts to extend claims downwards on creation to support re-claiming existing builds. Unfortunately, due to how that works, it's almost impossible not to falsely detect abandoned mineshafts as player structures - they contain a whole mess of player blocks.
++ Claims do work as expected (i.e. 'Claims.ExtendIntoGroundDistance' is honored), but only in a "sterile" environment :
Created FLAT "extra" world ( MultiVerse-core )
Floor Y = -60.0 , no mobs / etc.
The 'MaximumDepth' is currently set to 0 -- thus, there is absolutely no player-generated structures in the claim's allowed Y-range, only sterile air.
Created a cube of dirt blocks (WorldEdit) in range of Y = 80 ... 100 and about 20x20 in horizontal directions.
Created claim in top-plane diagonal corners.
Examined claim - depth is going down as expected, down to Y = 95
Abandoned claim.
Created a "cave" out of natural stone with Y < 95 from the side of the "cube" going inward.
Created same claim as before (in top-plane diagonal corners).
Examined claim - just as before, depth is going down as expected, down to Y = 95, i.e. the "cave" I created underneath is not changing claim's depth (as long as it existed before the claim creation).
++ Testing claim in a "real" world - claim insists on going down to 'MaximumDepth' value :
-
My server is not too big, only about 20 whitelisted players, all congregating around one "town".
-
Teleported myself to VERY FAR away, as in one TV series says "where no one have been before".
I know no one had ever been there before because server had to generate that new chunk ( I dont use pre-generattion ). -
To avoid "messing up" my own test, found a spot with :
- a natural cave with blocks to test around Y = 0 ( my value of 'MaximumDepth' )
- verified there are no signs of player's activity OR even "NPC-created mines" - from surface down to bedrock
- only natural caves and zombies/skeletons
- Created claim
... and it goes down all the way to value of 'MaximumDepth'
:(
Just wondering ... are there a list of blocks, presence of which the GriefPrevention considers as a player-activity?
Can that list be configurable? ( i.e. maybe some blocks needs out of that list )
Thank you.
List is assembled here:
https://github.com/TechFortress/GriefPrevention/blob/18a071cc444ebb6782eded98ca76cde521731df2/src/main/java/me/ryanhamshire/GriefPrevention/RestoreNatureProcessingTask.java#L669-L889
I was unable to reproduce this on a normal test world, but that doesn't mean that the list is necessarily good. Robo has commented before about the burden of maintaining the list, putting control into user hands is definitely desirable.
Not same but related mechanic: #2152