mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-02-01 11:11:21 +01:00
/mm reload now updates custom abilities
This commit is contained in:
parent
c2d5043af4
commit
b041efc62e
2
pom.xml
2
pom.xml
@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>net.Indyuce</groupId>
|
||||
<artifactId>MMOItems</artifactId>
|
||||
<version>6.6.3</version>
|
||||
<version>6.6.4</version>
|
||||
<name>MMOItems</name>
|
||||
<description>A great item solution for your RPG server!!</description>
|
||||
|
||||
|
@ -24,7 +24,6 @@ import net.Indyuce.mmoitems.comp.McMMONonRPGHook;
|
||||
import net.Indyuce.mmoitems.comp.PhatLootsHook;
|
||||
import net.Indyuce.mmoitems.comp.RealDualWieldHook;
|
||||
import net.Indyuce.mmoitems.comp.WorldEditSupport;
|
||||
import net.Indyuce.mmoitems.comp.denizen.DenizenHook;
|
||||
import net.Indyuce.mmoitems.comp.eco.VaultSupport;
|
||||
import net.Indyuce.mmoitems.comp.enchants.CrazyEnchantsStat;
|
||||
import net.Indyuce.mmoitems.comp.enchants.EnchantPlugin;
|
||||
@ -40,7 +39,7 @@ import net.Indyuce.mmoitems.comp.itemglow.NoGlowListener;
|
||||
import net.Indyuce.mmoitems.comp.mmocore.MMOCoreMMOLoader;
|
||||
import net.Indyuce.mmoitems.comp.mmoinventory.MMOInventorySupport;
|
||||
import net.Indyuce.mmoitems.comp.mythicmobs.LootsplosionListener;
|
||||
import net.Indyuce.mmoitems.comp.mythicmobs.MythicMobsLoader;
|
||||
import net.Indyuce.mmoitems.comp.mythicmobs.MythicMobsCompatibility;
|
||||
import net.Indyuce.mmoitems.comp.parse.StringInputParser;
|
||||
import net.Indyuce.mmoitems.comp.parse.placeholders.DefaultPlaceholderParser;
|
||||
import net.Indyuce.mmoitems.comp.parse.placeholders.PlaceholderAPIParser;
|
||||
@ -184,7 +183,7 @@ public class MMOItems extends LuminePlugin {
|
||||
|
||||
// registering here so the stats will load with the templates
|
||||
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null) {
|
||||
new MythicMobsLoader();
|
||||
new MythicMobsCompatibility();
|
||||
if (getConfig().getBoolean("lootsplosion.enabled")) Bukkit.getPluginManager().registerEvents(new LootsplosionListener(), this);
|
||||
getLogger().log(Level.INFO, "Hooked onto MythicMobs");
|
||||
}
|
||||
|
@ -0,0 +1,61 @@
|
||||
package net.Indyuce.mmoitems.comp.mythicmobs;
|
||||
|
||||
import io.lumine.xikage.mythicmobs.MythicMobs;
|
||||
import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicReloadedEvent;
|
||||
import io.lumine.xikage.mythicmobs.mobs.MythicMob;
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.comp.mythicmobs.skill.MythicMobsAbility;
|
||||
import net.Indyuce.mmoitems.comp.mythicmobs.stat.FactionDamage;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class MythicMobsCompatibility implements Listener {
|
||||
|
||||
public MythicMobsCompatibility() {
|
||||
|
||||
// Gonna keep the try catch here for a safety net.
|
||||
try {
|
||||
for (String faction : this.getFactions())
|
||||
MMOItems.plugin.getStats().register(new FactionDamage(faction));
|
||||
} catch (NullPointerException ignored) {
|
||||
}
|
||||
|
||||
Bukkit.getPluginManager().registerEvents(this, MMOItems.plugin);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void a(MythicReloadedEvent event) {
|
||||
|
||||
// Update skills
|
||||
MMOItems.plugin.getAbilities().getAll().stream().filter(ability -> ability instanceof MythicMobsAbility).map(ability -> (MythicMobsAbility) ability).forEach(ability -> {
|
||||
try {
|
||||
Optional<io.lumine.xikage.mythicmobs.skills.Skill> opt = MythicMobs.inst().getSkillManager().getSkill(ability.getInternalName());
|
||||
Validate.isTrue(opt.isPresent(), "Could not find MM skill with name '" + ability.getInternalName() + "'");
|
||||
ability.setSkill(opt.get());
|
||||
} catch (IllegalArgumentException exception) {
|
||||
MMOItems.plugin.getLogger().log(Level.WARNING, "Could not reload custom MM ability '" + ability.getID() + "': " + exception.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Set<String> getFactions() {
|
||||
Set<String> allFactions = new HashSet<>();
|
||||
|
||||
// Collects all mythic mobs + edited vanilla mobs in mythic mobs.
|
||||
List<MythicMob> mobs = new ArrayList<>(MythicMobs.inst().getMobManager().getVanillaTypes());
|
||||
mobs.addAll(MythicMobs.inst().getMobManager().getMobTypes());
|
||||
// Adds their faction to the set if it is set.
|
||||
|
||||
for (MythicMob mob : mobs)
|
||||
// Checks if it has a faction.
|
||||
if (mob.hasFaction())
|
||||
allFactions.add(mob.getFaction());
|
||||
|
||||
return allFactions;
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package net.Indyuce.mmoitems.comp.mythicmobs;
|
||||
|
||||
import io.lumine.xikage.mythicmobs.MythicMobs;
|
||||
import io.lumine.xikage.mythicmobs.mobs.MythicMob;
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.comp.mythicmobs.stat.FactionDamage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class MythicMobsLoader {
|
||||
|
||||
public MythicMobsLoader() {
|
||||
// Gonna keep the try catch here for a safety net.
|
||||
try {
|
||||
for (String faction : this.getFactions()) {
|
||||
MMOItems.plugin.getStats().register(new FactionDamage(faction));
|
||||
}
|
||||
} catch (NullPointerException ignored) {}
|
||||
}
|
||||
|
||||
private Set<String> getFactions(){
|
||||
// Returned Set.
|
||||
Set<String> allFactions = new HashSet<>();
|
||||
// Collects all mythic mobs + edited vanilla mobs in mythic mobs.
|
||||
List<MythicMob> mobs = new ArrayList<>(MythicMobs.inst().getMobManager().getVanillaTypes());
|
||||
mobs.addAll(MythicMobs.inst().getMobManager().getMobTypes());
|
||||
// Adds their faction to the set if it is set.
|
||||
for (MythicMob mob : mobs) {
|
||||
// Checks if it has a faction.
|
||||
if (mob.hasFaction())
|
||||
allFactions.add(mob.getFaction());
|
||||
}
|
||||
return allFactions;
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.Indyuce.mmoitems.comp.mythicmobs.skill;
|
||||
|
||||
import io.lumine.mythic.lib.damage.AttackMetadata;
|
||||
import io.lumine.xikage.mythicmobs.MythicMobs;
|
||||
import io.lumine.xikage.mythicmobs.adapters.AbstractEntity;
|
||||
import io.lumine.xikage.mythicmobs.adapters.AbstractLocation;
|
||||
@ -10,7 +11,6 @@ import io.lumine.xikage.mythicmobs.skills.SkillCaster;
|
||||
import io.lumine.xikage.mythicmobs.skills.SkillMetadata;
|
||||
import io.lumine.xikage.mythicmobs.skills.SkillTrigger;
|
||||
import net.Indyuce.mmoitems.ability.Ability;
|
||||
import io.lumine.mythic.lib.damage.AttackMetadata;
|
||||
import net.Indyuce.mmoitems.stat.data.AbilityData;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@ -20,7 +20,7 @@ import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
|
||||
public class MythicMobsAbility extends Ability<MythicMobsAbilityMetadata> {
|
||||
private final Skill skill;
|
||||
private Skill skill;
|
||||
|
||||
public MythicMobsAbility(String id, FileConfiguration config) {
|
||||
super(id, config.getString("name"));
|
||||
@ -29,7 +29,7 @@ public class MythicMobsAbility extends Ability<MythicMobsAbilityMetadata> {
|
||||
Validate.notNull(skillName, "Could not find MM skill name");
|
||||
|
||||
Optional<io.lumine.xikage.mythicmobs.skills.Skill> opt = MythicMobs.inst().getSkillManager().getSkill(skillName);
|
||||
Validate.isTrue(opt.isPresent(), "Could not find MM skill " + skillName);
|
||||
Validate.isTrue(opt.isPresent(), "Could not find MM skill with name '" + skillName + "'");
|
||||
skill = opt.get();
|
||||
|
||||
addModifier("cooldown", 10);
|
||||
@ -45,6 +45,10 @@ public class MythicMobsAbility extends Ability<MythicMobsAbilityMetadata> {
|
||||
return skill.getInternalName();
|
||||
}
|
||||
|
||||
public void setSkill(Skill skill) {
|
||||
this.skill = skill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenCast(AttackMetadata attackMeta, MythicMobsAbilityMetadata ability) {
|
||||
skill.execute(ability.getSkillMetadata());
|
||||
|
Loading…
Reference in New Issue
Block a user