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