diff --git a/.classpath b/.classpath index 7ce3869..9611b8a 100644 --- a/.classpath +++ b/.classpath @@ -2,6 +2,6 @@ - + diff --git a/bin/.gitignore b/bin/.gitignore index 4060509..2222065 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1 +1,2 @@ +/src/ /me/ diff --git a/plugin.yml b/plugin.yml index 701c7be..042f93c 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,3 +1,3 @@ name: ChestGUI version: 1.0 -main: me.elietgm.chestgui \ No newline at end of file +main: me.elietgm.chestgui.ChestCore \ No newline at end of file diff --git a/src/me/elietgm/chestgui/ChestCore.java b/src/me/elietgm/chestgui/ChestCore.java index 64d9ac3..5bc86b7 100644 --- a/src/me/elietgm/chestgui/ChestCore.java +++ b/src/me/elietgm/chestgui/ChestCore.java @@ -2,22 +2,17 @@ import org.bukkit.plugin.java.JavaPlugin; -import me.elietgm.chestgui.api.ItemCreator; -import me.elietgm.chestgui.api.SkullCreator; - public class ChestCore extends JavaPlugin { - //4e879827186621dab1f4e52e9d3936e3bd7eb824// - private static ChestCore instance; - public static ChestCore getInstance() { return instance; } - - public static ItemCreator getItemCreator() {return new ItemCreator(); } - public static SkullCreator getSkullCreator() {return new SkullCreator(); } - + + public static ChestCore getInstance() { + return instance; + } + @Override public void onEnable() { - instance = this; + instance = this; } - + } diff --git a/src/me/elietgm/chestgui/api/ChestGUI.java b/src/me/elietgm/chestgui/api/ChestGUI.java index d8f30d1..a9ec884 100644 --- a/src/me/elietgm/chestgui/api/ChestGUI.java +++ b/src/me/elietgm/chestgui/api/ChestGUI.java @@ -14,64 +14,64 @@ public class ChestGUI implements Listener { - public Player p; - public Inventory i; - public GUICallback c; + public String playerName; + public Inventory inventory; // Try to use descriptive names! + public GUICallback guiCallback; public boolean aC; - public boolean iO; - + private boolean iO; // Lets make this field private cause its not + // configurable! + public ChestGUI iN; - + public ChestGUI(Player player, int size, String title, boolean allowClick, GUICallback callback) { - this.p = player; - this.i = Bukkit.createInventory(null, size, title); - this.c = callback; + playerName = player.getName(); // Not need to store the Player object! + this.inventory = Bukkit.createInventory(null, size, title); + this.guiCallback = callback; this.aC = allowClick; this.iO = true; this.iN = this; - - c.callback(this, GUICallback.CallbackType.INIT, null); - - p.openInventory(i); - + + guiCallback.firstCall(this, GUICallback.CallbackType.INIT, null); + + player.openInventory(inventory); + ChestCore.getInstance().getServer().getPluginManager().registerEvents(this, ChestCore.getInstance()); - + new BukkitRunnable() { public void run() { - new BukkitRunnable() { - public void run() { - if(iO) { - c.onSecond(iN); - } else { - this.cancel(); - } - } - }.runTaskTimer(ChestCore.getInstance(), 0, 20L); + if (iO) { + guiCallback.secondCall(iN); + } else { + this.cancel(); + } } - }.runTaskLater(ChestCore.getInstance(), 10L); + }.runTaskTimer(ChestCore.getInstance(), 10L, 20L); } - + @EventHandler public void onInventoryClick(InventoryClickEvent event) { - if(event.getWhoClicked().getName() == p.getName()) { + if (event.getWhoClicked().getName().equals(playerName)) { // Always + // compare + // String + // with + // equals try { - if(!aC) { + if (!aC) event.setCancelled(true); - } - - c.callback(this, GUICallback.CallbackType.CLICK, event.getCurrentItem()); + + guiCallback.firstCall(this, GUICallback.CallbackType.CLICK, event.getCurrentItem()); } catch (Exception e) { - //Nope + // Nope } } } - + @EventHandler public void onInventoryClose(InventoryCloseEvent event) { - if(event.getPlayer().getName() == p.getName()) { + if (event.getPlayer().getName().equals(playerName)) { HandlerList.unregisterAll(this); - - c.callback(this, GUICallback.CallbackType.CLOSE, null); + + guiCallback.firstCall(this, GUICallback.CallbackType.CLOSE, null); } } } diff --git a/src/me/elietgm/chestgui/api/GUICallback.java b/src/me/elietgm/chestgui/api/GUICallback.java index 9a52e48..8f7a359 100644 --- a/src/me/elietgm/chestgui/api/GUICallback.java +++ b/src/me/elietgm/chestgui/api/GUICallback.java @@ -10,7 +10,7 @@ public static enum CallbackType { CLOSE, } - public abstract void callback(ChestGUI gui, CallbackType callback, ItemStack item); + public abstract void firstCall(ChestGUI gui, CallbackType callback, ItemStack item); - public abstract void onSecond(ChestGUI gui); + public abstract void secondCall(ChestGUI gui); //More descriptive names? } diff --git a/src/me/elietgm/chestgui/api/ItemCreator.java b/src/me/elietgm/chestgui/api/ItemCreator.java index dcc83d8..690b8d2 100644 --- a/src/me/elietgm/chestgui/api/ItemCreator.java +++ b/src/me/elietgm/chestgui/api/ItemCreator.java @@ -1,5 +1,6 @@ package me.elietgm.chestgui.api; +import java.util.ArrayList; import java.util.List; import org.bukkit.Color; import org.bukkit.Material; @@ -12,78 +13,71 @@ public class ItemCreator { + public ItemStack createItem(Material type, int amount, int data, String name) { + // ItemStack item = new ItemStack(type, 1, (short) data); + // ItemMeta meta = item.getItemMeta(); + // + // item.setAmount(amount); + // + // meta.setDisplayName(Colorizer.color(name)); + // + // item.setItemMeta(meta); + // Repeated code! + return createItem(type, amount, data, name, new ArrayList<>()); + } + public ItemStack createItem(Material type, int amount, int data, String name, List lore) { ItemStack item = new ItemStack(type, 1, (short) data); ItemMeta meta = item.getItemMeta(); - + item.setAmount(amount); - + meta.setDisplayName(Colorizer.color(name)); meta.setLore(Colorizer.colorList(lore)); - + item.setItemMeta(meta); - + return item; } - + + public ItemStack createItemPotion(Material type, int amount, int data, String name) { + return createItemPotion(type, amount, data, name, new ArrayList<>()); + } + public ItemStack createItemPotion(Material type, int amount, int data, String name, List lore) { ItemStack item = new ItemStack(type, 1, (short) data); PotionMeta meta = (PotionMeta) item.getItemMeta(); - + meta.clearCustomEffects(); - + item.setAmount(amount); - + meta.setDisplayName(Colorizer.color(name)); meta.setLore(Colorizer.colorList(lore)); - - item.setItemMeta(meta); - - return item; - } - - public ItemStack createItem(Material type, int amount, int data, String name) { - ItemStack item = new ItemStack(type, 1, (short) data); - ItemMeta meta = item.getItemMeta(); - - item.setAmount(amount); - - meta.setDisplayName(Colorizer.color(name)); - + item.setItemMeta(meta); - + return item; } - + public ItemStack createArmour(Material type, int amount, Color color, String name) { - ItemStack item = new ItemStack(type, 1, (short) 0); - LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta(); - - item.setAmount(amount); - - meta.setDisplayName(Colorizer.color(name)); - - meta.setColor(color); - - item.setItemMeta(meta); - - return item; + return createArmour(type, amount, color, name, new ArrayList<>()); } - + public ItemStack createArmour(Material type, int amount, Color color, String name, List lore) { ItemStack item = new ItemStack(type, 1, (short) 0); LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta(); - + item.setAmount(amount); - + meta.setDisplayName(Colorizer.color(name)); - + meta.setLore(Colorizer.colorList(lore)); - + meta.setColor(color); - + item.setItemMeta(meta); - + return item; } } diff --git a/src/me/elietgm/chestgui/api/ItemCreatorBeta.java b/src/me/elietgm/chestgui/api/ItemCreatorBeta.java new file mode 100644 index 0000000..4a81fad --- /dev/null +++ b/src/me/elietgm/chestgui/api/ItemCreatorBeta.java @@ -0,0 +1,102 @@ +package me.elietgm.chestgui.api; + +import java.util.List; + +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.LeatherArmorMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; + +import me.elietgm.chestgui.utils.Colorizer; + +public class ItemCreatorBeta { + + private Material type = Material.GRASS; // Default values! + private int amount = 1; // Default values! + private int data = 0; // Default values! + private String name; + private String owner; // Support for skulls!? Yes too! + private List lore; + private List effects; // Also support for effects!? + private Color color; + + public ItemCreatorBeta(Material mat) { + type = mat; + } + + public ItemCreatorBeta withType(Material newType) { + type = newType; + return this; + } + + public ItemCreatorBeta withName(String newName) { // Can be named + // setCustomName! + name = newName; + return this; + } + + public ItemCreatorBeta withAmount(int newAmount) { + amount = newAmount; + return this; + } + + public ItemCreatorBeta withData(int newData) { + data = newData; + return this; + } + + public ItemCreatorBeta withLore(List newLore) { + lore = newLore; + return this; + } + + public ItemCreatorBeta withEffects(List newEffects) { + effects = newEffects; + return this; + } + + public ItemCreatorBeta withOwner(String newOwner) { + owner = newOwner; + return this; + } + + public ItemCreatorBeta withColor(Color newColor) { + color = newColor; + return this; + } + + public ItemStack build() { + ItemStack item = new ItemStack(type, amount, (short) data); + ItemMeta im = item.getItemMeta(); + + if (effects != null && !effects.isEmpty()) + if (im instanceof PotionMeta) { + ((PotionMeta) im).clearCustomEffects(); + effects.forEach(e -> ((PotionMeta) im).addCustomEffect(e, true)); + } + + if (owner != null && !owner.isEmpty()) + if (im instanceof SkullMeta) + ((SkullMeta) im).setOwner(owner); + + if (color != null) + if (im instanceof LeatherArmorMeta) + ((LeatherArmorMeta) im).setColor(color); + + if (name != null && !name.isEmpty()) + im.setDisplayName(Colorizer.color(name)); // Color just in case! + + if (lore != null && !lore.isEmpty()) + im.setLore(Colorizer.colorList(lore)); // Color just in case! + + item.setItemMeta(im); + + return item; + + } + +} diff --git a/src/me/elietgm/chestgui/api/SkullCreator.java b/src/me/elietgm/chestgui/api/SkullCreator.java index 5b7ac4d..a236740 100644 --- a/src/me/elietgm/chestgui/api/SkullCreator.java +++ b/src/me/elietgm/chestgui/api/SkullCreator.java @@ -1,5 +1,6 @@ package me.elietgm.chestgui.api; +import java.util.ArrayList; import java.util.List; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -8,35 +9,24 @@ import me.elietgm.chestgui.utils.Colorizer; public class SkullCreator { - + public ItemStack createSkull(String owner, int amount, String name, List lore) { ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); SkullMeta meta = (SkullMeta) item.getItemMeta(); - + item.setAmount(amount); - + meta.setOwner(owner); - + meta.setDisplayName(Colorizer.color(name)); meta.setLore(Colorizer.colorList(lore)); - + item.setItemMeta(meta); - + return item; } - + public ItemStack createSkull(String owner, int amount, String name) { - ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); - SkullMeta meta = (SkullMeta) item.getItemMeta(); - - item.setAmount(amount); - - meta.setOwner(owner); - - meta.setDisplayName(Colorizer.color(name)); - - item.setItemMeta(meta); - - return item; + return createSkull(owner, amount, name, new ArrayList<>()); } } diff --git a/src/me/elietgm/chestgui/examples/GamemodeChanger.java b/src/me/elietgm/chestgui/examples/GamemodeChanger.java index 08592a4..9f94381 100644 --- a/src/me/elietgm/chestgui/examples/GamemodeChanger.java +++ b/src/me/elietgm/chestgui/examples/GamemodeChanger.java @@ -7,9 +7,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import me.elietgm.chestgui.ChestCore; import me.elietgm.chestgui.api.ChestGUI; import me.elietgm.chestgui.api.GUICallback; +import me.elietgm.chestgui.api.ItemCreator; import me.elietgm.chestgui.utils.Colorizer; public class GamemodeChanger { @@ -32,7 +32,7 @@ public static void open(Player player) { new ChestGUI(player, 27, "GameMode Manager", false, new GUICallback() { @Override - public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { + public void firstCall(ChestGUI gui, CallbackType callback, ItemStack item) { /** * Now let's check if the callback is INIT (stall); if it is, let's set the @@ -54,7 +54,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * We're gonna create an emerald block, named survival mode. It'll be emerald * since the player's gamemode is Creative, and not Survival. */ - gui.i.setItem(11, ChestCore.getItemCreator().createItem(Material.EMERALD_BLOCK, + gui.inventory.setItem(11, new ItemCreator().createItem(Material.EMERALD_BLOCK, 1, 0, "&aSurvival Mode", Arrays.asList("&7Switch to survival mode by clicking here!"))); @@ -63,7 +63,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * player's gamemode is ALREADY creative, he won't change from Creative to * Creative. */ - gui.i.setItem(13, ChestCore.getItemCreator().createItem(Material.REDSTONE_BLOCK, + gui.inventory.setItem(13, new ItemCreator().createItem(Material.REDSTONE_BLOCK, 1, 0, "&cCreative Mode", Arrays.asList("&7You cannot switch to Creative Mode..."))); @@ -71,7 +71,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * We're gonna create an emerald block, named adventure mode. It'll be emerald * since the player's gamemode is Creative, and not Adventure. */ - gui.i.setItem(15, ChestCore.getItemCreator().createItem(Material.EMERALD_BLOCK, + gui.inventory.setItem(15, new ItemCreator().createItem(Material.EMERALD_BLOCK, 1, 0, "&aAdventure Mode", Arrays.asList("&7Switch to adventure mode by clicking here!"))); @@ -84,7 +84,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * since the player's gamemode is Survival, and he won't change from Survival * to Survival. */ - gui.i.setItem(11, ChestCore.getItemCreator().createItem(Material.REDSTONE_BLOCK, + gui.inventory.setItem(11, new ItemCreator().createItem(Material.REDSTONE_BLOCK, 1, 0, "&cSurvival Mode", Arrays.asList("&7You cannot switch to Survival Mode..."))); @@ -92,7 +92,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * We're gonna create an emerald block, named Creative mode. It'll be emerald * since the player's gamemode is Survival, and not Creative. */ - gui.i.setItem(13, ChestCore.getItemCreator().createItem(Material.EMERALD_BLOCK, + gui.inventory.setItem(13, new ItemCreator().createItem(Material.EMERALD_BLOCK, 1, 0, "&aCreative Mode", Arrays.asList("&7Switch to Creative Mode by clicking here!"))); @@ -100,7 +100,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * We're gonna create an emerald block, named adventure mode. It'll be emerald * since the player's gamemode is Survival, and not Adventure. */ - gui.i.setItem(15, ChestCore.getItemCreator().createItem(Material.EMERALD_BLOCK, + gui.inventory.setItem(15, new ItemCreator().createItem(Material.EMERALD_BLOCK, 1, 0, "&aAdventure Mode", Arrays.asList("&7Switch to adventure mode by clicking here!"))); @@ -112,7 +112,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * We're gonna create an emerald block, named survival mode. It'll be emerald * since the player's gamemode is Adventure, and not Survival. */ - gui.i.setItem(11, ChestCore.getItemCreator().createItem(Material.EMERALD_BLOCK, + gui.inventory.setItem(11, new ItemCreator().createItem(Material.EMERALD_BLOCK, 1, 0, "&aSurvival Mode", Arrays.asList("&7Switch to survival mode by clicking here!"))); @@ -120,7 +120,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * We're gonna create an emerald block, named Creative mode. It'll be emerald * since the player's gamemode is Adventure, and not Creative. */ - gui.i.setItem(13, ChestCore.getItemCreator().createItem(Material.EMERALD_BLOCK, + gui.inventory.setItem(13, new ItemCreator().createItem(Material.EMERALD_BLOCK, 1, 0, "&aCreative Mode", Arrays.asList("&7Switch to Creative Mode by clicking here!"))); @@ -129,7 +129,7 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { * since the player's gamemode is Adventure, and he won't change from Adventure * to Adventure. */ - gui.i.setItem(15, ChestCore.getItemCreator().createItem(Material.REDSTONE_BLOCK, + gui.inventory.setItem(15, new ItemCreator().createItem(Material.REDSTONE_BLOCK, 1, 0, "&cAdventure Mode", Arrays.asList("&7You cannot switch to Adventure Mode..."))); @@ -203,8 +203,8 @@ public void callback(ChestGUI gui, CallbackType callback, ItemStack item) { } @Override - public void onSecond(ChestGUI gui) { - + public void secondCall(ChestGUI gui) { + } }); diff --git a/src/me/elietgm/chestgui/utils/Colorizer.java b/src/me/elietgm/chestgui/utils/Colorizer.java index 1113743..fdd9290 100644 --- a/src/me/elietgm/chestgui/utils/Colorizer.java +++ b/src/me/elietgm/chestgui/utils/Colorizer.java @@ -1,7 +1,7 @@ package me.elietgm.chestgui.utils; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import net.md_5.bungee.api.ChatColor; @@ -10,15 +10,17 @@ public class Colorizer { public static String color(String message) { return ChatColor.translateAlternateColorCodes('&', message); } - - public static List colorList(List msg) { - List newmsg = new ArrayList(); - for (String s : msg) { - newmsg.add(color(s)); - } + public static List colorList(List l) { + return l.stream().map(Colorizer::color).collect(Collectors.toList()); + } + + public static String uncolor(String message) { + return ChatColor.stripColor(message); + } - return newmsg; + public static List uncolorList(List l) { + return l.stream().map(Colorizer::uncolor).collect(Collectors.toList()); } - + }