forked from Upstream/mmocore
new scripting items
This commit is contained in:
parent
add8b00609
commit
7efdf5b017
@ -48,6 +48,10 @@ import net.Indyuce.mmocore.party.PartyModule;
|
||||
import net.Indyuce.mmocore.party.PartyModuleType;
|
||||
import net.Indyuce.mmocore.party.provided.MMOCorePartyModule;
|
||||
import net.Indyuce.mmocore.skill.cast.SkillCastingMode;
|
||||
import net.Indyuce.mmocore.skill.custom.mechanic.ExperienceMechanic;
|
||||
import net.Indyuce.mmocore.skill.custom.mechanic.ManaMechanic;
|
||||
import net.Indyuce.mmocore.skill.custom.mechanic.StaminaMechanic;
|
||||
import net.Indyuce.mmocore.skill.custom.mechanic.StelliumMechanic;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -117,6 +121,12 @@ public class MMOCore extends LuminePlugin {
|
||||
MythicLib.plugin.getEntities().registerRestriction(new MMOCoreTargetRestriction());
|
||||
MythicLib.plugin.getModifiers().registerModifierType("attribute", configObject -> new AttributeModifier(configObject));
|
||||
|
||||
// Skill creation
|
||||
MythicLib.plugin.getSkills().registerMechanic("mana", config -> new ManaMechanic(config));
|
||||
MythicLib.plugin.getSkills().registerMechanic("stamina", config -> new StaminaMechanic(config));
|
||||
MythicLib.plugin.getSkills().registerMechanic("stellium", config -> new StelliumMechanic(config));
|
||||
MythicLib.plugin.getSkills().registerMechanic("experience", config -> new ExperienceMechanic(config));
|
||||
|
||||
// Register extra objective, drop items...
|
||||
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null)
|
||||
loadManager.registerLoader(new WorldGuardMMOLoader());
|
||||
|
@ -0,0 +1,46 @@
|
||||
package net.Indyuce.mmocore.skill.custom.mechanic;
|
||||
|
||||
import io.lumine.mythic.lib.skill.SkillMetadata;
|
||||
import io.lumine.mythic.lib.skill.custom.mechanic.type.TargetMechanic;
|
||||
import io.lumine.mythic.lib.util.DoubleFormula;
|
||||
import io.lumine.mythic.lib.util.configobject.ConfigObject;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.experience.EXPSource;
|
||||
import net.Indyuce.mmocore.experience.SimpleExperienceObject;
|
||||
import net.Indyuce.mmocore.experience.dispenser.ExperienceDispenser;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ExperienceMechanic extends TargetMechanic {
|
||||
@NotNull
|
||||
private final DoubleFormula amount;
|
||||
@NotNull
|
||||
private final EXPSource source;
|
||||
@NotNull
|
||||
private final ExperienceDispenser dispenser;
|
||||
|
||||
public ExperienceMechanic(ConfigObject config) {
|
||||
super(config);
|
||||
|
||||
config.validateKeys("amount");
|
||||
amount = config.getDoubleFormula("amount");
|
||||
|
||||
if (config.contains("profession")) {
|
||||
String id = config.getString("profession").toLowerCase().replace("_", "-");
|
||||
Validate.isTrue(MMOCore.plugin.professionManager.has(id), "Could not find profession");
|
||||
dispenser = MMOCore.plugin.professionManager.get(id);
|
||||
} else
|
||||
dispenser = new SimpleExperienceObject();
|
||||
source = config.contains("source") ? EXPSource.valueOf(config.getString("source").toUpperCase()) : EXPSource.QUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cast(SkillMetadata meta, Entity target) {
|
||||
Validate.isTrue(target instanceof Player, "Target is not a player");
|
||||
PlayerData targetData = PlayerData.get(target.getUniqueId());
|
||||
dispenser.giveExperience(targetData, amount.evaluate(meta), null, source);
|
||||
}
|
||||
}
|
@ -13,6 +13,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class ManaMechanic extends TargetMechanic {
|
||||
private final DoubleFormula amount;
|
||||
private final Operation operation;
|
||||
private final PlayerResourceUpdateEvent.UpdateReason reason;
|
||||
|
||||
public ManaMechanic(ConfigObject config) {
|
||||
@ -22,12 +23,18 @@ public class ManaMechanic extends TargetMechanic {
|
||||
|
||||
amount = new DoubleFormula(config.getString("amount"));
|
||||
reason = PlayerResourceUpdateEvent.UpdateReason.valueOf(UtilityMethods.enumName(config.getString("reason", "CUSTOM")));
|
||||
operation = config.contains("operation") ? Operation.valueOf(config.getString("operation").toUpperCase()) : Operation.GIVE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cast(SkillMetadata meta, Entity target) {
|
||||
Validate.isTrue(target instanceof Player, "Target is not a player");
|
||||
PlayerData targetData = PlayerData.get(target.getUniqueId());
|
||||
targetData.giveMana(amount.evaluate(meta), reason);
|
||||
if (operation == Operation.GIVE)
|
||||
targetData.giveMana(amount.evaluate(meta), reason);
|
||||
else if (operation == Operation.SET)
|
||||
targetData.setMana(amount.evaluate(meta));
|
||||
else if (operation == Operation.TAKE)
|
||||
targetData.giveMana(-amount.evaluate(meta), reason);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
package net.Indyuce.mmocore.skill.custom.mechanic;
|
||||
|
||||
public enum Operation {
|
||||
GIVE,
|
||||
SET,
|
||||
TAKE
|
||||
}
|
@ -13,6 +13,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class StaminaMechanic extends TargetMechanic {
|
||||
private final DoubleFormula amount;
|
||||
private final Operation operation;
|
||||
private final PlayerResourceUpdateEvent.UpdateReason reason;
|
||||
|
||||
public StaminaMechanic(ConfigObject config) {
|
||||
@ -22,12 +23,18 @@ public class StaminaMechanic extends TargetMechanic {
|
||||
|
||||
amount = new DoubleFormula(config.getString("amount"));
|
||||
reason = PlayerResourceUpdateEvent.UpdateReason.valueOf(UtilityMethods.enumName(config.getString("reason", "CUSTOM")));
|
||||
operation = config.contains("operation") ? Operation.valueOf(config.getString("operation").toUpperCase()) : Operation.GIVE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cast(SkillMetadata meta, Entity target) {
|
||||
Validate.isTrue(target instanceof Player, "Target is not a player");
|
||||
PlayerData targetData = PlayerData.get(target.getUniqueId());
|
||||
targetData.giveStamina(amount.evaluate(meta), reason);
|
||||
if (operation == Operation.GIVE)
|
||||
targetData.giveStamina(amount.evaluate(meta), reason);
|
||||
else if (operation == Operation.SET)
|
||||
targetData.setStamina(amount.evaluate(meta));
|
||||
else if (operation == Operation.TAKE)
|
||||
targetData.giveStamina(-amount.evaluate(meta), reason);
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class StelliumMechanic extends TargetMechanic {
|
||||
private final DoubleFormula amount;
|
||||
private final Operation operation;
|
||||
private final PlayerResourceUpdateEvent.UpdateReason reason;
|
||||
|
||||
public StelliumMechanic(ConfigObject config) {
|
||||
@ -22,12 +23,18 @@ public class StelliumMechanic extends TargetMechanic {
|
||||
|
||||
amount = new DoubleFormula(config.getString("amount"));
|
||||
reason = PlayerResourceUpdateEvent.UpdateReason.valueOf(UtilityMethods.enumName(config.getString("reason", "CUSTOM")));
|
||||
operation = config.contains("operation") ? Operation.valueOf(config.getString("operation").toUpperCase()) : Operation.GIVE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cast(SkillMetadata meta, Entity target) {
|
||||
Validate.isTrue(target instanceof Player, "Target is not a player");
|
||||
PlayerData targetData = PlayerData.get(target.getUniqueId());
|
||||
targetData.giveStellium(amount.evaluate(meta), reason);
|
||||
if (operation == Operation.GIVE)
|
||||
targetData.giveStellium(amount.evaluate(meta), reason);
|
||||
else if (operation == Operation.SET)
|
||||
targetData.setStellium(amount.evaluate(meta));
|
||||
else if (operation == Operation.TAKE)
|
||||
targetData.giveStellium(-amount.evaluate(meta), reason);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user