diff --git a/.classpath b/Core/.classpath
similarity index 100%
rename from .classpath
rename to Core/.classpath
diff --git a/.gitignore b/Core/.gitignore
similarity index 100%
rename from .gitignore
rename to Core/.gitignore
diff --git a/.project b/Core/.project
similarity index 100%
rename from .project
rename to Core/.project
diff --git a/.settings/org.eclipse.core.resources.prefs b/Core/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from .settings/org.eclipse.core.resources.prefs
rename to Core/.settings/org.eclipse.core.resources.prefs
diff --git a/.settings/org.eclipse.jdt.core.prefs b/Core/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from .settings/org.eclipse.jdt.core.prefs
rename to Core/.settings/org.eclipse.jdt.core.prefs
diff --git a/.settings/org.eclipse.m2e.core.prefs b/Core/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from .settings/org.eclipse.m2e.core.prefs
rename to Core/.settings/org.eclipse.m2e.core.prefs
diff --git a/pom.xml b/Core/pom.xml
similarity index 100%
rename from pom.xml
rename to Core/pom.xml
diff --git a/src/main/java/fr/pandacube/Pandacube.java b/Core/src/main/java/fr/pandacube/Pandacube.java
similarity index 100%
rename from src/main/java/fr/pandacube/Pandacube.java
rename to Core/src/main/java/fr/pandacube/Pandacube.java
diff --git a/src/main/java/fr/pandacube/util/AmountPerTimeLimiter.java b/Core/src/main/java/fr/pandacube/util/AmountPerTimeLimiter.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/AmountPerTimeLimiter.java
rename to Core/src/main/java/fr/pandacube/util/AmountPerTimeLimiter.java
diff --git a/src/main/java/fr/pandacube/util/BiMap.java b/Core/src/main/java/fr/pandacube/util/BiMap.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/BiMap.java
rename to Core/src/main/java/fr/pandacube/util/BiMap.java
diff --git a/src/main/java/fr/pandacube/util/Callback.java b/Core/src/main/java/fr/pandacube/util/Callback.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/Callback.java
rename to Core/src/main/java/fr/pandacube/util/Callback.java
diff --git a/src/main/java/fr/pandacube/util/DirUtils.java b/Core/src/main/java/fr/pandacube/util/DirUtils.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/DirUtils.java
rename to Core/src/main/java/fr/pandacube/util/DirUtils.java
diff --git a/src/main/java/fr/pandacube/util/EnumUtil.java b/Core/src/main/java/fr/pandacube/util/EnumUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/EnumUtil.java
rename to Core/src/main/java/fr/pandacube/util/EnumUtil.java
diff --git a/src/main/java/fr/pandacube/util/GifDecoder.java b/Core/src/main/java/fr/pandacube/util/GifDecoder.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/GifDecoder.java
rename to Core/src/main/java/fr/pandacube/util/GifDecoder.java
diff --git a/src/main/java/fr/pandacube/util/JArithmeticInterpreter.java b/Core/src/main/java/fr/pandacube/util/JArithmeticInterpreter.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/JArithmeticInterpreter.java
rename to Core/src/main/java/fr/pandacube/util/JArithmeticInterpreter.java
diff --git a/src/main/java/fr/pandacube/util/LevenshteinDistance.java b/Core/src/main/java/fr/pandacube/util/LevenshteinDistance.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/LevenshteinDistance.java
rename to Core/src/main/java/fr/pandacube/util/LevenshteinDistance.java
diff --git a/src/main/java/fr/pandacube/util/ListUtil.java b/Core/src/main/java/fr/pandacube/util/ListUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/ListUtil.java
rename to Core/src/main/java/fr/pandacube/util/ListUtil.java
diff --git a/src/main/java/fr/pandacube/util/Log.java b/Core/src/main/java/fr/pandacube/util/Log.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/Log.java
rename to Core/src/main/java/fr/pandacube/util/Log.java
diff --git a/src/main/java/fr/pandacube/util/MappedListView.java b/Core/src/main/java/fr/pandacube/util/MappedListView.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/MappedListView.java
rename to Core/src/main/java/fr/pandacube/util/MappedListView.java
diff --git a/src/main/java/fr/pandacube/util/MinecraftVersion.java b/Core/src/main/java/fr/pandacube/util/MinecraftVersion.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/MinecraftVersion.java
rename to Core/src/main/java/fr/pandacube/util/MinecraftVersion.java
diff --git a/src/main/java/fr/pandacube/util/MinecraftWebUtil.java b/Core/src/main/java/fr/pandacube/util/MinecraftWebUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/MinecraftWebUtil.java
rename to Core/src/main/java/fr/pandacube/util/MinecraftWebUtil.java
diff --git a/src/main/java/fr/pandacube/util/OfflineUUID.java b/Core/src/main/java/fr/pandacube/util/OfflineUUID.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/OfflineUUID.java
rename to Core/src/main/java/fr/pandacube/util/OfflineUUID.java
diff --git a/src/main/java/fr/pandacube/util/RandomUtil.java b/Core/src/main/java/fr/pandacube/util/RandomUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/RandomUtil.java
rename to Core/src/main/java/fr/pandacube/util/RandomUtil.java
diff --git a/src/main/java/fr/pandacube/util/ReflexionUtil.java b/Core/src/main/java/fr/pandacube/util/ReflexionUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/ReflexionUtil.java
rename to Core/src/main/java/fr/pandacube/util/ReflexionUtil.java
diff --git a/src/main/java/fr/pandacube/util/ServerPropertyFile.java b/Core/src/main/java/fr/pandacube/util/ServerPropertyFile.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/ServerPropertyFile.java
rename to Core/src/main/java/fr/pandacube/util/ServerPropertyFile.java
diff --git a/src/main/java/fr/pandacube/util/StringUtil.java b/Core/src/main/java/fr/pandacube/util/StringUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/StringUtil.java
rename to Core/src/main/java/fr/pandacube/util/StringUtil.java
diff --git a/src/main/java/fr/pandacube/util/ThrowableUtil.java b/Core/src/main/java/fr/pandacube/util/ThrowableUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/ThrowableUtil.java
rename to Core/src/main/java/fr/pandacube/util/ThrowableUtil.java
diff --git a/src/main/java/fr/pandacube/util/TypeConverter.java b/Core/src/main/java/fr/pandacube/util/TypeConverter.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/TypeConverter.java
rename to Core/src/main/java/fr/pandacube/util/TypeConverter.java
diff --git a/src/main/java/fr/pandacube/util/commands/AbstractCommand.java b/Core/src/main/java/fr/pandacube/util/commands/AbstractCommand.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/commands/AbstractCommand.java
rename to Core/src/main/java/fr/pandacube/util/commands/AbstractCommand.java
diff --git a/src/main/java/fr/pandacube/util/commands/BadCommandUsage.java b/Core/src/main/java/fr/pandacube/util/commands/BadCommandUsage.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/commands/BadCommandUsage.java
rename to Core/src/main/java/fr/pandacube/util/commands/BadCommandUsage.java
diff --git a/src/main/java/fr/pandacube/util/commands/SuggestionsSupplier.java b/Core/src/main/java/fr/pandacube/util/commands/SuggestionsSupplier.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/commands/SuggestionsSupplier.java
rename to Core/src/main/java/fr/pandacube/util/commands/SuggestionsSupplier.java
diff --git a/src/main/java/fr/pandacube/util/config/AbstractConfig.java b/Core/src/main/java/fr/pandacube/util/config/AbstractConfig.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/config/AbstractConfig.java
rename to Core/src/main/java/fr/pandacube/util/config/AbstractConfig.java
diff --git a/src/main/java/fr/pandacube/util/config/AbstractConfigManager.java b/Core/src/main/java/fr/pandacube/util/config/AbstractConfigManager.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/config/AbstractConfigManager.java
rename to Core/src/main/java/fr/pandacube/util/config/AbstractConfigManager.java
diff --git a/src/main/java/fr/pandacube/util/measurement/DistanceUtil.java b/Core/src/main/java/fr/pandacube/util/measurement/DistanceUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/measurement/DistanceUtil.java
rename to Core/src/main/java/fr/pandacube/util/measurement/DistanceUtil.java
diff --git a/src/main/java/fr/pandacube/util/measurement/MemoryUtil.java b/Core/src/main/java/fr/pandacube/util/measurement/MemoryUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/measurement/MemoryUtil.java
rename to Core/src/main/java/fr/pandacube/util/measurement/MemoryUtil.java
diff --git a/src/main/java/fr/pandacube/util/measurement/Tick.java b/Core/src/main/java/fr/pandacube/util/measurement/Tick.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/measurement/Tick.java
rename to Core/src/main/java/fr/pandacube/util/measurement/Tick.java
diff --git a/src/main/java/fr/pandacube/util/measurement/TimeUtil.java b/Core/src/main/java/fr/pandacube/util/measurement/TimeUtil.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/measurement/TimeUtil.java
rename to Core/src/main/java/fr/pandacube/util/measurement/TimeUtil.java
diff --git a/src/main/java/fr/pandacube/util/net/Array8Bit.java b/Core/src/main/java/fr/pandacube/util/net/Array8Bit.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/Array8Bit.java
rename to Core/src/main/java/fr/pandacube/util/net/Array8Bit.java
diff --git a/src/main/java/fr/pandacube/util/net/ByteBuffer.java b/Core/src/main/java/fr/pandacube/util/net/ByteBuffer.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/ByteBuffer.java
rename to Core/src/main/java/fr/pandacube/util/net/ByteBuffer.java
diff --git a/src/main/java/fr/pandacube/util/net/PPacket.java b/Core/src/main/java/fr/pandacube/util/net/PPacket.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/PPacket.java
rename to Core/src/main/java/fr/pandacube/util/net/PPacket.java
diff --git a/src/main/java/fr/pandacube/util/net/PPacketAnswer.java b/Core/src/main/java/fr/pandacube/util/net/PPacketAnswer.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/PPacketAnswer.java
rename to Core/src/main/java/fr/pandacube/util/net/PPacketAnswer.java
diff --git a/src/main/java/fr/pandacube/util/net/PPacketListener.java b/Core/src/main/java/fr/pandacube/util/net/PPacketListener.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/PPacketListener.java
rename to Core/src/main/java/fr/pandacube/util/net/PPacketListener.java
diff --git a/src/main/java/fr/pandacube/util/net/PServer.java b/Core/src/main/java/fr/pandacube/util/net/PServer.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/PServer.java
rename to Core/src/main/java/fr/pandacube/util/net/PServer.java
diff --git a/src/main/java/fr/pandacube/util/net/PSocket.java b/Core/src/main/java/fr/pandacube/util/net/PSocket.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/PSocket.java
rename to Core/src/main/java/fr/pandacube/util/net/PSocket.java
diff --git a/src/main/java/fr/pandacube/util/net/PSocketConnectionListener.java b/Core/src/main/java/fr/pandacube/util/net/PSocketConnectionListener.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/net/PSocketConnectionListener.java
rename to Core/src/main/java/fr/pandacube/util/net/PSocketConnectionListener.java
diff --git a/src/main/java/fr/pandacube/util/network_api/client/AbstractRequest.java b/Core/src/main/java/fr/pandacube/util/network_api/client/AbstractRequest.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/client/AbstractRequest.java
rename to Core/src/main/java/fr/pandacube/util/network_api/client/AbstractRequest.java
diff --git a/src/main/java/fr/pandacube/util/network_api/client/NetworkAPISender.java b/Core/src/main/java/fr/pandacube/util/network_api/client/NetworkAPISender.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/client/NetworkAPISender.java
rename to Core/src/main/java/fr/pandacube/util/network_api/client/NetworkAPISender.java
diff --git a/src/main/java/fr/pandacube/util/network_api/client/ResponseAnalyser.java b/Core/src/main/java/fr/pandacube/util/network_api/client/ResponseAnalyser.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/client/ResponseAnalyser.java
rename to Core/src/main/java/fr/pandacube/util/network_api/client/ResponseAnalyser.java
diff --git a/src/main/java/fr/pandacube/util/network_api/server/AbstractRequestExecutor.java b/Core/src/main/java/fr/pandacube/util/network_api/server/AbstractRequestExecutor.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/server/AbstractRequestExecutor.java
rename to Core/src/main/java/fr/pandacube/util/network_api/server/AbstractRequestExecutor.java
diff --git a/src/main/java/fr/pandacube/util/network_api/server/NetworkAPIListener.java b/Core/src/main/java/fr/pandacube/util/network_api/server/NetworkAPIListener.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/server/NetworkAPIListener.java
rename to Core/src/main/java/fr/pandacube/util/network_api/server/NetworkAPIListener.java
diff --git a/src/main/java/fr/pandacube/util/network_api/server/PacketExecutor.java b/Core/src/main/java/fr/pandacube/util/network_api/server/PacketExecutor.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/server/PacketExecutor.java
rename to Core/src/main/java/fr/pandacube/util/network_api/server/PacketExecutor.java
diff --git a/src/main/java/fr/pandacube/util/network_api/server/RequestAnalyser.java b/Core/src/main/java/fr/pandacube/util/network_api/server/RequestAnalyser.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/server/RequestAnalyser.java
rename to Core/src/main/java/fr/pandacube/util/network_api/server/RequestAnalyser.java
diff --git a/src/main/java/fr/pandacube/util/network_api/server/Response.java b/Core/src/main/java/fr/pandacube/util/network_api/server/Response.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/network_api/server/Response.java
rename to Core/src/main/java/fr/pandacube/util/network_api/server/Response.java
diff --git a/src/main/java/fr/pandacube/util/orm/DBConnection.java b/Core/src/main/java/fr/pandacube/util/orm/DBConnection.java
similarity index 100%
rename from src/main/java/fr/pandacube/util/orm/DBConnection.java
rename to Core/src/main/java/fr/pandacube/util/orm/DBConnection.java
diff --git a/src/main/java/fr/pandacube/util/orm/ORM.java b/Core/src/main/java/fr/pandacube/util/orm/ORM.java
similarity index 97%
rename from src/main/java/fr/pandacube/util/orm/ORM.java
rename to Core/src/main/java/fr/pandacube/util/orm/ORM.java
index ccacd24..7121d15 100644
--- a/src/main/java/fr/pandacube/util/orm/ORM.java
+++ b/Core/src/main/java/fr/pandacube/util/orm/ORM.java
@@ -1,391 +1,391 @@
-package fr.pandacube.util.orm;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Consumer;
-
-import org.javatuples.Pair;
-
-import fr.pandacube.util.Log;
-
-/**
- * ORM = Object-Relational Mapping
- *
- * @author Marc Baloup
- *
- */
-public final class ORM {
-
- private static List>> tables = new ArrayList<>();
- private static Map>, String> tableNames = new HashMap<>();
-
- private static DBConnection connection;
-
- public static DBConnection getConnection() {
- return connection;
- }
-
- public synchronized static > void init(DBConnection conn) {
-
- connection = conn;
-
-
- }
-
- public static synchronized > void initTable(Class elemClass) throws ORMInitTableException {
- if (tables.contains(elemClass)) return;
- try {
- tables.add(elemClass);
- Log.debug("[ORM] Start Init SQL table "+elemClass.getSimpleName());
- E instance = elemClass.getConstructor().newInstance();
- String tableName = instance.tableName();
- tableNames.put(elemClass, tableName);
- if (!tableExistInDB(tableName)) createTable(instance);
- Log.debug("[ORM] End init SQL table "+elemClass.getSimpleName());
- } catch (Exception|ExceptionInInitializerError e) {
- throw new ORMInitTableException(elemClass, e);
- }
- }
-
- private static > void createTable(E elem) throws SQLException {
-
- String sql = "CREATE TABLE IF NOT EXISTS " + elem.tableName() + " (";
- List