Per-world Creeper settings complete
- Added per-world Block Damage settings - Added per-world Entity Damage settings - Added creeper_settings database support - Added world-specific Creeper menus - Added automatic world registration/default inheritance - Split Creeper listeners - Updated Creeper behavior to use world settings - Removed obsolete global Creeper indicators - Adopted logger-based error reporting standard
This commit is contained in:
1 parent
ebf030b192
commit
73a0ef8ae6
23 files changed
+1203
-73
No files matched your search
@@ -1,8 +1,11 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.creeper.CreeperSettingsDAO;
|
||||
import com.rsscripting.serveradmin.dao.CreeperSettingsDAO;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import com.rsscripting.serveradmin.utils.MenuLayoutUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.creeper.CreeperSettingsDAO;
|
||||
import com.rsscripting.serveradmin.dao.CreeperSettingsDAO;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import com.rsscripting.serveradmin.utils.MenuLayoutUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
@@ -111,13 +113,22 @@ public class CreeperMenu {
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
ex.printStackTrace();
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to build Creeper menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
ex.printStackTrace();
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to build Creeper menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
|
||||
public class GUIUtils {
|
||||
|
||||
private GUIUtils() {
|
||||
}
|
||||
|
||||
public static ItemStack createFiller() {
|
||||
|
||||
ItemStack item =
|
||||
new ItemStack(Material.LIGHT_BLUE_STAINED_GLASS_PANE);
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
if (meta != null) {
|
||||
meta.setDisplayName(" ");
|
||||
item.setItemMeta(meta);
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public static void fillEmptySlots(Inventory inventory) {
|
||||
|
||||
ItemStack filler = createFiller();
|
||||
|
||||
for (int slot = 0; slot < inventory.getSize(); slot++) {
|
||||
|
||||
if (inventory.getItem(slot) == null) {
|
||||
inventory.setItem(slot, filler);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void addGlow(ItemStack item) {
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
meta.addEnchant(
|
||||
Enchantment.UNBREAKING,
|
||||
1,
|
||||
true
|
||||
);
|
||||
|
||||
meta.addItemFlags(
|
||||
ItemFlag.HIDE_ENCHANTS
|
||||
);
|
||||
|
||||
item.setItemMeta(meta);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.keepinventory.KeepInventoryDAO;
|
||||
import com.rsscripting.serveradmin.dao.KeepInventoryDAO;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import com.rsscripting.serveradmin.utils.MenuLayoutUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.gui.GUIUtils;
|
||||
import com.rsscripting.serveradmin.gui.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.gui.KeepInventoryMenu;
|
||||
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
@@ -57,6 +55,31 @@ public class MainMenu {
|
||||
|
||||
inventory.setItem(11, creeper);
|
||||
|
||||
ItemStack mobDrops =
|
||||
new ItemStack(
|
||||
Material.SKELETON_SKULL
|
||||
);
|
||||
|
||||
ItemMeta mobDropsMeta =
|
||||
mobDrops.getItemMeta();
|
||||
|
||||
if (mobDropsMeta != null) {
|
||||
|
||||
mobDropsMeta.setDisplayName(
|
||||
"§aMob Equipment Drops"
|
||||
);
|
||||
|
||||
mobDrops.setItemMeta(
|
||||
mobDropsMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
13,
|
||||
mobDrops
|
||||
);
|
||||
|
||||
ItemStack keepInventory =
|
||||
new ItemStack(Material.CHEST);
|
||||
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MenuLayoutUtils {
|
||||
|
||||
public static List<Integer> getCenteredSlots(
|
||||
int itemCount
|
||||
) {
|
||||
|
||||
List<Integer> rowSlots =
|
||||
new ArrayList<>();
|
||||
|
||||
if (itemCount <= 0) {
|
||||
return rowSlots;
|
||||
}
|
||||
|
||||
if (itemCount >= 9) {
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
rowSlots.add(i);
|
||||
}
|
||||
|
||||
return rowSlots;
|
||||
|
||||
}
|
||||
|
||||
if (itemCount % 2 == 0) {
|
||||
|
||||
switch (itemCount) {
|
||||
|
||||
case 2 -> rowSlots = List.of(
|
||||
3, 5
|
||||
);
|
||||
|
||||
case 4 -> rowSlots = List.of(
|
||||
2, 3, 5, 6
|
||||
);
|
||||
|
||||
case 6 -> rowSlots = List.of(
|
||||
1, 2, 3, 5, 6, 7
|
||||
);
|
||||
|
||||
case 8 -> rowSlots = List.of(
|
||||
0, 1, 2, 3, 5, 6, 7, 8
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
int startSlot =
|
||||
(9 - itemCount) / 2;
|
||||
|
||||
for (int i = 0; i < itemCount; i++) {
|
||||
|
||||
rowSlots.add(
|
||||
startSlot + i
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return rowSlots;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class MobEquipmentMenu {
|
||||
|
||||
public static Inventory create() {
|
||||
|
||||
RSMenuHolder holder =
|
||||
new RSMenuHolder(
|
||||
"MOB_EQUIPMENT"
|
||||
);
|
||||
|
||||
Inventory inventory =
|
||||
Bukkit.createInventory(
|
||||
holder,
|
||||
27,
|
||||
"Mob Equipment Drops"
|
||||
);
|
||||
|
||||
GUIUtils.fillEmptySlots(
|
||||
inventory
|
||||
);
|
||||
|
||||
/*
|
||||
| Back
|
||||
*/
|
||||
|
||||
ItemStack back =
|
||||
new ItemStack(
|
||||
Material.ARROW
|
||||
);
|
||||
|
||||
ItemMeta backMeta =
|
||||
back.getItemMeta();
|
||||
|
||||
if (backMeta != null) {
|
||||
|
||||
backMeta.setDisplayName(
|
||||
"§cBack"
|
||||
);
|
||||
|
||||
back.setItemMeta(
|
||||
backMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
4,
|
||||
back
|
||||
);
|
||||
|
||||
/*
|
||||
| Armor Drops
|
||||
*/
|
||||
|
||||
ItemStack armor =
|
||||
new ItemStack(
|
||||
Material.DIAMOND_CHESTPLATE
|
||||
);
|
||||
|
||||
ItemMeta armorMeta =
|
||||
armor.getItemMeta();
|
||||
|
||||
if (armorMeta != null) {
|
||||
|
||||
armorMeta.setDisplayName(
|
||||
"§aArmor Drops"
|
||||
);
|
||||
|
||||
armor.setItemMeta(
|
||||
armorMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
11,
|
||||
armor
|
||||
);
|
||||
|
||||
/*
|
||||
| Hand Item Drops
|
||||
*/
|
||||
|
||||
ItemStack hands =
|
||||
new ItemStack(
|
||||
Material.DIAMOND_SWORD
|
||||
);
|
||||
|
||||
ItemMeta handMeta =
|
||||
hands.getItemMeta();
|
||||
|
||||
if (handMeta != null) {
|
||||
|
||||
handMeta.setDisplayName(
|
||||
"§aHand Item Drops"
|
||||
);
|
||||
|
||||
hands.setItemMeta(
|
||||
handMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
15,
|
||||
hands
|
||||
);
|
||||
|
||||
return inventory;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,268 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class MobEquipmentSettingsMenu {
|
||||
|
||||
public static Inventory create(
|
||||
String worldName
|
||||
) {
|
||||
|
||||
RSMenuHolder holder =
|
||||
new RSMenuHolder(
|
||||
"MOB_EQUIPMENT_SETTINGS"
|
||||
);
|
||||
|
||||
holder.setWorldName(
|
||||
worldName
|
||||
);
|
||||
|
||||
boolean helmetEnabled = true;
|
||||
boolean chestplateEnabled = true;
|
||||
boolean leggingsEnabled = true;
|
||||
boolean bootsEnabled = true;
|
||||
boolean mainHandEnabled = true;
|
||||
boolean offHandEnabled = true;
|
||||
|
||||
try {
|
||||
|
||||
helmetEnabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.getHelmet(
|
||||
worldName
|
||||
);
|
||||
|
||||
chestplateEnabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.getChestplate(
|
||||
worldName
|
||||
);
|
||||
|
||||
leggingsEnabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.getLeggings(
|
||||
worldName
|
||||
);
|
||||
|
||||
bootsEnabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.getBoots(
|
||||
worldName
|
||||
);
|
||||
|
||||
mainHandEnabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.getMainHand(
|
||||
worldName
|
||||
);
|
||||
|
||||
offHandEnabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.getOffHand(
|
||||
worldName
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to load equipment drop settings for "
|
||||
+ worldName
|
||||
+ ": "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
Inventory inventory =
|
||||
Bukkit.createInventory(
|
||||
holder,
|
||||
54,
|
||||
"Equipment: " + worldName
|
||||
);
|
||||
|
||||
GUIUtils.fillEmptySlots(
|
||||
inventory
|
||||
);
|
||||
|
||||
/*
|
||||
| Back
|
||||
*/
|
||||
|
||||
ItemStack back =
|
||||
new ItemStack(
|
||||
Material.ARROW
|
||||
);
|
||||
|
||||
ItemMeta backMeta =
|
||||
back.getItemMeta();
|
||||
|
||||
if (backMeta != null) {
|
||||
|
||||
backMeta.setDisplayName(
|
||||
"§cBack"
|
||||
);
|
||||
|
||||
back.setItemMeta(
|
||||
backMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
4,
|
||||
back
|
||||
);
|
||||
|
||||
/*
|
||||
| Helmet
|
||||
*/
|
||||
|
||||
ItemStack helmet =
|
||||
new ItemStack(
|
||||
Material.LEATHER_HELMET
|
||||
);
|
||||
|
||||
if (helmetEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
helmet
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
13,
|
||||
helmet
|
||||
);
|
||||
|
||||
/*
|
||||
| Off Hand
|
||||
*/
|
||||
|
||||
ItemStack offHand =
|
||||
new ItemStack(
|
||||
Material.SHIELD
|
||||
);
|
||||
|
||||
if (offHandEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
offHand
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
20,
|
||||
offHand
|
||||
);
|
||||
|
||||
/*
|
||||
| Chestplate
|
||||
*/
|
||||
|
||||
ItemStack chestplate =
|
||||
new ItemStack(
|
||||
Material.LEATHER_CHESTPLATE
|
||||
);
|
||||
|
||||
if (chestplateEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
chestplate
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
21,
|
||||
chestplate
|
||||
);
|
||||
|
||||
/*
|
||||
| Main Hand
|
||||
*/
|
||||
|
||||
ItemStack mainHand =
|
||||
new ItemStack(
|
||||
Material.IRON_SWORD
|
||||
);
|
||||
|
||||
if (mainHandEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
mainHand
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
22,
|
||||
mainHand
|
||||
);
|
||||
|
||||
/*
|
||||
| Leggings
|
||||
*/
|
||||
|
||||
ItemStack leggings =
|
||||
new ItemStack(
|
||||
Material.LEATHER_LEGGINGS
|
||||
);
|
||||
|
||||
if (leggingsEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
leggings
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
29,
|
||||
leggings
|
||||
);
|
||||
|
||||
/*
|
||||
| Boots
|
||||
*/
|
||||
|
||||
ItemStack boots =
|
||||
new ItemStack(
|
||||
Material.LEATHER_BOOTS
|
||||
);
|
||||
|
||||
if (bootsEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
boots
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
37,
|
||||
boots
|
||||
);
|
||||
|
||||
return inventory;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import com.rsscripting.serveradmin.utils.MenuLayoutUtils;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
public class MobEquipmentWorldMenu {
|
||||
|
||||
private static final int WORLDS_PER_PAGE = 45;
|
||||
|
||||
public static Inventory create(
|
||||
int page
|
||||
) throws SQLException {
|
||||
|
||||
RSMenuHolder holder =
|
||||
new RSMenuHolder(
|
||||
"MOB_EQUIPMENT_WORLDS"
|
||||
);
|
||||
|
||||
holder.setPage(
|
||||
page
|
||||
);
|
||||
|
||||
Inventory inventory =
|
||||
Bukkit.createInventory(
|
||||
holder,
|
||||
54,
|
||||
"Mob Equipment Drops"
|
||||
);
|
||||
|
||||
GUIUtils.fillEmptySlots(
|
||||
inventory
|
||||
);
|
||||
|
||||
createBackButton(
|
||||
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(
|
||||
4,
|
||||
item
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
private static void populateWorlds(
|
||||
Inventory inventory,
|
||||
int page
|
||||
) throws SQLException {
|
||||
|
||||
List<String> worlds =
|
||||
RSServerAdmin.getInstance()
|
||||
.getWorldsDAO()
|
||||
.getAllWorlds();
|
||||
|
||||
int start =
|
||||
(page - 1) * WORLDS_PER_PAGE;
|
||||
|
||||
int end =
|
||||
Math.min(
|
||||
start + WORLDS_PER_PAGE,
|
||||
worlds.size()
|
||||
);
|
||||
|
||||
int worldCount =
|
||||
end - start;
|
||||
|
||||
for (int i = start;
|
||||
i < end;
|
||||
i++) {
|
||||
|
||||
String worldName =
|
||||
worlds.get(i);
|
||||
|
||||
ItemStack item =
|
||||
new ItemStack(
|
||||
Material.SKELETON_SKULL
|
||||
);
|
||||
|
||||
ItemMeta meta =
|
||||
item.getItemMeta();
|
||||
|
||||
if (meta != null) {
|
||||
|
||||
meta.setDisplayName(
|
||||
"§e" + worldName
|
||||
);
|
||||
|
||||
meta.getPersistentDataContainer()
|
||||
.set(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING,
|
||||
worldName
|
||||
);
|
||||
|
||||
meta.setLore(
|
||||
List.of(
|
||||
"§7Configure equipment drops"
|
||||
)
|
||||
);
|
||||
|
||||
item.setItemMeta(
|
||||
meta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
int relativeIndex =
|
||||
i - start;
|
||||
|
||||
int row =
|
||||
relativeIndex / 9;
|
||||
|
||||
int indexInRow =
|
||||
relativeIndex % 9;
|
||||
|
||||
int itemsRemaining =
|
||||
worldCount - (row * 9);
|
||||
|
||||
boolean lastPartialRow =
|
||||
itemsRemaining < 9;
|
||||
|
||||
int slot;
|
||||
|
||||
if (lastPartialRow) {
|
||||
|
||||
List<Integer> rowSlots =
|
||||
MenuLayoutUtils.getCenteredSlots(
|
||||
itemsRemaining
|
||||
);
|
||||
|
||||
slot =
|
||||
9
|
||||
+ (row * 9)
|
||||
+ rowSlots.get(
|
||||
indexInRow
|
||||
);
|
||||
|
||||
} else {
|
||||
|
||||
slot =
|
||||
9
|
||||
+ (row * 9)
|
||||
+ indexInRow;
|
||||
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
slot,
|
||||
item
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
package com.rsscripting.serveradmin.gui;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class RSMenuHolder
|
||||
implements InventoryHolder {
|
||||
|
||||
private final String menuId;
|
||||
|
||||
private int page = 1;
|
||||
|
||||
public RSMenuHolder(
|
||||
String menuId
|
||||
) {
|
||||
|
||||
this.menuId = menuId;
|
||||
|
||||
}
|
||||
|
||||
public String getMenuId() {
|
||||
|
||||
return menuId;
|
||||
|
||||
}
|
||||
|
||||
public int getPage() {
|
||||
|
||||
return page;
|
||||
|
||||
}
|
||||
|
||||
public void setPage(
|
||||
int page
|
||||
) {
|
||||
|
||||
if (page < 1) {
|
||||
|
||||
page = 1;
|
||||
|
||||
}
|
||||
|
||||
this.page = page;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Inventory getInventory() {
|
||||
|
||||
throw new UnsupportedOperationException(
|
||||
"RSMenuHolder does not store an inventory."
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user