GP unable to load claims after paper's "circular plugin loading logic" fix from a few months back
malonnnn opened this issue ยท 9 comments
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
- Load a paper server using the legacy world loading logic from before they fixed circular dependencies, aka use this flag
-Dpaper.useLegacyPluginLoading=true
- 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) - Set the world to automatically load on server startup
- Make a claim in that world
- Restart the server and remove the legacy paper flag
- 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.
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
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.
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?
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.
wait no now i did
Maybe I did it
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
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.