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 b62ce558..927e7d70 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 @@ -29,6 +29,9 @@ public class DefaultMMOLoader extends MMOLoader { if (config.getKey().equals("unlock_slot")) return new UnlockSlotTrigger(config); + if (config.getKey().equals("unlock_spawn_point")) + return new UnlockSpawnPointTrigger(config); + if (config.getKey().equals("unlock_skill")) return new UnlockSkillTrigger(config); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSpawnPointTrigger.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSpawnPointTrigger.java new file mode 100644 index 00000000..6ac31b44 --- /dev/null +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/trigger/UnlockSpawnPointTrigger.java @@ -0,0 +1,33 @@ +package net.Indyuce.mmocore.api.quest.trigger; + +import io.lumine.mythic.lib.api.MMOLineConfig; +import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.skill.binding.SkillSlot; +import net.Indyuce.mmocore.api.quest.trigger.api.Removable; +import net.Indyuce.mmocore.spawnpoint.SpawnPoint; +import org.apache.commons.lang.Validate; + + +public class UnlockSpawnPointTrigger extends Trigger implements Removable { + private final SpawnPoint spawnPoint; + + public UnlockSpawnPointTrigger(MMOLineConfig config) { + super(config); + config.validateKeys("spawn-point"); + Validate.isTrue(MMOCore.plugin.spawnPointManager.isSpawnPoint(config.getString("spawn-point")), config.getString("spawn-point") + " is not a valid spawn point"); + spawnPoint = MMOCore.plugin.spawnPointManager.getSpawnPoint(config.getString("spawn-point")); + } + + @Override + public void apply(PlayerData player) { + if (!player.hasUnlocked(spawnPoint)) + player.unlock(spawnPoint); + } + + @Override + public void remove(PlayerData player) { + if (player.hasUnlocked(spawnPoint)) + player.lock(spawnPoint); + } +}