Files
ServerAdmin/src/main/java/com/rsscripting/serveradmin/gui/KeepInventoryMenu.java
T

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