forked from Upstream/mmocore
Removed SpawnPointContext and centralized everything into SpawnPoints directly.
This commit is contained in:
parent
c0d69a1e5a
commit
cbe31c5e73
@ -49,7 +49,7 @@ import net.Indyuce.mmocore.skill.cast.SkillCastingMode;
|
|||||||
import net.Indyuce.mmocore.skilltree.SkillTreeNode;
|
import net.Indyuce.mmocore.skilltree.SkillTreeNode;
|
||||||
import net.Indyuce.mmocore.skilltree.SkillTreeStatus;
|
import net.Indyuce.mmocore.skilltree.SkillTreeStatus;
|
||||||
import net.Indyuce.mmocore.skilltree.tree.SkillTree;
|
import net.Indyuce.mmocore.skilltree.tree.SkillTree;
|
||||||
import net.Indyuce.mmocore.spawnpoint.SpawnPointContext;
|
import net.Indyuce.mmocore.spawnpoint.SpawnPoint;
|
||||||
import net.Indyuce.mmocore.waypoint.Waypoint;
|
import net.Indyuce.mmocore.waypoint.Waypoint;
|
||||||
import net.Indyuce.mmocore.waypoint.WaypointOption;
|
import net.Indyuce.mmocore.waypoint.WaypointOption;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
@ -86,8 +86,8 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
|
|||||||
private double health;
|
private double health;
|
||||||
private Guild guild;
|
private Guild guild;
|
||||||
|
|
||||||
private SpawnPointContext lastSpawnPointContext;
|
private SpawnPoint lastSpawnPoint;
|
||||||
private SpawnPointContext lastUsedSpawnPointContext;
|
private SpawnPoint lastUsedSpawnPoint;
|
||||||
private SkillCastingInstance skillCasting;
|
private SkillCastingInstance skillCasting;
|
||||||
private final PlayerQuests questData;
|
private final PlayerQuests questData;
|
||||||
private final PlayerStats playerStats;
|
private final PlayerStats playerStats;
|
||||||
@ -203,10 +203,9 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
|
|||||||
* If he is dead this will be done when he respawns.
|
* If he is dead this will be done when he respawns.
|
||||||
*/
|
*/
|
||||||
public void setupSpawnPoint() {
|
public void setupSpawnPoint() {
|
||||||
if (lastSpawnPointContext != null && isOnline() && shouldTeleportWhenJoin && (lastSpawnPointContext.getServer().isEmpty() ||
|
if (lastSpawnPoint != null && isOnline() && shouldTeleportWhenJoin && !lastSpawnPoint.isOtherServer()
|
||||||
lastSpawnPointContext.getServer().get().equalsIgnoreCase(MMOCore.plugin.pluginMessageManager.getServerName()))
|
|
||||||
&& !getPlayer().isDead()) {
|
&& !getPlayer().isDead()) {
|
||||||
MMOCore.plugin.spawnPointManager.getSpawnPoint(lastSpawnPointContext.getId()).whenRespawn(this);
|
MMOCore.plugin.spawnPointManager.getSpawnPoint(lastSpawnPoint.getId()).whenRespawn(this);
|
||||||
shouldTeleportWhenJoin = false;
|
shouldTeleportWhenJoin = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -474,21 +473,21 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
|
|||||||
this.lastActivity.put(activity, timestamp);
|
this.lastActivity.put(activity, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpawnPointContext getLastSpawnPointContext() {
|
public SpawnPoint getLastSpawnPoint() {
|
||||||
return lastSpawnPointContext;
|
return lastSpawnPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpawnPointContext getLastUsedSpawnPointContext() {
|
public SpawnPoint getLastUsedSpawnPoint() {
|
||||||
return lastUsedSpawnPointContext;
|
return lastUsedSpawnPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setLastSpawnPointContext(SpawnPointContext lastSpawnPointContext) {
|
public void setLastSpawnPoint(SpawnPoint lastSpawnPoint) {
|
||||||
this.lastSpawnPointContext = lastSpawnPointContext;
|
this.lastSpawnPoint = lastSpawnPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastUsedSpawnPointContext(SpawnPointContext lastUsedSpawnPointContext) {
|
public void setLastUsedSpawnPoint(SpawnPoint lastUsedSpawnPoint) {
|
||||||
this.lastUsedSpawnPointContext = lastUsedSpawnPointContext;
|
this.lastUsedSpawnPoint = this.lastUsedSpawnPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setShouldTeleportWhenJoin(boolean shouldTeleport) {
|
public void setShouldTeleportWhenJoin(boolean shouldTeleport) {
|
||||||
|
@ -6,8 +6,6 @@ import io.lumine.mythic.lib.data.sql.SQLDataSynchronizer;
|
|||||||
import io.lumine.mythic.lib.gson.JsonArray;
|
import io.lumine.mythic.lib.gson.JsonArray;
|
||||||
import io.lumine.mythic.lib.gson.JsonElement;
|
import io.lumine.mythic.lib.gson.JsonElement;
|
||||||
import io.lumine.mythic.lib.gson.JsonObject;
|
import io.lumine.mythic.lib.gson.JsonObject;
|
||||||
import io.lumine.mythic.lib.gson.JsonParser;
|
|
||||||
|
|
||||||
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 net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
||||||
@ -17,7 +15,6 @@ import net.Indyuce.mmocore.guild.provided.Guild;
|
|||||||
import net.Indyuce.mmocore.skill.ClassSkill;
|
import net.Indyuce.mmocore.skill.ClassSkill;
|
||||||
import net.Indyuce.mmocore.skilltree.SkillTreeNode;
|
import net.Indyuce.mmocore.skilltree.SkillTreeNode;
|
||||||
import net.Indyuce.mmocore.skilltree.tree.SkillTree;
|
import net.Indyuce.mmocore.skilltree.tree.SkillTree;
|
||||||
import net.Indyuce.mmocore.spawnpoint.SpawnPointContext;
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.attribute.Attribute;
|
import org.bukkit.attribute.Attribute;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -93,9 +90,10 @@ public class MMOCoreDataSynchronizer extends SQLDataSynchronizer<PlayerData> {
|
|||||||
if (!isEmpty(result.getString("friends")))
|
if (!isEmpty(result.getString("friends")))
|
||||||
MMOCoreUtils.jsonArrayToList(result.getString("friends")).forEach(str -> getData().getFriends().add(UUID.fromString(str)));
|
MMOCoreUtils.jsonArrayToList(result.getString("friends")).forEach(str -> getData().getFriends().add(UUID.fromString(str)));
|
||||||
if (!isEmpty(result.getString("last_spawn_point")))
|
if (!isEmpty(result.getString("last_spawn_point")))
|
||||||
getData().setLastSpawnPointContext(new SpawnPointContext(new JsonParser().parseString(result.getString("last_spawn_point")).getAsJsonObject()));
|
getData().setLastSpawnPoint(MMOCore.plugin.spawnPointManager.getSpawnPoint(result.getString("last_spawn_point")));
|
||||||
|
|
||||||
if (!isEmpty(result.getString("last_used_spawn_point")))
|
if (!isEmpty(result.getString("last_used_spawn_point")))
|
||||||
getData().setLastUsedSpawnPointContext(new SpawnPointContext(new JsonParser().parseString(result.getString("last_spawn_point")).getAsJsonObject()));
|
getData().setLastUsedSpawnPoint(MMOCore.plugin.spawnPointManager.getSpawnPoint(result.getString("last_spawn_point")));
|
||||||
|
|
||||||
getData().setShouldTeleportWhenJoin(result.getBoolean("should_teleport_when_join"));
|
getData().setShouldTeleportWhenJoin(result.getBoolean("should_teleport_when_join"));
|
||||||
getData().setupSpawnPoint();
|
getData().setupSpawnPoint();
|
||||||
|
@ -126,8 +126,8 @@ public class SQLDataHandler extends SQLSynchronizedDataHandler<PlayerData, Offli
|
|||||||
updater.addData("professions", data.getCollectionSkills().toJsonString());
|
updater.addData("professions", data.getCollectionSkills().toJsonString());
|
||||||
updater.addData("quests", data.getQuestData().toJsonString());
|
updater.addData("quests", data.getQuestData().toJsonString());
|
||||||
updater.addData("class_info", createClassInfoData(data).toString());
|
updater.addData("class_info", createClassInfoData(data).toString());
|
||||||
updater.addData("last_spawn_point", data.getLastSpawnPointContext().toJson());
|
updater.addData("last_spawn_point", data.getLastSpawnPoint().getId());
|
||||||
updater.addData("last_used_spawn_point", data.getLastUsedSpawnPointContext().toJson());
|
updater.addData("last_used_spawn_point", data.getLastUsedSpawnPoint().getId());
|
||||||
updater.addJSONArray("unlocked_items", data.getUnlockedItems());
|
updater.addJSONArray("unlocked_items", data.getUnlockedItems());
|
||||||
if (!autosave)
|
if (!autosave)
|
||||||
updater.addData("is_saved", 1);
|
updater.addData("is_saved", 1);
|
||||||
|
@ -10,7 +10,6 @@ import net.Indyuce.mmocore.guild.provided.Guild;
|
|||||||
import net.Indyuce.mmocore.manager.data.OfflinePlayerData;
|
import net.Indyuce.mmocore.manager.data.OfflinePlayerData;
|
||||||
import net.Indyuce.mmocore.skill.ClassSkill;
|
import net.Indyuce.mmocore.skill.ClassSkill;
|
||||||
import net.Indyuce.mmocore.skilltree.SkillTreeNode;
|
import net.Indyuce.mmocore.skilltree.SkillTreeNode;
|
||||||
import net.Indyuce.mmocore.spawnpoint.SpawnPointContext;
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.attribute.Attribute;
|
import org.bukkit.attribute.Attribute;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
@ -135,14 +134,12 @@ public class YAMLPlayerDataHandler extends YAMLSynchronizedDataHandler<PlayerDat
|
|||||||
data.setMana(config.contains("mana") ? config.getDouble("mana") : data.getStats().getStat("MAX_MANA"));
|
data.setMana(config.contains("mana") ? config.getDouble("mana") : data.getStats().getStat("MAX_MANA"));
|
||||||
data.setStamina(config.contains("stamina") ? config.getDouble("stamina") : data.getStats().getStat("MAX_STAMINA"));
|
data.setStamina(config.contains("stamina") ? config.getDouble("stamina") : data.getStats().getStat("MAX_STAMINA"));
|
||||||
data.setStellium(config.contains("stellium") ? config.getDouble("stellium") : data.getStats().getStat("MAX_STELLIUM"));
|
data.setStellium(config.contains("stellium") ? config.getDouble("stellium") : data.getStats().getStat("MAX_STELLIUM"));
|
||||||
if (config.contains("last-spawn-point")) {
|
if (config.contains("last-spawn-point"))
|
||||||
data.setLastSpawnPointContext(new SpawnPointContext(config.getString("last-spawn-point.id"),
|
data.setLastSpawnPoint(MMOCore.plugin.spawnPointManager.getSpawnPoint(config.getString("last-spawn-point")));
|
||||||
Optional.ofNullable(config.getString("last-spawn-point.server"))));
|
|
||||||
}
|
if (config.contains("last-used-spawn-point"))
|
||||||
if (config.contains("last-used-spawn-point")) {
|
data.setLastUsedSpawnPoint(MMOCore.plugin.spawnPointManager.getSpawnPoint(config.getString("last-used-spawn-point")));
|
||||||
data.setLastUsedSpawnPointContext(new SpawnPointContext(config.getString("last-used-spawn-point.id"),
|
|
||||||
Optional.ofNullable(config.getString("last-used-spawn-point.server"))));
|
|
||||||
}
|
|
||||||
data.setShouldTeleportWhenJoin(config.getBoolean("should-teleport-when-join", false));
|
data.setShouldTeleportWhenJoin(config.getBoolean("should-teleport-when-join", false));
|
||||||
data.setupSpawnPoint();
|
data.setupSpawnPoint();
|
||||||
if (data.isOnline() && !data.getPlayer().isDead())
|
if (data.isOnline() && !data.getPlayer().isDead())
|
||||||
@ -182,10 +179,10 @@ public class YAMLPlayerDataHandler extends YAMLSynchronizedDataHandler<PlayerDat
|
|||||||
config.set("attribute", null);
|
config.set("attribute", null);
|
||||||
config.createSection("attribute");
|
config.createSection("attribute");
|
||||||
data.getAttributes().save(config.getConfigurationSection("attribute"));
|
data.getAttributes().save(config.getConfigurationSection("attribute"));
|
||||||
if (data.getLastSpawnPointContext() != null)
|
if (data.getLastSpawnPoint() != null)
|
||||||
data.getLastUsedSpawnPointContext().save(config.createSection("last-used-spawn-point"));
|
config.set("last-spawn-point", data.getLastSpawnPoint().getId());
|
||||||
if (data.getLastUsedSpawnPointContext() != null)
|
if (data.getLastUsedSpawnPoint() != null)
|
||||||
data.getLastUsedSpawnPointContext().save(config.createSection("last-used-spawn-point"));
|
config.set("last-used-spawn-point", data.getLastUsedSpawnPoint().getId());
|
||||||
config.set("profession", null);
|
config.set("profession", null);
|
||||||
config.createSection("profession");
|
config.createSection("profession");
|
||||||
data.getCollectionSkills().save(config.getConfigurationSection("profession"));
|
data.getCollectionSkills().save(config.getConfigurationSection("profession"));
|
||||||
|
@ -3,7 +3,6 @@ package net.Indyuce.mmocore.spawnpoint;
|
|||||||
import io.lumine.mythic.lib.MythicLib;
|
import io.lumine.mythic.lib.MythicLib;
|
||||||
import io.lumine.mythic.lib.UtilityMethods;
|
import io.lumine.mythic.lib.UtilityMethods;
|
||||||
import io.lumine.mythic.lib.api.player.EquipmentSlot;
|
import io.lumine.mythic.lib.api.player.EquipmentSlot;
|
||||||
import io.lumine.mythic.lib.player.PlayerMetadata;
|
|
||||||
import io.lumine.mythic.lib.script.Script;
|
import io.lumine.mythic.lib.script.Script;
|
||||||
import io.lumine.mythic.lib.script.condition.Condition;
|
import io.lumine.mythic.lib.script.condition.Condition;
|
||||||
import io.lumine.mythic.lib.skill.SimpleSkill;
|
import io.lumine.mythic.lib.skill.SimpleSkill;
|
||||||
@ -17,7 +16,6 @@ import net.Indyuce.mmocore.MMOCore;
|
|||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.player.Unlockable;
|
import net.Indyuce.mmocore.player.Unlockable;
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
@ -26,6 +24,8 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class SpawnPoint implements Unlockable {
|
public class SpawnPoint implements Unlockable {
|
||||||
private final String id;
|
private final String id;
|
||||||
|
|
||||||
|
private final Optional<String> server;
|
||||||
private final Location location;
|
private final Location location;
|
||||||
private final Condition unlockCondition;
|
private final Condition unlockCondition;
|
||||||
private final double strength;
|
private final double strength;
|
||||||
@ -37,6 +37,7 @@ public class SpawnPoint implements Unlockable {
|
|||||||
|
|
||||||
public SpawnPoint(ConfigurationSection section) {
|
public SpawnPoint(ConfigurationSection section) {
|
||||||
id = section.getName();
|
id = section.getName();
|
||||||
|
server = Optional.ofNullable(section.getString("server"));
|
||||||
location = UtilityMethods.readLocation(new ConfigSectionObject(section.getConfigurationSection("location")));
|
location = UtilityMethods.readLocation(new ConfigSectionObject(section.getConfigurationSection("location")));
|
||||||
Validate.isTrue(section.isConfigurationSection("unlock-condition"), "You must specify an unlock condition.");
|
Validate.isTrue(section.isConfigurationSection("unlock-condition"), "You must specify an unlock condition.");
|
||||||
unlockCondition = MythicLib.plugin.getSkills().loadCondition(
|
unlockCondition = MythicLib.plugin.getSkills().loadCondition(
|
||||||
@ -101,6 +102,10 @@ public class SpawnPoint implements Unlockable {
|
|||||||
unlockScript.ifPresent(skill -> skill.cast(triggerMetadata));
|
unlockScript.ifPresent(skill -> skill.cast(triggerMetadata));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isOtherServer() {
|
||||||
|
return !server.isEmpty() && server.get() != MMOCore.plugin.pluginMessageManager.getServerName();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean matchesCondition(PlayerData playerData) {
|
public boolean matchesCondition(PlayerData playerData) {
|
||||||
SkillMetadata metadata = new SkillMetadata(null, playerData.getMMOPlayerData());
|
SkillMetadata metadata = new SkillMetadata(null, playerData.getMMOPlayerData());
|
||||||
if (!overridesUnlockCondition && !MMOCore.plugin.spawnPointManager.getUnlockCondition()
|
if (!overridesUnlockCondition && !MMOCore.plugin.spawnPointManager.getUnlockCondition()
|
||||||
@ -110,9 +115,15 @@ public class SpawnPoint implements Unlockable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void whenRespawn(PlayerData playerData) {
|
public void whenRespawn(PlayerData playerData) {
|
||||||
|
if (isOtherServer()) {
|
||||||
|
MMOCore.plugin.pluginMessageManager.teleportToOtherServer(playerData, server.get());
|
||||||
|
} else {
|
||||||
|
playerData.setLastUsedSpawnPoint(this);
|
||||||
TriggerMetadata triggerMetadata = new TriggerMetadata(playerData.getMMOPlayerData().getStatMap().cache(EquipmentSlot.MAIN_HAND));
|
TriggerMetadata triggerMetadata = new TriggerMetadata(playerData.getMMOPlayerData().getStatMap().cache(EquipmentSlot.MAIN_HAND));
|
||||||
if (!overridesRespawnScript)
|
if (!overridesRespawnScript)
|
||||||
MMOCore.plugin.spawnPointManager.getRespawnScript().ifPresent(skill -> skill.cast(triggerMetadata));
|
MMOCore.plugin.spawnPointManager.getRespawnScript().ifPresent(skill -> skill.cast(triggerMetadata));
|
||||||
respawnScript.ifPresent(skill -> skill.cast(triggerMetadata));
|
respawnScript.ifPresent(skill -> skill.cast(triggerMetadata));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,71 +0,0 @@
|
|||||||
package net.Indyuce.mmocore.spawnpoint;
|
|
||||||
|
|
||||||
import io.lumine.mythic.lib.gson.JsonObject;
|
|
||||||
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;
|
|
||||||
|
|
||||||
public class SpawnPointContext implements Jsonable {
|
|
||||||
private final String id;
|
|
||||||
|
|
||||||
private final Optional<String> server;
|
|
||||||
|
|
||||||
public SpawnPointContext(String id) {
|
|
||||||
this.id = id;
|
|
||||||
this.server = Optional.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SpawnPointContext(String id, Optional<String> server) {
|
|
||||||
this.id = id;
|
|
||||||
this.server = server;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SpawnPointContext(JsonObject jsonObject) {
|
|
||||||
this.id = jsonObject.get("id").getAsString();
|
|
||||||
this.server = Optional.ofNullable(jsonObject.get("server")).map((jsonElement) -> jsonElement.getAsString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Optional<String> getServer() {
|
|
||||||
return server;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Location getLocation() {
|
|
||||||
return MMOCore.plugin.spawnPointManager.getSpawnPoint(id).getLocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isOtherServer() {
|
|
||||||
return !server.isEmpty() && server.get() != MMOCore.plugin.pluginMessageManager.getServerName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void whenRespawn(PlayerData playerData) {
|
|
||||||
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();
|
|
||||||
jsonObject.addProperty("id", id);
|
|
||||||
server.ifPresent((server) -> jsonObject.addProperty("server", server));
|
|
||||||
return jsonObject;
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,7 +3,6 @@ package net.Indyuce.mmocore.spawnpoint.def;
|
|||||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.spawnpoint.SpawnPoint;
|
import net.Indyuce.mmocore.spawnpoint.SpawnPoint;
|
||||||
import net.Indyuce.mmocore.spawnpoint.SpawnPointContext;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -28,6 +27,6 @@ public abstract class DefaultSpawnOption {
|
|||||||
return matcher.matches();
|
return matcher.matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract SpawnPointContext getSpawnPointContext(PlayerData playerData);
|
public abstract SpawnPoint getSpawnPoint(PlayerData playerData);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package net.Indyuce.mmocore.spawnpoint.def;
|
|||||||
|
|
||||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||||
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.SpawnPoint;
|
||||||
|
|
||||||
public class LastOption extends DefaultSpawnOption {
|
public class LastOption extends DefaultSpawnOption {
|
||||||
|
|
||||||
@ -11,8 +11,8 @@ public class LastOption extends DefaultSpawnOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SpawnPointContext getSpawnPointContext(PlayerData playerData) {
|
public SpawnPoint getSpawnPoint(PlayerData playerData) {
|
||||||
return playerData.getLastSpawnPointContext();
|
return playerData.getLastSpawnPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package net.Indyuce.mmocore.spawnpoint.def;
|
|||||||
|
|
||||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||||
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.SpawnPoint;
|
||||||
|
|
||||||
public class LastUsedOption extends DefaultSpawnOption {
|
public class LastUsedOption extends DefaultSpawnOption {
|
||||||
|
|
||||||
@ -11,8 +11,8 @@ public class LastUsedOption extends DefaultSpawnOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SpawnPointContext getSpawnPointContext(PlayerData playerData) {
|
public SpawnPoint getSpawnPoint(PlayerData playerData) {
|
||||||
return playerData.getLastSpawnPointContext();
|
return playerData.getLastSpawnPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,24 @@
|
|||||||
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.SpawnPoint;
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class SpawnPointOption extends DefaultSpawnOption {
|
public class SpawnPointOption extends DefaultSpawnOption {
|
||||||
private final SpawnPointContext spawnPointContext;
|
private final SpawnPoint spawnPoint;
|
||||||
|
|
||||||
public SpawnPointOption(MMOLineConfig config) {
|
public SpawnPointOption(MMOLineConfig config) {
|
||||||
super(config);
|
super(config);
|
||||||
spawnPointContext = new SpawnPointContext(config.getString("id"), config.contains("server") ?
|
Validate.isTrue(MMOCore.plugin.spawnPointManager.isSpawnPoint(config.getString("id")));
|
||||||
Optional.of(config.getString("server")) : Optional.empty());
|
spawnPoint = MMOCore.plugin.spawnPointManager.getSpawnPoint(config.getString("id"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SpawnPointContext getSpawnPointContext(PlayerData playerData) {
|
public SpawnPoint getSpawnPoint(PlayerData playerData) {
|
||||||
return spawnPointContext;
|
return spawnPoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package net.Indyuce.mmocore.listener;
|
|||||||
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 net.Indyuce.mmocore.spawnpoint.SpawnPoint;
|
import net.Indyuce.mmocore.spawnpoint.SpawnPoint;
|
||||||
import net.Indyuce.mmocore.spawnpoint.SpawnPointContext;
|
|
||||||
import net.Indyuce.mmocore.spawnpoint.def.DefaultSpawnOption;
|
import net.Indyuce.mmocore.spawnpoint.def.DefaultSpawnOption;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -23,7 +22,7 @@ public class SpawnPointsListener implements Listener {
|
|||||||
public void onTeleport(PlayerTeleportEvent event) {
|
public void onTeleport(PlayerTeleportEvent event) {
|
||||||
if (!event.getFrom().getWorld().equals(event.getTo().getWorld())) {
|
if (!event.getFrom().getWorld().equals(event.getTo().getWorld())) {
|
||||||
PlayerData playerData = PlayerData.get(event.getPlayer());
|
PlayerData playerData = PlayerData.get(event.getPlayer());
|
||||||
getLastSpawnPointContext(event.getFrom(), playerData).ifPresent(playerData::setLastSpawnPointContext);
|
getLastSpawnPoint(event.getFrom(), playerData).ifPresent(playerData::setLastSpawnPoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,28 +30,23 @@ public class SpawnPointsListener implements Listener {
|
|||||||
public void onDeath(PlayerDeathEvent event) {
|
public void onDeath(PlayerDeathEvent event) {
|
||||||
PlayerData playerData = PlayerData.get(event.getEntity());
|
PlayerData playerData = PlayerData.get(event.getEntity());
|
||||||
//TODO: Only when module enabled
|
//TODO: Only when module enabled
|
||||||
Optional<SpawnPointContext> context = getLastSpawnPointContext(playerData);
|
getLastSpawnPoint(playerData).ifPresent((spawnPoint) -> playerData.setLastSpawnPoint(spawnPoint));
|
||||||
if (context.isPresent()) {
|
|
||||||
SpawnPointContext spawnPointContext = context.get();
|
|
||||||
playerData.setLastSpawnPointContext(spawnPointContext);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onSpawn(PlayerRespawnEvent event) {
|
public void onSpawn(PlayerRespawnEvent event) {
|
||||||
PlayerData playerData = PlayerData.get(event.getPlayer());
|
PlayerData playerData = PlayerData.get(event.getPlayer());
|
||||||
Optional<SpawnPointContext> context = getLastSpawnPointContext(playerData);
|
getLastSpawnPoint(playerData).ifPresent((spawnPoint) ->
|
||||||
if (context.isPresent()) {
|
{
|
||||||
SpawnPointContext spawnPointContext = context.get();
|
if (!spawnPoint.isOtherServer())
|
||||||
if (!spawnPointContext.isOtherServer()) {
|
event.setRespawnLocation(spawnPoint.getLocation());
|
||||||
event.setRespawnLocation(spawnPointContext.getLocation());
|
|
||||||
|
spawnPoint.whenRespawn(playerData);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
spawnPointContext.whenRespawn(playerData);
|
public Optional<SpawnPoint> getLastSpawnPoint(Location location, PlayerData playerData) {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Optional<SpawnPointContext> getLastSpawnPointContext(Location location, PlayerData playerData) {
|
|
||||||
World world = location.getWorld();
|
World world = location.getWorld();
|
||||||
List<SpawnPoint> reachableSpawnPoints = MMOCore.plugin.spawnPointManager.
|
List<SpawnPoint> reachableSpawnPoints = MMOCore.plugin.spawnPointManager.
|
||||||
getAll()
|
getAll()
|
||||||
@ -71,19 +65,19 @@ public class SpawnPointsListener implements Listener {
|
|||||||
closestSpawnPoint = spawnPoint;
|
closestSpawnPoint = spawnPoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Optional.of(new SpawnPointContext(closestSpawnPoint.getId()));
|
return Optional.of(closestSpawnPoint);
|
||||||
} else
|
} else
|
||||||
for (DefaultSpawnOption defaultSpawnOption : MMOCore.plugin.spawnPointManager.getDefaultSpawnOptions()) {
|
for (DefaultSpawnOption defaultSpawnOption : MMOCore.plugin.spawnPointManager.getDefaultSpawnOptions()) {
|
||||||
Bukkit.broadcastMessage("world: " + world.getName() + " matches: " + defaultSpawnOption.matches(world));
|
Bukkit.broadcastMessage("world: " + world.getName() + " matches: " + defaultSpawnOption.matches(world));
|
||||||
if (defaultSpawnOption.matches(world)) {
|
if (defaultSpawnOption.matches(world)) {
|
||||||
return Optional.of(defaultSpawnOption.getSpawnPointContext(playerData));
|
return Optional.of(defaultSpawnOption.getSpawnPoint(playerData));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<SpawnPointContext> getLastSpawnPointContext(PlayerData playerData) {
|
public Optional<SpawnPoint> getLastSpawnPoint(PlayerData playerData) {
|
||||||
return getLastSpawnPointContext(playerData.getPlayer().getLocation(), playerData);
|
return getLastSpawnPoint(playerData.getPlayer().getLocation(), playerData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user