package de.flo56958.minetinker.modifiers.types; import de.flo56958.minetinker.MineTinker; import de.flo56958.minetinker.data.ToolType; import de.flo56958.minetinker.modifiers.Modifier; import de.flo56958.minetinker.utils.ConfigurationManager; import org.bukkit.Material; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.io.File; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class Haste extends Modifier { private static Haste instance; private Haste() { super(MineTinker.getPlugin()); customModelData = 10_013; } public static Haste instance() { synchronized (Haste.class) { if (instance == null) { instance = new Haste(); } } return instance; } @Override public String getKey() { return "Haste"; } @Override public List<ToolType> getAllowedTools() { return Arrays.asList(ToolType.AXE, ToolType.CROSSBOW, ToolType.PICKAXE, ToolType.SHOVEL, ToolType.SHEARS, ToolType.FISHINGROD); } @Override public List<Enchantment> getAppliedEnchantments() { return Arrays.asList(Enchantment.LURE, Enchantment.DIG_SPEED, Enchantment.QUICK_CHARGE); } @Override public void reload() { FileConfiguration config = getConfig(); config.options().copyDefaults(true); config.addDefault("Allowed", true); config.addDefault("Color", "%DARK_RED%"); config.addDefault("MaxLevel", 5); config.addDefault("SlotCost", 1); config.addDefault("EnchantCost", 10); config.addDefault("Enchantable", false); config.addDefault("Recipe.Enabled", true); config.addDefault("Recipe.Top", "RDR"); config.addDefault("Recipe.Middle", "GRG"); config.addDefault("Recipe.Bottom", "RDR"); Map<String, String> recipeMaterials = new HashMap<>(); recipeMaterials.put("R", Material.REDSTONE_BLOCK.name()); recipeMaterials.put("G", Material.GOLD_INGOT.name()); recipeMaterials.put("D", Material.DIAMOND.name()); config.addDefault("Recipe.Materials", recipeMaterials); ConfigurationManager.saveConfig(config); ConfigurationManager.loadConfig("Modifiers" + File.separator, getFileName()); init(Material.REDSTONE_BLOCK); } @Override public boolean applyMod(Player player, ItemStack tool, boolean isCommand) { ItemMeta meta = tool.getItemMeta(); if (meta != null) { if (ToolType.FISHINGROD.contains(tool.getType())) { meta.addEnchant(Enchantment.LURE, modManager.getModLevel(tool, this), true); } else if (ToolType.CROSSBOW.contains(tool.getType())) { meta.addEnchant(Enchantment.QUICK_CHARGE, modManager.getModLevel(tool, this), true); } else { meta.addEnchant(Enchantment.DIG_SPEED, modManager.getModLevel(tool, this), true); } tool.setItemMeta(meta); } return true; } }