diff --git a/pom.xml b/pom.xml
index 9cc5baf..64e4e4a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,5 +68,33 @@
1.21.1-R0.1-SNAPSHOT
provided
+
+
+
+ org.hibernate
+ hibernate-core
+ 6.6.1.Final
+
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.33
+
+
+
+
+ jakarta.persistence
+ jakarta.persistence-api
+ 3.0.0
+
+
+
+
+ org.hibernate.common
+ hibernate-commons-annotations
+ 5.1.2.Final
+
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
index be4ffea..3b42113 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
@@ -2,17 +2,23 @@ package xyz.soukup.mineconomiaCoreV2;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
+import xyz.soukup.mineconomiaCoreV2.database.HibernateUtil;
import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand;
import java.util.Objects;
+import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin;
+
public final class MineconomiaCoreV2 extends JavaPlugin {
- MineconomiaCoreV2 plugin = getPlugin(this.getClass());
+ private static MineconomiaCoreV2 instance;
+
+
@Override
public void onEnable() {
// Plugin startup logic
+ instance = this;
getLogger().info("STARTING MINECONOMIA CORE");
- plugin.saveConfig();
+ plugin.saveDefaultConfig();
// Tractor registration
Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand());
@@ -25,6 +31,10 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
@Override
public void onDisable() {
// Plugin shutdown logic
+ HibernateUtil.shutdown();
}
+ public static MineconomiaCoreV2 getInstance() {
+ return instance;
+ }
}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/database.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/core/database.java
deleted file mode 100644
index 7e572a1..0000000
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/database.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package xyz.soukup.mineconomiaCoreV2.core;
-
-import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config;
-
-public class database {
- private void createDefaultTables(){
- String database = config.getString("");
- }
-}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java
index 989729a..3178e29 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java
@@ -1,12 +1,14 @@
package xyz.soukup.mineconomiaCoreV2.core;
+import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.plugin.java.JavaPlugin;
import xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2;
import java.util.logging.Logger;
public class sharedValues {
- public static MineconomiaCoreV2 plugin = MineconomiaCoreV2.getPlugin(MineconomiaCoreV2.class);
+ public static MineconomiaCoreV2 plugin = MineconomiaCoreV2.getInstance();
public static FileConfiguration config = plugin.getConfig();
public static Logger logger = plugin.getLogger();
}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
new file mode 100644
index 0000000..ec56c4b
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
@@ -0,0 +1,132 @@
+package xyz.soukup.mineconomiaCoreV2.database;
+
+import jakarta.persistence.Query;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import org.bukkit.scoreboard.Criteria;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.model.internal.QueryBinder;
+import org.hibernate.boot.registry.StandardServiceRegistry;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import xyz.soukup.mineconomiaCoreV2.core.sharedValues;
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
+
+import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config;
+import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.logger;
+
+public class HibernateUtil {
+ private static SessionFactory sessionFactory;
+
+ static {
+
+ try {
+
+ StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
+ .applySettings(getHibernateProperties())
+ .build();
+
+ sessionFactory = new MetadataSources(registry)
+ .addAnnotatedClass(PlayerData.class)
+ .buildMetadata()
+ .buildSessionFactory();
+
+ } catch (Exception e) {
+
+ sharedValues.logger.warning(e.toString());
+
+ if (sessionFactory != null) {
+ sessionFactory.close();
+ }
+
+ }
+ }
+
+
+ private static Properties getHibernateProperties() {
+
+ String host = config.getString("database.host");
+ String port = config.getString("database.port");
+ String user = config.getString("database.user");
+ String password = config.getString("database.password");
+ String database = config.getString("database.database");
+
+ String jdbcString = "jdbc:mysql://" + host + ":" + port + "/" + database;
+
+ Properties properties = new Properties();
+ properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
+ properties.put("hibernate.connection.driver_class", "com.mysql.cj.jdbc.Driver");
+ properties.put("hibernate.connection.url", jdbcString);
+ properties.put("hibernate.connection.username", user);
+ properties.put("hibernate.connection.password", password);
+ properties.put("hibernate.hbm2ddl.auto", "update");
+ properties.put("hibernate.show_sql", "true");
+ return properties;
+ }
+
+
+ public static SessionFactory getSessionFactory() {
+ return sessionFactory;
+ }
+
+ public static Session newSession(){
+ return getSessionFactory().openSession();
+ }
+
+ public static void shutdown() {
+ if (sessionFactory != null) {
+ sessionFactory.close();
+ }
+ }
+
+
+ public static void saveToDatabase(Object object){
+
+ Session session = HibernateUtil.newSession();
+ Transaction transaction = null;
+
+ try {
+
+ transaction = session.beginTransaction();
+ session.persist(object);
+ transaction.commit();
+ session.close();
+
+ }catch (Exception e){
+
+ if (transaction != null) {
+ transaction.rollback(); // Rollback if something goes wrong
+ }
+
+ logger.warning(e.toString());
+ }
+ }
+
+ /* NEFUNKČNÍ NECHAT ZATÍM
+ public static List executeQuery(Query query){
+ Session session = HibernateUtil.newSession();
+ Transaction transaction = null;
+ try {
+
+ transaction = session.beginTransaction();
+ List list = query.getResultList();
+ session.close();
+ return list;
+
+ }catch (Exception e){
+
+ if (transaction != null) {
+ transaction.rollback(); // Rollback if something goes wrong
+ }
+
+ logger.warning(e.toString());
+ }
+ return null;
+ }*/
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
new file mode 100644
index 0000000..9ab500b
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
@@ -0,0 +1,16 @@
+package xyz.soukup.mineconomiaCoreV2.database;
+
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+
+
+public class PlayerDataDatabase {
+
+ public static void savePlayerDataToDatabase(PlayerData playerData){
+ HibernateUtil.saveToDatabase(playerData);
+ }
+
+ public static PlayerData getPlayerDataFromDatabase(String nickname){
+
+ }
+
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
new file mode 100644
index 0000000..3232d21
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
@@ -0,0 +1,5 @@
+package xyz.soukup.mineconomiaCoreV2.database;
+
+public class PlayerInit {
+ public static void onJoin(){}
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
new file mode 100644
index 0000000..5d80eb3
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
@@ -0,0 +1,61 @@
+package xyz.soukup.mineconomiaCoreV2.variables;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+
+//Definování Member classy pro databázi a další manipulace
+
+@Entity
+public class PlayerData {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ private String nickname;
+ private String uuid;
+ private int online;
+ private float money;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public int getOnline() {
+ return online;
+ }
+
+ public void setOnline(int online) {
+ this.online = online;
+ }
+
+ public float getMoney() {
+ return money;
+ }
+
+ public void setMoney(float money) {
+ this.money = money;
+ }
+}