1.3.0
Added: - Per World: All mobs peaceful
This commit is contained in:
1 parent
999f403f4f
commit
4bcad2b211
13 files changed
+960
-99
No files matched your search
@@ -8,7 +8,7 @@
|
|||||||
<groupId>com.rsscripting</groupId>
|
<groupId>com.rsscripting</groupId>
|
||||||
<artifactId>RS-ServerAdmin</artifactId>
|
<artifactId>RS-ServerAdmin</artifactId>
|
||||||
<name>RS-ServerAdmin</name>
|
<name>RS-ServerAdmin</name>
|
||||||
<version>1.2.1</version>
|
<version>1.3.0</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>21</java.version>
|
<java.version>21</java.version>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
private WorldsDAO worldsDAO;
|
private WorldsDAO worldsDAO;
|
||||||
private CreeperSettingsDAO creeperSettingsDAO;
|
private CreeperSettingsDAO creeperSettingsDAO;
|
||||||
private MobEquipmentDropSettingsDAO equipmentDropSettingsDAO;
|
private MobEquipmentDropSettingsDAO equipmentDropSettingsDAO;
|
||||||
|
private PeacefulMobsDAO peacefulMobsDAO;
|
||||||
private GitHubUpdateChecker gitHubUpdateChecker;
|
private GitHubUpdateChecker gitHubUpdateChecker;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -63,6 +64,11 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
databaseManager
|
databaseManager
|
||||||
);
|
);
|
||||||
|
|
||||||
|
peacefulMobsDAO =
|
||||||
|
new PeacefulMobsDAO(
|
||||||
|
databaseManager
|
||||||
|
);
|
||||||
|
|
||||||
securityManager = new SecurityManager(this);
|
securityManager = new SecurityManager(this);
|
||||||
|
|
||||||
boolean keepInventoryDefault =
|
boolean keepInventoryDefault =
|
||||||
@@ -70,6 +76,11 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||||
);
|
);
|
||||||
|
|
||||||
|
boolean peacefulMobsDefault =
|
||||||
|
settingsDAO.getDefault(
|
||||||
|
SettingKey.PEACEFUL_MOBS_NEW_WORLD
|
||||||
|
);
|
||||||
|
|
||||||
for (World world : Bukkit.getWorlds()) {
|
for (World world : Bukkit.getWorlds()) {
|
||||||
|
|
||||||
worldsDAO.ensureWorldExists(
|
worldsDAO.ensureWorldExists(
|
||||||
@@ -101,6 +112,11 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
world.getName()
|
world.getName()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
peacefulMobsDAO.ensureWorldExists(
|
||||||
|
world.getName(),
|
||||||
|
peacefulMobsDefault
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getCommand("rsadmin") != null) {
|
if (getCommand("rsadmin") != null) {
|
||||||
@@ -157,6 +173,11 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
this
|
this
|
||||||
);
|
);
|
||||||
|
|
||||||
|
getServer().getPluginManager().registerEvents(
|
||||||
|
new PeacefulMobsListener(),
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(
|
getServer().getPluginManager().registerEvents(
|
||||||
new UpdateNotificationListener(),
|
new UpdateNotificationListener(),
|
||||||
this
|
this
|
||||||
@@ -196,26 +217,33 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public KeepInventoryDAO getKeepInventoryDAO() {
|
public KeepInventoryDAO getKeepInventoryDAO() {
|
||||||
return keepInventoryDAO;}
|
return keepInventoryDAO;
|
||||||
|
}
|
||||||
|
|
||||||
public static RSServerAdmin getInstance() {
|
public static RSServerAdmin getInstance() {
|
||||||
|
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatabaseManager getDatabaseManager() {
|
public DatabaseManager getDatabaseManager() {
|
||||||
|
|
||||||
return databaseManager;
|
return databaseManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SettingsDAO getSettingsDAO() {
|
public SettingsDAO getSettingsDAO() {
|
||||||
|
|
||||||
return settingsDAO;
|
return settingsDAO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldsDAO getWorldsDAO() {
|
public WorldsDAO getWorldsDAO() {
|
||||||
return worldsDAO;
|
return worldsDAO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SecurityManager getSecurityManager() {
|
public SecurityManager getSecurityManager() {
|
||||||
|
|
||||||
return securityManager;
|
return securityManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CreeperSettingsDAO getCreeperSettingsDAO() {
|
public CreeperSettingsDAO getCreeperSettingsDAO() {
|
||||||
return creeperSettingsDAO;
|
return creeperSettingsDAO;
|
||||||
}
|
}
|
||||||
@@ -226,6 +254,13 @@ public class RSServerAdmin extends JavaPlugin {
|
|||||||
return equipmentDropSettingsDAO;
|
return equipmentDropSettingsDAO;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PeacefulMobsDAO getPeacefulMobsDAO() {
|
||||||
|
|
||||||
|
return peacefulMobsDAO;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public GitHubUpdateChecker getGitHubUpdateChecker() {
|
public GitHubUpdateChecker getGitHubUpdateChecker() {
|
||||||
|
|
||||||
return gitHubUpdateChecker;
|
return gitHubUpdateChecker;
|
||||||
|
|||||||
@@ -0,0 +1,123 @@
|
|||||||
|
package com.rsscripting.serveradmin.dao;
|
||||||
|
|
||||||
|
import com.rsscripting.serveradmin.database.DatabaseManager;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class PeacefulMobsDAO {
|
||||||
|
|
||||||
|
private final DatabaseManager databaseManager;
|
||||||
|
|
||||||
|
public PeacefulMobsDAO(DatabaseManager databaseManager) {
|
||||||
|
this.databaseManager = databaseManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getWorldSetting(
|
||||||
|
String worldName
|
||||||
|
) throws SQLException {
|
||||||
|
|
||||||
|
Connection connection =
|
||||||
|
databaseManager.getConnection();
|
||||||
|
|
||||||
|
try (PreparedStatement statement =
|
||||||
|
connection.prepareStatement(
|
||||||
|
"""
|
||||||
|
SELECT enabled
|
||||||
|
FROM peaceful_mobs
|
||||||
|
WHERE world_name = ?
|
||||||
|
"""
|
||||||
|
)) {
|
||||||
|
|
||||||
|
statement.setString(
|
||||||
|
1,
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
try (ResultSet resultSet =
|
||||||
|
statement.executeQuery()) {
|
||||||
|
|
||||||
|
if (resultSet.next()) {
|
||||||
|
|
||||||
|
return resultSet.getInt(
|
||||||
|
"enabled"
|
||||||
|
) == 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorldSetting(
|
||||||
|
String worldName,
|
||||||
|
boolean enabled
|
||||||
|
) throws SQLException {
|
||||||
|
|
||||||
|
Connection connection =
|
||||||
|
databaseManager.getConnection();
|
||||||
|
|
||||||
|
try (PreparedStatement statement =
|
||||||
|
connection.prepareStatement(
|
||||||
|
"""
|
||||||
|
INSERT OR REPLACE INTO peaceful_mobs
|
||||||
|
(world_name, enabled)
|
||||||
|
VALUES (?, ?)
|
||||||
|
"""
|
||||||
|
)) {
|
||||||
|
|
||||||
|
statement.setString(
|
||||||
|
1,
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
statement.setInt(
|
||||||
|
2,
|
||||||
|
enabled ? 1 : 0
|
||||||
|
);
|
||||||
|
|
||||||
|
statement.executeUpdate();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ensureWorldExists(
|
||||||
|
String worldName,
|
||||||
|
boolean defaultValue
|
||||||
|
) throws SQLException {
|
||||||
|
|
||||||
|
Connection connection =
|
||||||
|
databaseManager.getConnection();
|
||||||
|
|
||||||
|
try (PreparedStatement statement =
|
||||||
|
connection.prepareStatement(
|
||||||
|
"""
|
||||||
|
INSERT OR IGNORE INTO peaceful_mobs
|
||||||
|
(world_name, enabled)
|
||||||
|
VALUES (?, ?)
|
||||||
|
"""
|
||||||
|
)) {
|
||||||
|
|
||||||
|
statement.setString(
|
||||||
|
1,
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
statement.setInt(
|
||||||
|
2,
|
||||||
|
defaultValue ? 1 : 0
|
||||||
|
);
|
||||||
|
|
||||||
|
statement.executeUpdate();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -52,7 +52,8 @@ public class SettingsDAO {
|
|||||||
|
|
||||||
case CREEPER_BLOCK_DAMAGE,
|
case CREEPER_BLOCK_DAMAGE,
|
||||||
CREEPER_ENTITY_DAMAGE,
|
CREEPER_ENTITY_DAMAGE,
|
||||||
KEEP_INVENTORY_NEW_WORLD -> false;
|
KEEP_INVENTORY_NEW_WORLD,
|
||||||
|
PEACEFUL_MOBS_NEW_WORLD -> false;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
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;
|
||||||
@@ -14,12 +13,8 @@ public class WorldsDAO {
|
|||||||
|
|
||||||
private final DatabaseManager databaseManager;
|
private final DatabaseManager databaseManager;
|
||||||
|
|
||||||
public WorldsDAO(
|
public WorldsDAO(DatabaseManager databaseManager) {
|
||||||
DatabaseManager databaseManager
|
|
||||||
) {
|
|
||||||
|
|
||||||
this.databaseManager = databaseManager;
|
this.databaseManager = databaseManager;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ensureWorldExists(
|
public void ensureWorldExists(
|
||||||
@@ -33,13 +28,8 @@ public class WorldsDAO {
|
|||||||
connection.prepareStatement(
|
connection.prepareStatement(
|
||||||
"""
|
"""
|
||||||
INSERT OR IGNORE INTO worlds
|
INSERT OR IGNORE INTO worlds
|
||||||
(
|
(world_name)
|
||||||
world_name
|
VALUES (?)
|
||||||
)
|
|
||||||
VALUES
|
|
||||||
(
|
|
||||||
?
|
|
||||||
)
|
|
||||||
"""
|
"""
|
||||||
)) {
|
)) {
|
||||||
|
|
||||||
@@ -49,9 +39,7 @@ public class WorldsDAO {
|
|||||||
);
|
);
|
||||||
|
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getAllWorlds()
|
public List<String> getAllWorlds()
|
||||||
@@ -71,24 +59,20 @@ public class WorldsDAO {
|
|||||||
ORDER BY world_name
|
ORDER BY world_name
|
||||||
"""
|
"""
|
||||||
);
|
);
|
||||||
|
ResultSet resultSet =
|
||||||
ResultSet rs =
|
|
||||||
statement.executeQuery()) {
|
statement.executeQuery()) {
|
||||||
|
|
||||||
while (rs.next()) {
|
while (resultSet.next()) {
|
||||||
|
|
||||||
worlds.add(
|
worlds.add(
|
||||||
rs.getString(
|
resultSet.getString(
|
||||||
"world_name"
|
"world_name"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return worlds;
|
return worlds;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteWorldEverywhere(
|
public void deleteWorldEverywhere(
|
||||||
@@ -100,10 +84,7 @@ public class WorldsDAO {
|
|||||||
|
|
||||||
try (PreparedStatement statement =
|
try (PreparedStatement statement =
|
||||||
connection.prepareStatement(
|
connection.prepareStatement(
|
||||||
"""
|
"DELETE FROM worlds WHERE world_name = ?"
|
||||||
DELETE FROM worlds
|
|
||||||
WHERE world_name = ?
|
|
||||||
"""
|
|
||||||
)) {
|
)) {
|
||||||
|
|
||||||
statement.setString(
|
statement.setString(
|
||||||
@@ -112,15 +93,11 @@ public class WorldsDAO {
|
|||||||
);
|
);
|
||||||
|
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try (PreparedStatement statement =
|
try (PreparedStatement statement =
|
||||||
connection.prepareStatement(
|
connection.prepareStatement(
|
||||||
"""
|
"DELETE FROM keep_inventory WHERE world_name = ?"
|
||||||
DELETE FROM keep_inventory
|
|
||||||
WHERE world_name = ?
|
|
||||||
"""
|
|
||||||
)) {
|
)) {
|
||||||
|
|
||||||
statement.setString(
|
statement.setString(
|
||||||
@@ -129,15 +106,11 @@ public class WorldsDAO {
|
|||||||
);
|
);
|
||||||
|
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try (PreparedStatement statement =
|
try (PreparedStatement statement =
|
||||||
connection.prepareStatement(
|
connection.prepareStatement(
|
||||||
"""
|
"DELETE FROM creeper_settings WHERE world_name = ?"
|
||||||
DELETE FROM creeper_settings
|
|
||||||
WHERE world_name = ?
|
|
||||||
"""
|
|
||||||
)) {
|
)) {
|
||||||
|
|
||||||
statement.setString(
|
statement.setString(
|
||||||
@@ -146,15 +119,11 @@ public class WorldsDAO {
|
|||||||
);
|
);
|
||||||
|
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try (PreparedStatement statement =
|
try (PreparedStatement statement =
|
||||||
connection.prepareStatement(
|
connection.prepareStatement(
|
||||||
"""
|
"DELETE FROM equipment_drop_settings WHERE world_name = ?"
|
||||||
DELETE FROM equipment_drop_settings
|
|
||||||
WHERE world_name = ?
|
|
||||||
"""
|
|
||||||
)) {
|
)) {
|
||||||
|
|
||||||
statement.setString(
|
statement.setString(
|
||||||
@@ -163,9 +132,19 @@ public class WorldsDAO {
|
|||||||
);
|
);
|
||||||
|
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
try (PreparedStatement statement =
|
||||||
|
connection.prepareStatement(
|
||||||
|
"DELETE FROM peaceful_mobs WHERE world_name = ?"
|
||||||
|
)) {
|
||||||
|
|
||||||
|
statement.setString(
|
||||||
|
1,
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
statement.executeUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -108,6 +108,15 @@ public class DatabaseManager {
|
|||||||
"""
|
"""
|
||||||
);
|
);
|
||||||
|
|
||||||
|
statement.execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE IF NOT EXISTS peaceful_mobs (
|
||||||
|
world_name TEXT PRIMARY KEY,
|
||||||
|
enabled INTEGER NOT NULL
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,15 +22,31 @@ public class MainMenu {
|
|||||||
"Main Menu"
|
"Main Menu"
|
||||||
);
|
);
|
||||||
|
|
||||||
ItemStack creeper = new ItemStack(Material.CREEPER_HEAD);
|
ItemStack creeper =
|
||||||
|
new ItemStack(
|
||||||
|
Material.CREEPER_HEAD
|
||||||
|
);
|
||||||
|
|
||||||
ItemMeta creeperMeta = creeper.getItemMeta();
|
ItemMeta creeperMeta =
|
||||||
|
creeper.getItemMeta();
|
||||||
|
|
||||||
if (creeperMeta != null) {
|
if (creeperMeta != null) {
|
||||||
creeperMeta.setDisplayName("§aCreepers");
|
|
||||||
creeper.setItemMeta(creeperMeta);
|
creeperMeta.setDisplayName(
|
||||||
|
"§aCreepers"
|
||||||
|
);
|
||||||
|
|
||||||
|
creeper.setItemMeta(
|
||||||
|
creeperMeta
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inventory.setItem(
|
||||||
|
11,
|
||||||
|
creeper
|
||||||
|
);
|
||||||
|
|
||||||
ItemStack scanWorlds =
|
ItemStack scanWorlds =
|
||||||
new ItemStack(
|
new ItemStack(
|
||||||
Material.COMPASS
|
Material.COMPASS
|
||||||
@@ -40,20 +56,29 @@ public class MainMenu {
|
|||||||
scanWorlds.getItemMeta();
|
scanWorlds.getItemMeta();
|
||||||
|
|
||||||
if (scanMeta != null) {
|
if (scanMeta != null) {
|
||||||
scanMeta.setDisplayName("§aRescan Worlds");
|
|
||||||
|
|
||||||
scanMeta.setLore(java.util.List.of(
|
scanMeta.setDisplayName(
|
||||||
|
"§aRescan Worlds"
|
||||||
|
);
|
||||||
|
|
||||||
|
scanMeta.setLore(
|
||||||
|
java.util.List.of(
|
||||||
"§7Rescan for new worlds",
|
"§7Rescan for new worlds",
|
||||||
"",
|
"",
|
||||||
"§eClick to rescan."
|
"§eClick to rescan."
|
||||||
));
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
scanWorlds.setItemMeta(
|
||||||
|
scanMeta
|
||||||
|
);
|
||||||
|
|
||||||
scanWorlds.setItemMeta(scanMeta);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(4, scanWorlds);
|
inventory.setItem(
|
||||||
|
4,
|
||||||
inventory.setItem(11, creeper);
|
scanWorlds
|
||||||
|
);
|
||||||
|
|
||||||
ItemStack mobDrops =
|
ItemStack mobDrops =
|
||||||
new ItemStack(
|
new ItemStack(
|
||||||
@@ -81,19 +106,64 @@ public class MainMenu {
|
|||||||
);
|
);
|
||||||
|
|
||||||
ItemStack keepInventory =
|
ItemStack keepInventory =
|
||||||
new ItemStack(Material.CHEST);
|
new ItemStack(
|
||||||
|
Material.CHEST
|
||||||
|
);
|
||||||
|
|
||||||
ItemMeta keepMeta =
|
ItemMeta keepMeta =
|
||||||
keepInventory.getItemMeta();
|
keepInventory.getItemMeta();
|
||||||
|
|
||||||
if (keepMeta != null) {
|
if (keepMeta != null) {
|
||||||
keepMeta.setDisplayName("§aKeep Inventory");
|
|
||||||
keepInventory.setItemMeta(keepMeta);
|
keepMeta.setDisplayName(
|
||||||
|
"§aKeep Inventory"
|
||||||
|
);
|
||||||
|
|
||||||
|
keepInventory.setItemMeta(
|
||||||
|
keepMeta
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(15, keepInventory);
|
inventory.setItem(
|
||||||
|
15,
|
||||||
|
keepInventory
|
||||||
|
);
|
||||||
|
|
||||||
GUIUtils.fillEmptySlots(inventory);
|
ItemStack peacefulMobs =
|
||||||
|
new ItemStack(
|
||||||
|
Material.ZOMBIE_HEAD
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemMeta peacefulMeta =
|
||||||
|
peacefulMobs.getItemMeta();
|
||||||
|
|
||||||
|
if (peacefulMeta != null) {
|
||||||
|
|
||||||
|
peacefulMeta.setDisplayName(
|
||||||
|
"§aPeaceful Mobs"
|
||||||
|
);
|
||||||
|
|
||||||
|
peacefulMeta.setLore(
|
||||||
|
java.util.List.of(
|
||||||
|
"§7Prevent mobs from targeting players"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
peacefulMobs.setItemMeta(
|
||||||
|
peacefulMeta
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inventory.setItem(
|
||||||
|
22,
|
||||||
|
peacefulMobs
|
||||||
|
);
|
||||||
|
|
||||||
|
GUIUtils.fillEmptySlots(
|
||||||
|
inventory
|
||||||
|
);
|
||||||
|
|
||||||
return inventory;
|
return inventory;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,281 @@
|
|||||||
|
package com.rsscripting.serveradmin.gui;
|
||||||
|
|
||||||
|
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||||
|
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||||
|
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||||
|
import com.rsscripting.serveradmin.utils.GUIUtils;
|
||||||
|
import com.rsscripting.serveradmin.utils.MenuLayoutUtils;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class PeacefulMobsMenu {
|
||||||
|
|
||||||
|
private static final int WORLDS_PER_PAGE = 45;
|
||||||
|
|
||||||
|
public static Inventory create(
|
||||||
|
int page
|
||||||
|
) throws SQLException {
|
||||||
|
|
||||||
|
RSMenuHolder holder =
|
||||||
|
new RSMenuHolder(
|
||||||
|
"PEACEFUL_MOBS"
|
||||||
|
);
|
||||||
|
|
||||||
|
holder.setPage(
|
||||||
|
page
|
||||||
|
);
|
||||||
|
|
||||||
|
Inventory inventory =
|
||||||
|
Bukkit.createInventory(
|
||||||
|
holder,
|
||||||
|
54,
|
||||||
|
"Peaceful Mobs"
|
||||||
|
);
|
||||||
|
|
||||||
|
GUIUtils.fillEmptySlots(
|
||||||
|
inventory
|
||||||
|
);
|
||||||
|
|
||||||
|
createBackButton(
|
||||||
|
inventory
|
||||||
|
);
|
||||||
|
|
||||||
|
createDefaultButton(
|
||||||
|
inventory
|
||||||
|
);
|
||||||
|
|
||||||
|
populateWorlds(
|
||||||
|
inventory,
|
||||||
|
page
|
||||||
|
);
|
||||||
|
|
||||||
|
return inventory;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createBackButton(
|
||||||
|
Inventory inventory
|
||||||
|
) {
|
||||||
|
|
||||||
|
ItemStack item =
|
||||||
|
new ItemStack(
|
||||||
|
Material.ARROW
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemMeta meta =
|
||||||
|
item.getItemMeta();
|
||||||
|
|
||||||
|
if (meta != null) {
|
||||||
|
|
||||||
|
meta.setDisplayName(
|
||||||
|
"§cBack"
|
||||||
|
);
|
||||||
|
|
||||||
|
item.setItemMeta(
|
||||||
|
meta
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inventory.setItem(
|
||||||
|
3,
|
||||||
|
item
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createDefaultButton(
|
||||||
|
Inventory inventory
|
||||||
|
) throws SQLException {
|
||||||
|
|
||||||
|
boolean enabled =
|
||||||
|
RSServerAdmin.getInstance()
|
||||||
|
.getSettingsDAO()
|
||||||
|
.getDefault(
|
||||||
|
SettingKey.PEACEFUL_MOBS_NEW_WORLD
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemStack item =
|
||||||
|
new ItemStack(
|
||||||
|
enabled
|
||||||
|
? Material.LIME_DYE
|
||||||
|
: Material.GRAY_DYE
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemMeta meta =
|
||||||
|
item.getItemMeta();
|
||||||
|
|
||||||
|
if (meta != null) {
|
||||||
|
|
||||||
|
meta.setDisplayName(
|
||||||
|
"§eDefault For New Worlds"
|
||||||
|
);
|
||||||
|
|
||||||
|
meta.setLore(
|
||||||
|
List.of(
|
||||||
|
"§7Controls newly detected worlds",
|
||||||
|
"",
|
||||||
|
enabled
|
||||||
|
? "§aCurrent: Mobs cannot target players"
|
||||||
|
: "§cCurrent: Mobs can target players"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
item.setItemMeta(
|
||||||
|
meta
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enabled) {
|
||||||
|
|
||||||
|
GUIUtils.addGlow(
|
||||||
|
item
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inventory.setItem(
|
||||||
|
5,
|
||||||
|
item
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void populateWorlds(
|
||||||
|
Inventory inventory,
|
||||||
|
int page
|
||||||
|
) throws SQLException {
|
||||||
|
|
||||||
|
List<String> worlds =
|
||||||
|
RSServerAdmin.getInstance()
|
||||||
|
.getWorldsDAO()
|
||||||
|
.getAllWorlds();
|
||||||
|
|
||||||
|
int start =
|
||||||
|
(page - 1) * WORLDS_PER_PAGE;
|
||||||
|
|
||||||
|
int end =
|
||||||
|
Math.min(
|
||||||
|
start + WORLDS_PER_PAGE,
|
||||||
|
worlds.size()
|
||||||
|
);
|
||||||
|
|
||||||
|
int worldCount =
|
||||||
|
end - start;
|
||||||
|
|
||||||
|
for (int i = start;
|
||||||
|
i < end;
|
||||||
|
i++) {
|
||||||
|
|
||||||
|
String worldName =
|
||||||
|
worlds.get(i);
|
||||||
|
|
||||||
|
boolean enabled =
|
||||||
|
RSServerAdmin.getInstance()
|
||||||
|
.getPeacefulMobsDAO()
|
||||||
|
.getWorldSetting(
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemStack item =
|
||||||
|
new ItemStack(
|
||||||
|
enabled
|
||||||
|
? Material.LIME_SHULKER_BOX
|
||||||
|
: Material.RED_SHULKER_BOX
|
||||||
|
);
|
||||||
|
|
||||||
|
ItemMeta meta =
|
||||||
|
item.getItemMeta();
|
||||||
|
|
||||||
|
if (meta != null) {
|
||||||
|
|
||||||
|
meta.setDisplayName(
|
||||||
|
"§e" + worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
meta.getPersistentDataContainer()
|
||||||
|
.set(
|
||||||
|
new NamespacedKey(
|
||||||
|
RSServerAdmin.getInstance(),
|
||||||
|
"world_name"
|
||||||
|
),
|
||||||
|
PersistentDataType.STRING,
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
meta.setLore(
|
||||||
|
List.of(
|
||||||
|
"§7Peaceful Mobs",
|
||||||
|
"",
|
||||||
|
enabled
|
||||||
|
? "§aCurrent: Mobs cannot target players"
|
||||||
|
: "§cCurrent: Mobs can target players"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
item.setItemMeta(
|
||||||
|
meta
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int relativeIndex =
|
||||||
|
i - start;
|
||||||
|
|
||||||
|
int row =
|
||||||
|
relativeIndex / 9;
|
||||||
|
|
||||||
|
int indexInRow =
|
||||||
|
relativeIndex % 9;
|
||||||
|
|
||||||
|
int itemsRemaining =
|
||||||
|
worldCount - (row * 9);
|
||||||
|
|
||||||
|
boolean lastPartialRow =
|
||||||
|
itemsRemaining < 9;
|
||||||
|
|
||||||
|
int slot;
|
||||||
|
|
||||||
|
if (lastPartialRow) {
|
||||||
|
|
||||||
|
List<Integer> rowSlots =
|
||||||
|
MenuLayoutUtils.getCenteredSlots(
|
||||||
|
itemsRemaining
|
||||||
|
);
|
||||||
|
|
||||||
|
slot =
|
||||||
|
9
|
||||||
|
+ (row * 9)
|
||||||
|
+ rowSlots.get(
|
||||||
|
indexInRow
|
||||||
|
);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
slot =
|
||||||
|
9
|
||||||
|
+ (row * 9)
|
||||||
|
+ indexInRow;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inventory.setItem(
|
||||||
|
slot,
|
||||||
|
item
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -73,6 +73,13 @@ public class MainMenuListener implements Listener {
|
|||||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
boolean peacefulMobsDefault =
|
||||||
|
RSServerAdmin.getInstance()
|
||||||
|
.getSettingsDAO()
|
||||||
|
.getDefault(
|
||||||
|
SettingKey.PEACEFUL_MOBS_NEW_WORLD
|
||||||
|
);
|
||||||
|
|
||||||
for (org.bukkit.World world
|
for (org.bukkit.World world
|
||||||
: org.bukkit.Bukkit.getWorlds()) {
|
: org.bukkit.Bukkit.getWorlds()) {
|
||||||
|
|
||||||
@@ -103,6 +110,13 @@ public class MainMenuListener implements Listener {
|
|||||||
world.getName()
|
world.getName()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
RSServerAdmin.getInstance()
|
||||||
|
.getPeacefulMobsDAO()
|
||||||
|
.ensureWorldExists(
|
||||||
|
world.getName(),
|
||||||
|
peacefulMobsDefault
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
@@ -188,6 +202,33 @@ public class MainMenuListener implements Listener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
| Peaceful Mobs Menu
|
||||||
|
*/
|
||||||
|
|
||||||
|
case 22 -> {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
player.openInventory(
|
||||||
|
PeacefulMobsMenu.create(
|
||||||
|
1
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
RSServerAdmin.getInstance()
|
||||||
|
.getLogger()
|
||||||
|
.warning(
|
||||||
|
"Failed to open Peaceful Mobs menu: "
|
||||||
|
+ ex.getMessage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,294 @@
|
|||||||
|
package com.rsscripting.serveradmin.listeners;
|
||||||
|
|
||||||
|
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||||
|
import com.rsscripting.serveradmin.gui.MainMenu;
|
||||||
|
import com.rsscripting.serveradmin.gui.PeacefulMobsMenu;
|
||||||
|
import com.rsscripting.serveradmin.menuholder.RSMenuHolder;
|
||||||
|
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Mob;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class PeacefulMobsListener implements Listener {
|
||||||
|
|
||||||
|
private final RSServerAdmin plugin =
|
||||||
|
RSServerAdmin.getInstance();
|
||||||
|
|
||||||
|
private final Map<String, Boolean> peacefulWorlds =
|
||||||
|
new HashMap<>();
|
||||||
|
|
||||||
|
@EventHandler(
|
||||||
|
priority = EventPriority.HIGHEST,
|
||||||
|
ignoreCancelled = false
|
||||||
|
)
|
||||||
|
public void onEntityTarget(
|
||||||
|
EntityTargetEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (!(event.getEntity() instanceof Mob mob)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(event.getTarget() instanceof Player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String worldName =
|
||||||
|
mob.getWorld().getName();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (isPeaceful(worldName)) {
|
||||||
|
|
||||||
|
event.setTarget(null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
plugin.getLogger().warning(
|
||||||
|
"Failed to check Peaceful Mobs setting for world "
|
||||||
|
+ worldName
|
||||||
|
+ ": "
|
||||||
|
+ ex.getMessage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isPeaceful(
|
||||||
|
String worldName
|
||||||
|
) throws Exception {
|
||||||
|
|
||||||
|
Boolean cached =
|
||||||
|
peacefulWorlds.get(
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
if (cached != null) {
|
||||||
|
|
||||||
|
return cached;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean enabled =
|
||||||
|
plugin.getPeacefulMobsDAO()
|
||||||
|
.getWorldSetting(
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
peacefulWorlds.put(
|
||||||
|
worldName,
|
||||||
|
enabled
|
||||||
|
);
|
||||||
|
|
||||||
|
return enabled;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(
|
||||||
|
InventoryClickEvent event
|
||||||
|
) {
|
||||||
|
|
||||||
|
if (!(event.getInventory().getHolder()
|
||||||
|
instanceof RSMenuHolder holder)) {
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!holder.getMenuId().equals(
|
||||||
|
"PEACEFUL_MOBS"
|
||||||
|
)) {
|
||||||
|
|
||||||
|
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 {
|
||||||
|
|
||||||
|
plugin.getSettingsDAO()
|
||||||
|
.toggleDefault(
|
||||||
|
SettingKey.PEACEFUL_MOBS_NEW_WORLD
|
||||||
|
);
|
||||||
|
|
||||||
|
player.openInventory(
|
||||||
|
PeacefulMobsMenu.create(
|
||||||
|
holder.getPage()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
plugin.getLogger().warning(
|
||||||
|
"Failed to update Peaceful Mobs 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(
|
||||||
|
plugin,
|
||||||
|
"world_name"
|
||||||
|
),
|
||||||
|
PersistentDataType.STRING
|
||||||
|
);
|
||||||
|
|
||||||
|
if (worldName == null
|
||||||
|
|| worldName.isBlank()) {
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean enabled =
|
||||||
|
plugin.getPeacefulMobsDAO()
|
||||||
|
.getWorldSetting(
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
boolean newValue =
|
||||||
|
!enabled;
|
||||||
|
|
||||||
|
plugin.getPeacefulMobsDAO()
|
||||||
|
.setWorldSetting(
|
||||||
|
worldName,
|
||||||
|
newValue
|
||||||
|
);
|
||||||
|
|
||||||
|
peacefulWorlds.put(
|
||||||
|
worldName,
|
||||||
|
newValue
|
||||||
|
);
|
||||||
|
|
||||||
|
if (newValue) {
|
||||||
|
|
||||||
|
World world =
|
||||||
|
Bukkit.getWorld(
|
||||||
|
worldName
|
||||||
|
);
|
||||||
|
|
||||||
|
if (world != null) {
|
||||||
|
|
||||||
|
world.getEntitiesByClass(
|
||||||
|
Mob.class
|
||||||
|
)
|
||||||
|
.forEach(
|
||||||
|
mob ->
|
||||||
|
mob.setTarget(
|
||||||
|
null
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
player.openInventory(
|
||||||
|
PeacefulMobsMenu.create(
|
||||||
|
holder.getPage()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
|
||||||
|
plugin.getLogger().warning(
|
||||||
|
"Failed to update Peaceful Mobs world setting: "
|
||||||
|
+ ex.getMessage()
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cacheWorldSetting(
|
||||||
|
String worldName,
|
||||||
|
boolean enabled
|
||||||
|
) {
|
||||||
|
|
||||||
|
peacefulWorlds.put(
|
||||||
|
worldName,
|
||||||
|
enabled
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,82 +2,97 @@ package com.rsscripting.serveradmin.listeners;
|
|||||||
|
|
||||||
import com.rsscripting.serveradmin.RSServerAdmin;
|
import com.rsscripting.serveradmin.RSServerAdmin;
|
||||||
import com.rsscripting.serveradmin.settings.SettingKey;
|
import com.rsscripting.serveradmin.settings.SettingKey;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Mob;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.world.WorldLoadEvent;
|
import org.bukkit.event.world.WorldLoadEvent;
|
||||||
import org.bukkit.GameRule;
|
|
||||||
|
|
||||||
public class WorldLoadListener implements Listener {
|
public class WorldLoadListener implements Listener {
|
||||||
|
|
||||||
|
private final RSServerAdmin plugin =
|
||||||
|
RSServerAdmin.getInstance();
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onWorldLoad(
|
public void onWorldLoad(
|
||||||
WorldLoadEvent event
|
WorldLoadEvent event
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
World world = event.getWorld();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
RSServerAdmin plugin =
|
|
||||||
RSServerAdmin.getInstance();
|
|
||||||
|
|
||||||
plugin.getWorldsDAO()
|
|
||||||
.ensureWorldExists(
|
|
||||||
event.getWorld().getName()
|
|
||||||
);
|
|
||||||
|
|
||||||
boolean keepInventoryDefault =
|
boolean keepInventoryDefault =
|
||||||
plugin.getSettingsDAO()
|
plugin.getSettingsDAO().getDefault(
|
||||||
.getDefault(
|
|
||||||
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
SettingKey.KEEP_INVENTORY_NEW_WORLD
|
||||||
);
|
);
|
||||||
|
|
||||||
plugin.getKeepInventoryDAO()
|
plugin.getWorldsDAO().ensureWorldExists(
|
||||||
.ensureWorldExists(
|
world.getName()
|
||||||
event.getWorld().getName(),
|
);
|
||||||
|
|
||||||
|
plugin.getKeepInventoryDAO().ensureWorldExists(
|
||||||
|
world.getName(),
|
||||||
keepInventoryDefault
|
keepInventoryDefault
|
||||||
);
|
);
|
||||||
|
|
||||||
boolean blockDamageDefault =
|
boolean blockDamageDefault =
|
||||||
plugin.getSettingsDAO()
|
plugin.getSettingsDAO().getDefault(
|
||||||
.getDefault(
|
|
||||||
SettingKey.CREEPER_BLOCK_DAMAGE
|
SettingKey.CREEPER_BLOCK_DAMAGE
|
||||||
);
|
);
|
||||||
|
|
||||||
boolean entityDamageDefault =
|
boolean entityDamageDefault =
|
||||||
plugin.getSettingsDAO()
|
plugin.getSettingsDAO().getDefault(
|
||||||
.getDefault(
|
|
||||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||||
);
|
);
|
||||||
|
|
||||||
plugin.getCreeperSettingsDAO()
|
plugin.getCreeperSettingsDAO().ensureWorldExists(
|
||||||
.ensureWorldExists(
|
world.getName(),
|
||||||
event.getWorld().getName(),
|
|
||||||
blockDamageDefault,
|
blockDamageDefault,
|
||||||
entityDamageDefault
|
entityDamageDefault
|
||||||
);
|
);
|
||||||
|
|
||||||
plugin.getEquipmentDropSettingsDAO()
|
plugin.getEquipmentDropSettingsDAO().ensureWorldExists(
|
||||||
.ensureWorldExists(
|
world.getName()
|
||||||
event.getWorld().getName()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
boolean keepInventoryEnabled =
|
boolean peacefulMobsDefault =
|
||||||
plugin.getKeepInventoryDAO()
|
plugin.getSettingsDAO().getDefault(
|
||||||
.getWorldSetting(
|
SettingKey.PEACEFUL_MOBS_NEW_WORLD
|
||||||
event.getWorld().getName()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
event.getWorld().setGameRule(
|
plugin.getPeacefulMobsDAO().ensureWorldExists(
|
||||||
GameRule.KEEP_INVENTORY,
|
world.getName(),
|
||||||
keepInventoryEnabled
|
peacefulMobsDefault
|
||||||
|
);
|
||||||
|
|
||||||
|
boolean peacefulMobsEnabled =
|
||||||
|
plugin.getPeacefulMobsDAO().getWorldSetting(
|
||||||
|
world.getName()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (peacefulMobsEnabled) {
|
||||||
|
|
||||||
|
world.getEntitiesByClass(Mob.class)
|
||||||
|
.forEach(mob -> mob.setTarget(null));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean keepInventory =
|
||||||
|
plugin.getKeepInventoryDAO().getWorldSetting(
|
||||||
|
world.getName()
|
||||||
|
);
|
||||||
|
|
||||||
|
world.setGameRule(
|
||||||
|
org.bukkit.GameRule.KEEP_INVENTORY,
|
||||||
|
keepInventory
|
||||||
);
|
);
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
|
||||||
RSServerAdmin.getInstance()
|
plugin.getLogger().severe(
|
||||||
.getLogger()
|
"Failed to initialize settings for world "
|
||||||
.warning(
|
+ world.getName()
|
||||||
"Failed to register world settings for "
|
|
||||||
+ event.getWorld().getName()
|
|
||||||
+ ": "
|
+ ": "
|
||||||
+ ex.getMessage()
|
+ ex.getMessage()
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ public enum SettingKey {
|
|||||||
CREEPER_BLOCK_DAMAGE,
|
CREEPER_BLOCK_DAMAGE,
|
||||||
CREEPER_ENTITY_DAMAGE,
|
CREEPER_ENTITY_DAMAGE,
|
||||||
KEEP_INVENTORY_NEW_WORLD,
|
KEEP_INVENTORY_NEW_WORLD,
|
||||||
KEEP_INVENTORY
|
KEEP_INVENTORY,
|
||||||
|
PEACEFUL_MOBS_NEW_WORLD
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -36,6 +36,12 @@ public class WorldSyncUtils {
|
|||||||
SettingKey.CREEPER_ENTITY_DAMAGE
|
SettingKey.CREEPER_ENTITY_DAMAGE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
boolean peacefulMobsDefault =
|
||||||
|
plugin.getSettingsDAO()
|
||||||
|
.getDefault(
|
||||||
|
SettingKey.PEACEFUL_MOBS_NEW_WORLD
|
||||||
|
);
|
||||||
|
|
||||||
Set<String> bukkitWorlds =
|
Set<String> bukkitWorlds =
|
||||||
new HashSet<>();
|
new HashSet<>();
|
||||||
|
|
||||||
@@ -75,6 +81,12 @@ public class WorldSyncUtils {
|
|||||||
worldName
|
worldName
|
||||||
);
|
);
|
||||||
|
|
||||||
|
plugin.getPeacefulMobsDAO()
|
||||||
|
.ensureWorldExists(
|
||||||
|
worldName,
|
||||||
|
peacefulMobsDefault
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in new issue
Block a user