forked from Upstream/mmocore
Creation of SkillBuffTrigger.
This commit is contained in:
parent
14f1a7fcc2
commit
0f4699fbea
@ -0,0 +1,50 @@
|
||||
package net.Indyuce.mmocore.api.quest.trigger;
|
||||
|
||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||
import io.lumine.mythic.lib.api.skill.SkillBuff;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.quest.trigger.api.Removable;
|
||||
import net.Indyuce.mmocore.skill.RegisteredSkill;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class SkillBuffTrigger extends Trigger implements Removable {
|
||||
private final SkillBuff skillBuff;
|
||||
private final String buffKey = TRIGGER_PREFIX + "." + UUID.randomUUID();
|
||||
private final double amount;
|
||||
|
||||
|
||||
public SkillBuffTrigger(MMOLineConfig config) {
|
||||
super(config);
|
||||
config.validateKeys("skill-modifier");
|
||||
config.validateKeys("amount");
|
||||
config.validateKeys("formula");
|
||||
config.validateKeys("type");
|
||||
amount = config.getDouble("amount");
|
||||
String skillModifier = config.getString("skill-modifier");
|
||||
String formula = config.getString("formula");
|
||||
List<String> targetSkills = new ArrayList<>();
|
||||
for (RegisteredSkill skill : MMOCore.plugin.skillManager.getAll()) {
|
||||
if (skill.matchesFormula(formula))
|
||||
targetSkills.add(skill.getHandler().getId());
|
||||
}
|
||||
skillBuff = new SkillBuff(buffKey, skillModifier, targetSkills, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(PlayerData player) {
|
||||
if (player.getMMOPlayerData().getSkillBuffMap().hasSkillBuff(buffKey)) {
|
||||
player.getMMOPlayerData().getSkillBuffMap().getSkillBuff(buffKey).add(amount).register(player.getMMOPlayerData());
|
||||
} else {
|
||||
skillBuff.register(player.getMMOPlayerData());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(PlayerData playerData) {
|
||||
skillBuff.unregister(playerData.getMMOPlayerData());
|
||||
}
|
||||
}
|
@ -10,7 +10,6 @@ import org.apache.commons.lang.Validate;
|
||||
import java.util.UUID;
|
||||
|
||||
public class StatTrigger extends Trigger implements Removable {
|
||||
public static String TRIGGER_PREFIX = "mmocore_trigger";
|
||||
private final StatModifier statModifier;
|
||||
private final String stat;
|
||||
private final String modifierKey = TRIGGER_PREFIX + "." + UUID.randomUUID();
|
||||
|
@ -6,6 +6,8 @@ import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public abstract class Trigger {
|
||||
|
||||
public static String TRIGGER_PREFIX = "mmocore_trigger";
|
||||
private final long delay;
|
||||
|
||||
public Trigger(MMOLineConfig config) {
|
||||
|
Loading…
Reference in New Issue
Block a user