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: