Grief Prevention

Grief Prevention

1M Downloads

GP unable to load claims after paper's "circular plugin loading logic" fix from a few months back

malonnnn opened this issue ยท 9 comments

commented

Observed Behavior

GP plugin loads before my multi worlds management plugin, and GP throws errors regarding cannot load claim because world is not loaded yet

Expected Behavior

Claims should load

Reproduction steps

  1. Load a paper server using the legacy world loading logic from before they fixed circular dependencies, aka use this flag -Dpaper.useLegacyPluginLoading=true
  2. Load an extra world using CommandHelper/MethodScript's load_world() function (this probably happens with other scripting languages like Skript as well, maybe even multiverse)
  3. Set the world to automatically load on server startup
  4. Make a claim in that world
  5. Restart the server and remove the legacy paper flag
  6. GP will throw error about trying to load a claim before the world is loaded

Stack trace or error log

[12:07:19] [Server thread/INFO]: [GriefPrevention] Failed to load a claim (ID:269) because its world isn't loaded (yet?).  If this is not expected, delete this claim.
[12:07:19] [Server thread/INFO]: [GriefPrevention] Failed to load a claim (ID:287) because its world isn't loaded (yet?).  If this is not expected, delete this claim.
[12:07:19] [Server thread/INFO]: [GriefPrevention] Failed to load a claim (ID:25) because its world isn't loaded (yet?).  If this is not expected, delete this claim.
[12:07:19] [Server thread/INFO]: [GriefPrevention] Failed to load a claim (ID:66) because its world isn't loaded (yet?).  If this is not expected, delete this claim.
[12:07:19] [Server thread/INFO]: [GriefPrevention] Failed to load a claim (ID:340) because its world isn't loaded (yet?).  If this is not expected, delete this claim.

Server version

> ver
[12:24:14 INFO]: Checking version, please wait...
[12:24:15 INFO]: This server is running Paper version git-Paper-515 (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT) (Git: beed22d)
You are running the latest version
Previous version: git-Paper-514 (MC: 1.19.4)

GriefPrevention version

