diff --git a/pom.xml b/pom.xml
index 6590675..994ba90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
CodeMC
- https://repo.codemc.org/repository/maven-public
+ https://repo.codemc.org/repository/maven-public/
@@ -30,7 +30,7 @@
org.spigotmc
spigot-api
- 1.15-R0.1-SNAPSHOT
+ 1.17-R0.1-SNAPSHOT
provided
@@ -59,9 +59,11 @@
org.apache.maven.plugins
maven-jar-plugin
2.3.1
+
org.apache.maven.plugins
diff --git a/src/main/java/me/darkolythe/deepstorageplus/DeepStoragePlus.java b/src/main/java/me/darkolythe/deepstorageplus/DeepStoragePlus.java
index 3ad69c1..01d9496 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/DeepStoragePlus.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/DeepStoragePlus.java
@@ -101,13 +101,6 @@ public void onEnable() {
inventorylistener.addText();
- getServer().getPluginManager().registerEvents(inventorylistener, plugin);
- getServer().getPluginManager().registerEvents(wrenchlistener, plugin);
- getServer().getPluginManager().registerEvents(wirelesslistener, plugin);
- getServer().getPluginManager().registerEvents(iolistener, plugin);
- getServer().getPluginManager().registerEvents(storagebreakslistener, plugin);
- getServer().getPluginManager().registerEvents(configmanager, plugin);
-
getCommand("deepstorageplus").setExecutor(new CommandHandler(itemList));
getCommand("dsp").setExecutor(new CommandHandler(itemList));
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/StorageUtils.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/StorageUtils.java
index ef30062..6135e9e 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/StorageUtils.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/StorageUtils.java
@@ -85,27 +85,27 @@ public static boolean isDSU(Inventory inv) {
for (ItemStack i : inv.getContents()) {
if (i != null) {
+ // Check if we are in the DSU IO Configuration
if (i.getType().equals(Material.TRIPWIRE_HOOK)
- && i.hasItemMeta()
+ && i.getItemMeta() != null
&& i.getItemMeta().hasDisplayName()
- && i.getItemMeta().getDisplayName().equals(ChatColor.BLUE.toString() + "Lock DSU")) {
+ && i.getItemMeta().getDisplayName().equals(ChatColor.BLUE + "Lock DSU")) {
return false;
}
}
}
- int slots[] = {7, 16, 25, 34, 43, 52};
+ int[] slots = {7, 16, 25, 34, 43, 52};
boolean isDSU = false;
for (int i : slots) {
- if (inv.getItem(i) != null && inv.getItem(i).equals(DSUManager.getDSUWall()))
+ ItemStack temp = inv.getItem(i);
+
+ if (temp != null && temp.equals(DSUManager.getDSUWall()))
isDSU = true;
}
-
- if (!isDSU)
- return false;
-
- return true;
+
+ return isDSU;
}
public static boolean isSorter(Inventory inv) {
@@ -115,24 +115,23 @@ public static boolean isSorter(Inventory inv) {
if (inv.getType() != InventoryType.CHEST)
return false;
- int slots[] = {18, 19, 20, 21, 22, 23, 24, 25, 26};
+ int[] slots = {18, 19, 20, 21, 22, 23, 24, 25, 26};
boolean isSorter = false;
for (int i : slots) {
- if (inv.getItem(i) != null && inv.getItem(i).equals(SorterManager.getSorterWall()))
+ ItemStack temp = inv.getItem(i);
+
+ if (temp != null && temp.equals(SorterManager.getSorterWall()))
isSorter = true;
}
- if (!isSorter)
- return false;
-
- return true;
+ return isSorter;
}
/**
* Returns the custom name of a chest or double chest, if either side has one. Prefers the left chest.
- * @param block
- * @return
+ * @param block The block to get the name from
+ * @return Optional containing the name of the block.
*/
public static Optional getChestCustomName(Block block) {
Chest chest = (Chest) block.getState();
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/IOListener.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/IOListener.java
index 9a683d7..17dde77 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/IOListener.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/IOListener.java
@@ -3,14 +3,12 @@
import me.darkolythe.deepstorageplus.DeepStoragePlus;
import me.darkolythe.deepstorageplus.dsu.StorageUtils;
import me.darkolythe.deepstorageplus.dsu.managers.DSUManager;
-import me.darkolythe.deepstorageplus.dsu.managers.SorterManager;
import me.darkolythe.deepstorageplus.utils.LanguageManager;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Chest;
-import org.bukkit.block.Container;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -38,8 +36,9 @@ public class IOListener implements Listener {
private DeepStoragePlus main;
public IOListener(DeepStoragePlus plugin) {
this.main = plugin; // set it equal to an instance of main
+ Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
-
+
@EventHandler(priority = EventPriority.HIGHEST)
private void onDSUClick(PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR) {
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/InventoryListener.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/InventoryListener.java
index 62a3d55..e4769e1 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/InventoryListener.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/InventoryListener.java
@@ -4,6 +4,7 @@
import me.darkolythe.deepstorageplus.dsu.StorageUtils;
import me.darkolythe.deepstorageplus.dsu.managers.DSUManager;
import me.darkolythe.deepstorageplus.dsu.managers.SorterManager;
+import me.darkolythe.deepstorageplus.utils.ItemList;
import me.darkolythe.deepstorageplus.utils.LanguageManager;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -21,6 +22,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import static me.darkolythe.deepstorageplus.dsu.StorageUtils.matToString;
@@ -31,6 +33,7 @@ public class InventoryListener implements Listener {
private DeepStoragePlus main;
public InventoryListener(DeepStoragePlus plugin) {
this.main = plugin; // set it equal to an instance of main
+ Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler
@@ -75,17 +78,19 @@ private void onStorageInteract(InventoryClickEvent event) {
if (event.getSlot() % 9 == 8) { //rightmost column
if (event.getSlot() != 53) { //if containers clicked
if (cursor != null && cursor.getType() != Material.AIR) { //if putting container in
- if (item != null && item.getType() == Material.WHITE_STAINED_GLASS_PANE) {
+ if (ItemList.isDSPItem(item, ItemList.STORAGE_SLOT_MODEL_ID)) {
event.setCancelled(true);
if (cursor.hasItemMeta()) { //if putting a Storage Container in the dsu
- if (cursor.getItemMeta().getDisplayName().contains(LanguageManager.getValue("storagecontainer")) && cursor.getItemMeta().isUnbreakable()) {
+ System.out.println("meta check passed");
+ if (ItemList.isStorageContainerItem(cursor)) {
+ System.out.println("cursor is container");
inv.setItem(event.getSlot(), cursor);
cursor.setAmount(0);
main.dsuupdatemanager.updateItems(inv, null);
}
}
} else { //if trying to take placeholder out
- if (!(cursor.hasItemMeta() && cursor.getItemMeta().getDisplayName().contains(LanguageManager.getValue("storagecontainer")) && cursor.getItemMeta().isUnbreakable())) {
+ if (!ItemList.isStorageContainerItem(cursor)) {
event.setCancelled(true);
} else if (event.isShiftClick()) {
event.setCancelled(true);
@@ -93,7 +98,7 @@ private void onStorageInteract(InventoryClickEvent event) {
}
} else { //if taking container out
event.setCancelled(true);
- if (item != null && item.getType() != Material.WHITE_STAINED_GLASS_PANE) {
+ if (ItemList.isStorageContainerItem(item)) {
player.setItemOnCursor(item.clone());
inv.setItem(event.getSlot(), DSUManager.getEmptyBlock());
main.dsuupdatemanager.updateItems(inv, null);
@@ -121,7 +126,7 @@ private void onStorageInteract(InventoryClickEvent event) {
main.dsuupdatemanager.updateItems(inv, mat);
if (cursor.getAmount() > 0 && isvaliditem) {
- player.sendMessage(DeepStoragePlus.prefix + ChatColor.RED.toString() + LanguageManager.getValue("containersfull"));
+ player.sendMessage(DeepStoragePlus.prefix + ChatColor.RED + LanguageManager.getValue("containersfull"));
}
} else if (cursor == null || cursor.getType() == Material.AIR && item != null) { //taking item out of dsu
if (event.getClick() != ClickType.DOUBLE_CLICK) {
@@ -131,7 +136,7 @@ private void onStorageInteract(InventoryClickEvent event) {
int amtTaken = DSUManager.takeItems(item.getType(), inv, item.getType().getMaxStackSize());
player.getInventory().addItem(new ItemStack(item.getType(), amtTaken));
} else {
- player.sendMessage(DeepStoragePlus.prefix + ChatColor.RED.toString() + LanguageManager.getValue("nomorespace"));
+ player.sendMessage(DeepStoragePlus.prefix + ChatColor.RED + LanguageManager.getValue("nomorespace"));
}
} else {
int amtTaken = DSUManager.takeItems(item.getType(), inv, item.getType().getMaxStackSize());
@@ -157,15 +162,15 @@ private void onStorageInteract(InventoryClickEvent event) {
if (event.getClickedInventory() != player.getInventory()) {
if (event.getSlot() > 26) { // link module field
if (cursor != null && cursor.getType() != Material.AIR) { //if putting container in
- if (item != null && item.getType() == Material.WHITE_STAINED_GLASS_PANE) {
+ if (ItemList.isDSPItem(item, ItemList.LINK_SLOT_MODEL_ID)) {
event.setCancelled(true);
//if putting a link module into the sorter
- if (cursor.hasItemMeta() && cursor.getItemMeta().getDisplayName().contains(LanguageManager.getValue("linkmodule")) && cursor.getItemMeta().isUnbreakable()) {
+ if (ItemList.isDSPItem(cursor, ItemList.LINK_MODULE_MODEL_ID)) {
inv.setItem(event.getSlot(), cursor);
cursor.setAmount(0);
}
} else { //if trying to take placeholder out
- if (!(cursor.hasItemMeta() && cursor.getItemMeta().getDisplayName().contains(LanguageManager.getValue("linkmodule")) && cursor.getItemMeta().isUnbreakable())) {
+ if (!ItemList.isDSPItem(cursor, ItemList.LINK_MODULE_MODEL_ID)) {
event.setCancelled(true);
} else if (event.isShiftClick()) {
event.setCancelled(true);
@@ -173,9 +178,9 @@ private void onStorageInteract(InventoryClickEvent event) {
}
} else { //if taking link module out
event.setCancelled(true);
- if (item != null && item.getType() != Material.WHITE_STAINED_GLASS_PANE) {
+ if (ItemList.isDSPItem(item, ItemList.LINK_MODULE_MODEL_ID)) {
player.setItemOnCursor(item.clone());
- inv.setItem(event.getSlot(), DSUManager.getEmptyBlock());
+ inv.setItem(event.getSlot(), SorterManager.getEmptyBlock());
}
}
} else if (event.getSlot() > 17 && event.getSlot() < 27) { //walls
@@ -194,7 +199,7 @@ private void onStorageInteract(InventoryClickEvent event) {
}
}
- } else if (event.getView().getTitle().equals(ChatColor.BLUE.toString() + ChatColor.BOLD.toString() + LanguageManager.getValue("dsuioconfig"))) {
+ } else if (event.getView().getTitle().equals(ChatColor.BLUE + ChatColor.BOLD.toString() + LanguageManager.getValue("dsuioconfig"))) {
event.setCancelled(true);
if (event.getSlot() == 8 || event.getSlot() == 17) {
startSelection(event.getSlot(), inv);
@@ -202,7 +207,8 @@ private void onStorageInteract(InventoryClickEvent event) {
if (event.getSlot() % 9 != 8 && event.getSlot() % 9 != 7) {
if (item != null) {
for (int i = 0; i < inv.getContents().length; i++) {
- if (inv.getItem(i) != null && inv.getItem(i).getEnchantments().size() > 0) {
+ ItemStack temp = inv.getItem(i);
+ if (temp != null && temp.getEnchantments().size() > 0) {
//If the item clicked is one of the DSU items to choose an IO item
ItemStack newitem = item.clone();
ItemMeta itemmeta = newitem.getItemMeta();
@@ -211,7 +217,7 @@ private void onStorageInteract(InventoryClickEvent event) {
} else {
itemmeta.setDisplayName(ChatColor.GRAY + LanguageManager.getValue("output") + ": " + ChatColor.GREEN + matToString(newitem.getType()));
}
- itemmeta.setLore(Arrays.asList(ChatColor.GRAY + LanguageManager.getValue("clicktoclear")));
+ itemmeta.setLore(Collections.singletonList(ChatColor.GRAY + LanguageManager.getValue("clicktoclear")));
newitem.setItemMeta(itemmeta);
inv.setItem(i, newitem);
}
@@ -284,9 +290,9 @@ private void onInventoryDrag(InventoryDragEvent event) {
private void onInventoryClose(InventoryCloseEvent event) {
if (event.getPlayer() instanceof Player) {
Player player = (Player) event.getPlayer();
- if (event.getView().getTitle().equals(ChatColor.BLUE.toString() + ChatColor.BOLD.toString() + LanguageManager.getValue("dsuioconfig"))) {
- Container DSUContainer = DeepStoragePlus.openDSU.get(player.getUniqueId());
- Inventory DSU = DSUContainer.getInventory();
+ if (event.getView().getTitle().equals(ChatColor.BLUE + ChatColor.BOLD.toString() + LanguageManager.getValue("dsuioconfig"))) {
+ Container dsuContainer = DeepStoragePlus.openDSU.get(player.getUniqueId());
+ Inventory dsu = dsuContainer.getInventory();
Inventory IOInv = event.getInventory();
ItemStack input = IOInv.getItem(8);
@@ -294,7 +300,7 @@ private void onInventoryClose(InventoryCloseEvent event) {
ItemStack sorting = IOInv.getItem(26);
ItemStack lock = IOInv.getItem(53);
- int speedUpgrade = getSpeedUpgrade(DSU.getItem(53));
+ int speedUpgrade = getSpeedUpgrade(dsu.getItem(53));
List lore = new ArrayList<>();
@@ -324,7 +330,7 @@ private void onInventoryClose(InventoryCloseEvent event) {
lore.add(ChatColor.GREEN + LanguageManager.getValue("unlocked"));
}
- ItemStack i = DSU.getItem(53);
+ ItemStack i = dsu.getItem(53);
ItemMeta m = i.getItemMeta();
m.setLore(lore);
i.setItemMeta(m);
@@ -334,7 +340,7 @@ private void onInventoryClose(InventoryCloseEvent event) {
@Override
public void run() {
if (DeepStoragePlus.gettingInput.containsKey(player.getUniqueId()) && !DeepStoragePlus.gettingInput.get(player.getUniqueId())) {
- player.openInventory(DSU);
+ player.openInventory(dsu);
}
}
}, 1L);
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/StorageBreakListener.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/StorageBreakListener.java
index f7f603f..40b4b42 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/StorageBreakListener.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/StorageBreakListener.java
@@ -24,6 +24,7 @@ public class StorageBreakListener implements Listener {
DeepStoragePlus main;
public StorageBreakListener(DeepStoragePlus plugin) {
main = plugin;
+ Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler (priority = EventPriority.HIGHEST)
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WirelessListener.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WirelessListener.java
index 20ff8a2..7577b3d 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WirelessListener.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WirelessListener.java
@@ -4,6 +4,7 @@
import me.darkolythe.deepstorageplus.dsu.managers.DSUManager;
import me.darkolythe.deepstorageplus.utils.LanguageManager;
import me.darkolythe.deepstorageplus.utils.RecipeManager;
+import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Material;
@@ -35,6 +36,7 @@ public class WirelessListener implements Listener {
private DeepStoragePlus main;
public WirelessListener(DeepStoragePlus plugin) {
this.main = plugin; // set it equal to an instance of main
+ Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority = EventPriority.HIGHEST)
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WrenchListener.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WrenchListener.java
index 7342746..44585ab 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WrenchListener.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/listeners/WrenchListener.java
@@ -26,6 +26,7 @@ public class WrenchListener implements Listener {
private DeepStoragePlus main;
public WrenchListener(DeepStoragePlus plugin) {
main = plugin;
+ Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler (priority = EventPriority.HIGHEST)
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/DSUManager.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/DSUManager.java
index 20a721f..02fce99 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/DSUManager.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/DSUManager.java
@@ -2,13 +2,17 @@
import de.tr7zw.changeme.nbtapi.NBTItem;
import me.darkolythe.deepstorageplus.DeepStoragePlus;
+import me.darkolythe.deepstorageplus.utils.ItemList;
import me.darkolythe.deepstorageplus.utils.LanguageManager;
+import me.darkolythe.deepstorageplus.utils.item.misc.DSUWall;
+import me.darkolythe.deepstorageplus.utils.item.misc.EmptyStorageSlot;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.BundleMeta;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.*;
@@ -30,7 +34,7 @@ public void addItemToDSU(ItemStack item, Player player) {
boolean isvaliditem = addToDSU(item, player.getOpenInventory().getTopInventory(), player); //try to add item to dsu
main.dsuupdatemanager.updateItems(player.getOpenInventory().getTopInventory(), mat);
if (item.getAmount() > 0 && isvaliditem) {
- player.sendMessage(DeepStoragePlus.prefix + ChatColor.RED.toString() + LanguageManager.getValue("containersfull"));
+ player.sendMessage(DeepStoragePlus.prefix + ChatColor.RED + LanguageManager.getValue("containersfull"));
}
}
@@ -87,24 +91,21 @@ public static ItemStack createIOItem(Player player) {
public static ItemStack getDSUWall() {
if (dsuWall != null)
return dsuWall;
- ItemStack border = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
- ItemMeta bordermeta = border.getItemMeta();
- bordermeta.setDisplayName(ChatColor.DARK_GRAY + LanguageManager.getValue("dsuwalls"));
- border.setItemMeta(bordermeta);
-
- return dsuWall = border;
+
+ return dsuWall = new DSUWall()
+ .setName(ChatColor.DARK_GRAY + LanguageManager.getValue("dsuwalls"))
+ .setItemMeta()
+ .getItem();
}
/*
Create an Empty Block item to fill the dsu Inventory
*/
public static ItemStack getEmptyBlock() {
- ItemStack storage = new ItemStack(Material.WHITE_STAINED_GLASS_PANE);
- ItemMeta storagemeta = storage.getItemMeta();
- storagemeta.setDisplayName(ChatColor.YELLOW + LanguageManager.getValue("emptystorageblock"));
- storage.setItemMeta(storagemeta);
-
- return storage;
+ return new EmptyStorageSlot()
+ .setName(ChatColor.YELLOW + LanguageManager.getValue("emptystorageblock"))
+ .setItemMeta()
+ .getItem();
}
/*
@@ -219,12 +220,13 @@ private static Material getType(String lore) {
Update the container with the itemstack being added
*/
public static void addDataToContainer(ItemStack container, ItemStack item) {
- if (container.hasItemMeta() && container.getItemMeta().hasDisplayName() && container.getItemMeta().getDisplayName().contains(LanguageManager.getValue("storagecontainer"))) {
+ if (container.getItemMeta() != null && ItemList.isStorageContainerItem(container)) {
Material mat = item.getType();
int amount = item.getAmount();
int storage = countStorage(container, LanguageManager.getValue("currentstorage") + ": ");
int types = countStorage(container, LanguageManager.getValue("currenttypes") + ": ");
+
HashSet mats = getTypes(container.getItemMeta().getLore());
int canAdd = Math.min(storage, amount);
if (mats.contains(mat)) { //if the material is already stored in the container
diff --git a/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/SorterManager.java b/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/SorterManager.java
index 2afb9a4..03991df 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/SorterManager.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/dsu/managers/SorterManager.java
@@ -4,6 +4,8 @@
import me.darkolythe.deepstorageplus.dsu.StorageUtils;
import me.darkolythe.deepstorageplus.utils.ItemList;
import me.darkolythe.deepstorageplus.utils.LanguageManager;
+import me.darkolythe.deepstorageplus.utils.item.misc.DSUWall;
+import me.darkolythe.deepstorageplus.utils.item.misc.EmptyLinkModuleSlot;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -13,7 +15,6 @@
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
import java.util.*;
import java.util.logging.Level;
@@ -51,24 +52,21 @@ public static void verifyInventory(Inventory inv, Player player) {
public static ItemStack getSorterWall() {
if (sorterWall != null)
return sorterWall;
- ItemStack border = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
- ItemMeta bordermeta = border.getItemMeta();
- bordermeta.setDisplayName(ChatColor.DARK_GRAY + LanguageManager.getValue("sorterwalls"));
- border.setItemMeta(bordermeta);
-
- return sorterWall = border;
+
+ return sorterWall = new DSUWall()
+ .setName(ChatColor.DARK_GRAY + LanguageManager.getValue("sorterwalls"))
+ .setItemMeta()
+ .getItem();
}
/*
Create an Empty Block item to fill the dsu Inventory
*/
public static ItemStack getEmptyBlock() {
- ItemStack storage = new ItemStack(Material.WHITE_STAINED_GLASS_PANE);
- ItemMeta storagemeta = storage.getItemMeta();
- storagemeta.setDisplayName(ChatColor.YELLOW + LanguageManager.getValue("emptysorterblock"));
- storage.setItemMeta(storagemeta);
-
- return storage;
+ return new EmptyLinkModuleSlot()
+ .setName(ChatColor.YELLOW + LanguageManager.getValue("emptysorterblock"))
+ .setItemMeta()
+ .getItem();
}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/io/ConfigManager.java b/src/main/java/me/darkolythe/deepstorageplus/io/ConfigManager.java
index ebfe77f..03cc290 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/io/ConfigManager.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/io/ConfigManager.java
@@ -15,18 +15,16 @@ public class ConfigManager implements Listener {
private DeepStoragePlus main;
public ConfigManager(DeepStoragePlus plugin) {
main = plugin;
+ Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
- private String link = "https://drive.google.com/uc?export=download&id=13ZZzmERLZUb_NVG76BctAWnzVkUr6WLb";
+ private final String link = "https://mc-packs.net/download/59195941485ccb77792854e7e8e7d9d521822403";
//MAKE SURE NOT TO ZIP WHOLE FOLDER. ONLY ZIP TWO FILES INSIDE
@EventHandler
private void onPlayerJoin(PlayerJoinEvent event) {
if (DeepStoragePlus.loadpack) {
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(main, new Runnable() {
- @Override
- public void run() {
- event.getPlayer().setResourcePack(link);
- }
+ Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(main, () -> {
+ event.getPlayer().setResourcePack(link);
}, 1);
}
}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/ItemList.java b/src/main/java/me/darkolythe/deepstorageplus/utils/ItemList.java
index 1c91388..f6035cf 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/utils/ItemList.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/ItemList.java
@@ -1,21 +1,53 @@
package me.darkolythe.deepstorageplus.utils;
import me.darkolythe.deepstorageplus.DeepStoragePlus;
+import me.darkolythe.deepstorageplus.utils.item.misc.LinkModule;
+import me.darkolythe.deepstorageplus.utils.item.misc.SpeedUpgrade;
+import me.darkolythe.deepstorageplus.utils.item.misc.WirelessReceiver;
+import me.darkolythe.deepstorageplus.utils.item.misc.WirelessTerminal;
+import me.darkolythe.deepstorageplus.utils.item.storagecells.StorageCell;
+import me.darkolythe.deepstorageplus.utils.item.storagecontainer.StorageContainer;
+import me.darkolythe.deepstorageplus.utils.item.wrench.SorterWrench;
+import me.darkolythe.deepstorageplus.utils.item.wrench.StorageWrench;
import org.bukkit.ChatColor;
import org.bukkit.Material;
-import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
import java.util.*;
-import static me.darkolythe.deepstorageplus.dsu.managers.WirelessManager.createReceiver;
-import static me.darkolythe.deepstorageplus.dsu.managers.WirelessManager.createTerminal;
-
public class ItemList {
private DeepStoragePlus main;
+
+ // Wrenches
+ public static final int SORTER_WRENCH_MODEL_ID = 20000;
+ public static final int STORAGE_WRENCH_MODEL_ID = 20001;
+
+ // Misc
+ public static final int GUI_BACKGROUND_MODEL_ID = 20002;
+ public static final int LINK_MODULE_MODEL_ID = 20003;
+ public static final int LINK_SLOT_MODEL_ID = 20004;
+ public static final int SPEEDUPGRADE_MODEL_ID = 20005;
+ public static final int STORAGE_SLOT_MODEL_ID = 20006;
+ public static final int RECEIVER_MODEL_ID = 20007;
+ public static final int TERMINAL_MODEL_ID = 20008;
+
+ // Storage Cells
+ public static final int STORAGE_CELL_1K_MODEL_ID = 20009;
+ public static final int STORAGE_CELL_4K_MODEL_ID = 20010;
+ public static final int STORAGE_CELL_16K_MODEL_ID = 20011;
+ public static final int STORAGE_CELL_64K_MODEL_ID = 20012;
+ public static final int STORAGE_CELL_256K_MODEL_ID = 20013;
+ public static final int STORAGE_CELL_1M_MODEL_ID = 20014;
+
+ // Storage Containers
+ public static final int STORAGE_CONTAINER_1K_MODEL_ID = 20015;
+ public static final int STORAGE_CONTAINER_4K_MODEL_ID = 20016;
+ public static final int STORAGE_CONTAINER_16K_MODEL_ID = 20017;
+ public static final int STORAGE_CONTAINER_64K_MODEL_ID = 20018;
+ public static final int STORAGE_CONTAINER_256K_MODEL_ID = 20019;
+ public static final int STORAGE_CONTAINER_1M_MODEL_ID = 20020;
public ItemStack storageCell1K;
public ItemStack storageCell4K;
@@ -38,50 +70,123 @@ public class ItemList {
public ItemStack linkModule;
public Map itemListMap = new HashMap<>();
+ private static final List storageContainerIds = new ArrayList<>();
public ItemList(DeepStoragePlus plugin) {
this.main = plugin; // set it equal to an instance of main
-
- // Item Definitions
- this.storageCell1K = createStorageCell(15, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecell") + " " + ChatColor.GRAY.toString() + ChatColor.BOLD.toString() + "1K");
-
- this.storageCell4K = createStorageCell(30, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecell") + " " + ChatColor.WHITE.toString() + ChatColor.BOLD.toString() + "4K");
-
- this.storageCell16K = createStorageCell(40, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecell") + " " + ChatColor.YELLOW.toString() + ChatColor.BOLD.toString() + "16K");
-
- this.storageCell64K = createStorageCell(53, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecell") + " " + ChatColor.GREEN.toString() + ChatColor.BOLD.toString() + "64K");
-
- this.storageCell256K = createStorageCell(66, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecell") + " " + ChatColor.BLUE.toString() + ChatColor.BOLD.toString() + "256K");
-
- this.storageCell1M = createStorageCell(10, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecell") + " " + ChatColor.LIGHT_PURPLE.toString() + ChatColor.BOLD.toString() + "1M");
-
- this.storageContainer1K = createStorageCell(79, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecontainer") + " " + ChatColor.GRAY.toString() + ChatColor.BOLD.toString() + "1K");
- createLore(storageContainer1K, getStorageMaxConfig("1kmax"));
-
- this.storageContainer4K = createStorageCell(92, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecontainer") + " " + ChatColor.WHITE.toString() + ChatColor.BOLD.toString() + "4K");
- createLore(storageContainer4K, getStorageMaxConfig("4kmax"));
-
- this.storageContainer16K = createStorageCell(105, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecontainer") + " " + ChatColor.YELLOW.toString() + ChatColor.BOLD.toString() + "16K");
- createLore(storageContainer16K, getStorageMaxConfig("16kmax"));
-
- this.storageContainer64K = createStorageCell(118, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecontainer") + " " + ChatColor.GREEN.toString() + ChatColor.BOLD.toString() + "64K");
- createLore(storageContainer64K, getStorageMaxConfig("64kmax"));
-
- this.storageContainer256K = createStorageCell(130, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecontainer") + " " + ChatColor.BLUE.toString() + ChatColor.BOLD.toString() + "256K");
- createLore(storageContainer256K, this.getStorageMaxConfig("256kmax"));
-
- this.storageContainer1M = createStorageCell(20, ChatColor.WHITE.toString() + LanguageManager.getValue("storagecontainer") + " " + ChatColor.LIGHT_PURPLE.toString() + ChatColor.BOLD.toString() + "1M");
- createLore(storageContainer1M, getStorageMaxConfig("1mmax"));
-
- this.creativeStorageContainer = createStorageCell(20, ChatColor.DARK_PURPLE.toString() + LanguageManager.getValue("creativestoragecontainer"));
- createLore(creativeStorageContainer, Integer.MAX_VALUE);
-
+ // Storage Cells
+ this.storageCell1K = new StorageCell()
+ .setCustomModelData(STORAGE_CELL_1K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecell", ChatColor.GRAY, "1K"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageCell4K = new StorageCell()
+ .setCustomModelData(STORAGE_CELL_4K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecell", ChatColor.WHITE, "4K"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageCell16K = new StorageCell()
+ .setCustomModelData(STORAGE_CELL_16K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecell", ChatColor.YELLOW, "16K"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageCell64K = new StorageCell()
+ .setCustomModelData(STORAGE_CELL_64K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecell", ChatColor.GREEN, "64K"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageCell256K = new StorageCell()
+ .setCustomModelData(STORAGE_CELL_256K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecell", ChatColor.BLUE, "256K"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageCell1M = new StorageCell()
+ .setCustomModelData(STORAGE_CELL_1M_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecell", ChatColor.LIGHT_PURPLE, "1M"))
+ .setItemMeta()
+ .getItem();
+
+ // Storage Containers
+ this.storageContainer1K = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_1K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.GRAY, "1K"))
+ .setLore(getStorageMaxConfig("1kmax"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageContainer4K = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_4K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.WHITE, "4K"))
+ .setLore(getStorageMaxConfig("4kmax"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageContainer16K = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_16K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.YELLOW, "16K"))
+ .setLore(getStorageMaxConfig("16kmax"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageContainer64K = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_64K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.GREEN, "64K"))
+ .setLore(getStorageMaxConfig("64kmax"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageContainer256K = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_256K_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.BLUE, "256K"))
+ .setLore(getStorageMaxConfig("256kmax"))
+ .setItemMeta()
+ .getItem();
+
+ this.storageContainer1M = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_1M_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.LIGHT_PURPLE, "1M"))
+ .setLore(getStorageMaxConfig("1mmax"))
+ .setItemMeta()
+ .getItem();
+
+ this.creativeStorageContainer = new StorageContainer()
+ .setCustomModelData(STORAGE_CONTAINER_1M_MODEL_ID)
+ .setName(getStorageCellName(ChatColor.WHITE, "storagecontainer", ChatColor.GRAY, ""))
+ .setLore(Integer.MAX_VALUE)
+ .setItemMeta()
+ .getItem();
+
+ // Wrenches
this.storageWrench = createStorageWrench();
+
this.sorterWrench = createSorterWrench();
+
+ // Link Module, Wireless Receiver and Wireless Terminal
this.linkModule = createLinkModule();
- this.receiver = createReceiver();
- this.terminal = createTerminal();
+
+ this.receiver = new WirelessReceiver()
+ .setName(ChatColor.AQUA + LanguageManager.getValue("receiver"))
+ .setItemMeta()
+ .getItem();
+
+ this.terminal = new WirelessTerminal()
+ .setName(ChatColor.AQUA + LanguageManager.getValue("terminal"))
+ .setLore(Arrays.asList(
+ ChatColor.GRAY + "---------------------",
+ ChatColor.RED + ChatColor.BOLD.toString() + LanguageManager.getValue("unlinked"),
+ ChatColor.GRAY + LanguageManager.getValue("clicktolink"),
+ ChatColor.GRAY + "---------------------",
+ ChatColor.AQUA + LanguageManager.getValue("terminal")
+ ))
+ .setItemMeta()
+ .getItem();
+
this.speedUpgrade = createSpeedUpgrade();
itemListMap.put("storage_cell_1k", storageCell1K);
@@ -103,6 +208,13 @@ public ItemList(DeepStoragePlus plugin) {
itemListMap.put("terminal", terminal);
itemListMap.put("speed_upgrade", speedUpgrade);
itemListMap.put("link_module", linkModule);
+
+ storageContainerIds.add(STORAGE_CONTAINER_1K_MODEL_ID);
+ storageContainerIds.add(STORAGE_CONTAINER_4K_MODEL_ID);
+ storageContainerIds.add(STORAGE_CONTAINER_16K_MODEL_ID);
+ storageContainerIds.add(STORAGE_CONTAINER_64K_MODEL_ID);
+ storageContainerIds.add(STORAGE_CONTAINER_256K_MODEL_ID);
+ storageContainerIds.add(STORAGE_CONTAINER_1M_MODEL_ID);
}
// Helper methods
@@ -116,86 +228,74 @@ public Optional getItem(String itemName) {
}
return Optional.ofNullable(item);
}
-
- private int getStorageMaxConfig(String size) {
- if (main.getConfig().getBoolean("countinstacks")) {
- return main.getConfig().getInt(size) * 1024 * 64;
+
+ public static boolean isStorageContainerItem(ItemStack item) {
+ if (item == null) {
+ return false;
}
- return main.getConfig().getInt(size) * 1024;
- }
-
- private static ItemStack createStorageCell(int durability, String name) {
- ItemStack storageCell = new ItemStack(Material.STONE_AXE);
- ItemMeta storageCellMeta = storageCell.getItemMeta();
- storageCellMeta.setDisplayName(name);
- storageCellMeta.setUnbreakable(true);
- storageCellMeta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
- storageCellMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
- storageCell.setItemMeta(storageCellMeta);
- storageCell.setDurability((short) durability);
-
- return storageCell;
+
+ if (item.getType() != Material.IRON_HORSE_ARMOR) {
+ return false;
+ }
+
+ if (item.getItemMeta() == null || !item.hasItemMeta()) {
+ return false;
+ }
+
+ return storageContainerIds.contains(item.getItemMeta().getCustomModelData());
}
-
- private static void createLore(ItemStack container, int storageMax) {
- int maxTypes = 7;
- List lore = new ArrayList<>();
-
- ItemMeta meta = container.getItemMeta();
- lore.add(ChatColor.GREEN + LanguageManager.getValue("currentstorage") + ": " + 0 + "/" + storageMax);
-
- lore.add(ChatColor.GREEN + LanguageManager.getValue("currenttypes") + ": " + 0 + "/" + maxTypes);
-
- for (int i = 0; i < maxTypes; i++) {
- lore.add(ChatColor.GRAY + " - " + LanguageManager.getValue("empty"));
+
+ public static boolean isDSPItem(ItemStack item, int modelId) {
+ if (item == null) {
+ return false;
}
-
- meta.setLore(lore);
- container.setItemMeta(meta);
+
+ if (item.getItemMeta() == null || !item.hasItemMeta()) {
+ return false;
+ }
+
+ return item.getItemMeta().getCustomModelData() == modelId;
}
public static ItemStack createStorageWrench() {
- ItemStack storageWrench = createStorageCell(130, ChatColor.AQUA.toString() + LanguageManager.getValue("storageloader"));
- storageWrench.setType(Material.STONE_SHOVEL);
- ItemMeta wrenchmeta = storageWrench.getItemMeta();
- wrenchmeta.setLore(Arrays.asList(ChatColor.GRAY + LanguageManager.getValue("clickempty"),
- ChatColor.GRAY + LanguageManager.getValue("tocreatedsu"), "", ChatColor.GRAY + LanguageManager.getValue("onetimeuse")));
- storageWrench.setItemMeta(wrenchmeta);
-
- return storageWrench;
+ return new StorageWrench()
+ .setName(ChatColor.AQUA + LanguageManager.getValue("storageloader"))
+ .setLore(Arrays.asList(
+ ChatColor.GRAY + LanguageManager.getValue("clickempty"),
+ ChatColor.GRAY + LanguageManager.getValue("tocreatedsu"),
+ "",
+ ChatColor.GRAY + LanguageManager.getValue("onetimeuse")
+ ))
+ .setItemMeta()
+ .getItem();
}
public static ItemStack createSorterWrench() {
- ItemStack sorterWrench = createStorageWrench();
- sorterWrench.setDurability((short)105);
- ItemMeta wrenchmeta = sorterWrench.getItemMeta();
- wrenchmeta.setDisplayName(ChatColor.AQUA.toString() + LanguageManager.getValue("sorterloader"));
- sorterWrench.setItemMeta(wrenchmeta);
-
- return sorterWrench;
+ return new SorterWrench()
+ .setName(ChatColor.AQUA + LanguageManager.getValue("sorterloader"))
+ .setItemMeta()
+ .getItem();
}
public static ItemStack createLinkModule() {
- ItemStack linkModule = createStorageCell(99, ChatColor.AQUA.toString() + LanguageManager.getValue("linkmodule"));
- linkModule.setType(Material.STONE_SHOVEL);
- ItemMeta wrenchmeta = linkModule.getItemMeta();
- wrenchmeta.setLore(Arrays.asList(ChatColor.GRAY + "Click DSU",
- ChatColor.GRAY + "To save DSU coordinates to this link module"));
- linkModule.setItemMeta(wrenchmeta);
-
- return linkModule;
+ return new LinkModule()
+ .setName(ChatColor.AQUA + LanguageManager.getValue("linkmodule"))
+ .setLore(Arrays.asList(
+ ChatColor.GRAY + "Click DSU to save coordinates",
+ ChatColor.GRAY + "to this link module."
+ ))
+ .setItemMeta()
+ .getItem();
}
public static ItemStack createSpeedUpgrade() {
- ItemStack item = new ItemStack(Material.GLOWSTONE_DUST);
- ItemMeta meta = item.getItemMeta();
- meta.setDisplayName(ChatColor.WHITE.toString() + ChatColor.BOLD.toString() + LanguageManager.getValue("ioupgrade"));
- meta.setLore(Arrays.asList(ChatColor.GRAY + LanguageManager.getValue("clicktoupgrade")));
- meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
- item.setItemMeta(meta);
- item.addUnsafeEnchantment(Enchantment.DURABILITY, 1);
-
- return item;
+ return new SpeedUpgrade()
+ .setName(ChatColor.WHITE + ChatColor.BOLD.toString() + LanguageManager.getValue("ioupgrade"))
+ .setLore(Collections.singletonList(ChatColor.GRAY + LanguageManager.getValue("clicktoupgrade")))
+ .hideEnchantment()
+ .setItemMeta()
+ .setEnchanted()
+ .getItem();
}
/**
@@ -203,11 +303,22 @@ public static ItemStack createSpeedUpgrade() {
* @return true if the items are similar
*/
public static boolean compareItem(ItemStack item1, ItemStack item2) {
- if (!item1.hasItemMeta() || !item2.hasItemMeta()) {
+ if (item1.getItemMeta() == null || !item1.hasItemMeta() || item2.getItemMeta() == null || !item2.hasItemMeta()) {
return false;
}
return item1.getItemMeta().getDisplayName().equals(item2.getItemMeta().getDisplayName())
- && item1.getItemMeta().isUnbreakable() == item2.getItemMeta().isUnbreakable();
+ && item1.getItemMeta().getCustomModelData() == item2.getItemMeta().getCustomModelData();
+ }
+
+ private int getStorageMaxConfig(String size) {
+ if (main.getConfig().getBoolean("countinstacks")) {
+ return main.getConfig().getInt(size) * 1024 * 64;
+ }
+ return main.getConfig().getInt(size) * 1024;
+ }
+
+ private String getStorageCellName(ChatColor nameColor, String key, ChatColor typeColor, String type) {
+ return nameColor + LanguageManager.getValue(key) + " " + typeColor + ChatColor.BOLD + type;
}
}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/LanguageManager.java b/src/main/java/me/darkolythe/deepstorageplus/utils/LanguageManager.java
index 7ce5a2a..2d3540d 100644
--- a/src/main/java/me/darkolythe/deepstorageplus/utils/LanguageManager.java
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/LanguageManager.java
@@ -1,6 +1,7 @@
package me.darkolythe.deepstorageplus.utils;
import me.darkolythe.deepstorageplus.DeepStoragePlus;
+import org.bukkit.ChatColor;
import java.util.HashMap;
import java.util.Map;
@@ -86,10 +87,6 @@ public static void setup(DeepStoragePlus main) {
}
public static String getValue(String key) {
- if (translateMap.containsKey(key)) {
- return translateMap.get(key);
- } else {
- return "[Invalid Translate Key]";
- }
+ return ChatColor.translateAlternateColorCodes('&', translateMap.getOrDefault(key, "[Invalid Translate Key]"));
}
}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/DSPItem.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/DSPItem.java
new file mode 100644
index 0000000..546bc36
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/DSPItem.java
@@ -0,0 +1,16 @@
+package me.darkolythe.deepstorageplus.utils.item;
+
+import org.bukkit.inventory.ItemStack;
+
+import java.util.List;
+
+public interface DSPItem {
+
+ public DSPItem setName(String name);
+
+ public DSPItem setLore(List lore);
+
+ public DSPItem setItemMeta();
+
+ public ItemStack getItem();
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/DSUWall.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/DSUWall.java
new file mode 100644
index 0000000..b323cb9
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/DSUWall.java
@@ -0,0 +1,45 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class DSUWall implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public DSUWall() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ meta.setCustomModelData(ItemList.GUI_BACKGROUND_MODEL_ID);
+ }
+
+ @Override
+ public DSUWall setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public DSUWall setLore(List lore) {
+ return this;
+ }
+
+ @Override
+ public DSUWall setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/EmptyLinkModuleSlot.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/EmptyLinkModuleSlot.java
new file mode 100644
index 0000000..8828a3f
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/EmptyLinkModuleSlot.java
@@ -0,0 +1,45 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class EmptyLinkModuleSlot implements DSPItem {
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public EmptyLinkModuleSlot() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ meta.setCustomModelData(ItemList.LINK_SLOT_MODEL_ID);
+ }
+
+ @Override
+ public EmptyLinkModuleSlot setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public EmptyLinkModuleSlot setLore(List lore) {
+ return this;
+ }
+
+ @Override
+ public EmptyLinkModuleSlot setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/EmptyStorageSlot.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/EmptyStorageSlot.java
new file mode 100644
index 0000000..7e1d50b
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/EmptyStorageSlot.java
@@ -0,0 +1,45 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class EmptyStorageSlot implements DSPItem {
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public EmptyStorageSlot() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ meta.setCustomModelData(ItemList.STORAGE_SLOT_MODEL_ID);
+ }
+
+ @Override
+ public EmptyStorageSlot setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public EmptyStorageSlot setLore(List lore) {
+ return this;
+ }
+
+ @Override
+ public EmptyStorageSlot setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/LinkModule.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/LinkModule.java
new file mode 100644
index 0000000..c058159
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/LinkModule.java
@@ -0,0 +1,48 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class LinkModule implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public LinkModule() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ meta.setCustomModelData(ItemList.LINK_MODULE_MODEL_ID);
+ }
+
+ @Override
+ public LinkModule setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public LinkModule setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public LinkModule setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/SpeedUpgrade.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/SpeedUpgrade.java
new file mode 100644
index 0000000..32b6d64
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/SpeedUpgrade.java
@@ -0,0 +1,58 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class SpeedUpgrade implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public SpeedUpgrade() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ meta.setCustomModelData(ItemList.SPEEDUPGRADE_MODEL_ID);
+ }
+
+ @Override
+ public SpeedUpgrade setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public SpeedUpgrade setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public SpeedUpgrade setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+
+ public SpeedUpgrade hideEnchantment() {
+ meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
+ return this;
+ }
+
+ public SpeedUpgrade setEnchanted() {
+ item.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, 1);
+ return this;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/WirelessReceiver.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/WirelessReceiver.java
new file mode 100644
index 0000000..49c4bb2
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/WirelessReceiver.java
@@ -0,0 +1,46 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class WirelessReceiver implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public WirelessReceiver() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ this.meta.setCustomModelData(ItemList.RECEIVER_MODEL_ID);
+ }
+
+ @Override
+ public WirelessReceiver setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public WirelessReceiver setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public WirelessReceiver setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/WirelessTerminal.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/WirelessTerminal.java
new file mode 100644
index 0000000..ad77b4a
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/misc/WirelessTerminal.java
@@ -0,0 +1,58 @@
+package me.darkolythe.deepstorageplus.utils.item.misc;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class WirelessTerminal implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public WirelessTerminal() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ this.meta.setCustomModelData(ItemList.TERMINAL_MODEL_ID);
+ }
+
+ @Override
+ public WirelessTerminal setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public WirelessTerminal setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public WirelessTerminal setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+
+ public WirelessTerminal hideEnchantment() {
+ meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
+ return this;
+ }
+
+ public WirelessTerminal setEnchanted() {
+ item.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, 1);
+ return this;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/storagecells/StorageCell.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/storagecells/StorageCell.java
new file mode 100644
index 0000000..0bd1924
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/storagecells/StorageCell.java
@@ -0,0 +1,49 @@
+package me.darkolythe.deepstorageplus.utils.item.storagecells;
+
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.BundleMeta;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class StorageCell implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public StorageCell() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+ }
+
+ @Override
+ public StorageCell setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public StorageCell setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public StorageCell setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+
+ public StorageCell setCustomModelData(int modelData) {
+ meta.setCustomModelData(modelData);
+ return this;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/storagecontainer/StorageContainer.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/storagecontainer/StorageContainer.java
new file mode 100644
index 0000000..f463f7d
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/storagecontainer/StorageContainer.java
@@ -0,0 +1,64 @@
+package me.darkolythe.deepstorageplus.utils.item.storagecontainer;
+
+import me.darkolythe.deepstorageplus.utils.LanguageManager;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+public class StorageContainer implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public StorageContainer() {
+ this.item = new ItemStack(Material.IRON_HORSE_ARMOR);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+ }
+
+ @Override
+ public StorageContainer setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public StorageContainer setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public StorageContainer setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+
+ public StorageContainer setCustomModelData(int modelData){
+ meta.setCustomModelData(modelData);
+ return this;
+ }
+
+ public StorageContainer setLore(int maxSize) {
+ List lore = new ArrayList<>();
+
+ lore.add(ChatColor.GREEN + LanguageManager.getValue("currentstorage") + ": " + 0 + "/" + maxSize);
+ lore.add(ChatColor.GREEN + LanguageManager.getValue("currenttypes") + ": " + 0 + "/7");
+
+ for (int i = 0; i < 7; i++) {
+ lore.add(ChatColor.GRAY + " - " + LanguageManager.getValue("empty"));
+ }
+
+ return setLore(lore);
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/wrench/SorterWrench.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/wrench/SorterWrench.java
new file mode 100644
index 0000000..09a6258
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/wrench/SorterWrench.java
@@ -0,0 +1,47 @@
+package me.darkolythe.deepstorageplus.utils.item.wrench;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class SorterWrench implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public SorterWrench() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ meta.setCustomModelData(ItemList.SORTER_WRENCH_MODEL_ID);
+ }
+
+
+ @Override
+ public SorterWrench setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public SorterWrench setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public SorterWrench setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}
diff --git a/src/main/java/me/darkolythe/deepstorageplus/utils/item/wrench/StorageWrench.java b/src/main/java/me/darkolythe/deepstorageplus/utils/item/wrench/StorageWrench.java
new file mode 100644
index 0000000..a5c8f1d
--- /dev/null
+++ b/src/main/java/me/darkolythe/deepstorageplus/utils/item/wrench/StorageWrench.java
@@ -0,0 +1,46 @@
+package me.darkolythe.deepstorageplus.utils.item.wrench;
+
+import me.darkolythe.deepstorageplus.utils.ItemList;
+import me.darkolythe.deepstorageplus.utils.item.DSPItem;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.List;
+import java.util.Objects;
+
+public class StorageWrench implements DSPItem{
+
+ private final ItemStack item;
+ private final ItemMeta meta;
+
+ public StorageWrench() {
+ this.item = new ItemStack(Material.PAPER);
+ this.meta = Objects.requireNonNull(item.getItemMeta());
+
+ this.meta.setCustomModelData(ItemList.STORAGE_WRENCH_MODEL_ID);
+ }
+
+ @Override
+ public StorageWrench setName(String name) {
+ meta.setDisplayName(name);
+ return this;
+ }
+
+ @Override
+ public StorageWrench setLore(List lore) {
+ meta.setLore(lore);
+ return this;
+ }
+
+ @Override
+ public StorageWrench setItemMeta() {
+ item.setItemMeta(meta);
+ return this;
+ }
+
+ @Override
+ public ItemStack getItem() {
+ return item;
+ }
+}