This commit is contained in:
Ethan 2020-08-03 03:07:53 -04:00
parent 29df32d748
commit 00c28dd750
7 changed files with 118 additions and 55 deletions

View File

@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import net.Indyuce.mmoitems.comp.mythicmobs.MythicMobsLoader;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@ -253,6 +254,12 @@ public class MMOItems extends JavaPlugin {
new MMOItemsRewardTypes().register();
getLogger().log(Level.INFO, "Hooked onto BossShopPro");
}
// Will be used in the future.
//
// if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null) {
// new MythicMobsLoader();
// getLogger().log(Level.INFO, "Hooked onto MythicMobs");
// }
findRpgPlugin();

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.comp.mythicmobs;
import java.util.logging.Level;
import net.Indyuce.mmoitems.api.crafting.trigger.MMOItemTrigger;
import net.Indyuce.mmoitems.comp.mythicmobs.crafting.MythicItemIngredient;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
@ -37,10 +37,9 @@ public class MythicMobsHook implements Listener {
MythicMobs.inst().getPlaceholderManager().register("mmoitems.skill", Placeholder.meta((metadata, arg) -> String
.valueOf(PlayerData.get(metadata.getCaster().getEntity().getUniqueId()).getAbilityData().getCachedModifier(arg))));
Bukkit.getPluginManager().registerEvents(this, MMOItems.plugin);
MMOItems.plugin.getCrafting().registerIngredient("mythicitem", config -> new MythicItemIngredient(config),
new ConditionalDisplay("&8" + AltChar.check + " &7#amount# #item#", "&c" + AltChar.cross + " &7#amount# #item#"),
nbt -> nbt.hasTag("MYTHIC_TYPE"), nbt -> nbt.getString("MYTHIC_TYPE").toLowerCase());
//MMOItems.plugin.getCrafting().registerTrigger("mmskill", config -> new MythicMobsSkillTrigger(config));
// MMOItems.plugin.getCrafting().registerIngredient("mythicitem", config -> new MythicItemIngredient(config),
// new ConditionalDisplay("&8" + AltChar.check + " &7#amount# #item#", "&c" + AltChar.cross + " &7#amount# #item#"),
// nbt -> nbt.hasTag("MYTHIC_TYPE"), nbt -> nbt.getString("MYTHIC_TYPE").toLowerCase());
}
/*

View File

@ -0,0 +1,33 @@
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.Collection;
import java.util.LinkedList;
/*
* this loads mmoitems comp for mythic mobs
* since MythicMobsHook is never used
*/
public class MythicMobsLoader {
public MythicMobsLoader() {
for (String faction : this.getFactions()) {
MMOItems.plugin.getStats().register(new FactionDamage(faction));
}
}
private Collection<String> getFactions(){
Collection<String> allFactions = new LinkedList<>();
for (MythicMob mob : MythicMobs.inst().getMobManager().getMobTypes()) {
if (mob.getFaction() != null) {
if (!allFactions.contains(mob.getFaction()))
allFactions.add(mob.getFaction());
}
}
return allFactions;
}
}

View File

