Release Ready
This commit is contained in:
1 parent
73a0ef8ae6
commit
6c19c18523
12 files changed
+1718
-809
No files matched your search
@@ -3,12 +3,9 @@ package com.rsscripting.serveradmin;
|
||||
import com.rsscripting.serveradmin.dao.*;
|
||||
import com.rsscripting.serveradmin.database.DatabaseManager;
|
||||
import com.rsscripting.serveradmin.commands.RSAdminCommand;
|
||||
import com.rsscripting.serveradmin.listeners.CreeperBlockDamageListener;
|
||||
import com.rsscripting.serveradmin.listeners.*;
|
||||
import com.rsscripting.serveradmin.security.SecurityManager;
|
||||
import com.rsscripting.serveradmin.listeners.InventoryListener;
|
||||
import com.rsscripting.serveradmin.listeners.CreeperEntityDamageListener;
|
||||
import com.rsscripting.serveradmin.update.GitHubUpdateChecker;
|
||||
import com.rsscripting.serveradmin.listeners.WorldLoadListener;
|
||||
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@@ -26,7 +23,7 @@ public class RSServerAdmin extends JavaPlugin {
|
||||
private SecurityManager securityManager;
|
||||
private WorldsDAO worldsDAO;
|
||||
private CreeperSettingsDAO creeperSettingsDAO;
|
||||
private EquipmentDropSettingsDAO equipmentDropSettingsDAO;
|
||||
private MobEquipmentDropSettingsDAO equipmentDropSettingsDAO;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
@@ -61,7 +58,7 @@ public class RSServerAdmin extends JavaPlugin {
|
||||
);
|
||||
|
||||
equipmentDropSettingsDAO =
|
||||
new EquipmentDropSettingsDAO(
|
||||
new MobEquipmentDropSettingsDAO(
|
||||
databaseManager
|
||||
);
|
||||
|
||||
@@ -120,7 +117,7 @@ public class RSServerAdmin extends JavaPlugin {
|
||||
}
|
||||
|
||||
getServer().getPluginManager().registerEvents(
|
||||
new InventoryListener(),
|
||||
new MainMenuListener(),
|
||||
this
|
||||
);
|
||||
|
||||
@@ -139,6 +136,25 @@ public class RSServerAdmin extends JavaPlugin {
|
||||
this
|
||||
);
|
||||
|
||||
getServer().getPluginManager().registerEvents(
|
||||
new KeepInventoryListener(),
|
||||
this
|
||||
);
|
||||
|
||||
getServer().getPluginManager().registerEvents(
|
||||
new CreeperMenuListener(),
|
||||
this
|
||||
);
|
||||
|
||||
getServer().getPluginManager().registerEvents(
|
||||
new MobEquipmentMenuListener(),
|
||||
this
|
||||
);
|
||||
|
||||
getServer().getPluginManager().registerEvents(
|
||||
new MobEquipmentDropListener(),
|
||||
this
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
@@ -195,7 +211,7 @@ public class RSServerAdmin extends JavaPlugin {
|
||||
return creeperSettingsDAO;
|
||||
}
|
||||
|
||||
public EquipmentDropSettingsDAO
|
||||
public MobEquipmentDropSettingsDAO
|
||||
getEquipmentDropSettingsDAO() {
|
||||
|
||||
return equipmentDropSettingsDAO;
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.rsscripting.serveradmin.commands;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.security.UserRole;
|
||||
import com.rsscripting.serveradmin.utils.WorldSyncUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -42,6 +43,19 @@ public class RSAdminCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
WorldSyncUtils.synchronizeWorlds();
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
plugin.getLogger().warning(
|
||||
"World synchronization failed: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
player.openInventory(
|
||||
com.rsscripting.serveradmin.gui.MainMenu.create()
|
||||
);
|
||||
|
||||
+2
-2
@@ -7,11 +7,11 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class EquipmentDropSettingsDAO {
|
||||
public class MobEquipmentDropSettingsDAO {
|
||||
|
||||
private final DatabaseManager databaseManager;
|
||||
|
||||
public EquipmentDropSettingsDAO(
|
||||
public MobEquipmentDropSettingsDAO(
|
||||
DatabaseManager databaseManager
|
||||
) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.rsscripting.serveradmin.dao;
|
||||
|
||||
import com.rsscripting.serveradmin.database.DatabaseManager;
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -90,4 +91,81 @@ public class WorldsDAO {
|
||||
|
||||
}
|
||||
|
||||
public void deleteWorldEverywhere(
|
||||
String worldName
|
||||
) throws SQLException {
|
||||
|
||||
Connection connection =
|
||||
databaseManager.getConnection();
|
||||
|
||||
try (PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
DELETE FROM worlds
|
||||
WHERE world_name = ?
|
||||
"""
|
||||
)) {
|
||||
|
||||
statement.setString(
|
||||
1,
|
||||
worldName
|
||||
);
|
||||
|
||||
statement.executeUpdate();
|
||||
|
||||
}
|
||||
|
||||
try (PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
DELETE FROM keep_inventory
|
||||
WHERE world_name = ?
|
||||
"""
|
||||
)) {
|
||||
|
||||
statement.setString(
|
||||
1,
|
||||
worldName
|
||||
);
|
||||
|
||||
statement.executeUpdate();
|
||||
|
||||
}
|
||||
|
||||
try (PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
DELETE FROM creeper_settings
|
||||
WHERE world_name = ?
|
||||
"""
|
||||
)) {
|
||||
|
||||
statement.setString(
|
||||
1,
|
||||
worldName
|
||||
);
|
||||
|
||||
statement.executeUpdate();
|
||||
|
||||
}
|
||||
|
||||
try (PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
DELETE FROM equipment_drop_settings
|
||||
WHERE world_name = ?
|
||||
"""
|
||||
)) {
|
||||
|
||||
statement.setString(
|
||||
1,
|
||||
worldName
|
||||
);
|
||||
|
||||
statement.executeUpdate();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
@@ -93,7 +94,7 @@ public class MobEquipmentSettingsMenu {
|
||||
Bukkit.createInventory(
|
||||
holder,
|
||||
54,
|
||||
"Equipment: " + worldName
|
||||
"Mob Drops: " + worldName
|
||||
);
|
||||
|
||||
GUIUtils.fillEmptySlots(
|
||||
@@ -138,6 +139,37 @@ public class MobEquipmentSettingsMenu {
|
||||
Material.LEATHER_HELMET
|
||||
);
|
||||
|
||||
ItemMeta helmetMeta =
|
||||
helmet.getItemMeta();
|
||||
|
||||
helmetMeta.addItemFlags(
|
||||
ItemFlag.HIDE_ATTRIBUTES
|
||||
);
|
||||
|
||||
if (helmetMeta != null) {
|
||||
|
||||
helmetMeta.setDisplayName(
|
||||
"§eHelmet"
|
||||
);
|
||||
|
||||
helmetMeta.setLore(
|
||||
java.util.List.of(
|
||||
helmetEnabled
|
||||
? "§aCurrent: Mobs will drop helmet if equipped."
|
||||
: "§cCurrent: Mobs will not drop helmet if equipped.",
|
||||
"",
|
||||
helmetEnabled
|
||||
? "§7Click to Disable"
|
||||
: "§7Click to Enable"
|
||||
)
|
||||
);
|
||||
|
||||
helmet.setItemMeta(
|
||||
helmetMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (helmetEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
@@ -147,7 +179,7 @@ public class MobEquipmentSettingsMenu {
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
13,
|
||||
22,
|
||||
helmet
|
||||
);
|
||||
|
||||
@@ -160,6 +192,37 @@ public class MobEquipmentSettingsMenu {
|
||||
Material.SHIELD
|
||||
);
|
||||
|
||||
ItemMeta offHandMeta =
|
||||
offHand.getItemMeta();
|
||||
|
||||
offHandMeta.addItemFlags(
|
||||
ItemFlag.HIDE_ATTRIBUTES
|
||||
);
|
||||
|
||||
if (offHandMeta != null) {
|
||||
|
||||
offHandMeta.setDisplayName(
|
||||
"§eOff Hand"
|
||||
);
|
||||
|
||||
offHandMeta.setLore(
|
||||
java.util.List.of(
|
||||
offHandEnabled
|
||||
? "§aCurrent: Mobs will drop held item."
|
||||
: "§cCurrent: Mobs will not drop held item.",
|
||||
"",
|
||||
offHandEnabled
|
||||
? "§7Click to Disable"
|
||||
: "§7Click to Enable"
|
||||
)
|
||||
);
|
||||
|
||||
offHand.setItemMeta(
|
||||
offHandMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (offHandEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
@@ -169,7 +232,7 @@ public class MobEquipmentSettingsMenu {
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
20,
|
||||
30,
|
||||
offHand
|
||||
);
|
||||
|
||||
@@ -182,6 +245,37 @@ public class MobEquipmentSettingsMenu {
|
||||
Material.LEATHER_CHESTPLATE
|
||||
);
|
||||
|
||||
ItemMeta chestplateMeta =
|
||||
chestplate.getItemMeta();
|
||||
|
||||
chestplateMeta.addItemFlags(
|
||||
ItemFlag.HIDE_ATTRIBUTES
|
||||
);
|
||||
|
||||
if (chestplateMeta != null) {
|
||||
|
||||
chestplateMeta.setDisplayName(
|
||||
"§eChestplate"
|
||||
);
|
||||
|
||||
chestplateMeta.setLore(
|
||||
java.util.List.of(
|
||||
chestplateEnabled
|
||||
? "§aCurrent: Mobs will drop chestplate if equipped."
|
||||
: "§cCurrent: Mobs will not drop chestplate if equipped.",
|
||||
"",
|
||||
chestplateEnabled
|
||||
? "§7Click to Disable"
|
||||
: "§7Click to Enable"
|
||||
)
|
||||
);
|
||||
|
||||
chestplate.setItemMeta(
|
||||
chestplateMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (chestplateEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
@@ -191,7 +285,7 @@ public class MobEquipmentSettingsMenu {
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
21,
|
||||
31,
|
||||
chestplate
|
||||
);
|
||||
|
||||
@@ -204,6 +298,38 @@ public class MobEquipmentSettingsMenu {
|
||||
Material.IRON_SWORD
|
||||
);
|
||||
|
||||
ItemMeta mainHandMeta =
|
||||
mainHand.getItemMeta();
|
||||
|
||||
mainHandMeta.addItemFlags(
|
||||
ItemFlag.HIDE_ATTRIBUTES
|
||||
);
|
||||
|
||||
|
||||
if (mainHandMeta != null) {
|
||||
|
||||
mainHandMeta.setDisplayName(
|
||||
"§eMain Hand"
|
||||
);
|
||||
|
||||
mainHandMeta.setLore(
|
||||
java.util.List.of(
|
||||
mainHandEnabled
|
||||
? "§aCurrent: Mobs will drop held item if equipped."
|
||||
: "§cCurrent: Mobs will not drop held item if equipped.",
|
||||
"",
|
||||
mainHandEnabled
|
||||
? "§7Click to Disable"
|
||||
: "§7Click to Enable"
|
||||
)
|
||||
);
|
||||
|
||||
mainHand.setItemMeta(
|
||||
mainHandMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (mainHandEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
@@ -213,7 +339,7 @@ public class MobEquipmentSettingsMenu {
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
22,
|
||||
32,
|
||||
mainHand
|
||||
);
|
||||
|
||||
@@ -226,6 +352,38 @@ public class MobEquipmentSettingsMenu {
|
||||
Material.LEATHER_LEGGINGS
|
||||
);
|
||||
|
||||
ItemMeta leggingsMeta =
|
||||
leggings.getItemMeta();
|
||||
|
||||
leggingsMeta.addItemFlags(
|
||||
ItemFlag.HIDE_ATTRIBUTES
|
||||
);
|
||||
|
||||
|
||||
if (mainHandMeta != null) {
|
||||
|
||||
leggingsMeta.setDisplayName(
|
||||
"§eLeggings"
|
||||
);
|
||||
|
||||
leggingsMeta.setLore(
|
||||
java.util.List.of(
|
||||
leggingsEnabled
|
||||
? "§aCurrent: Mobs will drop leggings if equipped."
|
||||
: "§cCurrent: Mobs will not drop leggings if equipped.",
|
||||
"",
|
||||
leggingsEnabled
|
||||
? "§7Click to Disable"
|
||||
: "§7Click to Enable"
|
||||
)
|
||||
);
|
||||
|
||||
leggings.setItemMeta(
|
||||
leggingsMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (leggingsEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
@@ -235,7 +393,7 @@ public class MobEquipmentSettingsMenu {
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
29,
|
||||
40,
|
||||
leggings
|
||||
);
|
||||
|
||||
@@ -248,6 +406,38 @@ public class MobEquipmentSettingsMenu {
|
||||
Material.LEATHER_BOOTS
|
||||
);
|
||||
|
||||
ItemMeta bootsMeta =
|
||||
boots.getItemMeta();
|
||||
|
||||
bootsMeta.addItemFlags(
|
||||
ItemFlag.HIDE_ATTRIBUTES
|
||||
);
|
||||
|
||||
|
||||
if (bootsMeta != null) {
|
||||
|
||||
bootsMeta.setDisplayName(
|
||||
"§eBoots"
|
||||
);
|
||||
|
||||
bootsMeta.setLore(
|
||||
java.util.List.of(
|
||||
bootsEnabled
|
||||
? "§aCurrent: Mobs will drop boots if equipped."
|
||||
: "§cCurrent: Mobs will not drop boots if equipped.",
|
||||
"",
|
||||
bootsEnabled
|
||||
? "§7Click to Disable"
|
||||
: "§7Click to Enable"
|
||||
)
|
||||
);
|
||||
|
||||
boots.setItemMeta(
|
||||
bootsMeta
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (bootsEnabled) {
|
||||
|
||||
GUIUtils.addGlow(
|
||||
@@ -257,7 +447,7 @@ public class MobEquipmentSettingsMenu {
|
||||
}
|
||||
|
||||
inventory.setItem(
|
||||
37,
|
||||
49,
|
||||
boots
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,388 @@
|
||||
package com.rsscripting.serveradmin.listeners;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.gui.CreeperBlockDamageMenu;
|
||||
import com.rsscripting.serveradmin.gui.CreeperEntityDamageMenu;
|
||||
import com.rsscripting.serveradmin.gui.CreeperMenu;
|
||||
import com.rsscripting.serveradmin.gui.MainMenu;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
public class CreeperMenuListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(
|
||||
InventoryClickEvent event
|
||||
) {
|
||||
|
||||
if (!(event.getInventory().getHolder()
|
||||
instanceof RSMenuHolder holder)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory()
|
||||
!= event.getView().getTopInventory()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
event.setCancelled(
|
||||
true
|
||||
);
|
||||
|
||||
switch (holder.getMenuId()) {
|
||||
|
||||
case "creeper" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> player.openInventory(
|
||||
com.rsscripting.serveradmin.gui.MainMenu.create()
|
||||
);
|
||||
|
||||
case 11 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperBlockDamageMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper Block Damage menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 15 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperEntityDamageMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper Entity Damage menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "CREEPER_BLOCK_DAMAGE" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 3 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperMenu.create()
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 5 -> {
|
||||
|
||||
try {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.toggleDefault(
|
||||
SettingKey.CREEPER_BLOCK_DAMAGE
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperBlockDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle Creeper Block Damage default: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getSlot() < 9) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
boolean enabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.getBlockDamage(
|
||||
worldName
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.setBlockDamage(
|
||||
worldName,
|
||||
!enabled
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperBlockDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Creeper Block Damage setting: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "CREEPER_ENTITY_DAMAGE" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 3 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperMenu.create()
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 5 -> {
|
||||
|
||||
try {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.toggleDefault(
|
||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperEntityDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle Creeper Entity Damage default: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getSlot() < 9) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
boolean enabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.getEntityDamage(
|
||||
worldName
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.setEntityDamage(
|
||||
worldName,
|
||||
!enabled
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperEntityDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Creeper Entity Damage setting: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,792 +0,0 @@
|
||||
package com.rsscripting.serveradmin.listeners;
|
||||
|
||||
import 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.dao.KeepInventoryDAO;
|
||||
import com.rsscripting.serveradmin.gui.MobEquipmentWorldMenu;
|
||||
import com.rsscripting.serveradmin.gui.MobEquipmentSettingsMenu;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameRule;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
public class InventoryListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent event) {
|
||||
|
||||
if (!(event.getInventory().getHolder() instanceof RSMenuHolder holder)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() != event.getView().getTopInventory()) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
switch (holder.getMenuId()) {
|
||||
|
||||
case "main" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
/*
|
||||
| Rescan for new worlds
|
||||
*/
|
||||
|
||||
case 4 -> {
|
||||
|
||||
try {
|
||||
|
||||
boolean keepInventoryDefault =
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||
);
|
||||
|
||||
boolean blockDamageDefault =
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.CREEPER_BLOCK_DAMAGE
|
||||
);
|
||||
|
||||
boolean entityDamageDefault =
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||
);
|
||||
|
||||
for (org.bukkit.World world
|
||||
: org.bukkit.Bukkit.getWorlds()) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getWorldsDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName()
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getKeepInventoryDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName(),
|
||||
keepInventoryDefault
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName(),
|
||||
blockDamageDefault,
|
||||
entityDamageDefault
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
player.sendMessage(
|
||||
"§aWorld scan complete."
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"World scan failed: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
player.sendMessage(
|
||||
"§cWorld scan failed."
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Mob Inventory Drop
|
||||
*/
|
||||
|
||||
case 13 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentWorldMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Mob Equipment menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Creeper menu
|
||||
*/
|
||||
|
||||
case 11 -> player.openInventory(
|
||||
CreeperMenu.create()
|
||||
);
|
||||
|
||||
/*
|
||||
| Keep Inventory Menu
|
||||
*/
|
||||
|
||||
case 15 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
KeepInventoryMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Keep Inventory menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Creeper menu
|
||||
*/
|
||||
|
||||
case "creeper" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> player.openInventory(
|
||||
com.rsscripting.serveradmin.gui.MainMenu.create()
|
||||
);
|
||||
|
||||
case 11 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperBlockDamageMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper Block Damage menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 15 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperEntityDamageMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper Entity Damage menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Keep Inventory
|
||||
*/
|
||||
|
||||
case "KEEP_INVENTORY" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 3 -> player.openInventory(
|
||||
com.rsscripting.serveradmin.gui.MainMenu.create()
|
||||
);
|
||||
|
||||
case 5 -> {
|
||||
|
||||
try {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.toggleDefault(
|
||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
KeepInventoryMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Keep Inventory default: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getSlot() < 9) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
KeepInventoryDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getKeepInventoryDAO();
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
boolean enabled =
|
||||
dao.getWorldSetting(
|
||||
worldName
|
||||
);
|
||||
|
||||
dao.setWorldSetting(
|
||||
worldName,
|
||||
!enabled
|
||||
);
|
||||
|
||||
World world =
|
||||
Bukkit.getWorld(
|
||||
worldName
|
||||
);
|
||||
|
||||
if (world != null) {
|
||||
|
||||
world.setGameRule(
|
||||
GameRule.KEEP_INVENTORY,
|
||||
!enabled
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
player.openInventory(
|
||||
KeepInventoryMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Keep Inventory world setting: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "CREEPER_BLOCK_DAMAGE" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 3 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperMenu.create()
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 5 -> {
|
||||
|
||||
try {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.toggleDefault(
|
||||
SettingKey.CREEPER_BLOCK_DAMAGE
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperBlockDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle Creeper Block Damage default: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getSlot() < 9) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
boolean enabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.getBlockDamage(
|
||||
worldName
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.setBlockDamage(
|
||||
worldName,
|
||||
!enabled
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperBlockDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Creeper Block Damage setting: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "CREEPER_ENTITY_DAMAGE" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 3 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
CreeperMenu.create()
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Creeper menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 5 -> {
|
||||
|
||||
try {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.toggleDefault(
|
||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperEntityDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle Creeper Entity Damage default: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getSlot() < 9) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
boolean enabled =
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.getEntityDamage(
|
||||
worldName
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.setEntityDamage(
|
||||
worldName,
|
||||
!enabled
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
CreeperEntityDamageMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Creeper Entity Damage setting: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "MOB_EQUIPMENT" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> player.openInventory(
|
||||
MainMenu.create()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "MOB_EQUIPMENT_WORLDS" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> {
|
||||
|
||||
player.openInventory(
|
||||
MainMenu.create()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "MOB_EQUIPMENT_SETTINGS" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentWorldMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Mob Equipment world menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
package com.rsscripting.serveradmin.listeners;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.dao.KeepInventoryDAO;
|
||||
import com.rsscripting.serveradmin.gui.KeepInventoryMenu;
|
||||
import com.rsscripting.serveradmin.gui.MainMenu;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameRule;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
public class KeepInventoryListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(
|
||||
InventoryClickEvent event
|
||||
) {
|
||||
|
||||
if (!(event.getInventory().getHolder()
|
||||
instanceof RSMenuHolder holder)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (!holder.getMenuId().equals(
|
||||
"KEEP_INVENTORY"
|
||||
)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory()
|
||||
!= event.getView().getTopInventory()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
event.setCancelled(
|
||||
true
|
||||
);
|
||||
|
||||
if (!(event.getWhoClicked()
|
||||
instanceof Player player)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 3 -> player.openInventory(
|
||||
MainMenu.create()
|
||||
);
|
||||
|
||||
case 5 -> {
|
||||
|
||||
try {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.toggleDefault(
|
||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
KeepInventoryMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Keep Inventory default: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getSlot() < 9) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
KeepInventoryDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getKeepInventoryDAO();
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
boolean enabled =
|
||||
dao.getWorldSetting(
|
||||
worldName
|
||||
);
|
||||
|
||||
dao.setWorldSetting(
|
||||
worldName,
|
||||
!enabled
|
||||
);
|
||||
|
||||
World world =
|
||||
Bukkit.getWorld(
|
||||
worldName
|
||||
);
|
||||
|
||||
if (world != null) {
|
||||
|
||||
world.setGameRule(
|
||||
GameRule.KEEP_INVENTORY,
|
||||
!enabled
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
player.openInventory(
|
||||
KeepInventoryMenu.create(
|
||||
holder.getPage()
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to update Keep Inventory world setting: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
package com.rsscripting.serveradmin.listeners;
|
||||
|
||||
import 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.gui.MobEquipmentWorldMenu;
|
||||
import com.rsscripting.serveradmin.gui.MobEquipmentSettingsMenu;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
public class MainMenuListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent event) {
|
||||
|
||||
if (!(event.getInventory().getHolder() instanceof RSMenuHolder holder)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() != event.getView().getTopInventory()) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
switch (holder.getMenuId()) {
|
||||
|
||||
case "main" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
/*
|
||||
| Rescan for new worlds
|
||||
*/
|
||||
|
||||
case 4 -> {
|
||||
|
||||
try {
|
||||
|
||||
boolean keepInventoryDefault =
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||
);
|
||||
|
||||
boolean blockDamageDefault =
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.CREEPER_BLOCK_DAMAGE
|
||||
);
|
||||
|
||||
boolean entityDamageDefault =
|
||||
RSServerAdmin.getInstance()
|
||||
.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||
);
|
||||
|
||||
for (org.bukkit.World world
|
||||
: org.bukkit.Bukkit.getWorlds()) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getWorldsDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName()
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getKeepInventoryDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName(),
|
||||
keepInventoryDefault
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getCreeperSettingsDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName(),
|
||||
blockDamageDefault,
|
||||
entityDamageDefault
|
||||
);
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO()
|
||||
.ensureWorldExists(
|
||||
world.getName()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
player.sendMessage(
|
||||
"§aWorld scan complete."
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"World scan failed: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
player.sendMessage(
|
||||
"§cWorld scan failed."
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Mob Inventory Drop
|
||||
*/
|
||||
|
||||
case 13 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentWorldMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Mob Equipment menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Creeper menu
|
||||
*/
|
||||
|
||||
case 11 -> player.openInventory(
|
||||
CreeperMenu.create()
|
||||
);
|
||||
|
||||
/*
|
||||
| Keep Inventory Menu
|
||||
*/
|
||||
|
||||
case 15 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
KeepInventoryMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Keep Inventory menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
package com.rsscripting.serveradmin.listeners;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.dao.MobEquipmentDropSettingsDAO;
|
||||
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class MobEquipmentDropListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDeath(
|
||||
EntityDeathEvent event
|
||||
) {
|
||||
|
||||
LivingEntity entity =
|
||||
event.getEntity();
|
||||
|
||||
EntityEquipment equipment =
|
||||
entity.getEquipment();
|
||||
|
||||
if (equipment == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
entity.getWorld()
|
||||
.getName();
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
ItemStack helmet =
|
||||
equipment.getHelmet();
|
||||
|
||||
if (dao.getHelmet(worldName)
|
||||
&& helmet != null
|
||||
&& !helmet.getType().isAir()
|
||||
&& !event.getDrops().contains(helmet)) {
|
||||
|
||||
event.getDrops().add(
|
||||
helmet.clone()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
ItemStack chestplate =
|
||||
equipment.getChestplate();
|
||||
|
||||
if (dao.getChestplate(worldName)
|
||||
&& chestplate != null
|
||||
&& !chestplate.getType().isAir()
|
||||
&& !event.getDrops().contains(chestplate)) {
|
||||
|
||||
event.getDrops().add(
|
||||
chestplate.clone()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
ItemStack leggings =
|
||||
equipment.getLeggings();
|
||||
|
||||
if (dao.getLeggings(worldName)
|
||||
&& leggings != null
|
||||
&& !leggings.getType().isAir()
|
||||
&& !event.getDrops().contains(leggings)) {
|
||||
|
||||
event.getDrops().add(
|
||||
leggings.clone()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
ItemStack boots =
|
||||
equipment.getBoots();
|
||||
|
||||
if (dao.getBoots(worldName)
|
||||
&& boots != null
|
||||
&& !boots.getType().isAir()
|
||||
&& !event.getDrops().contains(boots)) {
|
||||
|
||||
event.getDrops().add(
|
||||
boots.clone()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
ItemStack mainHand =
|
||||
equipment.getItemInMainHand();
|
||||
|
||||
if (dao.getMainHand(worldName)
|
||||
&& mainHand != null
|
||||
&& !mainHand.getType().isAir()
|
||||
&& !event.getDrops().contains(mainHand)) {
|
||||
|
||||
event.getDrops().add(
|
||||
mainHand.clone()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
ItemStack offHand =
|
||||
equipment.getItemInOffHand();
|
||||
|
||||
if (dao.getOffHand(worldName)
|
||||
&& offHand != null
|
||||
&& !offHand.getType().isAir()
|
||||
&& !event.getDrops().contains(offHand)) {
|
||||
|
||||
event.getDrops().add(
|
||||
offHand.clone()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to process equipment drops: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,374 @@
|
||||
package com.rsscripting.serveradmin.listeners;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.dao.MobEquipmentDropSettingsDAO;
|
||||
import com.rsscripting.serveradmin.gui.MainMenu;
|
||||
import com.rsscripting.serveradmin.gui.MobEquipmentSettingsMenu;
|
||||
import com.rsscripting.serveradmin.gui.MobEquipmentWorldMenu;
|
||||
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
public class MobEquipmentMenuListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(
|
||||
InventoryClickEvent event
|
||||
) {
|
||||
|
||||
if (!(event.getInventory().getHolder()
|
||||
instanceof RSMenuHolder holder)) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (event.getClickedInventory() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getClickedInventory()
|
||||
!= event.getView().getTopInventory()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
event.setCancelled(
|
||||
true
|
||||
);
|
||||
|
||||
switch (holder.getMenuId()) {
|
||||
|
||||
case "MOB_EQUIPMENT" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> player.openInventory(
|
||||
MainMenu.create()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "MOB_EQUIPMENT_WORLDS" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> {
|
||||
|
||||
player.openInventory(
|
||||
MainMenu.create()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
default -> {
|
||||
|
||||
if (event.getCurrentItem() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!event.getCurrentItem().hasItemMeta()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta =
|
||||
event.getCurrentItem()
|
||||
.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
meta.getPersistentDataContainer()
|
||||
.get(
|
||||
new NamespacedKey(
|
||||
RSServerAdmin.getInstance(),
|
||||
"world_name"
|
||||
),
|
||||
PersistentDataType.STRING
|
||||
);
|
||||
|
||||
if (worldName == null
|
||||
|| worldName.isBlank()) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case "MOB_EQUIPMENT_SETTINGS" -> {
|
||||
|
||||
if (!(event.getWhoClicked() instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
String worldName =
|
||||
holder.getWorldName();
|
||||
|
||||
switch (event.getSlot()) {
|
||||
|
||||
case 4 -> {
|
||||
|
||||
try {
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentWorldMenu.create(
|
||||
1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to open Mob Equipment world menu: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 22 -> {
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
dao.setHelmet(
|
||||
worldName,
|
||||
!dao.getHelmet(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle helmet: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 30 -> {
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
dao.setOffHand(
|
||||
worldName,
|
||||
!dao.getOffHand(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle offhand: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 31 -> {
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
dao.setChestplate(
|
||||
worldName,
|
||||
!dao.getChestplate(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle chestplate: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 32 -> {
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
dao.setMainHand(
|
||||
worldName,
|
||||
!dao.getMainHand(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle main hand: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 40 -> {
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
dao.setLeggings(
|
||||
worldName,
|
||||
!dao.getLeggings(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle leggings: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case 49 -> {
|
||||
|
||||
try {
|
||||
|
||||
MobEquipmentDropSettingsDAO dao =
|
||||
RSServerAdmin.getInstance()
|
||||
.getEquipmentDropSettingsDAO();
|
||||
|
||||
dao.setBoots(
|
||||
worldName,
|
||||
!dao.getBoots(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
player.openInventory(
|
||||
MobEquipmentSettingsMenu.create(
|
||||
worldName
|
||||
)
|
||||
);
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
RSServerAdmin.getInstance()
|
||||
.getLogger()
|
||||
.warning(
|
||||
"Failed to toggle boots: "
|
||||
+ ex.getMessage()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.rsscripting.serveradmin.utils;
|
||||
|
||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class WorldSyncUtils {
|
||||
|
||||
public static void synchronizeWorlds()
|
||||
throws Exception {
|
||||
|
||||
RSServerAdmin plugin =
|
||||
RSServerAdmin.getInstance();
|
||||
|
||||
boolean keepInventoryDefault =
|
||||
plugin.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||
);
|
||||
|
||||
boolean blockDamageDefault =
|
||||
plugin.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.CREEPER_BLOCK_DAMAGE
|
||||
);
|
||||
|
||||
boolean entityDamageDefault =
|
||||
plugin.getSettingsDAO()
|
||||
.getDefault(
|
||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||
);
|
||||
|
||||
Set<String> bukkitWorlds =
|
||||
new HashSet<>();
|
||||
|
||||
/*
|
||||
| Add missing worlds
|
||||
*/
|
||||
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
|
||||
String worldName =
|
||||
world.getName();
|
||||
|
||||
bukkitWorlds.add(
|
||||
worldName
|
||||
);
|
||||
|
||||
plugin.getWorldsDAO()
|
||||
.ensureWorldExists(
|
||||
worldName
|
||||
);
|
||||
|
||||
plugin.getKeepInventoryDAO()
|
||||
.ensureWorldExists(
|
||||
worldName,
|
||||
keepInventoryDefault
|
||||
);
|
||||
|
||||
plugin.getCreeperSettingsDAO()
|
||||
.ensureWorldExists(
|
||||
worldName,
|
||||
blockDamageDefault,
|
||||
entityDamageDefault
|
||||
);
|
||||
|
||||
plugin.getEquipmentDropSettingsDAO()
|
||||
.ensureWorldExists(
|
||||
worldName
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
| Remove deleted worlds
|
||||
*/
|
||||
|
||||
List<String> databaseWorlds =
|
||||
plugin.getWorldsDAO()
|
||||
.getAllWorlds();
|
||||
|
||||
for (String worldName
|
||||
: databaseWorlds) {
|
||||
|
||||
if (bukkitWorlds.contains(
|
||||
worldName
|
||||
)) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
plugin.getWorldsDAO()
|
||||
.deleteWorldEverywhere(
|
||||
worldName
|
||||
);
|
||||
|
||||
plugin.getLogger().info(
|
||||
"Removed stale world settings for: "
|
||||
+ worldName
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user