Release Ready
This commit is contained in:
1 parent
73a0ef8ae6
commit
6c19c18523
12 files changed
+1719
-810
No files matched your search
@@ -3,12 +3,9 @@ package com.rsscripting.serveradmin;
|
|||||||
import com.rsscripting.serveradmin.dao.*;
|
import com.rsscripting.serveradmin.dao.*;
|
||||||
import com.rsscripting.serveradmin.database.DatabaseManager;
|
import com.rsscripting.serveradmin.database.DatabaseManager;
|
||||||
import com.rsscripting.serveradmin.commands.RSAdminCommand;
|
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.security.SecurityManager;
|
||||||
import com.rsscripting.serveradmin.listeners.InventoryListener;
|
|
||||||
import com.rsscripting.serveradmin.listeners.CreeperEntityDamageListener;
|
|
||||||
import com.rsscripting.serveradmin.update.GitHubUpdateChecker;
|
import com.rsscripting.serveradmin.update.GitHubUpdateChecker;
|
||||||
import com.rsscripting.serveradmin.listeners.WorldLoadListener;
|
|
||||||
|
|
||||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
@@ -26,7 +23,7 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
private SecurityManager securityManager;
|
private SecurityManager securityManager;
|
||||||
private WorldsDAO worldsDAO;
|
private WorldsDAO worldsDAO;
|
||||||
private CreeperSettingsDAO creeperSettingsDAO;
|
private CreeperSettingsDAO creeperSettingsDAO;
|
||||||
private EquipmentDropSettingsDAO equipmentDropSettingsDAO;
|
private MobEquipmentDropSettingsDAO equipmentDropSettingsDAO;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@@ -61,7 +58,7 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
);
|
);
|
||||||
|
|
||||||
equipmentDropSettingsDAO =
|
equipmentDropSettingsDAO =
|
||||||
new EquipmentDropSettingsDAO(
|
new MobEquipmentDropSettingsDAO(
|
||||||
databaseManager
|
databaseManager
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -120,7 +117,7 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(
|
getServer().getPluginManager().registerEvents(
|
||||||
new InventoryListener(),
|
new MainMenuListener(),
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -139,6 +136,25 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
this
|
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) {
|
} catch (Exception ex) {
|
||||||
|
|
||||||
@@ -195,7 +211,7 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
return creeperSettingsDAO;
|
return creeperSettingsDAO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EquipmentDropSettingsDAO
|
public MobEquipmentDropSettingsDAO
|
||||||
getEquipmentDropSettingsDAO() {
|
getEquipmentDropSettingsDAO() {
|
||||||
|
|
||||||
return equipmentDropSettingsDAO;
|
return equipmentDropSettingsDAO;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.rsscripting.serveradmin.commands;
|
|||||||
|
|
||||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||||
import com.rsscripting.serveradmin.security.UserRole;
|
import com.rsscripting.serveradmin.security.UserRole;
|
||||||
|
import com.rsscripting.serveradmin.utils.WorldSyncUtils;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -42,6 +43,19 @@ public class RSAdminCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
WorldSyncUtils.synchronizeWorlds();
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
plugin.getLogger().warning(
|
||||||
|
"World synchronization failed: "
|
||||||
|
+ ex.getMessage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
player.openInventory(
|
player.openInventory(
|
||||||
com.rsscripting.serveradmin.gui.MainMenu.create()
|
com.rsscripting.serveradmin.gui.MainMenu.create()
|
||||||
);
|
);
|
||||||
|
|||||||
+2
-2
@@ -7,11 +7,11 @@ import java.sql.PreparedStatement;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
public class EquipmentDropSettingsDAO {
|
public class MobEquipmentDropSettingsDAO {
|
||||||
|
|
||||||
private final DatabaseManager databaseManager;
|
private final DatabaseManager databaseManager;
|
||||||
|
|
||||||
public EquipmentDropSettingsDAO(
|
public MobEquipmentDropSettingsDAO(
|
||||||
DatabaseManager databaseManager
|
DatabaseManager databaseManager
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.rsscripting.serveradmin.dao;
|
package com.rsscripting.serveradmin.dao;
|
||||||
|
|
||||||
import com.rsscripting.serveradmin.database.DatabaseManager;
|
import com.rsscripting.serveradmin.database.DatabaseManager;
|
||||||
|
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
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.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
@@ -93,7 +94,7 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Bukkit.createInventory(
|
Bukkit.createInventory(
|
||||||
holder,
|
holder,
|
||||||
54,
|
54,
|
||||||
"Equipment: " + worldName
|
"Mob Drops: " + worldName
|
||||||
);
|
);
|
||||||
|
|
||||||
GUIUtils.fillEmptySlots(
|
GUIUtils.fillEmptySlots(
|
||||||
@@ -138,6 +139,37 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Material.LEATHER_HELMET
|
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) {
|
if (helmetEnabled) {
|
||||||
|
|
||||||
GUIUtils.addGlow(
|
GUIUtils.addGlow(
|
||||||
@@ -147,7 +179,7 @@ public class MobEquipmentSettingsMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(
|
inventory.setItem(
|
||||||
13,
|
22,
|
||||||
helmet
|
helmet
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -160,16 +192,47 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Material.SHIELD
|
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) {
|
if (offHandEnabled) {
|
||||||
|
|
||||||
GUIUtils.addGlow(
|
GUIUtils.addGlow(
|
||||||
offHand
|
offHand
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(
|
inventory.setItem(
|
||||||
20,
|
30,
|
||||||
offHand
|
offHand
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -182,6 +245,37 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Material.LEATHER_CHESTPLATE
|
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) {
|
if (chestplateEnabled) {
|
||||||
|
|
||||||
GUIUtils.addGlow(
|
GUIUtils.addGlow(
|
||||||
@@ -191,7 +285,7 @@ public class MobEquipmentSettingsMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(
|
inventory.setItem(
|
||||||
21,
|
31,
|
||||||
chestplate
|
chestplate
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -204,6 +298,38 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Material.IRON_SWORD
|
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) {
|
if (mainHandEnabled) {
|
||||||
|
|
||||||
GUIUtils.addGlow(
|
GUIUtils.addGlow(
|
||||||
@@ -213,7 +339,7 @@ public class MobEquipmentSettingsMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(
|
inventory.setItem(
|
||||||
22,
|
32,
|
||||||
mainHand
|
mainHand
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -226,6 +352,38 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Material.LEATHER_LEGGINGS
|
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) {
|
if (leggingsEnabled) {
|
||||||
|
|
||||||
GUIUtils.addGlow(
|
GUIUtils.addGlow(
|
||||||
@@ -235,7 +393,7 @@ public class MobEquipmentSettingsMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(
|
inventory.setItem(
|
||||||
29,
|
40,
|
||||||
leggings
|
leggings
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -248,6 +406,38 @@ public class MobEquipmentSettingsMenu {
|
|||||||
Material.LEATHER_BOOTS
|
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) {
|
if (bootsEnabled) {
|
||||||
|
|
||||||
GUIUtils.addGlow(
|
GUIUtils.addGlow(
|
||||||
@@ -257,7 +447,7 @@ public class MobEquipmentSettingsMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(
|
inventory.setItem(
|
||||||
37,
|
49,
|
||||||
boots
|
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