> version GriefPrevention
[12:24:42 INFO]: GriefPrevention version 16.18.1-51-ge4718bb

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:
    earth: -1
    earth_nether: -1
    earth_the_end: -1
    arrowgame: -1
    atlantispvp: -1
    boatrace: -1
    cavedeathrun: -1
    checkers: -1
    deathrun: -1
    deathswaparena: -1
    fishslap: -1
    glidemaster: -1
    heaven: -1
    hell: -1
    hidenseek: -1
    hilariousrace: -1
    hurdles: -1
    lasertag: -1
    leafdecay: -1
    levitationgame: -1
    limbo: -1
    mall: -1
    mobrun: -1
    moddedsurvivaleasy: -1
    moddedsurvivaleasy_nether: -1
    moddedsurvivaleasy_the_end: -1
    moddedsurvivalhard: -1
    moddedsurvivalhard_nether: -1
    moddedsurvivalhard_the_end: -1
    moddedsurvivalnormal: -1
    moddedsurvivalnormal_nether: -1
    moddedsurvivalnormal_the_end: -1
    moddedsurvivalpeaceful: -1
    moddedsurvivalpeaceful_nether: -1
    moddedsurvivalpeaceful_the_end: -1
    noobworkshop: -1
    npcfights: -1
    obstaclecourse: -1
    paradise: -1
    paradise_nether: -1
    paradise_the_end: -1
    plots: -1
    publicescaperoom: -1
    publicparkour: -1
    publicrollercoaster: -1
    pvelobby: -1
    pvpdeathrun: -1
    racelobby: -1
    shop: -1
    siegepvp: -1
    skyblock: -1
    spleef: -1
    splegg: -1
    starwarsdropper: -1
    survivalgames: -1
    thegauntlet: -1
    thehorde: -1
    thelongestparkour: -1
    wipeout: -1
  Claims:
    Mode:
      atlantispvp: Disabled
      limbo: Disabled
      publicparkour: Disabled
      npcfights: Disabled
      plots: Disabled
      publicrollercoaster: Disabled
      moddedsurvivalhard_nether: Survival
      paradise: Survival
      moddedsurvivaleasy: Survival
      thegauntlet: Disabled
      moddedsurvivalpeaceful_nether: Survival
      boatrace: Disabled
      moddedsurvivalpeaceful_the_end: Survival
      hurdles: Disabled
      racelobby: Disabled
      earth_the_end: Disabled
      mobrun: Disabled
      hidenseek: Disabled
      leafdecay: Disabled
      deathswaparena: Disabled
      starwarsdropper: Disabled
      shop: Disabled
      levitationgame: Disabled
      paradise_nether: Disabled
      lasertag: Disabled
      moddedsurvivalnormal_the_end: Survival
      obstaclecourse: Disabled
      thelongestparkour: Disabled
      hell: Disabled
      checkers: Disabled
      thehorde: Disabled
      earth: Disabled
      paradise_the_end: Disabled
      fishslap: Disabled
      siegepvp: Disabled
      hilariousrace: Disabled
      pvpdeathrun: Disabled
      noobworkshop: Disabled
      moddedsurvivalnormal_nether: Survival
      pvelobby: Disabled
      spleef: Disabled
      heaven: Disabled
      glidemaster: Disabled
      earth_nether: Disabled
      moddedsurvivaleasy_the_end: Survival
      deathrun: Disabled
      moddedsurvivalhard_the_end: Survival
      moddedsurvivalpeaceful: Survival
      survivalgames: Disabled
      publicescaperoom: Disabled
      skyblock: Disabled
      moddedsurvivalhard: Survival
      moddedsurvivaleasy_nether: Survival
      cavedeathrun: Disabled
      wipeout: Disabled
      arrowgame: Survival
      mall: Survival
      moddedsurvivalnormal: Survival
      splegg: 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: -2147483648
    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: true
    CommandsRequiringAccessTrust: /sethome
    DeliverManuals: true
    ManualDeliveryDelaySeconds: 30
    RavagersBreakBlocks: true
    FireSpreadsInClaims: false
    FireDamagesInClaims: false
    LecternReadingRequiresAccessTrust: true
  Spam:
    Enabled: false
    LoginCooldownSeconds: 60
    LoginLogoutNotificationsPerMinute: 5
    ChatSlashCommands: ''
    WhisperSlashCommands: ''
    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: 0
    Logout Message Delay In Seconds: 0
  PvP:
    RulesEnabledInWorld:
      earth: false
      earth_nether: false
      earth_the_end: false
      arrowgame: true
      atlantispvp: false
      boatrace: false
      cavedeathrun: false
      checkers: false
      deathrun: false
      deathswaparena: false
      fishslap: false
      glidemaster: false
      heaven: false
      hell: false
      hidenseek: false
      hilariousrace: false
      hurdles: false
      lasertag: false
      leafdecay: false
      levitationgame: false
      limbo: false
      mall: true
      mobrun: false
      moddedsurvivaleasy: true
      moddedsurvivaleasy_nether: true
      moddedsurvivaleasy_the_end: true
      moddedsurvivalhard: true
      moddedsurvivalhard_nether: true
      moddedsurvivalhard_the_end: true
      moddedsurvivalnormal: true
      moddedsurvivalnormal_nether: true
      moddedsurvivalnormal_the_end: true
      moddedsurvivalpeaceful: true
      moddedsurvivalpeaceful_nether: true
      moddedsurvivalpeaceful_the_end: true
      noobworkshop: false
      npcfights: false
      obstaclecourse: false
      paradise: false
      paradise_nether: false
      paradise_the_end: false
      plots: false
      publicescaperoom: false
      publicparkour: false
      publicrollercoaster: false
      pvelobby: false
      pvpdeathrun: false
      racelobby: false
      shop: false
      siegepvp: false
      skyblock: false
      spleef: false
      splegg: false
      starwarsdropper: false
      survivalgames: false
      thegauntlet: false
      thehorde: false
      thelongestparkour: false
      wipeout: false
    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: 0.0
    ClaimBlocksSellValue: 0.0
  ProtectItemsDroppedOnDeath:
    PvPWorlds: false
    NonPvPWorlds: false
  BlockLandClaimExplosions: true
  BlockSurfaceCreeperExplosions: true
  BlockSurfaceOtherExplosions: true
  LimitSkyTrees: true
  LimitTreeGrowth: false
  PistonMovement: CLAIMS_ONLY
  PistonExplosionSound: true
  FireSpreads: false
  FireDestroys: false
  AdminsGetWhispers: true
  AdminsGetSignNotifications: true
  VisualizationAntiCheatCompatMode: false
  SmartBan: true
  Mute New Players Using Banned Words: false
  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: ''
    UserName: ''
    Password: ''
  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

No response

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

I don't know how to edit that file, I'm not a dev, and it's not my own plugin, it's someone else's

commented

This doesn't have anything to do with the plugin loading logic beyond the fact that legacy loader loads in a slightly different order than the current loader. The real problem is that GP loads before your plugin sometimes due to a lack of declared load order. You can either add loadbefore: [ GriefPrevention ] to your plugin.yml or create a PR adding your plugin to GP's softdepend.

Note that if the plugin doesn't actually load the world by the time it finishes enabling, GP cannot support it in its current state. I would have sworn that there was an issue or discussion tracking supporting unloaded worlds, but I can't seem to find it.

commented

I've literally never entered anything into plugin.yml, I don't even know where that is, can you point me in the right direction?

commented

GP's softdepend is here: https://github.com/TechFortress/GriefPrevention/blob/18a071cc444ebb6782eded98ca76cde521731df2/src/main/resources/plugin.yml#L3
If you're writing your own plugin, you should include the loadbefore line in your plugin. Otherwise, you can submit a PR to add the name(s) of multiworld plugins you think are missing.

commented

wait no now i did

#2043

commented

Oop, just saw your most recent comment. Yep! You made the edit, just click the PR button and mention the issue here in the body, i.e. "Closes #2041".
/e Sniping me so hard, heck. Yeah, you got it, nice

commented

If you go to the raw file here you can click the edit button in the top right to automatically create a fork and edit the file. Then, when you're done, you can submit the pull to GP - there should be a big green button suggesting it for recent edits.

commented

Can confirm my issue is completely resolved now, grabbed the recent GP build from AppVeyor
Thank you! No more using -Dpaper.useLegacyPluginLoading=true

Thank you again!