This repository has been archived on 2025-04-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
WolfFFA/src/main/java/hu/jgj52/wolfFFA/Commands/EditKitCommand.java
2025-02-23 23:06:12 +01:00

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();
}
}