Grief Prevention

Grief Prevention

1M Downloads

Claims.ExtendIntoGroundDistance is ignored

axctal opened this issue ยท 7 comments

commented

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

  1. Set Claims.ExtendIntoGroundDistance = 5 ( default ) in config
  2. Set MaximumDepth to some 'value1'
  3. Clean server start, create new claim
  4. Examine blocks below the claim and see that claim's lowest boundary is defined by variable MaximumDepth ( Y coord = value1 )
  5. 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.
commented

Willing to bet it's gravel/sandstone.

playerBlocks.add(Material.GRAVEL);
playerBlocks.add(Material.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.

commented

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 )

commented

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.

commented

++ 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 :

  1. My server is not too big, only about 20 whitelisted players, all congregating around one "town".

  2. 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 ).

  3. 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
  1. 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.

commented

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.

commented

I have been experiencing this exact issue on my SMP as well.

commented

Not same but related mechanic: #2152