311 lines
18 KiB
Java
311 lines
18 KiB
Java
package hu.jgj52.wolfFFA.Commands;
|
|
|
|
import hu.jgj52.wolfFFA.Main;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.command.TabCompleter;
|
|
import org.bukkit.enchantments.Enchantment;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
import org.bukkit.inventory.meta.PotionMeta;
|
|
import org.bukkit.potion.PotionEffect;
|
|
import org.bukkit.potion.PotionEffectType;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class EditKitCommand implements CommandExecutor, TabCompleter {
|
|
private final Main plugin;
|
|
|
|
public EditKitCommand(Main plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
private int getItemSlot(String key, String kit, Player player) {
|
|
String path = "kits." + kit + "." + player.getUniqueId() + "." + key;
|
|
|
|
if (plugin.getConfig().contains(path)) {
|
|
try {
|
|
return plugin.getConfig().getInt(path);
|
|
} catch (NumberFormatException e) {
|
|
plugin.getLogger().warning("Invalid slot number in config for " + path);
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
private @NotNull List<Integer> getItemSlotArray(String key, String kit, Player player) {
|
|
String path = "kits." + kit + "." + player.getUniqueId() + "." + key;
|
|
|
|
if (plugin.getConfig().contains(path)) {
|
|
List<Integer> slots = plugin.getConfig().getIntegerList(path);
|
|
|
|
if (!slots.isEmpty()) {
|
|
return slots;
|
|
} else {
|
|
plugin.getLogger().warning("Invalid or empty slot numbers in config for " + path);
|
|
}
|
|
}
|
|
|
|
return Collections.singletonList(-1);
|
|
}
|
|
|
|
@Override
|
|
public boolean onCommand(@NotNull CommandSender cmds, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
|
|
if (cmds.hasPermission("wolfffa.command.editkit")) {
|
|
if (cmds instanceof Player player) {
|
|
if (args.length > 0) {
|
|
Inventory gui = Bukkit.createInventory(null, 27, "Kit Editor");
|
|
|
|
ItemStack saveKit = new ItemStack(Material.GREEN_STAINED_GLASS_PANE);
|
|
ItemMeta saveMeta = saveKit.getItemMeta();
|
|
|
|
ItemStack infoItem = new ItemStack(Material.WHITE_STAINED_GLASS_PANE);
|
|
ItemMeta infoMeta = infoItem.getItemMeta();
|
|
|
|
ItemStack undoKit = new ItemStack(Material.RED_STAINED_GLASS_PANE);
|
|
ItemMeta undoMeta = undoKit.getItemMeta();
|
|
saveMeta.setDisplayName("§aSave Kit");
|
|
saveKit.setItemMeta(saveMeta);
|
|
undoMeta.setDisplayName("§cUndo Changes");
|
|
undoKit.setItemMeta(undoMeta);
|
|
|
|
gui.setItem(0, saveKit);
|
|
gui.setItem(1, saveKit);
|
|
gui.setItem(2, saveKit);
|
|
gui.setItem(6, undoKit);
|
|
gui.setItem(7, undoKit);
|
|
gui.setItem(8, undoKit);
|
|
gui.setItem(9, saveKit);
|
|
gui.setItem(10, saveKit);
|
|
gui.setItem(11, saveKit);
|
|
gui.setItem(15, undoKit);
|
|
gui.setItem(16, undoKit);
|
|
gui.setItem(17, undoKit);
|
|
gui.setItem(18, saveKit);
|
|
gui.setItem(19, saveKit);
|
|
gui.setItem(20, saveKit);
|
|
gui.setItem(24, undoKit);
|
|
gui.setItem(25, undoKit);
|
|
gui.setItem(26, undoKit);
|
|
Inventory inv = player.getInventory();
|
|
switch (args[0]) {
|
|
case "sword":
|
|
if (true) {
|
|
ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
|
|
sword.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
|
|
inv.clear();
|
|
|
|
inv.setItem(getItemSlot("sword", "sword", player), sword);
|
|
|
|
infoMeta.setDisplayName("§fSword Kit");
|
|
infoItem.setItemMeta(infoMeta);
|
|
gui.setItem(3, infoItem);
|
|
gui.setItem(4, infoItem);
|
|
gui.setItem(5, infoItem);
|
|
gui.setItem(12, infoItem);
|
|
gui.setItem(13, infoItem);
|
|
gui.setItem(14, infoItem);
|
|
gui.setItem(21, infoItem);
|
|
gui.setItem(22, infoItem);
|
|
gui.setItem(23, infoItem);
|
|
|
|
player.openInventory(gui);
|
|
}
|
|
break;
|
|
case "uhc":
|
|
if (true) {
|
|
ItemStack helmet = new ItemStack(Material.DIAMOND_HELMET);
|
|
ItemStack chestplate = new ItemStack(Material.DIAMOND_CHESTPLATE);
|
|
ItemStack leggings = new ItemStack(Material.DIAMOND_LEGGINGS);
|
|
ItemStack boots = new ItemStack(Material.DIAMOND_BOOTS);
|
|
ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
|
|
ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
|
|
ItemStack lava = new ItemStack(Material.LAVA_BUCKET);
|
|
ItemStack cobweb = new ItemStack(Material.COBWEB, 8);
|
|
ItemStack cobblestone = new ItemStack(Material.COBBLESTONE, 64);
|
|
ItemStack goldenapple = new ItemStack(Material.GOLDEN_APPLE, 13);
|
|
ItemStack water = new ItemStack(Material.WATER_BUCKET);
|
|
ItemStack crossbow = new ItemStack(Material.CROSSBOW);
|
|
ItemStack bow = new ItemStack(Material.BOW);
|
|
ItemStack arrow = new ItemStack(Material.ARROW, 16);
|
|
ItemStack shield = new ItemStack(Material.SHIELD);
|
|
ItemStack planks = new ItemStack(Material.OAK_PLANKS, 64);
|
|
ItemStack pickaxe = new ItemStack(Material.DIAMOND_PICKAXE);
|
|
|
|
inv.clear();
|
|
|
|
helmet.addEnchantment(Enchantment.PROTECTION, 2);
|
|
chestplate.addEnchantment(Enchantment.PROTECTION, 3);
|
|
leggings.addEnchantment(Enchantment.PROTECTION, 3);
|
|
boots.addEnchantment(Enchantment.PROTECTION, 3);
|
|
axe.addEnchantment(Enchantment.SHARPNESS, 1);
|
|
axe.addEnchantment(Enchantment.EFFICIENCY, 3);
|
|
sword.addEnchantment(Enchantment.SHARPNESS, 4);
|
|
crossbow.addEnchantment(Enchantment.PIERCING, 1);
|
|
bow.addEnchantment(Enchantment.POWER, 1);
|
|
pickaxe.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
pickaxe.addEnchantment(Enchantment.EFFICIENCY, 3);
|
|
|
|
inv.setItem(getItemSlot("axe", "uhc", player), axe);
|
|
inv.setItem(getItemSlot("sword", "uhc", player), sword);
|
|
for (int slot : getItemSlotArray("lava", "uhc", player)) {
|
|
inv.setItem(slot, lava);
|
|
}
|
|
inv.setItem(getItemSlot("cobweb", "uhc", player), cobweb);
|
|
inv.setItem(getItemSlot("cobblestone", "uhc", player), cobblestone);
|
|
inv.setItem(getItemSlot("goldenapple", "uhc", player), goldenapple);
|
|
for (int slot : getItemSlotArray("water", "uhc", player)) {
|
|
inv.setItem(slot, water);
|
|
}
|
|
inv.setItem(getItemSlot("crossbow", "uhc", player), crossbow);
|
|
inv.setItem(getItemSlot("bow", "uhc", player), bow);
|
|
for (int slot : getItemSlotArray("shield", "uhc", player)) {
|
|
inv.setItem(slot, shield);
|
|
}
|
|
inv.setItem(getItemSlot("arrow", "uhc", player), arrow);
|
|
inv.setItem(getItemSlot("planks", "uhc", player), planks);
|
|
inv.setItem(getItemSlot("pickaxe", "uhc", player), pickaxe);
|
|
|
|
infoMeta.setDisplayName("§fUHC Kit");
|
|
infoItem.setItemMeta(infoMeta);
|
|
gui.setItem(3, infoItem);
|
|
gui.setItem(4, infoItem);
|
|
gui.setItem(5, infoItem);
|
|
gui.setItem(12, infoItem);
|
|
gui.setItem(13, infoItem);
|
|
gui.setItem(14, infoItem);
|
|
gui.setItem(21, infoItem);
|
|
gui.setItem(22, infoItem);
|
|
gui.setItem(23, infoItem);
|
|
|
|
player.openInventory(gui);
|
|
}
|
|
break;
|
|
case "boxcart":
|
|
if (true) {
|
|
ItemStack axe = new ItemStack(Material.NETHERITE_AXE);
|
|
ItemStack sword = new ItemStack(Material.NETHERITE_SWORD);
|
|
ItemStack enderpearl = new ItemStack(Material.ENDER_PEARL, 16);
|
|
ItemStack rail = new ItemStack(Material.RAIL, 64);
|
|
ItemStack cart = new ItemStack(Material.TNT_MINECART);
|
|
ItemStack goldenapple = new ItemStack(Material.GOLDEN_APPLE, 64);
|
|
ItemStack cobweb = new ItemStack(Material.COBWEB, 64);
|
|
ItemStack shield = new ItemStack(Material.SHIELD);
|
|
ItemStack bow = new ItemStack(Material.BOW);
|
|
ItemStack arrow = new ItemStack(Material.ARROW, 64);
|
|
ItemStack fireresistance = new ItemStack(Material.SPLASH_POTION);
|
|
ItemStack strength = new ItemStack(Material.SPLASH_POTION);
|
|
ItemStack speed = new ItemStack(Material.SPLASH_POTION);
|
|
ItemStack cherrylog = new ItemStack(Material.CHERRY_LOG, 64);
|
|
ItemStack crossbow = new ItemStack(Material.CROSSBOW);
|
|
ItemStack flintandsteel = new ItemStack(Material.FLINT_AND_STEEL);
|
|
ItemStack totem = new ItemStack(Material.TOTEM_OF_UNDYING);
|
|
|
|
sword.addEnchantment(Enchantment.SHARPNESS, 5);
|
|
sword.addEnchantment(Enchantment.SWEEPING_EDGE, 3);
|
|
sword.addEnchantment(Enchantment.FIRE_ASPECT, 2);
|
|
sword.addEnchantment(Enchantment.KNOCKBACK, 1);
|
|
sword.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
sword.addEnchantment(Enchantment.MENDING, 1);
|
|
axe.addEnchantment(Enchantment.SHARPNESS, 5);
|
|
axe.addEnchantment(Enchantment.EFFICIENCY, 5);
|
|
axe.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
axe.addEnchantment(Enchantment.MENDING, 1);
|
|
bow.addEnchantment(Enchantment.POWER, 5);
|
|
bow.addEnchantment(Enchantment.PUNCH, 2);
|
|
bow.addEnchantment(Enchantment.FLAME, 1);
|
|
bow.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
bow.addEnchantment(Enchantment.MENDING, 1);
|
|
crossbow.addEnchantment(Enchantment.PIERCING, 4);
|
|
crossbow.addEnchantment(Enchantment.QUICK_CHARGE, 3);
|
|
crossbow.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
crossbow.addEnchantment(Enchantment.MENDING, 1);
|
|
flintandsteel.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
flintandsteel.addEnchantment(Enchantment.MENDING, 1);
|
|
shield.addEnchantment(Enchantment.UNBREAKING, 3);
|
|
shield.addEnchantment(Enchantment.MENDING, 1);
|
|
|
|
PotionMeta fireresistancemeta = (PotionMeta) fireresistance.getItemMeta();
|
|
fireresistancemeta.addCustomEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 9600, 0), true);
|
|
fireresistancemeta.setDisplayName("§fSplash Potion of Fire Resistance");
|
|
fireresistance.setItemMeta(fireresistancemeta);
|
|
PotionMeta strengthmeta = (PotionMeta) strength.getItemMeta();
|
|
strengthmeta.addCustomEffect(new PotionEffect(PotionEffectType.STRENGTH, 1800, 1), true);
|
|
strengthmeta.setDisplayName("§fSplash Potion of Strength");
|
|
strength.setItemMeta(strengthmeta);
|
|
PotionMeta speedmeta = (PotionMeta) speed.getItemMeta();
|
|
speedmeta.addCustomEffect(new PotionEffect(PotionEffectType.SPEED, 1800, 1), true);
|
|
speedmeta.setDisplayName("§fSplash Potion of Swiftness");
|
|
speed.setItemMeta(speedmeta);
|
|
|
|
inv.setItem(getItemSlot("axe", "boxcart", player), axe);
|
|
inv.setItem(getItemSlot("sword", "boxcart", player), sword);
|
|
for (int slot : getItemSlotArray("enderpearl", "boxcart", player)) {
|
|
inv.setItem(slot, enderpearl);
|
|
}
|
|
inv.setItem(getItemSlot("rail", "boxcart", player), rail);
|
|
for (int slot : getItemSlotArray("cart", "boxcart", player)) {
|
|
inv.setItem(slot, cart);
|
|
}
|
|
inv.setItem(getItemSlot("goldenapple", "boxcart", player), goldenapple);
|
|
inv.setItem(getItemSlot("cobweb", "boxcart", player), cobweb);
|
|
inv.setItem(getItemSlot("shield", "boxcart", player), shield);
|
|
inv.setItem(getItemSlot("bow", "boxcart", player), bow);
|
|
inv.setItem(getItemSlot("arrow", "boxcart", player), arrow);
|
|
for (int slot : getItemSlotArray("fireresistance", "boxcart", player)) {
|
|
inv.setItem(slot, fireresistance);
|
|
}
|
|
for (int slot : getItemSlotArray("strength", "boxcart", player)) {
|
|
inv.setItem(slot, strength);
|
|
}
|
|
for (int slot : getItemSlotArray("speed", "boxcart", player)) {
|
|
inv.setItem(slot, speed);
|
|
}
|
|
inv.setItem(getItemSlot("cherrylog", "boxcart", player), cherrylog);
|
|
inv.setItem(getItemSlot("crossbow", "boxcart", player), crossbow);
|
|
inv.setItem(getItemSlot("flintandsteel", "boxcart", player), flintandsteel);
|
|
inv.setItem(getItemSlot("totem", "boxcart", player), totem);
|
|
|
|
infoMeta.setDisplayName("§fBoxCart Kit");
|
|
infoItem.setItemMeta(infoMeta);
|
|
gui.setItem(3, infoItem);
|
|
gui.setItem(4, infoItem);
|
|
gui.setItem(5, infoItem);
|
|
gui.setItem(12, infoItem);
|
|
gui.setItem(13, infoItem);
|
|
gui.setItem(14, infoItem);
|
|
gui.setItem(21, infoItem);
|
|
gui.setItem(22, infoItem);
|
|
gui.setItem(23, infoItem);
|
|
|
|
player.openInventory(gui);
|
|
}
|
|
break;
|
|
default:
|
|
player.sendMessage("§cNincs ilyen FFA típus!");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender cmds, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
|
|
if (args.length == 1) {
|
|
return List.of("sword", "uhc", "boxcart");
|
|
}
|
|
return List.of();
|
|
}
|
|
} |