@ -1,49 +1,49 @@
package net.Indyuce.mmoitems.comp.mythicmobs;
import java.util.Optional;
import org.apache.commons.lang.Validate;
import org.bukkit.inventory.ItemStack;
import io.lumine.xikage.mythicmobs.MythicMobs;
import io.lumine.xikage.mythicmobs.adapters.bukkit.BukkitAdapter;
import io.lumine.xikage.mythicmobs.items.MythicItem;
import net.Indyuce.mmoitems.api.crafting.ingredient.Ingredient;
import net.mmogroup.mmolib.api.MMOLineConfig;
public class MythicItemIngredient extends Ingredient {
private final MythicItem mythicitem;
private final String display;
public MythicItemIngredient(MMOLineConfig config) {
super("mythicitem", config);
config.validate("item");
Optional<MythicItem> mmitem = MythicMobs.inst().getItemManager().getItem(config.getString("item"));
Validate.isTrue(mmitem.isPresent(), "Could not find MM Item with ID '" + mmitem.get() + "'");
display = config.contains("display") ? config.getString("display") : mmitem.get().getDisplayName();
mythicitem = mmitem.get();
}
@Override
public String getKey() {
return "mythicitem:" + mythicitem.getInternalName().toLowerCase();
}
@Override
public String formatLoreDisplay(String string) {
return string.replace("#item#", display).replace("#amount#", "" + getAmount());
}
@Override
public ItemStack generateItemStack() {
return BukkitAdapter.adapt(mythicitem.generateItemStack(getAmount()));
}
@Override
public String toString() {
return getKey();
}
}
package net.Indyuce.mmoitems.comp.mythicmobs.crafting;
import java.util.Optional;
import org.apache.commons.lang.Validate;
import org.bukkit.inventory.ItemStack;
import io.lumine.xikage.mythicmobs.MythicMobs;
import io.lumine.xikage.mythicmobs.adapters.bukkit.BukkitAdapter;
import io.lumine.xikage.mythicmobs.items.MythicItem;
import net.Indyuce.mmoitems.api.crafting.ingredient.Ingredient;
import net.mmogroup.mmolib.api.MMOLineConfig;
public class MythicItemIngredient extends Ingredient {
private final MythicItem mythicitem;
private final String display;
public MythicItemIngredient(MMOLineConfig config) {
super("mythicitem", config);
config.validate("item");
Optional<MythicItem> mmitem = MythicMobs.inst().getItemManager().getItem(config.getString("item"));
Validate.isTrue(mmitem.isPresent(), "Could not find MM Item with ID '" + mmitem.get() + "'");
display = config.contains("display") ? config.getString("display") : mmitem.get().getDisplayName();
mythicitem = mmitem.get();
}
@Override
public String getKey() {
return "mythicitem:" + mythicitem.getInternalName().toLowerCase();
}
@Override
public String formatLoreDisplay(String string) {
return string.replace("#item#", display).replace("#amount#", "" + getAmount());
}
@Override
public ItemStack generateItemStack() {
return BukkitAdapter.adapt(mythicitem.generateItemStack(getAmount()));
}
@Override
public String toString() {
return getKey();
}
}

View File

@ -1,4 +1,4 @@
package net.Indyuce.mmoitems.comp.mythicmobs;
package net.Indyuce.mmoitems.comp.mythicmobs.crafting;
import io.lumine.xikage.mythicmobs.MythicMobs;
import io.lumine.xikage.mythicmobs.skills.Skill;

View File

@ -0,0 +1,13 @@
package net.Indyuce.mmoitems.comp.mythicmobs.stat;
import net.Indyuce.mmoitems.stat.type.DoubleStat;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class FactionDamage extends DoubleStat {
public FactionDamage(String faction) {
super("FACTION_DAMAGE_" + faction.toUpperCase(), new ItemStack(Material.RED_DYE), faction + " Faction Damage", new String[] { "Deals additional damage to mobs", "from the " + faction + " faction in %." }, new String[] { "all" });
}
}

View File

@ -13,6 +13,9 @@ import java.util.function.Predicate;
import java.util.logging.Level;
import net.Indyuce.mmoitems.api.crafting.trigger.*;
import net.Indyuce.mmoitems.comp.mythicmobs.crafting.MythicItemIngredient;
import net.Indyuce.mmoitems.comp.mythicmobs.crafting.MythicMobsSkillTrigger;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import com.google.gson.JsonParser;
@ -72,6 +75,14 @@ public class CraftingManager {
int level = !upgradeString.isEmpty() ? new JsonParser().parse(upgradeString).getAsJsonObject().get("Level").getAsInt() : 0;
return item.getString("MMOITEMS_ITEM_TYPE").toLowerCase() + (level != 0 ? "-" + level : "") + "_" + item.getString("MMOITEMS_ITEM_ID").toLowerCase();
});
// mm comp
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null) {
registerIngredient("mythicitem", config -> new MythicItemIngredient(config),
new ConditionalDisplay("&8" + AltChar.check + " &7#amount# #item#", "&c" + AltChar.cross + " &7#amount# #item#"),
nbt -> nbt.hasTag("MYTHIC_TYPE"), nbt -> nbt.getString("MYTHIC_TYPE").toLowerCase());
registerTrigger("mmskill", config -> new MythicMobsSkillTrigger(config));
}
}
public void reload() {