Added MMOItem and Vanilla crafting triggers.

This commit is contained in:
Ethan 2020-08-01 18:57:39 -04:00
parent 8d876e49b0
commit 88398b85b8
6 changed files with 109 additions and 6 deletions

View File

@ -0,0 +1,41 @@
package net.Indyuce.mmoitems.api.crafting.trigger;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.Type;
import net.Indyuce.mmoitems.api.player.PlayerData;
import net.mmogroup.mmolib.api.MMOLineConfig;
import net.mmogroup.mmolib.api.util.SmartGive;
import org.apache.commons.lang.Validate;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class MMOItemTrigger extends Trigger {
private final Type type;
private final String id;
private final int amount;
public MMOItemTrigger(MMOLineConfig config) {
super("mmoitem");
config.validate("type", "id");
String format = config.getString("type").toUpperCase().replace("-", "_").replace(" ", "_");
Validate.isTrue(MMOItems.plugin.getTypes().has(format), "Could not find item type " + format);
type = MMOItems.plugin.getTypes().get(format);
id = config.getString("id").replace("-", "_").toUpperCase();
amount = config.args().length > 0 ? Math.max(1, Integer.parseInt(config.args()[0])) : 1;
Validate.isTrue(type.getConfigFile().getConfig().contains(id), "Could not find item id " + id);
}
@Override
public void whenCrafting(PlayerData data) {
ItemStack item = MMOItems.plugin.getItems().getItem(type, id);
if (item == null || item.getType() == Material.AIR)
return;
item.setAmount(amount);
if (item != null && item.getType() != Material.AIR)
new SmartGive(data.getPlayer()).give(item);
}
}

View File

@ -19,7 +19,7 @@ public class SoundTrigger extends Trigger {
}
@Override
public void whenCrafting(PlayerData player) {
player.getPlayer().playSound(player.getPlayer().getLocation(), sound, vol, pitch);
public void whenCrafting(PlayerData data) {
data.getPlayer().playSound(data.getPlayer().getLocation(), sound, vol, pitch);
}
}

View File

@ -0,0 +1,26 @@
package net.Indyuce.mmoitems.api.crafting.trigger;
import net.Indyuce.mmoitems.api.player.PlayerData;
import net.mmogroup.mmolib.api.MMOLineConfig;
import net.mmogroup.mmolib.api.util.SmartGive;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class VanillaTrigger extends Trigger {
private final Material material;
private final int amount;
public VanillaTrigger(MMOLineConfig config) {
super("vanilla");
config.validate("type");
material = Material.valueOf(config.getString("type").toUpperCase().replace("-", "_"));
amount = config.contains("amount") ? Math.max(1, config.getInt("amount")) : 1;
}
@Override
public void whenCrafting(PlayerData data) {
new SmartGive(data.getPlayer()).give(new ItemStack(material, amount));
}
}

View File

@ -2,6 +2,7 @@ package net.Indyuce.mmoitems.comp.mythicmobs;
import java.util.logging.Level;
import net.Indyuce.mmoitems.api.crafting.trigger.MMOItemTrigger;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
@ -39,6 +40,7 @@ public class MythicMobsHook implements Listener {
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));
}
/*

View File

@ -0,0 +1,35 @@
package net.Indyuce.mmoitems.comp.mythicmobs;
import io.lumine.xikage.mythicmobs.MythicMobs;
import io.lumine.xikage.mythicmobs.skills.Skill;
import net.Indyuce.mmoitems.api.crafting.trigger.Trigger;
import net.Indyuce.mmoitems.api.player.PlayerData;
import net.mmogroup.mmolib.api.MMOLineConfig;
import org.apache.commons.lang.Validate;
import org.bukkit.entity.Entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class MythicMobsSkillTrigger extends Trigger {
private final Skill skill;
public MythicMobsSkillTrigger(MMOLineConfig config) {
super("mmskill");
config.validate("id");
String id = config.getString("id");
Optional<Skill> opt = MythicMobs.inst().getSkillManager().getSkill(id);
Validate.isTrue(opt.isPresent(), "Could not find MM skill " + id);
skill = opt.get();
}
@Override
public void whenCrafting(PlayerData data) {
List<Entity> targets = new ArrayList<>();
targets.add(data.getPlayer());
MythicMobs.inst().getAPIHelper().castSkill(data.getPlayer(), this.skill.getInternalName(), data.getPlayer(), data.getPlayer().getEyeLocation(), targets, null, 1);
}
}

View File

@ -12,9 +12,7 @@ import java.util.function.Function;
import java.util.function.Predicate;
import java.util.logging.Level;
import net.Indyuce.mmoitems.api.crafting.trigger.CommandTrigger;
import net.Indyuce.mmoitems.api.crafting.trigger.MessageTrigger;
import net.Indyuce.mmoitems.api.crafting.trigger.SoundTrigger;
import net.Indyuce.mmoitems.api.crafting.trigger.*;
import org.bukkit.configuration.file.YamlConfiguration;
import com.google.gson.JsonParser;
@ -34,7 +32,6 @@ import net.Indyuce.mmoitems.api.crafting.condition.StaminaCondition;
import net.Indyuce.mmoitems.api.crafting.ingredient.Ingredient;
import net.Indyuce.mmoitems.api.crafting.ingredient.MMOItemIngredient;
import net.Indyuce.mmoitems.api.crafting.ingredient.VanillaIngredient;
import net.Indyuce.mmoitems.api.crafting.trigger.Trigger;
import net.mmogroup.mmolib.api.util.AltChar;
import net.mmogroup.mmolib.api.MMOLineConfig;
import net.mmogroup.mmolib.api.item.NBTItem;
@ -65,6 +62,8 @@ public class CraftingManager {
registerTrigger("command", config -> new CommandTrigger(config));
registerTrigger("message", config -> new MessageTrigger(config));
registerTrigger("sound", config -> new SoundTrigger(config));
registerTrigger("vanilla", config -> new VanillaTrigger(config));
registerTrigger("mmoitem", config -> new MMOItemTrigger(config));
// ingredients
registerIngredient("vanilla", config -> new VanillaIngredient(config), new ConditionalDisplay("&8" + AltChar.check + " &7#amount# #item#", "&c" + AltChar.cross + " &7#amount# #item#"), nbt -> true, item -> item.getItem().getType().name().toLowerCase() + "_" + (item.getItem().hasItemMeta() ? item.getItem().getItemMeta().getDisplayName() : null));