Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
77f41e2
move world generation to SkeletonWorldGenerator and copy skeleton dat…
Cinnazeyy Jul 14, 2025
9263206
generate skeleton on startup if not exists.
Cinnazeyy Jul 14, 2025
573884f
save skeleton to generate level.dat and remove uid.dat for multiverse…
Cinnazeyy Jul 14, 2025
d0b8173
fix async issues and cleanup generation related classes
Cinnazeyy Jul 20, 2025
16f0b39
add util methods for passing up exceptions in bukkit scheduler
Cinnazeyy Aug 3, 2025
779b31a
- pass schematic bytes into generateOutlines method of PlotGenerators
Cinnazeyy Aug 7, 2025
337a972
Merge branch 'update/1.21-data-abstraction' into update/world-generat…
Cinnazeyy Aug 7, 2025
fb9fd47
feat(gen): ✨ update emptychunkgenerator and provide it outside of plugin
Zoriot Aug 25, 2025
a4af0e0
Merge remote-tracking branch 'origin/update/world-generation-rework' …
Cinnazeyy Sep 17, 2025
198e014
Implement plot abandon functionality in the PlotHandler and rework Pl…
Cinnazeyy Nov 1, 2025
a87a7e3
move world generation to SkeletonWorldGenerator and copy skeleton dat…
Cinnazeyy Jul 14, 2025
73e9def
generate skeleton on startup if not exists.
Cinnazeyy Jul 14, 2025
0783dc6
save skeleton to generate level.dat and remove uid.dat for multiverse…
Cinnazeyy Jul 14, 2025
6571670
fix async issues and cleanup generation related classes
Cinnazeyy Jul 20, 2025
030be1f
add util methods for passing up exceptions in bukkit scheduler
Cinnazeyy Aug 3, 2025
fc403d6
- pass schematic bytes into generateOutlines method of PlotGenerators
Cinnazeyy Aug 7, 2025
35931a8
feat(gen): ✨ update emptychunkgenerator and provide it outside of plugin
Zoriot Aug 25, 2025
91e97ad
Implement plot abandon functionality in the PlotHandler and rework Pl…
Cinnazeyy Nov 1, 2025
73db572
fix incorrectly rebased imports
Cinnazeyy Nov 1, 2025
54a8333
Merge remote-tracking branch 'origin/update/world-generation-rework' …
Cinnazeyy Nov 1, 2025
a53c9f7
Implement TutorialPlotLoader.java.
Cinnazeyy Nov 25, 2025
17a8376
remove unused imports
Cinnazeyy Nov 25, 2025
3ca8cb7
add nbt dependency to gradle for parity with maven
Dec 2, 2025
e669434
Merge remote-tracking branch 'origin/update/world-generation-rework' …
Dec 2, 2025
aa53fa3
Merge branch 'update/1.21-data-abstraction' into update/world-generat…
Dec 2, 2025
4a9a6ce
fix merging issues
Dec 2, 2025
ac9a97a
feat: ✨ Remove VoidGen dependency
Zoriot Feb 16, 2026
af3ccc7
Merge branch 'main' into update/world-generation-rework
Cinnazeyy Apr 8, 2026
f3cfdfc
fix merge conflicts and use new GameRules api
Cinnazeyy Apr 8, 2026
ddeb946
ensure AbstractPlotLoader.pasteSchematic is run in main thread when c…
Cinnazeyy Apr 9, 2026
75e066b
run thread unsafe methods in Companion menues in main thread
Cinnazeyy Apr 9, 2026
546f4c6
make sure onException feedback runs on mainthread
Cinnazeyy Apr 9, 2026
7c3c4f1
make the tutorial system run async when possible
Cinnazeyy Apr 9, 2026
9947a05
set fixed spawn location for EmptyChunkGenerator
Cinnazeyy Apr 9, 2026
96859ec
use DefaultPlotLoader for plots with no completed schematic
Cinnazeyy Apr 9, 2026
fefcd99
add restorePlotSlot method and no longer treat all slots occupied as …
Cinnazeyy May 6, 2026
ca92366
when freeing up a slot, check for orphans and assign if possible
Cinnazeyy May 11, 2026
d081f27
Merge remote-tracking branch 'origin/main' into update/world-generati…
Zoriot May 18, 2026
29b1c78
fix: plot world loading not running on main thread if called via Plot…
May 23, 2026
92913b0
fix: codacy best practice issue
May 23, 2026
0cf165f
Merge pull request #216 from AlpsBTE/fix/186-restore-slot
Zoriot May 27, 2026
b68a61f
Merge branch 'main' into update/world-generation-rework
Zoriot Jun 12, 2026
d119655
[WIP] feat: Support 26.1 world changes
Zoriot May 24, 2026
0021ab2
fix: handle Paper 26.1 world folder changes
Jun 8, 2026
ba40e77
fix(plot): Fix world ref when copy the completed schematic
Zoriot Jun 15, 2026
fa51b38
fix: Fully support only new world format (26.1+)
Zoriot Jun 20, 2026
20c4cc3
build(dependencies): update dependency versions for mc 26.1.2 and mig…
Zoriot Jun 20, 2026
e0d15cb
Merge pull request #223 from AlpsBTE/update/wgr-26.1-support
Zoriot Jun 20, 2026
8a9e180
feat(plot-utils): ✨ use AlpsLib MapLinks with configurable provider e…
Zoriot May 16, 2026
24fb16f
Merge pull request #224 from AlpsBTE/feat/configurable-links
Zoriot Jun 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@ jobs:
steps:
- name: Checkout PR merge commit
if: github.event_name == 'pull_request'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
fetch-depth: 0
fetch-tags: true

