tpwCommand #12

Merged
jakub merged 7 commits from tpwCommand into master 1 year ago
  1. 28
      pom.xml
  2. 33
      src/main/java/commands/tabCompleter.java
  3. 62
      src/main/java/commands/teleportWorld.java
  4. 19
      src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
  5. 4
      src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java
  6. 113
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
  7. 18
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
  8. 5
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
  9. 5
      src/main/java/xyz/soukup/mineconomiaCoreV2/tools/LangManager.java
  10. 3
      src/main/java/xyz/soukup/mineconomiaCoreV2/tools/PDC.java
  11. 2
      src/main/java/xyz/soukup/mineconomiaCoreV2/tools/inventoryTools.java
  12. 61
      src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
  13. 8
      src/main/resources/config.yml
  14. 3
      src/main/resources/plugin.yml

@ -68,5 +68,33 @@
<version>1.21.1-R0.1-SNAPSHOT</version> <version>1.21.1-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Hibernate Core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.6.1.Final</version>
</dependency>
<!-- 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>
</dependency>
<!-- Hibernate Annotations -->
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>5.1.2.Final</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -0,0 +1,33 @@
package commands;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class tabCompleter implements TabCompleter {
@Override
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) {
List<String> completions = new ArrayList<>();
if (command.getName().equalsIgnoreCase("tpw") && commandSender.isOp()) {
if (strings.length == 1) {
for (World world : Bukkit.getWorlds()) {
completions.add(world.getName());
}
} else if (strings.length == 2) {
for (Player player : Bukkit.getOnlinePlayers()) {
completions.add(player.getName());
}
}
}
return completions;
}
}

@ -0,0 +1,62 @@
package commands;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class teleportWorld implements CommandExecutor {
// Teleports player with OP to another world.
@Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
if (commandSender instanceof Player) {
Player player = (Player) commandSender;
if (!player.isOp() || strings.length == 0) {
return false;
}
World world = Bukkit.getWorld(strings[0]);
if (world == null) {
player.sendMessage("This is not a valid world!");
return true;
}
if (strings.length > 1) {
try {
Player targetPlayer = Bukkit.getPlayer(strings[1]);
World targetPlayerWorld = targetPlayer.getWorld();
if (targetPlayerWorld.equals(world)) {
player.sendMessage(String.format("Player %s is already in this world!", strings[1]));
return true;
}
targetPlayer.teleport(world.getSpawnLocation());
targetPlayer.sendMessage(String.format("Successfully teleported %s from %s to %s.", strings[1], targetPlayerWorld.getName(), world.getName()));
return true;
} catch (Exception e) {
player.sendMessage("This is not a valid player!");
return true;
}
}
World playerWorld = player.getWorld();
if (playerWorld.equals(world)) {
player.sendMessage("You are already in this world!");
return true;
}
player.teleport(world.getSpawnLocation());
player.sendMessage(String.format("Successfully teleported from %s to %s.", playerWorld.getName(), world.getName()));
return true;
}
return false;
}
}

@ -1,22 +1,33 @@
package xyz.soukup.mineconomiaCoreV2; package xyz.soukup.mineconomiaCoreV2;
import commands.tabCompleter;
import commands.teleportWorld;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import xyz.soukup.mineconomiaCoreV2.database.HibernateUtil;
import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand; import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand;
import java.util.Objects; import java.util.Objects;
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin;
public final class MineconomiaCoreV2 extends JavaPlugin { public final class MineconomiaCoreV2 extends JavaPlugin {
MineconomiaCoreV2 plugin = getPlugin(this.getClass()); private static MineconomiaCoreV2 instance;
@Override @Override
public void onEnable() { public void onEnable() {
// Plugin startup logic // Plugin startup logic
instance = this;
getLogger().info("STARTING MINECONOMIA CORE"); getLogger().info("STARTING MINECONOMIA CORE");
plugin.saveConfig(); plugin.saveDefaultConfig();
// Tractor registration // Tractor registration
Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand()); Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand());
// TPW registration
this.getCommand("tpw").setExecutor(new teleportWorld());
this.getCommand("tpw").setTabCompleter(new tabCompleter());
@ -25,6 +36,10 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
// Plugin shutdown logic // Plugin shutdown logic
HibernateUtil.shutdown();
} }
public static MineconomiaCoreV2 getInstance() {
return instance;
}
} }

@ -1,12 +1,14 @@
package xyz.soukup.mineconomiaCoreV2.core; package xyz.soukup.mineconomiaCoreV2.core;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2; import xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2;
import java.util.logging.Logger; import java.util.logging.Logger;
public class sharedValues { 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 FileConfiguration config = plugin.getConfig();
public static Logger logger = plugin.getLogger(); public static Logger logger = plugin.getLogger();
} }

@ -0,0 +1,113 @@
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());
}
}
}

@ -0,0 +1,18 @@
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;
}
}

@ -0,0 +1,5 @@
package xyz.soukup.mineconomiaCoreV2.database;
public class PlayerInit {
public static void onJoin(){}
}

@ -1,12 +1,11 @@
package xyz.soukup.mineconomiaCoreV2.core; package xyz.soukup.mineconomiaCoreV2.tools;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.Inventory;
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config; import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config;
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin; import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin;
public class MsgRetriever { public class LangManager {
public static YamlConfiguration lang = null; public static YamlConfiguration lang = null;
public static void loadLang(){ public static void loadLang(){

@ -1,4 +1,4 @@
package xyz.soukup.mineconomiaCoreV2.core; package xyz.soukup.mineconomiaCoreV2.tools;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.block.TileState; import org.bukkit.block.TileState;
@ -6,6 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import xyz.soukup.mineconomiaCoreV2.core.sharedValues;
//funkce pro lehčí manipulaci s minecraft PDC (trvalé uchovávání dat v entitách, itemech a blocích) //funkce pro lehčí manipulaci s minecraft PDC (trvalé uchovávání dat v entitách, itemech a blocích)
public class PDC { public class PDC {

@ -1,4 +1,4 @@
package tools; package xyz.soukup.mineconomiaCoreV2.tools;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;

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

@ -1,2 +1,8 @@
version: 1.0 version: 1.0
language: "czech.yml" language: "czech.yml"
database:
host: localhost
port: 3306
user: mcore
password: mcore
database: mcore

@ -3,5 +3,8 @@ version: '1.0-SNAPSHOT'
main: xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2 main: xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2
api-version: '1.21' api-version: '1.21'
commands: commands:
tpw:
description: "Teleportuje tě do jiného světa"
usage: /<command> [arguments]
tractor: tractor:
description: "blieat" description: "blieat"

Loading…
Cancel
Save