Added last-used option for spawn points.

This commit is contained in:
Ka0rX 2023-07-19 21:19:04 +01:00
parent b8b58a7686
commit fd436a7953
5 changed files with 39 additions and 5 deletions

View File

@ -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;

View File

@ -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;
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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();
}
}