225 lines
5.1 KiB
Java
225 lines
5.1 KiB
Java
package com.rsscripting.serveradmin.gui;
|
|
|
|
import com.rsscripting.serveradmin.RSServerAdmin;
|
|
import com.rsscripting.serveradmin.keepinventory.KeepInventoryDAO;
|
|
import com.rsscripting.serveradmin.worlds.WorldsDAO;
|
|
import com.rsscripting.serveradmin.settings.SettingKey;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
|
import java.sql.SQLException;
|
|
import java.util.List;
|
|
|
|
public class KeepInventoryMenu {
|
|
|
|
private static final int WORLDS_PER_PAGE = 45;
|
|
|
|
public static Inventory create(
|
|
int page
|
|
) throws SQLException {
|
|
|
|
RSMenuHolder holder =
|
|
new RSMenuHolder(
|
|
"KEEP_INVENTORY"
|
|
);
|
|
|
|
holder.setPage(
|
|
page
|
|
);
|
|
|
|
Inventory inventory =
|
|
Bukkit.createInventory(
|
|
holder,
|
|
54,
|
|
"Keep Inventory"
|
|
);
|
|
|
|
GUIUtils.fillEmptySlots(
|
|
inventory
|
|
);
|
|
|
|
createBackButton(
|
|
inventory
|
|
);
|
|
|
|
createDefaultButton(
|
|
inventory
|
|
);
|
|
|
|
populateWorlds(
|
|
inventory,
|
|
page
|
|
);
|
|
|
|
return inventory;
|
|
|
|
}
|
|
|
|
private static void createBackButton(
|
|
Inventory inventory
|
|
) {
|
|
|
|
ItemStack item =
|
|
new ItemStack(
|
|
Material.ARROW
|
|
);
|
|
|
|
ItemMeta meta =
|
|
item.getItemMeta();
|
|
|
|
if (meta != null) {
|
|
|
|
meta.setDisplayName(
|
|
"§cBack"
|
|
);
|
|
|
|
item.setItemMeta(
|
|
meta
|
|
);
|
|
|
|
}
|
|
|
|
inventory.setItem(
|
|
3,
|
|
item
|
|
);
|
|
|
|
}
|
|
|
|
private static void createDefaultButton(
|
|
Inventory inventory
|
|
) throws SQLException {
|
|
|
|
boolean enabled =
|
|
RSServerAdmin.getInstance()
|
|
.getSettingsDAO()
|
|
.getDefault(
|
|
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
|
);
|
|
|
|
ItemStack item =
|
|
new ItemStack(
|
|
enabled
|
|
? Material.ENDER_CHEST
|
|
: Material.CHEST
|
|
);
|
|
|
|
ItemMeta meta =
|
|
item.getItemMeta();
|
|
|
|
if (meta != null) {
|
|
|
|
meta.setDisplayName(
|
|
"§eDefault For New Worlds"
|
|
);
|
|
|
|
meta.setLore(
|
|
List.of(
|
|
"§7Controls newly detected worlds",
|
|
"",
|
|
enabled
|
|
? "§aCurrent: New worlds, Players keep inventory on death"
|
|
: "§cCurrent: New worlds, Players drop inventory on death"
|
|
)
|
|
);
|
|
|
|
item.setItemMeta(
|
|
meta
|
|
);
|
|
|
|
}
|
|
|
|
if (enabled) {
|
|
|
|
GUIUtils.addGlow(
|
|
item
|
|
);
|
|
|
|
}
|
|
|
|
inventory.setItem(
|
|
5,
|
|
item
|
|
);
|
|
|
|
}
|
|
|
|
private static void populateWorlds(
|
|
Inventory inventory,
|
|
int page
|
|
) throws SQLException {
|
|
|
|
KeepInventoryDAO dao =
|
|
RSServerAdmin.getInstance()
|
|
.getKeepInventoryDAO();
|
|
|
|
List<String> worlds =
|
|
RSServerAdmin.getInstance()
|
|
.getWorldsDAO()
|
|
.getAllWorlds();
|
|
|
|
int start =
|
|
(page - 1) * WORLDS_PER_PAGE;
|
|
|
|
int slot =
|
|
9;
|
|
|
|
for (int i = start;
|
|
i < worlds.size() && slot < 54;
|
|
i++) {
|
|
|
|
String worldName =
|
|
worlds.get(i);
|
|
|
|
boolean enabled =
|
|
dao.getWorldSetting(
|
|
worldName
|
|
);
|
|
|
|
ItemStack item =
|
|
new ItemStack(
|
|
enabled
|
|
? Material.LIME_SHULKER_BOX
|
|
: Material.RED_SHULKER_BOX
|
|
);
|
|
|
|
ItemMeta meta =
|
|
item.getItemMeta();
|
|
|
|
if (meta != null) {
|
|
|
|
meta.setDisplayName(
|
|
"§e" + worldName
|
|
);
|
|
|
|
meta.setLore(
|
|
List.of(
|
|
"§7Keep Inventory",
|
|
"",
|
|
enabled
|
|
? "§aCurrent: Players keep inventory on death"
|
|
: "§cCurrent: Players drop inventory on death"
|
|
)
|
|
);
|
|
|
|
item.setItemMeta(
|
|
meta
|
|
);
|
|
|
|
}
|
|
|
|
inventory.setItem(
|
|
slot,
|
|
item
|
|
);
|
|
|
|
slot++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} |