From e32a2234768e133c1a201a06750b4fb646fa0b3b Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 12 Nov 2021 17:14:56 +0100 Subject: [PATCH 1/3] Using new config Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ArenaMode.java | 41 ++++++++----- src/de/steamwar/bungeecore/BungeeCore.java | 3 - .../bungeecore/commands/CheckCommand.java | 13 +--- .../bungeecore/sql/SchematicType.java | 59 +++++++++++-------- 4 files changed, 65 insertions(+), 51 deletions(-) diff --git a/src/de/steamwar/bungeecore/ArenaMode.java b/src/de/steamwar/bungeecore/ArenaMode.java index 4d5a868..5005bdf 100644 --- a/src/de/steamwar/bungeecore/ArenaMode.java +++ b/src/de/steamwar/bungeecore/ArenaMode.java @@ -20,8 +20,13 @@ package de.steamwar.bungeecore; import de.steamwar.bungeecore.sql.SchematicType; +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; +import java.io.File; +import java.io.IOException; import java.util.*; public class ArenaMode { @@ -32,9 +37,18 @@ public class ArenaMode { private static final List allModes = new LinkedList<>(); private static final Random random = new Random(); - static void init(Configuration config){ - for(String internalName : config.getKeys()){ - new ArenaMode(internalName, config.getSection(internalName)); + static { + File folder = new File(ProxyServer.getInstance().getPluginsFolder(), "FightSystem"); + + for(File configFile : folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))) { + Configuration config; + try { + config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + } catch (IOException e) { + throw new SecurityException("Could not load SchematicTypes", e); + } + + new ArenaMode(configFile.getName().replace(".yml", ""), config); } } @@ -84,19 +98,16 @@ public class ArenaMode { private final String schemType; private ArenaMode(String internalName, Configuration config){ - this.folder = config.getString("folder"); - this.serverJar = config.getString("serverJar"); - this.config = config.getString("config"); - this.maps = config.getStringList("maps"); - this.displayName = config.getString("displayName", internalName); - if(config.contains("chatNames")) - this.chatNames = config.getStringList("chatNames"); - else - this.chatNames = Collections.emptyList(); - this.historic = config.getBoolean("historic", false); - this.schemType = config.getString("schemType", "").toLowerCase(); + this.folder = config.getString("Server.Folder"); + this.serverJar = config.getString("Server.ServerJar"); + this.config = internalName + ".yml"; + this.maps = config.getStringList("Server.Maps"); + this.displayName = config.getString("GameName", internalName); + this.chatNames = config.getStringList("Server.ChatNames"); + this.schemType = config.getString("Schematic.Type", "").toLowerCase(); - this.ranked = config.getBoolean("ranked", false); + this.ranked = config.getBoolean("Server.Ranked", false); + this.historic = config.getBoolean("Server.Historic", false); allModes.add(this); byInternal.put(internalName, this); diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 65fd3ce..bd744da 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -269,8 +269,6 @@ public class BungeeCore extends Plugin { EVENT_MODE = config.getBoolean("eventmode"); Broadcaster.setBroadCastMsgs(config.getStringList("broadcasts").toArray(new String[1])); PollSystem.init(config.getString("poll.question"), config.getStringList("poll.answers")); - CheckCommand.loadCheckQuestions(config.getSection("checkquestions")); - CheckCommand.loadRanks(config.getSection("checkranks")); Persistent.setChatPrefix(CHAT_PREFIX); Persistent.setLobbyServer(LOBBY_SERVER); @@ -280,7 +278,6 @@ public class BungeeCore extends Plugin { config.getString("db.password") ); - ArenaMode.init(config.getSection("games")); if (config.getSection("discord") != null) { SteamwarDiscordBotConfig.loadConfig(config.getSection("discord")); } diff --git a/src/de/steamwar/bungeecore/commands/CheckCommand.java b/src/de/steamwar/bungeecore/commands/CheckCommand.java index e61dd71..b19d4a3 100644 --- a/src/de/steamwar/bungeecore/commands/CheckCommand.java +++ b/src/de/steamwar/bungeecore/commands/CheckCommand.java @@ -47,16 +47,9 @@ public class CheckCommand extends BasicCommand { private static Map currentCheckers = new HashMap<>(); private static Map currentSchems = new HashMap<>(); - public static void loadCheckQuestions(Configuration config){ - for(String schemType : config.getKeys()){ - checkQuestions.put(SchematicType.fromDB(schemType), config.getStringList(schemType)); - } - } - - public static void loadRanks(Configuration config){ - for(String schemType : config.getKeys()){ - ranks.put(SchematicType.fromDB(schemType), config.getStringList(schemType)); - } + public static void setCheckQuestions(SchematicType checkType, Configuration config) { + checkQuestions.put(checkType, config.getStringList("CheckQuestions")); + ranks.put(checkType, config.getStringList("Ranks")); } public static boolean isChecking(ProxiedPlayer player){ diff --git a/src/de/steamwar/bungeecore/sql/SchematicType.java b/src/de/steamwar/bungeecore/sql/SchematicType.java index 975eedf..54290d8 100644 --- a/src/de/steamwar/bungeecore/sql/SchematicType.java +++ b/src/de/steamwar/bungeecore/sql/SchematicType.java @@ -19,7 +19,8 @@ package de.steamwar.bungeecore.sql; -import de.steamwar.bungeecore.BungeeCore; +import de.steamwar.bungeecore.commands.CheckCommand; +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.ConfigurationProvider; import net.md_5.bungee.config.YamlConfiguration; @@ -35,18 +36,8 @@ public class SchematicType { private static final Map fightType; private static final List types; - static{ - File file = new File(BungeeCore.get().getDataFolder(), "SchematicTypes.yml"); - - if(!file.exists()) - throw new SecurityException("SchematicType-ConfigFile not found!"); - - Configuration config; - try { - config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(file); - } catch (IOException e) { - throw new SecurityException("Could not load SchematicTypes", e); - } + static { + File folder = new File(ProxyServer.getInstance().getPluginsFolder(), "FightSystem"); List tmpTypes = new LinkedList<>(); Map tmpFromDB = new HashMap<>(); @@ -55,15 +46,37 @@ public class SchematicType { tmpTypes.add(Normal); tmpFromDB.put(Normal.name().toLowerCase(), Normal); - for(String type : config.getKeys()){ - Configuration section = config.getSection(type); - assert section != null; - String checktype = section.getString("checktype"); - SchematicType current = new SchematicType(type, section.getString("kuerzel"), Type.valueOf(section.getString("type")), checktype != null ? tmpFromDB.get(checktype.toLowerCase()) : null); - tmpTypes.add(current); - if(current.checkType != null) - tmpFightType.put(current.checkType, current); - tmpFromDB.put(type.toLowerCase(), current); + if(folder.exists()) { + for(File configFile : folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))) { + Configuration config; + try { + config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + } catch (IOException e) { + throw new SecurityException("Could not load SchematicTypes", e); + } + + if(!config.contains("Schematic")) + continue; + + String type = config.getString("Schematic.Type"); + assert type != null; + String shortcut = config.getString("Schematic.Shortcut"); + if(tmpFromDB.containsKey(type.toLowerCase())) + continue; + + SchematicType checktype = null; + if(!config.getStringList("CheckQuestions").isEmpty()) { + checktype = new SchematicType("C" + type, "C" + shortcut, Type.CHECK_TYPE, null); + tmpTypes.add(checktype); + tmpFromDB.put(checktype.toDB(), checktype); + CheckCommand.setCheckQuestions(checktype, config); + } + + SchematicType current = new SchematicType(type, shortcut, config.getKeys().contains("Server") ? Type.FIGHT_TYPE : Type.NORMAL, checktype); + if(checktype != null) + tmpFightType.put(checktype, current); + tmpFromDB.put(type.toLowerCase(), current); + } } fromDB = Collections.unmodifiableMap(tmpFromDB); @@ -74,7 +87,7 @@ public class SchematicType { private final String name; private final String kuerzel; private final Type type; - private SchematicType checkType; + private final SchematicType checkType; private SchematicType(String name, String kuerzel, Type type, SchematicType checkType){ this.name = name; From 6bb90af3bca011689371ec8177fa96920df26bea Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 2 Dec 2021 08:45:01 +0100 Subject: [PATCH 2/3] Fix loading of non startable gamemodes Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ArenaMode.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/ArenaMode.java b/src/de/steamwar/bungeecore/ArenaMode.java index 5005bdf..81eed30 100644 --- a/src/de/steamwar/bungeecore/ArenaMode.java +++ b/src/de/steamwar/bungeecore/ArenaMode.java @@ -48,7 +48,8 @@ public class ArenaMode { throw new SecurityException("Could not load SchematicTypes", e); } - new ArenaMode(configFile.getName().replace(".yml", ""), config); + if(config.contains("Server")) + new ArenaMode(configFile.getName().replace(".yml", ""), config); } } From 9f7eca9689816d2258a71d426fa6019872c24acb Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 2 Dec 2021 09:41:47 +0100 Subject: [PATCH 3/3] Display sorted Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ArenaMode.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/ArenaMode.java b/src/de/steamwar/bungeecore/ArenaMode.java index 81eed30..13db3f4 100644 --- a/src/de/steamwar/bungeecore/ArenaMode.java +++ b/src/de/steamwar/bungeecore/ArenaMode.java @@ -28,6 +28,7 @@ import net.md_5.bungee.config.YamlConfiguration; import java.io.File; import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; public class ArenaMode { @@ -40,7 +41,7 @@ public class ArenaMode { static { File folder = new File(ProxyServer.getInstance().getPluginsFolder(), "FightSystem"); - for(File configFile : folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))) { + for(File configFile : Arrays.stream(folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))).sorted().collect(Collectors.toList())) { Configuration config; try { config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile);