From a30cdb37d621b7fda2831b1c8a2f6aaf8dbebee9 Mon Sep 17 00:00:00 2001 From: Jordan Date: Sat, 7 Oct 2023 19:14:54 +0100 Subject: [PATCH] fix: load flags after we is initialised (#4186) * fix: load flags after we is initliased - fixes #4073 - it could be possible to add a callback in the WE initilised event listener, but that overcomplicates it a bit and this is fine tbh * Extract method --- .../com/plotsquared/core/plot/PlotArea.java | 32 +++++++++++++++---- Core/src/main/resources/lang/messages_en.json | 2 ++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java index 73c34cdda..d27758761 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java +++ b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java @@ -51,6 +51,8 @@ import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.RegionUtil; import com.plotsquared.core.util.StringMan; +import com.plotsquared.core.util.task.TaskManager; +import com.plotsquared.core.util.task.TaskTime; import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.CuboidRegion; @@ -391,6 +393,28 @@ public abstract class PlotArea implements ComponentLike { } } + this.spawnEggs = config.getBoolean("event.spawn.egg"); + this.spawnCustom = config.getBoolean("event.spawn.custom"); + this.spawnBreeding = config.getBoolean("event.spawn.breeding"); + + if (PlotSquared.get().isWeInitialised()) { + loadFlags(config); + } else { + ConsolePlayer.getConsole().sendMessage( + TranslatableCaption.of("flags.delaying_loading_area_flags"), + TagResolver.resolver("area", Tag.inserting(Component.text(this.id == null ? this.worldName : this.id))) + ); + TaskManager.runTaskLater(() -> loadFlags(config), TaskTime.ticks(1)); + } + + loadConfiguration(config); + } + + private void loadFlags(ConfigurationSection config) { + ConsolePlayer.getConsole().sendMessage( + TranslatableCaption.of("flags.loading_area_flags"), + TagResolver.resolver("area", Tag.inserting(Component.text(this.id == null ? this.worldName : this.id))) + ); List flags = config.getStringList("flags.default"); if (flags.isEmpty()) { flags = config.getStringList("flags"); @@ -411,10 +435,6 @@ public abstract class PlotArea implements ComponentLike { TagResolver.resolver("flags", Tag.inserting(Component.text(flags.toString()))) ); - this.spawnEggs = config.getBoolean("event.spawn.egg"); - this.spawnCustom = config.getBoolean("event.spawn.custom"); - this.spawnBreeding = config.getBoolean("event.spawn.breeding"); - List roadflags = config.getStringList("road.flags"); if (roadflags.isEmpty()) { roadflags = new ArrayList<>(); @@ -426,14 +446,12 @@ public abstract class PlotArea implements ComponentLike { } } } - this.roadFlags = roadflags.size() > 0; + this.roadFlags = !roadflags.isEmpty(); parseFlags(this.getRoadFlagContainer(), roadflags); ConsolePlayer.getConsole().sendMessage( TranslatableCaption.of("flags.road_flags"), TagResolver.resolver("flags", Tag.inserting(Component.text(roadflags.toString()))) ); - - loadConfiguration(config); } public abstract void loadConfiguration(ConfigurationSection config); diff --git a/Core/src/main/resources/lang/messages_en.json b/Core/src/main/resources/lang/messages_en.json index d50fbe4b9..cdc8a371b 100644 --- a/Core/src/main/resources/lang/messages_en.json +++ b/Core/src/main/resources/lang/messages_en.json @@ -632,6 +632,8 @@ "flags.flag_error_double": "Flag value must be a decimal number.", "flags.flag_error_music": "Flag value must be a valid music disc ID.", "flags.flag_error_title": "Flag value must be in the format \"A title\" \"The subtitle\".", + "flags.delaying_loading_area_flags": "Delaying loading flags for area `` as WorldEdit is not initialised yet.", + "flags.loading_area_flags": "Loading flags for area: ", "flags.area_flags": "Area flags: ", "flags.road_flags": "Road flags: ", "commands.description.add": "Allow a user to build in a plot while the plot owner is online.",