- name: Checkout main on push
if: github.event_name == 'push'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
fetch-tags: true

- name: Set up JDK 21
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
java-version: '21'
java-version: '25'
distribution: 'temurin'

- name: Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-draft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
fetch-depth: 0
fetch-tags: true
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ jobs:
contents: write

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
fetch-depth: 0
fetch-tags: true
ref: ${{ github.event.release.tag_name }}

- name: Set up JDK 21
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
java-version: '21'
java-version: '25'
distribution: 'temurin'

- name: Setup Gradle
Expand Down
28 changes: 19 additions & 9 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ val paperNextEnabled = providers.gradleProperty("paperNext")
.map(String::toBoolean)
.orElse(false)

val guavaPackage = "com.google.guava"
val gsonPackage = "com.google.code.gson"

dependencies {
implementation(libs.com.alpsbte.canvas)
implementation(libs.com.alpsbte.alpslib.alpslib.io)
Expand All @@ -52,9 +55,18 @@ dependencies {
implementation(libs.com.zaxxer.hikaricp) {
exclude(group = "org.slf4j")
}
implementation(platform(libs.com.intellectualsites.bom.bom.newest))
compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core")
compileOnly(libs.com.sk89q.worldguard.worldguard.bukkit)
implementation(platform(libs.com.intellectualsites.bom.bom.newest)) {
exclude(group = guavaPackage)
exclude(group = gsonPackage)
}
compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") {
exclude(group = guavaPackage)
exclude(group = gsonPackage)
}
compileOnly(libs.com.sk89q.worldguard.worldguard.bukkit) {
exclude(group = guavaPackage)
exclude(group = gsonPackage)
}
compileOnly(libs.multiverse.core)
compileOnly(libs.com.github.fierioziy.particlenativeapi.particlenativeapi.plugin)
compileOnly(libs.com.arcaniax.headdatabase.api)
Expand All @@ -66,8 +78,7 @@ dependencies {

if (paperNextEnabled.get()) {
constraints {
compileOnly("io.papermc.paper:paper-api:26.1.2.build.+")
compileOnly("com.github.decentsoftware-eu:decentholograms:2.10.0")
compileOnly("io.papermc.paper:paper-api:26.2-rc-2.build.+")
}
}
}
Expand Down Expand Up @@ -122,7 +133,7 @@ tasks.processResources {

val targetJava = providers.gradleProperty("targetJava")
.map(String::toInt)
.orElse(21)
.orElse(25)

java {
toolchain {
Expand All @@ -141,14 +152,13 @@ tasks.withType<Javadoc>().configureEach {

tasks.register<GradleBuild>("buildPaperNext") {
group = "verification"
description = "Builds against Java 25 and the Paper-next dependency set"
description = "Builds against Paper-next dependency set"

tasks = listOf("clean", "build")

startParameter.projectProperties.putAll(
mapOf(
"paperNext" to "true",
"targetJava" to "25"
"paperNext" to "true"
)
)
}
18 changes: 9 additions & 9 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,27 @@ com-alpsbte-alpslib-alpslib-hologram = "1.1.3"
# https://mvn.alps-bte.com/service/rest/repository/browse/alps-bte/com/alpsbte/alpslib/alpslib-io/
com-alpsbte-alpslib-alpslib-io = "1.2.5"
# https://mvn.alps-bte.com/service/rest/repository/browse/alps-bte/com/alpsbte/alpslib/alpslib-utils/
com-alpsbte-alpslib-alpslib-utils = "1.4.6"
com-alpsbte-alpslib-alpslib-utils = "1.5.0"
# https://mvn.alps-bte.com/service/rest/repository/browse/alps-bte/com/alpsbte/canvas/
com-alpsbte-canvas = "1.3"
com-alpsbte-canvas = "1.3.2"
# https://github.com/Arcaniax-Development/HeadDatabase-API/releases
com-arcaniax-headdatabase-api = "1.3.3-SNAPSHOT"
# @pin https://github.com/DecentSoftware-eu/DecentHolograms/releases 2.10+ require java 25 (MC 26.1+ mainly)
com-github-decentsoftware-eu-decentholograms = "2.9.9"
# https://github.com/DecentSoftware-eu/DecentHolograms/releases
com-github-decentsoftware-eu-decentholograms = "2.10.0"
# @pin https://github.com/Fierioziy/ParticleNativeAPI/releases - we are stuck at v3 for now. Need to migrate some time or remove it
com-github-fierioziy-particlenativeapi-particlenativeapi-plugin = "3.3.2"
# Ref: https://github.com/IntellectualSites/bom
com-intellectualsites-bom-bom-newest = "1.56"
# https://maven.enginehub.org/repo/com/sk89q/worldguard/worldguard-bukkit/
com-sk89q-worldguard-worldguard-bukkit = "7.0.17"
com-sk89q-worldguard-worldguard-bukkit = "7.0.18-SNAPSHOT"
# https://github.com/brettwooldridge/HikariCP/tags
com-zaxxer-hikaricp = "7.0.2"
com-zaxxer-hikaricp = "7.1.0"
# Provided by Minecraft (Libs folder)
commons-io-commons-io = "2.22.0"
# https://fancyspaces.net/spaces/fancynpcs/maven-repos/fi-releases/de.oliver:FancyNpcs
de-oliver-fancynpcs = "2.9.2"
# @pin https://artifactory.papermc.io/ui/native/universe/io/papermc/paper/paper-api/ 26.1+ requires java 25
io-papermc-paper-paper-api = "1.21.11-R0.1-SNAPSHOT"
# @pin https://artifactory.papermc.io/ui/native/universe/io/papermc/paper/paper-api/ We want to use the latest api buld
io-papermc-paper-paper-api = "26.1.2.build.+"
# https://mvn.alps-bte.com/service/rest/repository/browse/alps-bte/li/cinnazeyy/LangLibs-API/
li-cinnazeyy-langlibs-api = "1.5.2"
# https://repo.onarandombox.com/#/multiverse-releases/org/mvplugins/multiverse/core/multiverse-core
Expand All @@ -39,7 +39,7 @@ org-mariadb-jdbc-mariadb-java-client = "3.6.0-SNAPSHOT"
# Plugins
#
# https://github.com/jmongard/Git.SemVersioning.Gradle/releases
git-semver = "0.19.1"
git-semver = "0.19.2"
# https://github.com/GradleUp/shadow/releases
shadow = "9.4.2"

Expand Down
21 changes: 19 additions & 2 deletions src/main/java/com/alpsbte/plotsystem/PlotSystem.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import com.alpsbte.plotsystem.core.holograms.HologramRegister;
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.generator.world.SkeletonWorldGenerator;
import com.alpsbte.plotsystem.core.system.plot.utils.PlotUtils;
import com.alpsbte.plotsystem.core.system.tutorial.AbstractTutorial;
import com.alpsbte.plotsystem.core.system.tutorial.BeginnerTutorial;
Expand All @@ -28,6 +30,7 @@
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin;
import org.ipvp.canvas.MenuFunctionListener;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -117,14 +120,23 @@ public void onEnable() {

DecentHologramDisplay.registerPlugin(this);
HologramRegister.init();
PlotUtils.checkPlotsForLastActivity();
Utils.ChatUtils.checkForChatInputExpiry();
PlotUtils.Effects.startTimer();

// Start task that checks for and abandons inactive plots every hour
Bukkit.getScheduler().runTaskTimerAsynchronously(PlotSystem.getPlugin(), PlotHandler::abandonInactivePlots, 0L, 20 * 60 * 60L);

// Register tutorials
if (getConfig().getBoolean(ConfigPaths.TUTORIAL_ENABLE)) {
AbstractTutorial.registerTutorials(Collections.singletonList(BeginnerTutorial.class));
Bukkit.getScheduler().runTaskTimerAsynchronously(FancyNpcsPlugin.get().getPlugin(), new TutorialNPCTurnTracker(), 0, 1L);
Bukkit.getScheduler().runTaskTimer(FancyNpcsPlugin.get().getPlugin(), new TutorialNPCTurnTracker(), 0, 1L);
}

// Generate Skeleton World
if (Bukkit.getWorld("Skeleton") == null) {
getComponentLogger().info("No skeleton world found!");
getComponentLogger().info("Generating skeleton world...");
new SkeletonWorldGenerator();
}

pluginEnabled = true;
Expand Down Expand Up @@ -196,4 +208,9 @@ public void initDatabase() throws IOException, SQLException {
s.execute(initScript);
}
}

@Override
public ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, String id) {
return new SkeletonWorldGenerator.EmptyChunkGenerator();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.alpsbte.plotsystem.commands.BaseCommand;
import com.alpsbte.plotsystem.core.database.DataProvider;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.utils.PlotUtils;
import com.alpsbte.plotsystem.utils.Utils;
import org.bukkit.Bukkit;
Expand Down Expand Up @@ -43,10 +44,12 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N

sender.sendMessage(Utils.ChatUtils.getInfoFormat("Deleting plot..."));
Bukkit.getScheduler().runTask(PlotSystem.getPlugin(), () -> {
if (PlotUtils.Actions.deletePlot(plot)) {
sender.sendMessage(Utils.ChatUtils.getInfoFormat("Successfully deleted plot with the ID §6#" + plotID + "§a!"));
if (getPlayer(sender) != null) getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.SoundUtils.DONE_SOUND, 1f, 1f);
} else sender.sendMessage(Utils.ChatUtils.getAlertFormat("An unexpected error has occurred!"));
if (!PlotHandler.deletePlot(plot)) {
sender.sendMessage(Utils.ChatUtils.getAlertFormat("An unexpected error has occurred!"));
return;
}
sender.sendMessage(Utils.ChatUtils.getInfoFormat("Successfully deleted plot with the ID §6#" + plotID + "§a!"));
if (getPlayer(sender) != null) getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.SoundUtils.DONE_SOUND, 1f, 1f);
});
});
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.plot.AbstractPlot;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.utils.PlotUtils;
import com.alpsbte.plotsystem.utils.Utils;
import com.alpsbte.plotsystem.utils.enums.Status;
Expand Down Expand Up @@ -67,10 +68,9 @@ public void onCommand(CommandSender sender, String[] args) {
}

Bukkit.getScheduler().runTask(PlotSystem.getPlugin(), () -> {
if (PlotUtils.Actions.abandonPlot(plot)) {
sender.sendMessage(Utils.ChatUtils.getInfoFormat(langUtil.get(sender, LangPaths.Message.Info.ABANDONED_PLOT, plot.getId() + "")));
player.playSound(player.getLocation(), Utils.SoundUtils.ABANDON_PLOT_SOUND, 1, 1);
}
if (!PlotHandler.abandonPlot(plot)) return;
sender.sendMessage(Utils.ChatUtils.getInfoFormat(langUtil.get(sender, LangPaths.Message.Info.ABANDONED_PLOT, plot.getId() + "")));
player.playSound(player.getLocation(), Utils.SoundUtils.ABANDON_PLOT_SOUND, 1, 1);
});
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.plot.AbstractPlot;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.utils.PlotUtils;
import com.alpsbte.plotsystem.utils.Utils;
import com.alpsbte.plotsystem.utils.enums.Status;
Expand Down Expand Up @@ -75,7 +76,7 @@ public void onCommand(CommandSender sender, String[] args) {

Bukkit.getScheduler().runTask(PlotSystem.getPlugin(), () -> {

PlotUtils.Actions.submitPlot(plot);
PlotHandler.submitPlot(plot);
if (plotMembers.isEmpty()) {
// Plot was made alone
langUtil.broadcast(LangPaths.Message.Info.FINISHED_PLOT, String.valueOf(plot.getId()), plot.getPlotOwner().getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.plot.AbstractPlot;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.generator.DefaultPlotGenerator;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.utils.Utils;
import com.alpsbte.plotsystem.utils.enums.Status;
import com.alpsbte.plotsystem.utils.io.LangPaths;
Expand Down Expand Up @@ -63,7 +63,7 @@ public void onCommand(CommandSender sender, String[] args) {
return;
}

Bukkit.getScheduler().runTask(PlotSystem.getPlugin(), () -> new DefaultPlotGenerator(plot, builder));
PlotHandler.assignAndGeneratePlot(builder, plot);
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.plot.AbstractPlot;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.utils.PlotUtils;
import com.alpsbte.plotsystem.utils.Utils;
import com.alpsbte.plotsystem.utils.enums.Status;
Expand Down Expand Up @@ -69,7 +70,7 @@ public void onCommand(CommandSender sender, String[] args) {
}

Bukkit.getScheduler().runTask(PlotSystem.getPlugin(), () -> {
PlotUtils.Actions.undoSubmit(plot);
PlotHandler.undoSubmit(plot);

sender.sendMessage(Utils.ChatUtils.getInfoFormat(langUtil.get(sender, LangPaths.Message.Info.UNDID_SUBMISSION, plot.getId() + "")));
player.playSound(player.getLocation(), Utils.SoundUtils.FINISH_PLOT_SOUND, 1, 1);
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/alpsbte/plotsystem/core/EventListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.CityProject;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.TutorialPlot;
import com.alpsbte.plotsystem.core.system.plot.generator.DefaultPlotGenerator;
import com.alpsbte.plotsystem.core.system.plot.utils.PlotUtils;
import com.alpsbte.plotsystem.core.system.plot.world.PlotWorld;
import com.alpsbte.plotsystem.core.system.review.ReviewNotification;
Expand Down Expand Up @@ -123,7 +123,7 @@ public void onPlayerInteractAtEntity(@NotNull PlayerInteractAtEntityEvent event)
public void onPlayerQuitEvent(@NotNull PlayerQuitEvent event) {
final World w = event.getPlayer().getWorld();

DefaultPlotGenerator.playerPlotGenerationHistory.remove(event.getPlayer().getUniqueId());
PlotHandler.removePlayerFromGenerationHistory(event.getPlayer().getUniqueId());
ChatInput.awaitChatInput.remove(event.getPlayer().getUniqueId());
PlotUtils.Cache.clearCache(event.getPlayer().getUniqueId());

Expand Down Expand Up @@ -172,7 +172,7 @@ public void onInventoryClickEvent(@NotNull InventoryClickEvent event) {
}

@EventHandler
public void onlPlayerItemDropEvent(@NotNull PlayerDropItemEvent event) {
public void onPlayerItemDropEvent(@NotNull PlayerDropItemEvent event) {
if (event.getItemDrop().getItemStack().equals(CompanionMenu.getMenuItem(event.getPlayer())) ||
event.getItemDrop().getItemStack().equals(ReviewMenu.getMenuItem(event.getPlayer()))) {
event.setCancelled(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import org.ipvp.canvas.mask.Mask;
import org.jetbrains.annotations.NotNull;

import java.util.concurrent.CompletableFuture;

import static net.kyori.adventure.text.Component.text;
import static net.kyori.adventure.text.format.NamedTextColor.AQUA;
import static net.kyori.adventure.text.format.NamedTextColor.GOLD;
Expand Down Expand Up @@ -133,7 +135,14 @@ protected void setItemClickEventsAsync() {
clickPlayer.sendMessage(Utils.ChatUtils.getAlertFormat(LangUtil.getInstance().get(clickPlayer, LangPaths.Message.Error.CANNOT_LOAD_LEGACY_PLOT)));
return;
}
plot.getWorld().teleportPlayer(clickPlayer);
CompletableFuture.runAsync(() -> {
if (!plot.getWorld().isWorldGenerated() && !plot.getWorld().loadWorld()) return;

Utils.runSync(() -> {
plot.getWorld().teleportPlayer(clickPlayer);
return null;
});
});
});

// Set click event for abandon plot item
Expand Down
Loading