diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java
index d07ce131..6d3a3d7c 100644
--- a/src/de/steamwar/bungeecore/BungeeCore.java
+++ b/src/de/steamwar/bungeecore/BungeeCore.java
@@ -34,6 +34,7 @@ import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.SWTypeMapperCreator;
import de.steamwar.command.TabCompletionCache;
import de.steamwar.command.TypeMapper;
+import de.steamwar.sql.internal.Statement;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.CommandSender;
diff --git a/src/de/steamwar/bungeecore/commands/GDPRQuery.java b/src/de/steamwar/bungeecore/commands/GDPRQuery.java
index 671d5a2d..25e37fa1 100644
--- a/src/de/steamwar/bungeecore/commands/GDPRQuery.java
+++ b/src/de/steamwar/bungeecore/commands/GDPRQuery.java
@@ -2,11 +2,10 @@ package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.Message;
-import de.steamwar.bungeecore.sql.Statement;
+import de.steamwar.sql.internal.Statement;
import de.steamwar.bungeecore.sql.SteamwarUser;
import de.steamwar.command.SWCommand;
import net.md_5.bungee.BungeeCord;
-import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.io.*;
diff --git a/src/de/steamwar/bungeecore/sql/BannedUserIPs.java b/src/de/steamwar/bungeecore/sql/BannedUserIPs.java
index 4a754845..3d779190 100644
--- a/src/de/steamwar/bungeecore/sql/BannedUserIPs.java
+++ b/src/de/steamwar/bungeecore/sql/BannedUserIPs.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/de/steamwar/bungeecore/sql/BauweltMember.java b/src/de/steamwar/bungeecore/sql/BauweltMember.java
index f89650e2..66222bf6 100644
--- a/src/de/steamwar/bungeecore/sql/BauweltMember.java
+++ b/src/de/steamwar/bungeecore/sql/BauweltMember.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
diff --git a/src/de/steamwar/bungeecore/sql/CheckedSchematic.java b/src/de/steamwar/bungeecore/sql/CheckedSchematic.java
index baae8933..77815c49 100644
--- a/src/de/steamwar/bungeecore/sql/CheckedSchematic.java
+++ b/src/de/steamwar/bungeecore/sql/CheckedSchematic.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
diff --git a/src/de/steamwar/bungeecore/sql/Event.java b/src/de/steamwar/bungeecore/sql/Event.java
index ab4cedef..c2ad2adf 100644
--- a/src/de/steamwar/bungeecore/sql/Event.java
+++ b/src/de/steamwar/bungeecore/sql/Event.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
diff --git a/src/de/steamwar/bungeecore/sql/EventFight.java b/src/de/steamwar/bungeecore/sql/EventFight.java
index 4135b61f..0a7072e1 100644
--- a/src/de/steamwar/bungeecore/sql/EventFight.java
+++ b/src/de/steamwar/bungeecore/sql/EventFight.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import de.steamwar.bungeecore.ArenaMode;
import java.sql.ResultSet;
diff --git a/src/de/steamwar/bungeecore/sql/Fight.java b/src/de/steamwar/bungeecore/sql/Fight.java
index e13b7872..6cde50c8 100644
--- a/src/de/steamwar/bungeecore/sql/Fight.java
+++ b/src/de/steamwar/bungeecore/sql/Fight.java
@@ -1,5 +1,6 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import de.steamwar.bungeecore.ArenaMode;
import java.sql.ResultSet;
diff --git a/src/de/steamwar/bungeecore/sql/FightPlayer.java b/src/de/steamwar/bungeecore/sql/FightPlayer.java
index a4e11926..8416cb0f 100644
--- a/src/de/steamwar/bungeecore/sql/FightPlayer.java
+++ b/src/de/steamwar/bungeecore/sql/FightPlayer.java
@@ -1,5 +1,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
diff --git a/src/de/steamwar/bungeecore/sql/IgnoreSystem.java b/src/de/steamwar/bungeecore/sql/IgnoreSystem.java
index 7309f8ab..b152805e 100644
--- a/src/de/steamwar/bungeecore/sql/IgnoreSystem.java
+++ b/src/de/steamwar/bungeecore/sql/IgnoreSystem.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.sql.ResultSet;
diff --git a/src/de/steamwar/bungeecore/sql/Mod.java b/src/de/steamwar/bungeecore/sql/Mod.java
index 6825565f..a8b89b70 100644
--- a/src/de/steamwar/bungeecore/sql/Mod.java
+++ b/src/de/steamwar/bungeecore/sql/Mod.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
public class Mod {
private static final Statement get = new Statement("SELECT * FROM Mods WHERE ModName = ? AND Platform = ?");
diff --git a/src/de/steamwar/bungeecore/sql/NodeMember.java b/src/de/steamwar/bungeecore/sql/NodeMember.java
index 063dd487..878982c8 100644
--- a/src/de/steamwar/bungeecore/sql/NodeMember.java
+++ b/src/de/steamwar/bungeecore/sql/NodeMember.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
diff --git a/src/de/steamwar/bungeecore/sql/PollAnswer.java b/src/de/steamwar/bungeecore/sql/PollAnswer.java
index 7a34476e..8f9a64e5 100644
--- a/src/de/steamwar/bungeecore/sql/PollAnswer.java
+++ b/src/de/steamwar/bungeecore/sql/PollAnswer.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import de.steamwar.bungeecore.listeners.PollSystem;
import java.sql.ResultSet;
diff --git a/src/de/steamwar/bungeecore/sql/Punishment.java b/src/de/steamwar/bungeecore/sql/Punishment.java
index a2a10853..8bc3b4a3 100644
--- a/src/de/steamwar/bungeecore/sql/Punishment.java
+++ b/src/de/steamwar/bungeecore/sql/Punishment.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
diff --git a/src/de/steamwar/bungeecore/sql/SWException.java b/src/de/steamwar/bungeecore/sql/SWException.java
index 8a2c2e1f..29e127af 100644
--- a/src/de/steamwar/bungeecore/sql/SWException.java
+++ b/src/de/steamwar/bungeecore/sql/SWException.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
public class SWException {
private SWException(){}
diff --git a/src/de/steamwar/bungeecore/sql/SchemElo.java b/src/de/steamwar/bungeecore/sql/SchemElo.java
index 55df604e..c5f0a344 100644
--- a/src/de/steamwar/bungeecore/sql/SchemElo.java
+++ b/src/de/steamwar/bungeecore/sql/SchemElo.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import static de.steamwar.bungeecore.sql.UserElo.ELO_DEFAULT;
public class SchemElo {
diff --git a/src/de/steamwar/bungeecore/sql/SchematicNode.java b/src/de/steamwar/bungeecore/sql/SchematicNode.java
index d3b7a666..66a91832 100644
--- a/src/de/steamwar/bungeecore/sql/SchematicNode.java
+++ b/src/de/steamwar/bungeecore/sql/SchematicNode.java
@@ -19,19 +19,16 @@
package de.steamwar.bungeecore.sql;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
+import de.steamwar.sql.internal.Statement;
+
import java.io.InputStream;
-import java.sql.Blob;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.*;
import java.util.function.Predicate;
-import java.util.zip.GZIPInputStream;
public class SchematicNode {
private static final Statement createNode = new Statement("INSERT INTO SchematicNode (NodeName, NodeOwner, ParentNode, NodeType, NodeItem) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE NodeName = VALUES(NodeName), ParentNode = VALUES(ParentNode), NodeItem = VALUES(NodeItem), NodeType = VALUES(NodeType), NodeItem = VALUES(NodeItem)");
diff --git a/src/de/steamwar/bungeecore/sql/Session.java b/src/de/steamwar/bungeecore/sql/Session.java
index 9793c353..f5eae0df 100644
--- a/src/de/steamwar/bungeecore/sql/Session.java
+++ b/src/de/steamwar/bungeecore/sql/Session.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.Timestamp;
public class Session {
diff --git a/src/de/steamwar/bungeecore/sql/Statement.java b/src/de/steamwar/bungeecore/sql/Statement.java
deleted file mode 100644
index 06b705a4..00000000
--- a/src/de/steamwar/bungeecore/sql/Statement.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- This file is a part of the SteamWar software.
-
- Copyright (C) 2020 SteamWar.de-Serverteam
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
- */
-
-package de.steamwar.bungeecore.sql;
-
-import de.steamwar.bungeecore.BungeeCore;
-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.sql.*;
-import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-public class Statement implements AutoCloseable {
-
- private static final Logger logger = BungeeCore.get().getLogger();
-
- private static final List statements = new ArrayList<>();
- private static final Deque connections = new ArrayDeque<>();
-
- private static final String URL;
- private static final String USER;
- private static final String PASSWORD;
-
- static {
- File file = new File(System.getProperty("user.home"), "MySQL.yml");
- Configuration config;
- try {
- config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(file);
- } catch (IOException e) {
- ProxyServer.getInstance().stop();
- throw new SecurityException("Could not load SQL connection", e);
- }
-
- URL = "jdbc:mysql://" + config.getString("HOST") + ":" + config.getString("PORT") + "/" + config.getString("DATABASE");
- USER = config.getString("USER");
- PASSWORD = config.getString("PASSWORD");
- }
-
- public static void closeAll() {
- synchronized (connections) {
- for(Connection connection : connections) {
- try {
- synchronized (statements) {
- statements.forEach(statement -> statement.close(connection));
- }
- connection.close();
- } catch (SQLException e) {
- logger.log(Level.INFO, "Could not close SQL connection", e);
- }
- }
- connections.clear();
- }
- }
-
- private final String sql;
- private final Map cachedStatements = new HashMap<>();
-
- public Statement(String sql) {
- this.sql = sql;
- synchronized (statements) {
- statements.add(this);
- }
- }
-
- public T select(ResultSetUser user, Object... objects) {
- return withConnection(st -> {
- ResultSet rs = st.executeQuery();
- T result = user.use(rs);
- rs.close();
- return result;
- }, objects);
- }
-
- public void update(Object... objects) {
- withConnection(PreparedStatement::executeUpdate, objects);
- }
-
- private T withConnection(SQLRunnable runnable, Object... objects) {
- Connection connection = aquireConnection();
-
- T result;
- try {
- result = tryWithConnection(connection, runnable, objects);
- } catch (SQLException e) {
- closeConnection(connection);
- connection = aquireConnection();
- try {
- result = tryWithConnection(connection, runnable, objects);
- } catch (SQLException ex) {
- closeConnection(connection);
- throw new SecurityException("Could not execute statement", ex);
- }
- }
-
- synchronized (connections) {
- connections.addLast(connection);
- }
-
- return result;
- }
-
- private T tryWithConnection(Connection connection, SQLRunnable runnable, Object... objects) throws SQLException {
- PreparedStatement st = cachedStatements.get(connection);
- if(st == null) {
- st = connection.prepareStatement(sql);
- cachedStatements.put(connection, st);
- }
-
- for (int i = 0; i < objects.length; i++) {
- st.setObject(i + 1, objects[i]);
- }
-
- return runnable.run(st);
- }
-
- @Override
- public void close() {
- cachedStatements.values().forEach(st -> closeStatement(st, false));
- cachedStatements.clear();
- synchronized (statements) {
- statements.remove(this);
- }
- }
-
- private void close(Connection connection) {
- PreparedStatement st = cachedStatements.remove(connection);
- if(st != null)
- closeStatement(st, true);
- }
-
- private static Connection aquireConnection() {
- synchronized (connections) {
- if(!connections.isEmpty())
- return connections.pop();
- }
- try {
- return DriverManager.getConnection(URL + "?autoReconnect=true&useServerPrepStmts=true", USER, PASSWORD);
- } catch (SQLException e) {
- throw new SecurityException("Could not open connection", e);
- }
- }
-
- private static void closeConnection(Connection connection) {
- synchronized (statements) {
- for (Statement statement : statements) {
- statement.close(connection);
- }
- }
- try {
- connection.close();
- } catch (SQLException e) {
- logger.log(Level.INFO, "Could not close connection", e);
- }
- }
-
- private static void closeStatement(PreparedStatement st, boolean silent) {
- try {
- st.close();
- } catch (SQLException e) {
- if(!silent)
- logger.log(Level.INFO, "Could not close statement", e);
- }
- }
-
- public interface ResultSetUser {
- T use(ResultSet rs) throws SQLException;
- }
-
- private interface SQLRunnable {
- T run(PreparedStatement st) throws SQLException;
- }
-}
diff --git a/src/de/steamwar/bungeecore/sql/SteamwarUser.java b/src/de/steamwar/bungeecore/sql/SteamwarUser.java
index 150ccf45..3fad94e0 100644
--- a/src/de/steamwar/bungeecore/sql/SteamwarUser.java
+++ b/src/de/steamwar/bungeecore/sql/SteamwarUser.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import com.google.gson.JsonParser;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.Message;
diff --git a/src/de/steamwar/bungeecore/sql/Team.java b/src/de/steamwar/bungeecore/sql/Team.java
index b00a64f4..83e8e0af 100644
--- a/src/de/steamwar/bungeecore/sql/Team.java
+++ b/src/de/steamwar/bungeecore/sql/Team.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
diff --git a/src/de/steamwar/bungeecore/sql/TeamTeilnahme.java b/src/de/steamwar/bungeecore/sql/TeamTeilnahme.java
index 1688cefb..a77f33dd 100644
--- a/src/de/steamwar/bungeecore/sql/TeamTeilnahme.java
+++ b/src/de/steamwar/bungeecore/sql/TeamTeilnahme.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import java.sql.ResultSet;
import java.util.HashSet;
import java.util.Set;
diff --git a/src/de/steamwar/bungeecore/sql/Tutorial.java b/src/de/steamwar/bungeecore/sql/Tutorial.java
index 7c82f066..6196ad61 100644
--- a/src/de/steamwar/bungeecore/sql/Tutorial.java
+++ b/src/de/steamwar/bungeecore/sql/Tutorial.java
@@ -19,6 +19,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.ServerStarter;
import de.steamwar.bungeecore.SubserverSystem;
diff --git a/src/de/steamwar/bungeecore/sql/UserConfig.java b/src/de/steamwar/bungeecore/sql/UserConfig.java
index 10f4dda3..b2c79bd2 100644
--- a/src/de/steamwar/bungeecore/sql/UserConfig.java
+++ b/src/de/steamwar/bungeecore/sql/UserConfig.java
@@ -20,6 +20,8 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
+
public class UserConfig {
private UserConfig() {}
diff --git a/src/de/steamwar/bungeecore/sql/UserElo.java b/src/de/steamwar/bungeecore/sql/UserElo.java
index efa00782..ed5df184 100644
--- a/src/de/steamwar/bungeecore/sql/UserElo.java
+++ b/src/de/steamwar/bungeecore/sql/UserElo.java
@@ -19,6 +19,7 @@
package de.steamwar.bungeecore.sql;
+import de.steamwar.sql.internal.Statement;
import de.steamwar.bungeecore.ArenaMode;
import de.steamwar.bungeecore.Message;
import net.md_5.bungee.api.connection.ProxiedPlayer;
diff --git a/src/de/steamwar/sql/SQLConfigImpl.java b/src/de/steamwar/sql/SQLConfigImpl.java
new file mode 100644
index 00000000..d1e17013
--- /dev/null
+++ b/src/de/steamwar/sql/SQLConfigImpl.java
@@ -0,0 +1,37 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2023 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.sql;
+
+import de.steamwar.bungeecore.BungeeCore;
+import de.steamwar.sql.internal.SQLConfig;
+
+import java.util.logging.Logger;
+
+public class SQLConfigImpl implements SQLConfig {
+ @Override
+ public Logger getLogger() {
+ return BungeeCore.get().getLogger();
+ }
+
+ @Override
+ public int maxConnections() {
+ return 4;
+ }
+}
diff --git a/src/de/steamwar/sql/SQLWrapperImpl.java b/src/de/steamwar/sql/SQLWrapperImpl.java
new file mode 100644
index 00000000..f564ff25
--- /dev/null
+++ b/src/de/steamwar/sql/SQLWrapperImpl.java
@@ -0,0 +1,86 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2023 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.sql;
+
+import de.steamwar.bungeecore.BungeeCore;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.config.ServerInfo;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+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.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class SQLWrapperImpl implements SQLWrapper {
+ @Override
+ public void loadSchemTypes(List tmpTypes, Map tmpFromDB) {
+ File folder = new File(BungeeCore.get().getDataFolder().getParentFile(), "FightSystem");
+ if(folder.exists()) {
+ 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);
+ } 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;
+ String material = config.getString("Schematic.Material");
+
+ if(!config.getStringList("CheckQuestions").isEmpty()) {
+ checktype = new SchematicType("C" + type, "C" + shortcut, SchematicType.Type.CHECK_TYPE, null, material);
+ tmpTypes.add(checktype);
+ tmpFromDB.put(checktype.toDB(), checktype);
+ }
+
+ SchematicType current = new SchematicType(type, shortcut, !config.contains("Server") ? SchematicType.Type.FIGHT_TYPE : SchematicType.Type.NORMAL, checktype, material);
+ tmpTypes.add(current);
+ tmpFromDB.put(type.toLowerCase(), current);
+ }
+ }
+ }
+
+ @Override
+ public void additionalExceptionMetadata(StringBuilder builder) {
+ builder.append("\nServers: ");
+ for(Map.Entry server : ProxyServer.getInstance().getServers().entrySet()) {
+ builder.append(server.getKey()).append("(");
+ for(ProxiedPlayer player : server.getValue().getPlayers()) {
+ builder.append(player.getName()).append(" ");
+ }
+ builder.append(")");
+ }
+ }
+}