Untitled diff
53 removals
Words removed | 127 |
Total words | 233 |
Words removed (%) | 54.51 |
73 lines
87 additions
Words added | 449 |
Total words | 555 |
Words added (%) | 80.90 |
106 lines
public class Main extends JavaPlugin implements Listener {
public class Main extends JavaPlugin implements Listener {
private ItemStack starterDChest;
private HashMap<UUID, Integer> cooldown = new HashMap<UUID, Integer>();
public void onEnable() {
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
Bukkit.getServer().getPluginManager().registerEvents(this, this);
starterDChest = new ItemStack(Material.DIAMOND_CHESTPLATE);
ItemMeta dchestmeta = starterDChest.getItemMeta();
ArrayList<String> lore = new ArrayList<String>(); //Moved this down here because why create it if they can't even use the command?
dchestmeta.setDisplayName(ChatColor.AQUA + ChatColor.BOLD.toString() + "Starter!");
lore.add(ChatColor.BLUE + ChatColor.ITALIC.toString() + "Gives you the Starter Gear!!");
lore.add(""); //Will probably have more success with empty Strings as placeholders rather than null String objects
lore.add("");
lore.add(ChatColor.WHITE + ChatColor.BOLD.toString() + "--" +
ChatColor.RED + ChatColor.BOLD.toString() + "JUST LEFT/RIGHT CLICK"
+ ChatColor.WHITE + ChatColor.BOLD.toString() + "--" );
dchestmeta.setLore(lore);
starterDChest.setItemMeta(dchestmeta);
new BukkitRunnable() { //This is gonna be our global loop so that we don't have to create a task for every person that uses the kit
@Override
public void run() {
for(Player all : getServer().getOnlinePlayers()) {
if(!cooldown.containsKey(all.getUniqueId())) continue; //Not relevant; not in cooldown list, skip them
if(cooldown.get(all.getUniqueId()) <= 0) {
//Done cooling down
cooldown.remove(all.getUniqueId());
all.sendMessage(ChatColor.GREEN + "You can use kit again!!");
}
else {
//Still cooling down
int timeLeftSec = cooldown.put(all.getUniqueId(), cooldown.get(all.getUniqueId()) - 1); //Subtracts a second from their wait time
if(timeLeftSec % 60 == 0) {
all.sendMessage(ChatColor.RED + "You have " + (timeLeftSec / 60) + ((timeLeftSec / 60) == 1 : "minute" : "minutes") + " left for Starter kit!!");
}
}
}
}
}, this, 0L, 1*20L); //Run every second with a 0 tick delay
}
}
ArrayList<Player> cooldown = new ArrayList<Player>();
@Override
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg) {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg) {
if (label.equalsIgnoreCase("k")) {
if (cmd.getName().equalsIgnoreCase("k")) { //Backwards compatible with aliases entry in the plugin.yml
ArrayList<String> lore = new ArrayList<String>();
final Player p = (Player) sender;
if (!(sender instanceof Player)) {
if (!(sender instanceof Player)) {
p.sendMessage("You need to be a Player to do this Command!");
sender.sendMessage("You need to be a Player to do this Command!");
return true; //This tells the method to stop here and go back, ignoring underneath parts.
}
}
Player p = (Player) sender; //Now we can safely do this, earlier we were doing it before we were sure it was a player, good try though.
ItemStack dchest = new ItemStack(Material.DIAMOND_CHESTPLATE);
ItemMeta dchestmeta = dchest.getItemMeta();
dchestmeta.setDisplayName(ChatColor.AQUA + ChatColor.BOLD.toString() + "Starter!");
lore.add(ChatColor.BLUE + ChatColor.ITALIC.toString() + "Gives you the Starter Gear!!");
lore.add(null);
lore.add(null);
lore.add(ChatColor.WHITE + ChatColor.BOLD.toString() + "--" +
ChatColor.RED + ChatColor.BOLD.toString() + "JUST LEFT/RIGHT CLICK"
+ ChatColor.WHITE + ChatColor.BOLD.toString() + "--" );
dchestmeta.setLore(lore);
dchest.setItemMeta(dchestmeta);
Inventory inv = Bukkit.createInventory(null, 27, ChatColor.RED + ChatColor.BOLD.toString() + "Kits");
Inventory inv = Bukkit.createInventory(null, 27, ChatColor.RED + ChatColor.BOLD.toString() + "Kits");
inv.setItem(0, dchest);
inv.setItem(0, starterDChest);
p.openInventory(inv);
p.openInventory(inv);
}
}
return true;
return true;
}
}
@EventHandler
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
public void onInventoryClick(InventoryClickEvent e) {
if (e.getInventory().getTitle().equals(ChatColor.RED + ChatColor.BOLD.toString() + "Kits")) {
if (!e.getInventory().getTitle().equals(ChatColor.RED + ChatColor.BOLD.toString() + "Kits")) {
int time = 20*25;
return; //Forget about this occurrence of the event then, we aren't interested
ItemStack ironh = new ItemStack(Material.IRON_HELMET);
}
ironh.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
//Because of the above if statement, we know it's the inventory we're looking for. This removes all that excessive indentation from before
ItemStack ironc = new ItemStack(Material.IRON_CHESTPLATE);
//Time no longer needed since we created a global loop
ironc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
ItemStack ironh = new ItemStack(Material.IRON_HELMET);
ItemStack ironl = new ItemStack(Material.IRON_LEGGINGS);
ironh.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
ironl.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
ItemStack ironc = new ItemStack(Material.IRON_CHESTPLATE);
ItemStack ironb = new ItemStack(Material.IRON_BOOTS);
ironc.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
ironb.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
ItemStack ironl = new ItemStack(Material.IRON_LEGGINGS);
ironb.addEnchantment(Enchantment.PROTECTION_FALL, 1);
ironl.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
ItemStack irons = new ItemStack(Material.IRON_SWORD);
ItemStack ironb = new ItemStack(Material.IRON_BOOTS);
irons.addEnchantment(Enchantment.DAMAGE_ALL, 1);
ironb.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
irons.addEnchantment(Enchantment.DURABILITY, 3);
ironb.addEnchantment(Enchantment.PROTECTION_FALL, 1);
ItemStack irons = new ItemStack(Material.IRON_SWORD);
if (cooldown.contains(e.getWhoClicked())) {
irons.addEnchantment(Enchantment.DAMAGE_ALL, 1);
e.getWhoClicked().sendMessage("until next kit!");
irons.addEnchantment(Enchantment.DURABILITY, 3);
e.setCancelled(true);
Player p = (Player) e.getWhoClicked();
} else if (e.getSlot() == 0) {
if (cooldown.containsKey(p.getUniqueId())) {
e.setCancelled(true);
int minutes = (int) TimeUnit.SECONDS.toMinutes(cooldown.get(p.getUniqueId()));
e.getWhoClicked().getInventory().addItem(ironh, ironc, ironl, ironb, irons);
String cdMessage = "";
e.getWhoClicked().closeInventory();
if(minutes == 0) {
cooldown.add((Player) e.getWhoClicked());
int seconds = cooldown.get(p.getUniqueId());
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
cdMessage += (seconds == 1 ? "second" : "seconds") + " left";
public void run() {
}
cooldown.remove(e.getWhoClicked());
else {
e.getWhoClicked().sendMessage(ChatColor.RED + "You can use kit Starter again!!");
cdMessage += (minutes == 1 ? "minute" : "minutes") + " left";
}
}, time);
e.getWhoClicked().sendMessage(ChatColor.RED + "Given Starter!");
}
}
p.sendMessage(cdMessage + " until next kit!");
e.setCancelled(true);
return;
}
//They aren't in cooldown due to the return in the cooldown if-statement
if(e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR)) {
return;
}
if(e.getCurrentItem().equals(starterDChest)) { //if clicked item (current, clicked, etc) is equal to the starter diamond chest kit item
e.setCancelled(true);
p.getInventory().addItem(ironh, ironc, ironl, ironb, irons);
p.closeInventory();
cooldown.put(p.getUniqueId(), 25); //25 seconds for the cooldown!
p.sendMessage(ChatColor.RED + "Given Starter!");
return;
}
}
}
}
}
}