diff --git a/pom.xml b/pom.xml index 528a30a..c800d05 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ ovh.mxg CubeTP - 1.4.0 + 1.5.0 jar CubeTP diff --git a/src/main/java/ovh/mxg/cubetp/Command.java b/src/main/java/ovh/mxg/cubetp/Command.java new file mode 100644 index 0000000..56ae5ed --- /dev/null +++ b/src/main/java/ovh/mxg/cubetp/Command.java @@ -0,0 +1,44 @@ +package ovh.mxg.cubetp; + +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.sql.SQLException; + +public class Command implements CommandExecutor { + @Override + public boolean onCommand(CommandSender sender, org.bukkit.command.Command command, String s, String[] strings) { + if(sender instanceof Player){ + Player player = (Player) sender; + if(strings.length == 0){ + try { + player.sendMessage(Localization.GetLocal(player, 12)); + player.sendMessage(Localization.GetLocal(player, 13)); + player.sendMessage(Localization.GetLocal(player, 14)); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } else { + switch(strings[0]){ + case "local": + if(strings[1].isEmpty()){ + try { + String lang = Localization.GetPlayerLang(player); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } else { + try { + Localization.UpdatePlayer(player, strings[1]); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + break; + } + } + } + return false; + } +} diff --git a/src/main/java/ovh/mxg/cubetp/CubeTP.java b/src/main/java/ovh/mxg/cubetp/CubeTP.java index b4942d5..6a2a141 100644 --- a/src/main/java/ovh/mxg/cubetp/CubeTP.java +++ b/src/main/java/ovh/mxg/cubetp/CubeTP.java @@ -16,6 +16,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; @@ -44,7 +45,6 @@ public final class CubeTP extends JavaPlugin implements Listener { public static Block clickedBlock; public static String curCubeName = ""; boolean curCubePrivate = false; - boolean inCubeTPInventory = false; double curCubeX = 0; double curCubeY = 0; double curCubeZ = 0; @@ -61,6 +61,9 @@ public final class CubeTP extends JavaPlugin implements Listener { reloadConfig(); } + //Commands + getCommand("cubetp").setExecutor(new Command()); + getLogger().info("Loading config..."); host = getConfig().getString("CubeTP.sqlHost"); port = getConfig().getString("CubeTP.sqlPort"); @@ -73,6 +76,13 @@ public final class CubeTP extends JavaPlugin implements Listener { getLogger().info("Enabled!"); } + @EventHandler + public void PlayerJoinEvent(PlayerJoinEvent event) throws SQLException { + Player player = event.getPlayer(); + if(!Localization.CheckPlayerLocalExists(player)){ + Localization.AddPlayer(player); + } + } @EventHandler public void PlayerQuitEvent(PlayerQuitEvent event) throws SQLException { Player player = event.getPlayer(); @@ -122,7 +132,7 @@ public final class CubeTP extends JavaPlugin implements Listener { ItemStack mhi = player.getInventory().getItemInMainHand(); if(mhi.getItemMeta() != null){ String mainhand = mhi.getItemMeta().getDisplayName(); - if(mainhand.equals("Tome de portail")){ + if(mainhand.equals(Localization.GetLocal(player, 3))){ ShowUIPortal(player); mhi.setAmount(0); } @@ -147,14 +157,14 @@ public final class CubeTP extends JavaPlugin implements Listener { // register the cube if (e.getRawSlot() == 3){ if(SQL.CheckCubeNameExists(curCubeName)){ - p.sendMessage(MessageFormat.format("§bLe cube {0} existe déjà. Changez le nom.", curCubeName)); + p.sendMessage(MessageFormat.format(Localization.GetLocal(p, 11), curCubeName)); } else { if(curCubePrivate){ SQL.AddCube(curCubeName, curCubeX, curCubeY, curCubeZ, p.getUniqueId().toString()); } else { SQL.AddCube(curCubeName, curCubeX, curCubeY, curCubeZ, null); } - p.sendMessage(MessageFormat.format("§bLe cube {0} a été ajouté.", curCubeName)); + p.sendMessage(MessageFormat.format(Localization.GetLocal(p, 10), curCubeName)); ShowUI(p); } } @@ -164,9 +174,9 @@ public final class CubeTP extends JavaPlugin implements Listener { Inventory pinv = p.getInventory(); if(HaveBook(p)){ TakeBook(p); - pinv.addItem(createGuiItem(Material.ENCHANTED_BOOK, "Tome de portail", "Permets d'aller vers un cube, pas de revenir.")); + pinv.addItem(createGuiItem(Material.ENCHANTED_BOOK, Localization.GetLocal(p, 3), Localization.GetLocal(p, 4))); } else { - p.sendMessage("§bVous devez posséder un livre pour créer cet objet."); + p.sendMessage(Localization.GetLocal(p, 9)); } } @@ -174,10 +184,10 @@ public final class CubeTP extends JavaPlugin implements Listener { if (e.getRawSlot() == 5){ if(SQL.CheckCubeNameExists(curCubeName)){ SQL.DeleteCubeByName(curCubeName); - p.sendMessage(MessageFormat.format("§bLe cube {0} a été supprimé.", curCubeName)); + p.sendMessage(MessageFormat.format(Localization.GetLocal(p, 7), curCubeName)); ShowUI(p); } else { - p.sendMessage(MessageFormat.format("§bLe cube {0} n'existe pas.", curCubeName)); + p.sendMessage(MessageFormat.format(Localization.GetLocal(p, 6), curCubeName)); } } @@ -272,12 +282,12 @@ public final class CubeTP extends JavaPlugin implements Listener { if(player.getBedSpawnLocation() != null){ Location spawnLoc = player.getBedSpawnLocation(); String loreSp = MessageFormat.format("x{0} y{1} z{2}", spawnLoc.getBlockX(), spawnLoc.getBlockY(), spawnLoc.getBlockZ()); - inv.setItem(slot,createGuiItem(Material.WHITE_WOOL, "Spawn", loreSp)); + inv.setItem(slot,createGuiItem(Material.WHITE_WOOL, Localization.GetLocal(player, 5), loreSp)); slot++; } if(SQL.CheckDeathExists(player)){ String loreDe = SQL.GenDeathLore(player); - inv.setItem(slot,createGuiItem(Material.GRAY_WOOL, "Death", loreDe)); + inv.setItem(slot,createGuiItem(Material.GRAY_WOOL, Localization.GetLocal(player, 5), loreDe)); slot++; } SQL.connect(); @@ -333,9 +343,9 @@ public final class CubeTP extends JavaPlugin implements Listener { inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " ")); - inv.setItem(3,createGuiItem(Material.CYAN_WOOL, "§bEnregistrer", lore01, lore02)); - inv.setItem(4,createGuiItem(Material.CYAN_WOOL, "§bTome de portail")); - inv.setItem(5,createGuiItem(Material.CYAN_WOOL, "§bRetirer")); + inv.setItem(3,createGuiItem(Material.CYAN_WOOL, Localization.GetLocal(player, 1), lore01, lore02)); + inv.setItem(4,createGuiItem(Material.CYAN_WOOL, Localization.GetLocal(player, 3))); + inv.setItem(5,createGuiItem(Material.CYAN_WOOL, Localization.GetLocal(player, 2))); inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " ")); diff --git a/src/main/java/ovh/mxg/cubetp/Localization.java b/src/main/java/ovh/mxg/cubetp/Localization.java new file mode 100644 index 0000000..7454d21 --- /dev/null +++ b/src/main/java/ovh/mxg/cubetp/Localization.java @@ -0,0 +1,74 @@ +package ovh.mxg.cubetp; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; + +public class Localization { + public static String GetLocal(Player player, int lid) throws SQLException { + String lang = GetPlayerLang(player); + String local = ""; + SQL.connect(); + PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubelocal WHERE lid = ? AND lang = ?"); + ps.setInt(1, lid); + ps.setString(2, lang); + ResultSet rs = ps.executeQuery(); + if(rs.next()){ + local = rs.getString("string"); + return local; + } + return local; + } + + public static String GetPlayerLang(Player player) throws SQLException { + String uuid = player.getUniqueId().toString(); + String lang = ""; + Location dLoc = null; + SQL.connect(); + PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubeplayer WHERE uuid = ?"); + ps.setString(1, uuid); + ResultSet rs = ps.executeQuery(); + if(rs.next()){ + lang = rs.getString("lang"); + return lang; + } + return lang; + } + + public static boolean CheckPlayerLocalExists(Player player) throws SQLException { + String uuid = player.getUniqueId().toString(); + SQL.connect(); + PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubeplayer WHERE uuid = ?"); + ps.setString(1, uuid); + ResultSet rs = ps.executeQuery(); + return rs.next(); + } + + public static void AddPlayer(Player player) throws SQLException { + String uuid = player.getUniqueId().toString(); + SQL.connect(); + PreparedStatement ps = SQL.getConnection().prepareStatement("INSERT IGNORE INTO cubeplayer (uuid,lang) VALUES (?,?)"); + ps.setString(1, uuid); + ps.setString(2, "en"); + ps.executeUpdate(); + } + + public static void UpdatePlayer(Player player, String lang) throws SQLException { + String uuid = player.getUniqueId().toString(); + String[] la = {"en", "fr"}; + if(Arrays.stream(la).noneMatch(lang::equals)){ + player.sendMessage(Localization.GetLocal(player, 15)); + } else { + SQL.connect(); + PreparedStatement ps = SQL.getConnection().prepareStatement("UPDATE cubeplayer SET lang = ? WHERE uuid = ?"); + ps.setString(2, uuid); + ps.setString(1, lang); + ps.executeUpdate(); + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 722a0fb..c9cadf0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,6 @@ name: CubeTP -version: '1.4.0' +version: '1.5.0' main: ovh.mxg.cubetp.CubeTP api-version: '1.20' +commands: + cubetp: diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml index 722a0fb..c9cadf0 100644 --- a/target/classes/plugin.yml +++ b/target/classes/plugin.yml @@ -1,4 +1,6 @@ name: CubeTP -version: '1.4.0' +version: '1.5.0' main: ovh.mxg.cubetp.CubeTP api-version: '1.20' +commands: + cubetp: