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.chest.condition.*;
import net.Indyuce.mmocore.loot.droptable.dropitem.*; import net.Indyuce.mmocore.loot.droptable.dropitem.*;
import net.Indyuce.mmocore.spawnpoint.def.DefaultSpawnOption; 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 net.Indyuce.mmocore.spawnpoint.def.SpawnPointOption;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -211,7 +211,7 @@ public class DefaultMMOLoader extends MMOLoader {
@Override @Override
public DefaultSpawnOption loadDefaultSpawnOption(MMOLineConfig config) { public DefaultSpawnOption loadDefaultSpawnOption(MMOLineConfig config) {
if (config.getKey().equals("last")) if (config.getKey().equals("last"))
return new LastSpawnOption(config); return new LastOption(config);
if (config.getKey().equals("spawnpoint")) if (config.getKey().equals("spawnpoint"))
return new SpawnPointOption(config); return new SpawnPointOption(config);
return null; return null;

View File

@ -87,6 +87,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
private Guild guild; private Guild guild;
private SpawnPointContext lastSpawnPointContext; private SpawnPointContext lastSpawnPointContext;
private SpawnPointContext lastUsedSpawnPointContext;
private SkillCastingInstance skillCasting; private SkillCastingInstance skillCasting;
private final PlayerQuests questData; private final PlayerQuests questData;
private final PlayerStats playerStats; private final PlayerStats playerStats;
@ -477,10 +478,19 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
return lastSpawnPointContext; return lastSpawnPointContext;
} }
public SpawnPointContext getLastUsedSpawnPointContext() {
return lastUsedSpawnPointContext;
}
public void setLastSpawnPointContext(SpawnPointContext lastSpawnPointContext) { public void setLastSpawnPointContext(SpawnPointContext lastSpawnPointContext) {
this.lastSpawnPointContext = lastSpawnPointContext; this.lastSpawnPointContext = lastSpawnPointContext;
} }
public void setLastUsedSpawnPointContext(SpawnPointContext lastUsedSpawnPointContext) {
this.lastUsedSpawnPointContext = lastUsedSpawnPointContext;
}
public void setShouldTeleportWhenJoin(boolean shouldTeleport) { public void setShouldTeleportWhenJoin(boolean shouldTeleport) {
this.shouldTeleportWhenJoin = 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.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.configuration.ConfigurationSection;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Optional; import java.util.Optional;
@ -50,10 +51,16 @@ public class SpawnPointContext implements Jsonable {
if (isOtherServer()) { if (isOtherServer()) {
MMOCore.plugin.pluginMessageManager.teleportToOtherServer(playerData, server.get()); MMOCore.plugin.pluginMessageManager.teleportToOtherServer(playerData, server.get());
} else { } else {
playerData.setLastUsedSpawnPointContext(this);
MMOCore.plugin.spawnPointManager.getSpawnPoint(id).whenRespawn(playerData); MMOCore.plugin.spawnPointManager.getSpawnPoint(id).whenRespawn(playerData);
} }
} }
public void save(ConfigurationSection section) {
section.set("id", id);
server.ifPresent((server) -> section.set("server", server));
}
@Override @Override
public @NotNull JsonObject toJson() { public @NotNull JsonObject toJson() {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();

View File

@ -1,13 +1,12 @@
package net.Indyuce.mmocore.spawnpoint.def; package net.Indyuce.mmocore.spawnpoint.def;
import io.lumine.mythic.lib.api.MMOLineConfig; import io.lumine.mythic.lib.api.MMOLineConfig;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.spawnpoint.SpawnPointContext; 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); 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();
}
}