mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-28 13:36:33 +01:00
Added command whitelists
This commit is contained in:
parent
970e351c5f
commit
d7e4c09599
@ -262,19 +262,37 @@ public class EditWorld {
|
||||
|
||||
// Invite
|
||||
public static boolean addInvitedPlayer(String editWorldName, UUID uuid) {
|
||||
if (exist(editWorldName)) {
|
||||
WorldConfig config = new WorldConfig(new File(plugin.getDataFolder() + "/maps/" + editWorldName, "config.yml"));
|
||||
config.addInvitedPlayer(uuid.toString());
|
||||
config.save();
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( !exist(editWorldName)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File file = new File(plugin.getDataFolder() + "/maps/" + editWorldName, "config.yml");
|
||||
if ( !file.exists()) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
|
||||
} catch (IOException exception) {
|
||||
exception.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
WorldConfig config = new WorldConfig(file);
|
||||
config.addInvitedPlayer(uuid.toString());
|
||||
config.save();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean removeInvitedPlayer(String editWorldName, UUID uuid, String name) {
|
||||
if (exist(editWorldName)) {
|
||||
WorldConfig config = new WorldConfig(new File(plugin.getDataFolder() + "/maps/" + editWorldName, "config.yml"));
|
||||
if ( !exist(editWorldName)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File file = new File(plugin.getDataFolder() + "/maps/" + editWorldName, "config.yml");
|
||||
if ( !file.exists()) {
|
||||
return false;
|
||||
}
|
||||
WorldConfig config = new WorldConfig(file);
|
||||
config.removeInvitedPlayers(uuid.toString(), name.toLowerCase());
|
||||
config.save();
|
||||
|
||||
@ -293,15 +311,17 @@ public class EditWorld {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isInvitedPlayer(String editWorldName, UUID uuid, String name) {
|
||||
if ( !exist(editWorldName)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
WorldConfig config = new WorldConfig(new File(plugin.getDataFolder() + "/maps/" + editWorldName, "config.yml"));
|
||||
File file = new File(plugin.getDataFolder() + "/maps/" + editWorldName, "config.yml");
|
||||
if ( !file.exists()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
WorldConfig config = new WorldConfig(file);
|
||||
// get player from both a 0.9.1 and lower and 0.9.2 and higher file
|
||||
if (config.getInvitedPlayers().contains(name.toLowerCase()) || config.getInvitedPlayers().contains(uuid.toString())) {
|
||||
return true;
|
||||
|
@ -39,11 +39,11 @@ public class WorldConfig {
|
||||
private boolean keepInventoryOnFinish = false;
|
||||
private boolean keepInventoryOnDeath = true;
|
||||
|
||||
private CopyOnWriteArrayList<DClass> dClasses = new CopyOnWriteArrayList<DClass>();
|
||||
private List<DClass> dClasses = new ArrayList<DClass>();
|
||||
private Map<Integer, String> msgs = new HashMap<Integer, String>();
|
||||
|
||||
private CopyOnWriteArrayList<String> invitedPlayers = new CopyOnWriteArrayList<String>();
|
||||
private CopyOnWriteArrayList<Material> secureObjects = new CopyOnWriteArrayList<Material>();
|
||||
private List<String> invitedPlayers = new ArrayList<String>();
|
||||
private List<Material> secureObjects = new ArrayList<Material>();
|
||||
|
||||
private int initialLives = 3;
|
||||
|
||||
@ -63,8 +63,9 @@ public class WorldConfig {
|
||||
// MobTypes
|
||||
private Set<DMobType> mobTypes = new HashSet<DMobType>();
|
||||
|
||||
public WorldConfig() {
|
||||
private List<String> gameCommandWhitelist = new ArrayList<String>();
|
||||
|
||||
public WorldConfig() {
|
||||
}
|
||||
|
||||
public WorldConfig(File file) {
|
||||
@ -147,18 +148,21 @@ public class WorldConfig {
|
||||
|
||||
/* Secure Objects */
|
||||
if (configFile.contains("secureObjects")) {
|
||||
List<Integer> secureObjectList = configFile.getIntegerList("secureObjects");
|
||||
for (int i : secureObjectList) {
|
||||
secureObjects.add(Material.getMaterial(i));
|
||||
List<String> secureObjectList = configFile.getStringList("secureObjects");
|
||||
for (String id : secureObjectList) {
|
||||
if (Material.getMaterial(NumberUtil.parseInt(id)) != null) {
|
||||
secureObjects.add(Material.getMaterial(NumberUtil.parseInt(id)));
|
||||
|
||||
} else if (Material.getMaterial(id) != null) {
|
||||
secureObjects.add(Material.getMaterial(id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Invited Players */
|
||||
if (configFile.contains("invitedPlayers")) {
|
||||
List<String> invitedPlayers = configFile.getStringList("invitedPlayers");
|
||||
for (String i : invitedPlayers) {
|
||||
invitedPlayers.add(i);
|
||||
}
|
||||
invitedPlayers = configFile.getStringList("invitedPlayers");
|
||||
|
||||
}
|
||||
|
||||
/* Keep Inventory */
|
||||
@ -272,6 +276,10 @@ public class WorldConfig {
|
||||
/* Mobtypes */
|
||||
configSectionMessages = configFile.getConfigurationSection("mobTypes");
|
||||
mobTypes = DMobType.load(configSectionMessages);
|
||||
|
||||
if (configFile.contains("gameCommandWhitelist")) {
|
||||
gameCommandWhitelist = configFile.getStringList("gameCommandWhitelist");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@ -307,7 +315,7 @@ public class WorldConfig {
|
||||
}
|
||||
|
||||
// Getters and Setters
|
||||
public CopyOnWriteArrayList<DClass> getClasses() {
|
||||
public List<DClass> getClasses() {
|
||||
if (dClasses != null) {
|
||||
if ( !dClasses.isEmpty()) {
|
||||
return dClasses;
|
||||
@ -435,4 +443,11 @@ public class WorldConfig {
|
||||
return mobTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the gameCommandWhitelist
|
||||
*/
|
||||
public List<String> getGameCommandWhitelist() {
|
||||
return gameCommandWhitelist;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,8 @@ import io.github.dre2n.dungeonsxl.dungeon.WorldConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@ -23,6 +25,8 @@ public class MainConfig {
|
||||
/* Default Dungeon Settings */
|
||||
public WorldConfig defaultDungeon;
|
||||
|
||||
private List<String> editCommandWhitelist = new ArrayList<String>();
|
||||
|
||||
public MainConfig(File file) {
|
||||
if ( !file.exists()) {
|
||||
try {
|
||||
@ -36,6 +40,7 @@ public class MainConfig {
|
||||
configFile.set("tutorialStartGroup", "default");
|
||||
configFile.set("tutorialEndGroup", "player");
|
||||
configFile.set("tutorialEndGroup", "player");
|
||||
configFile.createSection("editCommandWhitelist");
|
||||
|
||||
ConfigurationSection defaultDungeon = configFile.createSection("default");
|
||||
defaultDungeon.set("initialLives", 3);
|
||||
@ -80,6 +85,10 @@ public class MainConfig {
|
||||
tutorialEndGroup = configFile.getString("tutorial.endgroup");
|
||||
}
|
||||
|
||||
if (configFile.contains("editCommandWhitelist")) {
|
||||
editCommandWhitelist = configFile.getStringList("editCommandWhitelist");
|
||||
}
|
||||
|
||||
/* Default Dungeon Config */
|
||||
ConfigurationSection configSection = configFile.getConfigurationSection("default");
|
||||
if (configSection != null) {
|
||||
@ -139,4 +148,11 @@ public class MainConfig {
|
||||
return tutorialEndGroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the editCommandWhitelist
|
||||
*/
|
||||
public List<String> getEditCommandWhitelist() {
|
||||
return editCommandWhitelist;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package io.github.dre2n.dungeonsxl.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import io.github.dre2n.dungeonsxl.DungeonsXL;
|
||||
import io.github.dre2n.dungeonsxl.dungeon.WorldConfig;
|
||||
import io.github.dre2n.dungeonsxl.dungeon.DLootInventory;
|
||||
@ -510,14 +512,39 @@ public class PlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dPlayer.isEditing() && event.getPlayer().hasPermission("dxl.cmdedit")) {
|
||||
String command = event.getMessage().toLowerCase();
|
||||
ArrayList<String> commandWhitelist = new ArrayList<String>();
|
||||
|
||||
GameWorld gameWorld = GameWorld.getByWorld(dPlayer.getWorld());
|
||||
|
||||
if (dPlayer.isEditing()) {
|
||||
if (event.getPlayer().hasPermission("dxl.cmdedit")) {
|
||||
return;
|
||||
|
||||
} else {
|
||||
commandWhitelist.addAll(plugin.getMainConfig().getEditCommandWhitelist());
|
||||
}
|
||||
|
||||
String[] splittedCmd = event.getMessage().split(" ");
|
||||
if ( !splittedCmd[0].equalsIgnoreCase("/dungeon") && !splittedCmd[0].equalsIgnoreCase("/dungeonsxl") && !splittedCmd[0].equalsIgnoreCase("/dxl")) {
|
||||
MessageUtil.sendMessage(event.getPlayer(), dMessages.getMessage(Messages.ERROR_CMD));
|
||||
} else if (gameWorld != null) {
|
||||
if (gameWorld.getConfig() != null) {
|
||||
commandWhitelist.addAll(gameWorld.getConfig().getGameCommandWhitelist());
|
||||
}
|
||||
}
|
||||
|
||||
commandWhitelist.add("dungeonsxl");
|
||||
commandWhitelist.add("dungeon");
|
||||
commandWhitelist.add("dxl");
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
for (String whitelistEntry : commandWhitelist) {
|
||||
if (command.equals('/' + whitelistEntry.toLowerCase()) || command.startsWith('/' + whitelistEntry.toLowerCase() + ' ')) {
|
||||
event.setCancelled(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (event.isCancelled()) {
|
||||
MessageUtil.sendMessage(event.getPlayer(), dMessages.getMessage(Messages.ERROR_CMD));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user