mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-02-03 11:31:21 +01:00
Added MMOItem and Vanilla crafting triggers.
This commit is contained in:
parent
8d876e49b0
commit
88398b85b8
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
@ -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));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user