localization system + command handler

This commit is contained in:
mikx 2023-11-29 02:29:06 -05:00
parent 8e4bf3dce6
commit e2c0af909b
6 changed files with 148 additions and 16 deletions

View File

@ -6,7 +6,7 @@
<groupId>ovh.mxg</groupId> <groupId>ovh.mxg</groupId>
<artifactId>CubeTP</artifactId> <artifactId>CubeTP</artifactId>
<version>1.4.0</version> <version>1.5.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>CubeTP</name> <name>CubeTP</name>

View File

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

View File

@ -16,6 +16,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -44,7 +45,6 @@ public final class CubeTP extends JavaPlugin implements Listener {
public static Block clickedBlock; public static Block clickedBlock;
public static String curCubeName = ""; public static String curCubeName = "";
boolean curCubePrivate = false; boolean curCubePrivate = false;
boolean inCubeTPInventory = false;
double curCubeX = 0; double curCubeX = 0;
double curCubeY = 0; double curCubeY = 0;
double curCubeZ = 0; double curCubeZ = 0;
@ -61,6 +61,9 @@ public final class CubeTP extends JavaPlugin implements Listener {
reloadConfig(); reloadConfig();
} }
//Commands
getCommand("cubetp").setExecutor(new Command());
getLogger().info("Loading config..."); getLogger().info("Loading config...");
host = getConfig().getString("CubeTP.sqlHost"); host = getConfig().getString("CubeTP.sqlHost");
port = getConfig().getString("CubeTP.sqlPort"); port = getConfig().getString("CubeTP.sqlPort");
@ -73,6 +76,13 @@ public final class CubeTP extends JavaPlugin implements Listener {
getLogger().info("Enabled!"); getLogger().info("Enabled!");
} }
@EventHandler
public void PlayerJoinEvent(PlayerJoinEvent event) throws SQLException {
Player player = event.getPlayer();
if(!Localization.CheckPlayerLocalExists(player)){
Localization.AddPlayer(player);
}
}
@EventHandler @EventHandler
public void PlayerQuitEvent(PlayerQuitEvent event) throws SQLException { public void PlayerQuitEvent(PlayerQuitEvent event) throws SQLException {
Player player = event.getPlayer(); Player player = event.getPlayer();
@ -122,7 +132,7 @@ public final class CubeTP extends JavaPlugin implements Listener {
ItemStack mhi = player.getInventory().getItemInMainHand(); ItemStack mhi = player.getInventory().getItemInMainHand();
if(mhi.getItemMeta() != null){ if(mhi.getItemMeta() != null){
String mainhand = mhi.getItemMeta().getDisplayName(); String mainhand = mhi.getItemMeta().getDisplayName();
if(mainhand.equals("Tome de portail")){ if(mainhand.equals(Localization.GetLocal(player, 3))){
ShowUIPortal(player); ShowUIPortal(player);
mhi.setAmount(0); mhi.setAmount(0);
} }
@ -147,14 +157,14 @@ public final class CubeTP extends JavaPlugin implements Listener {
// register the cube // register the cube
if (e.getRawSlot() == 3){ if (e.getRawSlot() == 3){
if(SQL.CheckCubeNameExists(curCubeName)){ 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 { } else {
if(curCubePrivate){ if(curCubePrivate){
SQL.AddCube(curCubeName, curCubeX, curCubeY, curCubeZ, p.getUniqueId().toString()); SQL.AddCube(curCubeName, curCubeX, curCubeY, curCubeZ, p.getUniqueId().toString());
} else { } else {
SQL.AddCube(curCubeName, curCubeX, curCubeY, curCubeZ, null); 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); ShowUI(p);
} }
} }
@ -164,9 +174,9 @@ public final class CubeTP extends JavaPlugin implements Listener {
Inventory pinv = p.getInventory(); Inventory pinv = p.getInventory();
if(HaveBook(p)){ if(HaveBook(p)){
TakeBook(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 { } 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 (e.getRawSlot() == 5){
if(SQL.CheckCubeNameExists(curCubeName)){ if(SQL.CheckCubeNameExists(curCubeName)){
SQL.DeleteCubeByName(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); ShowUI(p);
} else { } 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){ if(player.getBedSpawnLocation() != null){
Location spawnLoc = player.getBedSpawnLocation(); Location spawnLoc = player.getBedSpawnLocation();
String loreSp = MessageFormat.format("x{0} y{1} z{2}", spawnLoc.getBlockX(), spawnLoc.getBlockY(), spawnLoc.getBlockZ()); 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++; slot++;
} }
if(SQL.CheckDeathExists(player)){ if(SQL.CheckDeathExists(player)){
String loreDe = SQL.GenDeathLore(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++; slot++;
} }
SQL.connect(); SQL.connect();
@ -333,9 +343,9 @@ public final class CubeTP extends JavaPlugin implements Listener {
inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(3,createGuiItem(Material.CYAN_WOOL, "§bEnregistrer", lore01, lore02)); inv.setItem(3,createGuiItem(Material.CYAN_WOOL, Localization.GetLocal(player, 1), lore01, lore02));
inv.setItem(4,createGuiItem(Material.CYAN_WOOL, "§bTome de portail")); inv.setItem(4,createGuiItem(Material.CYAN_WOOL, Localization.GetLocal(player, 3)));
inv.setItem(5,createGuiItem(Material.CYAN_WOOL, "§bRetirer")); inv.setItem(5,createGuiItem(Material.CYAN_WOOL, Localization.GetLocal(player, 2)));
inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " ")); inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " "));

View File

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

View File

@ -1,4 +1,6 @@
name: CubeTP name: CubeTP
version: '1.4.0' version: '1.5.0'
main: ovh.mxg.cubetp.CubeTP main: ovh.mxg.cubetp.CubeTP
api-version: '1.20' api-version: '1.20'
commands:
cubetp:

View File

@ -1,4 +1,6 @@
name: CubeTP name: CubeTP
version: '1.4.0' version: '1.5.0'
main: ovh.mxg.cubetp.CubeTP main: ovh.mxg.cubetp.CubeTP
api-version: '1.20' api-version: '1.20'
commands:
cubetp: