diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java index 97c1562c..b62ce558 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/load/DefaultMMOLoader.java @@ -12,7 +12,7 @@ import net.Indyuce.mmocore.experience.source.*; import net.Indyuce.mmocore.loot.chest.condition.*; import net.Indyuce.mmocore.loot.droptable.dropitem.*; import net.Indyuce.mmocore.spawnpoint.def.DefaultSpawnOption; -import net.Indyuce.mmocore.spawnpoint.def.LastSpawnOption; +import net.Indyuce.mmocore.spawnpoint.def.LastOption; import net.Indyuce.mmocore.spawnpoint.def.SpawnPointOption; import org.bukkit.configuration.ConfigurationSection; @@ -211,7 +211,7 @@ public class DefaultMMOLoader extends MMOLoader { @Override public DefaultSpawnOption loadDefaultSpawnOption(MMOLineConfig config) { if (config.getKey().equals("last")) - return new LastSpawnOption(config); + return new LastOption(config); if (config.getKey().equals("spawnpoint")) return new SpawnPointOption(config); return null; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index bc487f75..9af811fd 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -87,6 +87,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD private Guild guild; private SpawnPointContext lastSpawnPointContext; + private SpawnPointContext lastUsedSpawnPointContext; private SkillCastingInstance skillCasting; private final PlayerQuests questData; private final PlayerStats playerStats; @@ -477,10 +478,19 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD return lastSpawnPointContext; } + public SpawnPointContext getLastUsedSpawnPointContext() { + return lastUsedSpawnPointContext; + } + + public void setLastSpawnPointContext(SpawnPointContext lastSpawnPointContext) { this.lastSpawnPointContext = lastSpawnPointContext; } + public void setLastUsedSpawnPointContext(SpawnPointContext lastUsedSpawnPointContext) { + this.lastUsedSpawnPointContext = lastUsedSpawnPointContext; + } + public void setShouldTeleportWhenJoin(boolean shouldTeleport) { this.shouldTeleportWhenJoin = shouldTeleport; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/SpawnPointContext.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/SpawnPointContext.java index c155ad82..3f886c7f 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/SpawnPointContext.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/SpawnPointContext.java @@ -5,6 +5,7 @@ import io.lumine.mythic.lib.util.Jsonable; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; import org.jetbrains.annotations.NotNull; import java.util.Optional; @@ -50,10 +51,16 @@ public class SpawnPointContext implements Jsonable { if (isOtherServer()) { MMOCore.plugin.pluginMessageManager.teleportToOtherServer(playerData, server.get()); } else { + playerData.setLastUsedSpawnPointContext(this); MMOCore.plugin.spawnPointManager.getSpawnPoint(id).whenRespawn(playerData); } } + public void save(ConfigurationSection section) { + section.set("id", id); + server.ifPresent((server) -> section.set("server", server)); + } + @Override public @NotNull JsonObject toJson() { JsonObject jsonObject = new JsonObject(); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastSpawnOption.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastOption.java similarity index 72% rename from MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastSpawnOption.java rename to MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastOption.java index d6e6cf3d..f49426f7 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastSpawnOption.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastOption.java @@ -1,13 +1,12 @@ package net.Indyuce.mmocore.spawnpoint.def; import io.lumine.mythic.lib.api.MMOLineConfig; -import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.spawnpoint.SpawnPointContext; -public class LastSpawnOption extends DefaultSpawnOption { +public class LastOption extends DefaultSpawnOption { - public LastSpawnOption(MMOLineConfig config) { + public LastOption(MMOLineConfig config) { super(config); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastUsedOption.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastUsedOption.java new file mode 100644 index 00000000..0b94ab0c --- /dev/null +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/spawnpoint/def/LastUsedOption.java @@ -0,0 +1,18 @@ +package net.Indyuce.mmocore.spawnpoint.def; + +import io.lumine.mythic.lib.api.MMOLineConfig; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.spawnpoint.SpawnPointContext; + +public class LastUsedOption extends DefaultSpawnOption { + + public LastUsedOption(MMOLineConfig config) { + super(config); + } + + @Override + public SpawnPointContext getSpawnPointContext(PlayerData playerData) { + return playerData.getLastSpawnPointContext(); + } + +}