Další vývoj Hibernate

napojeni-database
jakub 1 year ago
parent d7134f48bc
commit 5f28885b1a
  1. 21
      pom.xml
  2. 14
      src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
  3. 8
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
  4. 31
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
  5. 28
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
  6. 23
      src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
  7. 2
      src/main/resources/config.yml

@ -69,25 +69,30 @@
<scope>provided</scope>
</dependency>
<!-- JPA API -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
<!-- Hibernate Core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.6.1.Final</version>
<version>6.1.0.Final</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core-jakarta -->
<!-- MySQL JDBC Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- JPA API -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
<!-- Hibernate Annotations -->

@ -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<Player, PlayerData> 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() {

@ -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;

@ -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<PlayerData> criteriaQuery = criteriaBuilder.createQuery(PlayerData.class);
Root<PlayerData> root = criteriaQuery.from(PlayerData.class);
Predicate predicate = criteriaBuilder.equal(root.get("PlayerData"), nickname);
criteriaQuery.where(predicate);
TypedQuery<PlayerData> query = session.createQuery(criteriaQuery);
List<PlayerData> results = query.getResultList();
session.close();
if (results.isEmpty()){
return null;
}
return results.getFirst();
}
}

@ -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);
}
}

@ -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;
}
}

@ -1,7 +1,7 @@
version: 1.0
language: "czech.yml"
database:
host: localhost
host: uceni.soukup.xyz
port: 3306
user: mcore
password: mcore

Loading…
Cancel
Save