Newer
Older
ChallengeSystem / src / main / java / net / brennholz / challenges / Coords_Command.java
@Brennholz3000 Brennholz3000 on 12 Jan 2020 6 KB First Upload
package net.brennholz.challenges;



import java.util.ArrayList;

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.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class Coords_Command implements CommandExecutor {

	private Challenges chl = Challenges.getplugin();

	public static Inventory CoordsGUI = Bukkit.createInventory(null, 45, "�6Koordinaten");
	public static Inventory CoordsDeleteGUI = Bukkit.createInventory(null, 9, "�6Entferne Koordinate");

	public static String CGUIN = "�6Koordinaten";
	public static String CDGUIN = "�6Entferne Koordinate";

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) {
		if (sender instanceof Player) {
			Player p = (Player) sender;
			if (args.length == 0) {
				if (p.hasPermission("challenges.coords.view")) {
					createMainGUI(p);
				} else
					p.sendMessage("�cDu hast hierf�r keine Berechtigung");
			} else if (args.length == 1) {
				if (args[0].equalsIgnoreCase("share")) {
					if (p.hasPermission("challenges.coords.share")) {
						chl.getServer()
								.broadcastMessage("�c" + p.getName() + " �6ist bei �c" + p.getLocation().getBlockX()
										+ " " + p.getLocation().getBlockY() + " " + p.getLocation().getBlockZ()
										+ " �6in Welt �6" + p.getWorld().getName());
					} else
						p.sendMessage("�cDu hast hierf�r keine Berechtigung");
				} else if (args[0].equalsIgnoreCase("get")) {
					if (p.hasPermission("challenges.coords.get")) {
						p.sendMessage("�6Verf�gbare Positionen:");
						for (String key : chl.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) {
							p.sendMessage("�c" + key);
						}
					} else
						p.sendMessage("�cDu hast hierf�r keine Berechtigung");
				} else
					p.sendMessage("�cBenutze: /coords share/save/get/delete [Name]");
			} else if (args.length >= 2) {
				if (args[0].equalsIgnoreCase("save")) {
					if (p.hasPermission("challenges.coords.save")) {
						if (!chl.getConfig().contains("Saved_Locations." + args[1])) {
							chl.getServer()
									.broadcastMessage("�6Die Position �c" + args[1] + " �6(�c" + p.getWorld().getName()
											+ " " + p.getLocation().getBlockX() + " " + p.getLocation().getBlockY()
											+ " " + p.getLocation().getBlockZ() + "�6) wurde von �c" + p.getName()
											+ " �6gespeichert");
							chl.getConfig().set("Saved_Locations." + args[1] + ".World", p.getWorld().getName());
							chl.getConfig().set("Saved_Locations." + args[1] + ".BlockX", p.getLocation().getBlockX());
							chl.getConfig().set("Saved_Locations." + args[1] + ".BlockY", p.getLocation().getBlockY());
							chl.getConfig().set("Saved_Locations." + args[1] + ".BlockZ", p.getLocation().getBlockZ());
							chl.saveConfig();
						} else
							p.sendMessage(
									"�cDiese Position existiert bereits! Benutze einen anderen Namen oder l�sche die alte zuerst mit /coords delete "
											+ args[1]);
					} else
						p.sendMessage("�cDu hast hierf�r keine Berechtigung");
				} else if (args[0].equalsIgnoreCase("get")) {
					if (p.hasPermission("challenges.coords.get")) {
						if (chl.getConfig().contains("Saved_Locations." + args[1])) {
							String w = chl.getConfig().getString("Saved_Locations." + args[1] + ".World");
							String x = chl.getConfig().getString("Saved_Locations." + args[1] + ".BlockX");
							String y = chl.getConfig().getString("Saved_Locations." + args[1] + ".BlockY");
							String z = chl.getConfig().getString("Saved_Locations." + args[1] + ".BlockZ");
							p.sendMessage("�6" + args[1] + ": �c" + w + " " + x + " " + y + " " + z);
						} else
							p.sendMessage("�cDiese Position existiert nicht!");
					} else
						p.sendMessage("�cDu hast hierf�r keine Berechtigung");
				} else if (args[0].equalsIgnoreCase("delete")) {
					if (p.hasPermission("challenges.coords.delete")) {
						if (chl.getConfig().contains("Saved_Locations." + args[1])) {
							createDeleteGUI(p, args[1]);
							p.openInventory(CoordsDeleteGUI);
						} else
							p.sendMessage("�cDiese Position existiert nicht!");
					} else
						p.sendMessage("�cDu hast hierf�r keine Berechtigung");
				} else
					p.sendMessage("�cBenutze: /coords share/save/get/delete [Name]");
			}
		} else
			sender.sendMessage("�cKein Konsolenbefehl!");
		return true;
	}

	public void createMainGUI(Player p) {
		int i = 0;
		String w;
		String x;
		String y;
		String z;
		for (String key : chl.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) {
			if (i >= 45) {
				break;
			}
			w = chl.getConfig().getString("Saved_Locations." + key + ".World");
			x = chl.getConfig().getString("Saved_Locations." + key + ".BlockX");
			y = chl.getConfig().getString("Saved_Locations." + key + ".BlockY");
			z = chl.getConfig().getString("Saved_Locations." + key + ".BlockZ");
			CoordsGUI.setItem(i, addGUIItem(getBlock(w), key, "�c" + x, "�c" + y, "�c" + z));
			i++;
		}
		for (int ii = i; ii < 45; ii++) {
			CoordsGUI.setItem(ii, addGUIItem(Material.AIR, ""));
		}
		p.openInventory(CoordsGUI);
	}

	public void createDeleteGUI(Player p, String dname) {
		CoordsDeleteGUI.setItem(0, addGUIItem(Material.LIME_TERRACOTTA, "�aL�schen best�tigen", "�f" + dname));
		CoordsDeleteGUI.setItem(4, addGUIItem(Material.ORANGE_BANNER, dname));
		for (int i = 1; i < 8; i++) {
			if (CoordsDeleteGUI.getItem(i) == null) {
				CoordsDeleteGUI.setItem(i, addGUIItem(Material.ORANGE_STAINED_GLASS_PANE, ""));
			}
		}
		CoordsDeleteGUI.setItem(8, addGUIItem(Material.RED_TERRACOTTA, "�cL�schen abbrechen", dname));
		p.openInventory(CoordsDeleteGUI);
	}

	private ItemStack addGUIItem(Material mat, String name, String... lore) {
		ItemStack item = new ItemStack(mat, 1);
		ItemMeta meta = item.getItemMeta();
		if (mat != Material.AIR) {
			meta.setDisplayName(name);
			ArrayList<String> metalore = new ArrayList<String>();
			if (lore != null) {
				for (String lorecomments : lore) {
					metalore.add(lorecomments);
				}
			}
			meta.setLore(metalore);
			item.setItemMeta(meta);
		}
		return item;
	}

	private Material getBlock(String wname) {
		ItemStack mat = new ItemStack(Material.GRASS_BLOCK);
		if (wname.equals(Bukkit.getWorlds().get(1).getName())) {
			mat.setType(Material.NETHERRACK);
		} else if (wname.equals(Bukkit.getWorlds().get(2).getName())) {
			mat.setType(Material.END_STONE);
		}
		return mat.getType();
	}

}