diff --git a/pom.xml b/pom.xml
index 64e4e4a..c72b3e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,32 +69,21 @@
provided
-
- org.hibernate
- hibernate-core
- 6.6.1.Final
+ com.j256.ormlite
+ ormlite-core
+ 5.2
-
-
- mysql
- mysql-connector-java
- 8.0.33
+ com.j256.ormlite
+ ormlite-jdbc
+ 5.2
-
-
- jakarta.persistence
- jakarta.persistence-api
- 3.0.0
+ mysql
+ mysql-connector-java
+ 8.0.28
-
-
- 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 d295e3b..db469ac 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
@@ -3,17 +3,25 @@ package xyz.soukup.mineconomiaCoreV2;
import commands.tabCompleter;
import commands.teleportWorld;
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.DatabaseUtil;
+import xyz.soukup.mineconomiaCoreV2.events.PlayerInit;
import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand;
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+import java.sql.SQLException;
+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() {
@@ -22,6 +30,18 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
getLogger().info("STARTING MINECONOMIA CORE");
plugin.saveDefaultConfig();
+ PluginManager pluginManager = getServer().getPluginManager();
+
+
+
+ try {
+ DatabaseUtil.databaseInit();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ pluginManager.registerEvents(new PlayerInit(), plugin);
+
// Tractor registration
Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand());
@@ -36,7 +56,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/DatabaseUtil.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/DatabaseUtil.java
new file mode 100644
index 0000000..24242e7
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/DatabaseUtil.java
@@ -0,0 +1,58 @@
+package xyz.soukup.mineconomiaCoreV2.database;
+
+import com.google.protobuf.TypeRegistry;
+import com.j256.ormlite.dao.Dao;
+import com.j256.ormlite.dao.DaoManager;
+import com.j256.ormlite.jdbc.JdbcConnectionSource;
+import com.j256.ormlite.support.ConnectionSource;
+import com.j256.ormlite.table.TableUtils;
+import xyz.soukup.mineconomiaCoreV2.variables.Island;
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+import xyz.soukup.mineconomiaCoreV2.variables.Shop;
+import xyz.soukup.mineconomiaCoreV2.variables.Transaction;
+
+import java.sql.SQLException;
+
+import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config;
+import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.logger;
+
+public class DatabaseUtil {
+ public static Dao playerDataDao;
+ public static Dao islandDao;
+ public static Dao shopDao;
+ public static Dao transactionDao;
+
+ public static ConnectionSource getConnectionSource() throws SQLException {
+ 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 url = "jdbc:mysql://" + host + ":" + port + "/" + database;
+
+ return new JdbcConnectionSource(url, user, password);
+ }
+
+ public static void createTables(ConnectionSource connectionSource) throws SQLException {
+ TableUtils.createTableIfNotExists(connectionSource, PlayerData.class);
+ TableUtils.createTableIfNotExists(connectionSource, Transaction.class);
+ TableUtils.createTableIfNotExists(connectionSource, Island.class);
+ TableUtils.createTableIfNotExists(connectionSource, Shop.class);
+ }
+
+ public static void daoInit(ConnectionSource connectionSource) throws SQLException {
+ islandDao = DaoManager.createDao(connectionSource, Island.class);
+ playerDataDao = DaoManager.createDao(connectionSource, PlayerData.class);
+ shopDao = DaoManager.createDao(connectionSource, Shop.class);
+ transactionDao = DaoManager.createDao(connectionSource, Transaction.class);
+ }
+
+ public static void databaseInit() throws SQLException {
+ ConnectionSource connectionSource = getConnectionSource();
+
+ createTables(connectionSource);
+ daoInit(connectionSource);
+ }
+
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
deleted file mode 100644
index 37c531c..0000000
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
+++ /dev/null
@@ -1,113 +0,0 @@
-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());
- }
- }
-
-
-
-}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
deleted file mode 100644
index 8f507f5..0000000
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package xyz.soukup.mineconomiaCoreV2.database;
-
-import jakarta.persistence.criteria.CriteriaBuilder;
-import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
-
-
-public class PlayerDataDatabase {
-
- public static void savePlayerDataToDatabase(PlayerData playerData){
- HibernateUtil.saveToDatabase(playerData);
- }
-
- public static PlayerData getPlayerDataFromDatabase(String nickname){
- CriteriaBuilder criteriaBuilder = HibernateUtil.newSession().getCriteriaBuilder();
- return null;
- }
-
-}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
deleted file mode 100644
index 3232d21..0000000
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package xyz.soukup.mineconomiaCoreV2.database;
-
-public class PlayerInit {
- public static void onJoin(){}
-}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/events/PlayerInit.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/events/PlayerInit.java
new file mode 100644
index 0000000..40c1ba6
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/events/PlayerInit.java
@@ -0,0 +1,54 @@
+package xyz.soukup.mineconomiaCoreV2.events;
+
+import com.j256.ormlite.stmt.QueryBuilder;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
+
+import java.sql.SQLException;
+
+import static xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2.playersData;
+import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.logger;
+import static xyz.soukup.mineconomiaCoreV2.database.DatabaseUtil.playerDataDao;
+
+public class PlayerInit implements Listener {
+
+ @EventHandler
+ public static void onJoin(PlayerJoinEvent event) throws SQLException {
+
+ Player player = event.getPlayer();
+ String name = player.getDisplayName();
+ PlayerData playerData = PlayerData.generateFromPlayer(player);;
+
+ QueryBuilder queryBuilder = playerDataDao.queryBuilder();
+ queryBuilder.where().eq("nickname", name);
+
+ if (queryBuilder.countOf() > 0){
+ playerData = queryBuilder.queryForFirst();
+ }else {
+ playerDataDao.create(playerData);
+ }
+
+ playerData.setOnline(1);
+ playerDataDao.update(playerData);
+
+ playersData.put(player, playerData);
+
+
+ }
+
+ @EventHandler
+ public static void onLeave(PlayerQuitEvent event) throws SQLException {
+
+ Player player = event.getPlayer();
+ PlayerData playerData = playersData.get(player);
+
+ playerData.setOnline(0);
+ playerDataDao.update(playerData);
+
+ playersData.remove(player);
+ }
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Island.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Island.java
new file mode 100644
index 0000000..71e70f6
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Island.java
@@ -0,0 +1,29 @@
+package xyz.soukup.mineconomiaCoreV2.variables;
+
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
+@DatabaseTable(tableName = "islands")
+public class Island {
+
+ @DatabaseField(generatedId = true)
+ private int id;
+
+ @DatabaseField
+ private String server;
+
+ @DatabaseField
+ private String name;
+
+ @DatabaseField
+ private String owner;
+
+ @DatabaseField
+ private String world;
+
+ @DatabaseField(columnName = "size_x")
+ private int sizeX;
+
+ @DatabaseField(columnName = "size_y")
+ private int sizeY;
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
index 5d80eb3..b890ea3 100644
--- a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
@@ -1,24 +1,29 @@
package xyz.soukup.mineconomiaCoreV2.variables;
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
//Definování Member classy pro databázi a další manipulace
-@Entity
+@DatabaseTable(tableName = "players")
public class PlayerData {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @DatabaseField(generatedId = true)
private int id;
+ @DatabaseField(unique = true)
private String nickname;
- private String uuid;
+
+ @DatabaseField
private int online;
+
+ @DatabaseField
private float money;
+
public int getId() {
return id;
}
@@ -35,14 +40,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 +55,18 @@ public class PlayerData {
public void setMoney(float money) {
this.money = money;
}
+
+ public PlayerData(){
+
+ }
+
+ 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/java/xyz/soukup/mineconomiaCoreV2/variables/Shop.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Shop.java
new file mode 100644
index 0000000..2fe8ace
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Shop.java
@@ -0,0 +1,51 @@
+package xyz.soukup.mineconomiaCoreV2.variables;
+
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
+@DatabaseTable(tableName = "shops")
+public class Shop {
+ @DatabaseField(generatedId = true)
+ private int id;
+
+ @DatabaseField
+ private String server;
+
+ @DatabaseField
+ private String owner;
+
+ @DatabaseField(columnName = "owner_type")
+ private String ownerType;
+
+ @DatabaseField
+ private String type;
+
+ @DatabaseField
+ private float price;
+
+ @DatabaseField
+ private int stock;
+
+ @DatabaseField
+ private int x;
+
+ @DatabaseField
+ private int y;
+
+ @DatabaseField
+ private int z;
+
+ @DatabaseField
+ private int world;
+
+ @DatabaseField(columnName = "storage_x")
+ private int storageX;
+
+ @DatabaseField(columnName = "storage_y")
+ private int storageY;
+
+ @DatabaseField(columnName = "storage_z")
+ private int storageZ;
+
+
+}
diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Transaction.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Transaction.java
new file mode 100644
index 0000000..4fa4eb4
--- /dev/null
+++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/Transaction.java
@@ -0,0 +1,100 @@
+package xyz.soukup.mineconomiaCoreV2.variables;
+
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+
+import java.util.Date;
+
+@DatabaseTable(tableName = "transactions")
+public class Transaction {
+
+ @DatabaseField(generatedId = true)
+ private int id;
+
+ @DatabaseField
+ private Date date;
+
+ @DatabaseField
+ private String type;
+
+ @DatabaseField
+ private float amount;
+
+ @DatabaseField
+ private String sender;
+
+ @DatabaseField(columnName = "sender_type")
+ private String senderType;
+
+ @DatabaseField
+ private String receiver;
+
+ @DatabaseField(columnName = "receiver_type")
+ private String receiverType;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public float getAmount() {
+ return amount;
+ }
+
+ public void setAmount(float amount) {
+ this.amount = amount;
+ }
+
+ public String getSender() {
+ return sender;
+ }
+
+ public void setSender(String sender) {
+ this.sender = sender;
+ }
+
+ public String getSenderType() {
+ return senderType;
+ }
+
+ public void setSenderType(String senderType) {
+ this.senderType = senderType;
+ }
+
+ public String getReceiver() {
+ return receiver;
+ }
+
+ public void setReceiver(String receiver) {
+ this.receiver = receiver;
+ }
+
+ public String getReceiverType() {
+ return receiverType;
+ }
+
+ public void setReceiverType(String receiverType) {
+ this.receiverType = receiverType;
+ }
+
+
+}
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