diff --git a/pom.xml b/pom.xml
index 64e4e4a..8d09d30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,25 +69,30 @@
provided
+
+
+ jakarta.persistence
+ jakarta.persistence-api
+ 3.0.0
+ compile
+
+
org.hibernate
hibernate-core
- 6.6.1.Final
+ 6.1.0.Final
+ compile
+
+
mysql
mysql-connector-java
8.0.33
-
-
-
-
- jakarta.persistence
- jakarta.persistence-api
- 3.0.0
+ compile
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
index 3b42113..fb1917a 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
@@ -1,17 +1,25 @@
package xyz.soukup.mineconomiaCoreV2;
+import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import xyz.soukup.mineconomiaCoreV2.database.HibernateUtil;
+import xyz.soukup.mineconomiaCoreV2.database.PlayerInit;
import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand;
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+import java.util.HashMap;
import java.util.Objects;
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin;
public final class MineconomiaCoreV2 extends JavaPlugin {
+
private static MineconomiaCoreV2 instance;
+ public static HashMap PlayersData = new HashMap<>();
@Override
public void onEnable() {
@@ -20,6 +28,10 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
getLogger().info("STARTING MINECONOMIA CORE");
plugin.saveDefaultConfig();
+ PluginManager pluginManager = getServer().getPluginManager();
+ HibernateUtil.newSession();
+ //pluginManager.registerEvents(new PlayerInit(), plugin);
+
// Tractor registration
Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand());
@@ -31,7 +43,7 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
@Override
public void onDisable() {
// Plugin shutdown logic
- HibernateUtil.shutdown();
+ plugin.saveConfig();
}
public static MineconomiaCoreV2 getInstance() {
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
index 37c531c..3ea5a39 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
@@ -1,21 +1,15 @@
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;
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
index 8f507f5..e97d95d 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
@@ -1,18 +1,41 @@
package xyz.soukup.mineconomiaCoreV2.database;
+import jakarta.persistence.TypedQuery;
import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import org.hibernate.Session;
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+import java.util.List;
+
public class PlayerDataDatabase {
- public static void savePlayerDataToDatabase(PlayerData playerData){
+ public static void saveToDatabase(PlayerData playerData){
HibernateUtil.saveToDatabase(playerData);
}
- public static PlayerData getPlayerDataFromDatabase(String nickname){
- CriteriaBuilder criteriaBuilder = HibernateUtil.newSession().getCriteriaBuilder();
- return null;
+ public static PlayerData getFromDatabase(String nickname){
+
+ Session session = HibernateUtil.newSession();
+ CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
+ CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(PlayerData.class);
+ Root root = criteriaQuery.from(PlayerData.class);
+ Predicate predicate = criteriaBuilder.equal(root.get("PlayerData"), nickname);
+
+ criteriaQuery.where(predicate);
+ TypedQuery query = session.createQuery(criteriaQuery);
+ List results = query.getResultList();
+
+ session.close();
+
+ if (results.isEmpty()){
+ return null;
+ }
+
+ return results.getFirst();
}
}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
index 3232d21..9c9e35f 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
@@ -1,5 +1,29 @@
package xyz.soukup.mineconomiaCoreV2.database;
-public class PlayerInit {
- public static void onJoin(){}
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+
+import static xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2.PlayersData;
+
+public class PlayerInit implements Listener {
+
+ @EventHandler
+ public static void onJoin(PlayerJoinEvent event){
+ Player player = event.getPlayer();
+ String name = player.getDisplayName();
+
+ PlayerData playerData = PlayerDataDatabase.getFromDatabase(name);
+
+ if (playerData == null){
+ playerData = PlayerData.generateFromPlayer(player);
+
+ PlayerDataDatabase.saveToDatabase(playerData);
+ }
+
+ PlayersData.put(player, playerData);
+
+ }
}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
index 5d80eb3..3c3cfa8 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
@@ -4,6 +4,7 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
+import org.bukkit.entity.Player;
//Definování Member classy pro databázi a další manipulace
@@ -11,11 +12,11 @@ import jakarta.persistence.Id;
public class PlayerData {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String nickname;
- private String uuid;
+
private int online;
private float money;
@@ -35,14 +36,6 @@ public class PlayerData {
this.nickname = nickname;
}
- public String getUuid() {
- return uuid;
- }
-
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
-
public int getOnline() {
return online;
}
@@ -58,4 +51,14 @@ public class PlayerData {
public void setMoney(float money) {
this.money = money;
}
+
+ public static PlayerData generateFromPlayer(Player p){
+ PlayerData playerData = new PlayerData();
+
+ playerData.setMoney(0);
+ playerData.setOnline(1);
+ playerData.setNickname(p.getDisplayName());
+
+ return playerData;
+ }
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 5aa99c5..b1eef74 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,7 +1,7 @@
version: 1.0
language: "czech.yml"
database:
- host: localhost
+ host: uceni.soukup.xyz
port: 3306
user: mcore
password: mcore