From bc2e8813e17a8a648faa9719c99ab44aa5cea75e Mon Sep 17 00:00:00 2001 From: Tsaitou <99069553+Tsaitou7361@users.noreply.github.com> Date: Thu, 15 Feb 2024 12:27:18 +0800 Subject: [PATCH 1/6] Let me use the correct word in Traditional Chinese! --- src/resources/lang/zh_tw.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/resources/lang/zh_tw.yml b/src/resources/lang/zh_tw.yml index 80622b74..94151c5d 100644 --- a/src/resources/lang/zh_tw.yml +++ b/src/resources/lang/zh_tw.yml @@ -1,5 +1,5 @@ # -# Language-File created by: flandretw and notlin4 +# Language-File created by: flandretw and notlin4 and Tsaitou7361 # @@ -37,9 +37,9 @@ Messages: action-sit-region-error: "[P]&c 你不能在這個區域坐下!" action-sit-kick-error: "[P]&c 已經有人在這裡坐下了!" action-sit-error: "[P]&c 由於錯誤,你無法在這裡坐下!" - action-sit-info: "&a使用&6 &a 鍵起来" + action-sit-info: "&a使用&6 &a 鍵起來" - action-playersit-info: "&a使用&6 &a 鍵起来" + action-playersit-info: "&a使用&6 &a 鍵起來" action-pose-now-error: "[P]&c 你現在不能躺下!" action-pose-world-error: "[P]&c 你不能在這個世界躺下!" @@ -48,11 +48,11 @@ Messages: action-pose-region-error: "[P]&c 你不能在這個區域躺下!" action-pose-kick-error: "[P]&c 已經有人在這裡躺下了!" action-pose-error: "[P]&c 由於錯誤,你無法在這裡躺下!" - action-pose-info: "&a使用&6 &a 鍵起来" + action-pose-info: "&a使用&6 &a 鍵起來" action-crawl-now-error: "[P]&c 你現在不能爬行!" action-crawl-world-error: "[P]&c 你不能在這個世界爬行!" action-crawl-region-error: "[P]&c 你不能在這個區域爬行!" - action-crawl-info: "&a使用&6 &a 鍵起来" + action-crawl-info: "&a使用&6 &a 鍵起來" - action-blocked-error: "[P]&c 你現在不能使用此指令!" \ No newline at end of file + action-blocked-error: "[P]&c 你現在不能使用此指令!" From 690f72983049e94e9e4c2f6181e9947c56880f78 Mon Sep 17 00:00:00 2001 From: Gecolay Date: Mon, 19 Feb 2024 18:13:11 +0100 Subject: [PATCH 2/6] Improve DManager --- .../java/dev/geco/gsit/manager/DManager.java | 86 +++++++++---------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/core/src/main/java/dev/geco/gsit/manager/DManager.java b/core/src/main/java/dev/geco/gsit/manager/DManager.java index 6ce12ffe..38c7853e 100644 --- a/core/src/main/java/dev/geco/gsit/manager/DManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/DManager.java @@ -11,7 +11,16 @@ public class DManager { private final GSitMain GPM; + private final int MAX_RETRIES = 3; + private Connection connection; + private String type = null; + private String host = null; + private String port = null; + private String database = null; + private String user = null; + private String password = null; + private int retries = 0; public DManager(GSitMain GPluginMain) { GPM = GPluginMain; } @@ -19,65 +28,54 @@ public boolean connect() { File dataFile = new File(GPM.getDataFolder(), "data/data.yml"); if(!dataFile.exists()) GPM.saveResource("data/data.yml", false); FileConfiguration dataConfig = YamlConfiguration.loadConfiguration(dataFile); - String type = dataConfig.getString("Database.type", "sqlite"); - String host = dataConfig.getString("Database.host", ""); - String port = dataConfig.getString("Database.port", ""); - String database = dataConfig.getString("Database.database", ""); - String user = dataConfig.getString("Database.user", ""); - String password = dataConfig.getString("Database.password", ""); - if(type.equals("sqlite")) return setupSQLiteConnection(); - else return setupConnection(type, host, port, database, user, password); + type = dataConfig.getString("Database.type", "sqlite").toLowerCase(); + host = dataConfig.getString("Database.host", ""); + port = dataConfig.getString("Database.port", ""); + database = dataConfig.getString("Database.database", ""); + user = dataConfig.getString("Database.user", ""); + password = dataConfig.getString("Database.password", ""); + return reconnect(); } - private boolean setupSQLiteConnection() { + private boolean reconnect() { try { - Class.forName("org.sqlite.JDBC"); - connection = getConnection("sqlite", "", "", "", "", ""); - return connection != null; + if(type.equals("sqlite")) Class.forName("org.sqlite.JDBC"); + connection = getConnection(); + if(connection != null) { + if(!type.equals("sqlite")) execute("CREATE DATABASE IF NOT EXISTS " + database); + retries = 0; + return true; + } } catch (Exception e) { e.printStackTrace(); } - connection = null; - return false; - } - - private boolean setupConnection(String Type, String Host, String Port, String Database, String User, String Password) { - try { - connection = getConnection(Type, Host, Port, Database, User, Password); - if(connection == null) return false; - execute("CREATE DATABASE IF NOT EXISTS " + Database); - return true; - } catch (SQLException e) { e.printStackTrace(); } - connection = null; - return false; + if(retries == MAX_RETRIES) return false; + retries++; + return reconnect(); } - private Connection getConnection(String Type, String Host, String Port, String Database, String User, String Password) throws SQLException { - switch(Type.toLowerCase()) { + private Connection getConnection() throws SQLException { + switch(type) { case "mysql": - return DriverManager.getConnection("jdbc:mysql://" + Host + ":" + Port + "/" + Database, User, Password); + return DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, user, password); case "sqlite": return DriverManager.getConnection("jdbc:sqlite:" + new File(GPM.getDataFolder(), "data/data.db").getPath()); } return null; } - public boolean execute(String Query, Object... Data) { - if(connection == null) return false; - try { - PreparedStatement preparedStatement = connection.prepareStatement(Query); - for(int i = 1; i <= Data.length; i++) preparedStatement.setObject(i, Data[i - 1]); - return preparedStatement.execute(); - } catch (SQLException e) { e.printStackTrace(); } - return false; + public boolean execute(String Query, Object... Data) throws SQLException { + if(connection == null) throw new SQLException("missing database connection"); + if(connection.isClosed() && !reconnect()) return false; + PreparedStatement preparedStatement = connection.prepareStatement(Query); + for(int i = 1; i <= Data.length; i++) preparedStatement.setObject(i, Data[i - 1]); + return preparedStatement.execute(); } - public ResultSet executeAndGet(String Query, Object... Data) { - if(connection == null) return null; - try { - PreparedStatement preparedStatement = connection.prepareStatement(Query); - for(int i = 1; i <= Data.length; i++) preparedStatement.setObject(i, Data[i - 1]); - return preparedStatement.executeQuery(); - } catch (SQLException e) { e.printStackTrace(); } - return null; + public ResultSet executeAndGet(String Query, Object... Data) throws SQLException { + if(connection == null) throw new SQLException("missing database connection"); + if(connection.isClosed() && !reconnect()) return null; + PreparedStatement preparedStatement = connection.prepareStatement(Query); + for(int i = 1; i <= Data.length; i++) preparedStatement.setObject(i, Data[i - 1]); + return preparedStatement.executeQuery(); } public void close() { try { if(connection != null) connection.close(); } catch (SQLException ignored) { } } From 6126c86153b6ca5b2220e37cd9eefcf4b3ad0d1e Mon Sep 17 00:00:00 2001 From: Gecolay Date: Mon, 19 Feb 2024 21:25:20 +0100 Subject: [PATCH 3/6] Remove "sit-message" & Add "default-crawl-mode" config option --- .../java/dev/geco/gsit/manager/CManager.java | 9 ++-- .../java/dev/geco/gsit/manager/MManager.java | 2 +- .../geco/gsit/manager/PlayerSitManager.java | 2 +- .../dev/geco/gsit/manager/SitManager.java | 2 +- .../dev/geco/gsit/manager/ToggleManager.java | 41 +++++++++++-------- .../geco/gsit/manager/mm/MSpigotManager.java | 7 +++- src/resources/config.yml | 9 ++-- 7 files changed, 40 insertions(+), 32 deletions(-) diff --git a/core/src/main/java/dev/geco/gsit/manager/CManager.java b/core/src/main/java/dev/geco/gsit/manager/CManager.java index 07ec3036..7d98f0a7 100644 --- a/core/src/main/java/dev/geco/gsit/manager/CManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/CManager.java @@ -43,8 +43,6 @@ public class CManager { public double S_MAX_DISTANCE; - public boolean S_SIT_MESSAGE; - public boolean S_DEFAULT_SIT_MODE; @@ -62,8 +60,6 @@ public class CManager { public double PS_MAX_DISTANCE; - public boolean PS_SIT_MESSAGE; - public boolean PS_DEFAULT_SIT_MODE; @@ -84,6 +80,8 @@ public class CManager { public boolean C_DOUBLE_SNEAK; + public boolean C_DEFAULT_CRAWL_MODE; + public boolean TRUSTED_REGION_ONLY; @@ -170,7 +168,6 @@ public void reload() { S_BOTTOM_PART_ONLY = GPM.getConfig().getBoolean("Options.Sit.bottom-part-only", true); S_EMPTY_HAND_ONLY = GPM.getConfig().getBoolean("Options.Sit.empty-hand-only", true); S_MAX_DISTANCE = GPM.getConfig().getDouble("Options.Sit.max-distance", 0d); - S_SIT_MESSAGE = GPM.getConfig().getBoolean("Options.Sit.sit-message", true); S_DEFAULT_SIT_MODE = GPM.getConfig().getBoolean("Options.Sit.default-sit-mode", true); PS_ALLOW_SIT = GPM.getConfig().getBoolean("Options.PlayerSit.allow-sit", true); @@ -180,7 +177,6 @@ public void reload() { PS_BOTTOM_RETURN = GPM.getConfig().getBoolean("Options.PlayerSit.bottom-return", false); PS_EMPTY_HAND_ONLY = GPM.getConfig().getBoolean("Options.PlayerSit.empty-hand-only", true); PS_MAX_DISTANCE = GPM.getConfig().getDouble("Options.PlayerSit.max-distance", 0d); - PS_SIT_MESSAGE = GPM.getConfig().getBoolean("Options.PlayerSit.sit-message", true); PS_DEFAULT_SIT_MODE = GPM.getConfig().getBoolean("Options.PlayerSit.default-sit-mode", true); P_POSE_MESSAGE = GPM.getConfig().getBoolean("Options.Pose.pose-message", true); @@ -192,6 +188,7 @@ public void reload() { C_GET_UP_SNEAK = GPM.getConfig().getBoolean("Options.Crawl.get-up-sneak", true); C_DOUBLE_SNEAK = GPM.getConfig().getBoolean("Options.Crawl.double-sneak", false); + C_DEFAULT_CRAWL_MODE = GPM.getConfig().getBoolean("Options.Crawl.default-crawl-mode", true); TRUSTED_REGION_ONLY = GPM.getConfig().getBoolean("Options.trusted-region-only", false); WORLDBLACKLIST = GPM.getConfig().getStringList("Options.WorldBlacklist"); diff --git a/core/src/main/java/dev/geco/gsit/manager/MManager.java b/core/src/main/java/dev/geco/gsit/manager/MManager.java index 6a4cd5d3..c115d7f9 100644 --- a/core/src/main/java/dev/geco/gsit/manager/MManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/MManager.java @@ -80,7 +80,7 @@ public void loadMessages() { public String getMessageByLanguage(String Message, String LanguageCode, Object... ReplaceList) { return toFormattedMessage(getRawMessageByLanguage(Message, LanguageCode, ReplaceList)); } - public String getRawMessageByLanguage(String Message, String LanguageCode, Object... ReplaceList) { return replaceWithLanguageCode(Message == null || Message.isEmpty() ? "" : getMessages(LanguageCode).getString(Message, Message), LanguageCode, ReplaceList); } + public String getRawMessageByLanguage(String Message, String LanguageCode, Object... ReplaceList) { return replaceWithLanguageCode(Message == null || Message.isEmpty() ? "" : getMessages(LanguageCode).getString(Message, ""), LanguageCode, ReplaceList); } public String getLanguage(CommandSender Target) { if(!GPM.getCManager().L_CLIENT_LANG || !(Target instanceof Player)) return DEFAULT_LANG; diff --git a/core/src/main/java/dev/geco/gsit/manager/PlayerSitManager.java b/core/src/main/java/dev/geco/gsit/manager/PlayerSitManager.java index c6e6b75d..02598bb9 100644 --- a/core/src/main/java/dev/geco/gsit/manager/PlayerSitManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/PlayerSitManager.java @@ -58,7 +58,7 @@ public boolean sitOnPlayer(Player Player, Player Target) { UUID lastUUID = GPM.getEntityUtil().createPlayerSeatEntity(Target, Player); - if(GPM.getCManager().PS_SIT_MESSAGE) GPM.getMManager().sendActionBarMessage(Player, "Messages.action-playersit-info"); + GPM.getMManager().sendActionBarMessage(Player, "Messages.action-playersit-info"); playersit_used++; diff --git a/core/src/main/java/dev/geco/gsit/manager/SitManager.java b/core/src/main/java/dev/geco/gsit/manager/SitManager.java index 0c4ed5fc..4d0942f2 100644 --- a/core/src/main/java/dev/geco/gsit/manager/SitManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/SitManager.java @@ -85,7 +85,7 @@ public GSeat createSeat(Block Block, LivingEntity Entity, boolean Rotate, double if(seatEntity == null) return null; - if(GPM.getCManager().S_SIT_MESSAGE && Entity instanceof Player) { + if(Entity instanceof Player) { GPM.getMManager().sendActionBarMessage((Player) Entity, "Messages.action-sit-info"); diff --git a/core/src/main/java/dev/geco/gsit/manager/ToggleManager.java b/core/src/main/java/dev/geco/gsit/manager/ToggleManager.java index 8aee44ec..a0885bb0 100644 --- a/core/src/main/java/dev/geco/gsit/manager/ToggleManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/ToggleManager.java @@ -18,9 +18,11 @@ public class ToggleManager { private final HashMap crawl_cache = new HashMap<>(); public void createTable() { - GPM.getDManager().execute("CREATE TABLE IF NOT EXISTS sit_toggle (uuid TEXT);"); - GPM.getDManager().execute("CREATE TABLE IF NOT EXISTS player_toggle (uuid TEXT);"); - GPM.getDManager().execute("CREATE TABLE IF NOT EXISTS crawl_toggle (uuid TEXT);"); + try { + GPM.getDManager().execute("CREATE TABLE IF NOT EXISTS sit_toggle (uuid TEXT);"); + GPM.getDManager().execute("CREATE TABLE IF NOT EXISTS player_toggle (uuid TEXT);"); + GPM.getDManager().execute("CREATE TABLE IF NOT EXISTS crawl_toggle (uuid TEXT);"); + } catch (SQLException e) { e.printStackTrace(); } sit_cache.clear(); playersit_cache.clear(); crawl_cache.clear(); @@ -58,7 +60,7 @@ public boolean canCrawl(UUID UUID) { if(crawl_cache.containsKey(UUID)) return crawl_cache.get(UUID); try { ResultSet resultSet = GPM.getDManager().executeAndGet("SELECT uuid FROM crawl_toggle WHERE uuid = ?", UUID.toString()); - boolean canCrawl = !resultSet.next(); + boolean canCrawl = GPM.getCManager().C_DEFAULT_CRAWL_MODE == !resultSet.next(); crawl_cache.put(UUID, canCrawl); return canCrawl; } catch (Exception e) { e.printStackTrace(); } @@ -66,23 +68,30 @@ public boolean canCrawl(UUID UUID) { } public void setCanSit(UUID UUID, boolean Toggle) { - boolean delete = (Toggle && GPM.getCManager().S_DEFAULT_SIT_MODE) || (!Toggle && !GPM.getCManager().S_DEFAULT_SIT_MODE); - if(delete) GPM.getDManager().execute("DELETE FROM sit_toggle WHERE uuid = ?", UUID.toString()); - else GPM.getDManager().execute("INSERT INTO sit_toggle (uuid) VALUES (?)", UUID.toString()); - sit_cache.put(UUID, Toggle); + try { + boolean delete = (Toggle && GPM.getCManager().S_DEFAULT_SIT_MODE) || (!Toggle && !GPM.getCManager().S_DEFAULT_SIT_MODE); + if(delete) GPM.getDManager().execute("DELETE FROM sit_toggle WHERE uuid = ?", UUID.toString()); + else GPM.getDManager().execute("INSERT INTO sit_toggle (uuid) VALUES (?)", UUID.toString()); + sit_cache.put(UUID, Toggle); + } catch (SQLException e) { e.printStackTrace(); } } public void setCanPlayerSit(UUID UUID, boolean PlayerToggle) { - boolean delete = (PlayerToggle && GPM.getCManager().PS_DEFAULT_SIT_MODE) || (!PlayerToggle && !GPM.getCManager().PS_DEFAULT_SIT_MODE); - if(delete) GPM.getDManager().execute("DELETE FROM player_toggle WHERE uuid = ?", UUID.toString()); - else GPM.getDManager().execute("INSERT INTO player_toggle (uuid) VALUES (?)", UUID.toString()); - playersit_cache.put(UUID, PlayerToggle); + try { + boolean delete = (PlayerToggle && GPM.getCManager().PS_DEFAULT_SIT_MODE) || (!PlayerToggle && !GPM.getCManager().PS_DEFAULT_SIT_MODE); + if(delete) GPM.getDManager().execute("DELETE FROM player_toggle WHERE uuid = ?", UUID.toString()); + else GPM.getDManager().execute("INSERT INTO player_toggle (uuid) VALUES (?)", UUID.toString()); + playersit_cache.put(UUID, PlayerToggle); + } catch (SQLException e) { e.printStackTrace(); } } - public void setCanCrawl(UUID UUID, boolean Toggle) { - if(Toggle) GPM.getDManager().execute("DELETE FROM crawl_toggle WHERE uuid = ?", UUID.toString()); - else GPM.getDManager().execute("INSERT INTO crawl_toggle (uuid) VALUES (?)", UUID.toString()); - crawl_cache.put(UUID, Toggle); + public void setCanCrawl(UUID UUID, boolean CrawlToggle) { + try { + boolean delete = (CrawlToggle && GPM.getCManager().C_DEFAULT_CRAWL_MODE) || (!CrawlToggle && !GPM.getCManager().C_DEFAULT_CRAWL_MODE); + if(delete) GPM.getDManager().execute("DELETE FROM crawl_toggle WHERE uuid = ?", UUID.toString()); + else GPM.getDManager().execute("INSERT INTO crawl_toggle (uuid) VALUES (?)", UUID.toString()); + crawl_cache.put(UUID, CrawlToggle); + } catch (SQLException e) { e.printStackTrace(); } } } \ No newline at end of file diff --git a/core/src/main/java/dev/geco/gsit/manager/mm/MSpigotManager.java b/core/src/main/java/dev/geco/gsit/manager/mm/MSpigotManager.java index e62a4f4f..cb9933b2 100644 --- a/core/src/main/java/dev/geco/gsit/manager/mm/MSpigotManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/mm/MSpigotManager.java @@ -23,6 +23,11 @@ public MSpigotManager(GSitMain GPluginMain) { public void sendMessage(@NotNull CommandSender Target, String Message, Object... ReplaceList) { Target.sendMessage(getMessageByLanguage(Message, getLanguage(Target), ReplaceList)); } - public void sendActionBarMessage(@NotNull Player Target, String Message, Object... ReplaceList) { if(allowBungeeMessages) Target.spigot().sendMessage(ChatMessageType.ACTION_BAR, net.md_5.bungee.api.chat.TextComponent.fromLegacyText(getMessageByLanguage(Message, getLanguage(Target), ReplaceList))); } + public void sendActionBarMessage(@NotNull Player Target, String Message, Object... ReplaceList) { + if(!allowBungeeMessages) return; + String message = getMessageByLanguage(Message, getLanguage(Target), ReplaceList); + if(message.isEmpty()) return; + Target.spigot().sendMessage(ChatMessageType.ACTION_BAR, net.md_5.bungee.api.chat.TextComponent.fromLegacyText(message)); + } } \ No newline at end of file diff --git a/src/resources/config.yml b/src/resources/config.yml index b175c59a..ebba3918 100644 --- a/src/resources/config.yml +++ b/src/resources/config.yml @@ -59,9 +59,6 @@ Options: # Defines the maximum range in which a player can sit down by clicking (0 means unlimited) max-distance: 0.0 - # Defines whether a player should receive a custom message when sitting - sit-message: true - # Defines whether a player can sit by default without using the sit toggle command default-sit-mode: true @@ -90,9 +87,6 @@ Options: # Defines the maximum range in which a player can sit on another player (0 means unlimited) max-distance: 0.0 - # Defines whether a player should receive a custom message when sitting on top of another player - sit-message: true - # Defines whether a player can sit on another player by default without using the sit playertoggle command default-sit-mode: true @@ -129,6 +123,9 @@ Options: # In order for it to work, you must be looking straight down double-sneak: false + # Defines whether a player can crawl by default by using the double-sneak feature + default-crawl-mode: true + # Defines whether a player can only sit or pose in a region where they are trusted From dbd123096ba7d01b0b620b782dff4ab5b0b57ad8 Mon Sep 17 00:00:00 2001 From: Gecolay Date: Mon, 19 Feb 2024 21:38:03 +0100 Subject: [PATCH 4/6] Improve config & lang saving --- core/src/main/java/dev/geco/gsit/manager/CManager.java | 9 ++++----- core/src/main/java/dev/geco/gsit/manager/MManager.java | 6 ++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/dev/geco/gsit/manager/CManager.java b/core/src/main/java/dev/geco/gsit/manager/CManager.java index 7d98f0a7..e397ec86 100644 --- a/core/src/main/java/dev/geco/gsit/manager/CManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/CManager.java @@ -111,6 +111,7 @@ public CManager(GSitMain GPluginMain) { InputStream configSteam = GPM.getResource("config.yml"); if(configSteam != null) { FileConfiguration configSteamConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(configSteam, StandardCharsets.UTF_8)); + if(config.getKeys(true).equals(configSteamConfig.getKeys(true))) return; config.setDefaults(configSteamConfig); YamlConfigurationOptions options = (YamlConfigurationOptions) config.options(); options.parseComments(true).copyDefaults(true).width(500); @@ -118,11 +119,9 @@ public CManager(GSitMain GPluginMain) { for(String comments : config.getKeys(true)) { config.setComments(comments, configSteamConfig.getComments(comments)); } - } - config.save(configFile); - } catch (Throwable e) { - GPM.saveDefaultConfig(); - } + config.save(configFile); + } else GPM.saveDefaultConfig(); + } catch (Throwable e) { GPM.saveDefaultConfig(); } } else GPM.saveDefaultConfig(); reload(); diff --git a/core/src/main/java/dev/geco/gsit/manager/MManager.java b/core/src/main/java/dev/geco/gsit/manager/MManager.java index c115d7f9..68a5662e 100644 --- a/core/src/main/java/dev/geco/gsit/manager/MManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/MManager.java @@ -1,5 +1,6 @@ package dev.geco.gsit.manager; +import org.bukkit.Bukkit; import org.jetbrains.annotations.*; import java.io.*; @@ -52,13 +53,14 @@ public void loadMessages() { InputStream langSteam = GPM.getResource(jarEntry.getName()); if(langSteam != null) { FileConfiguration langSteamConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(langSteam, StandardCharsets.UTF_8)); + if(lang.getKeys(true).equals(langSteamConfig.getKeys(true))) continue; lang.setDefaults(langSteamConfig); YamlConfigurationOptions options = (YamlConfigurationOptions) lang.options(); options.parseComments(true).copyDefaults(true).width(500); lang.loadFromString(lang.saveToString()); for(String comments : lang.getKeys(true)) lang.setComments(comments, langSteamConfig.getComments(comments)); - } - lang.save(langFile); + lang.save(langFile); + } else if(!langFile.exists()) GPM.saveResource(jarEntry.getName(), false); } } catch (Throwable e) { e.printStackTrace(); } File langFolder = new File(GPM.getDataFolder(), "lang"); From a36db6add876628877801351436c75b137d9fb98 Mon Sep 17 00:00:00 2001 From: Gecolay Date: Mon, 19 Feb 2024 22:32:02 +0100 Subject: [PATCH 5/6] Improve center block config option --- .../dev/geco/gsit/events/InteractEvents.java | 40 ++++++++++++++++--- .../java/dev/geco/gsit/manager/CManager.java | 15 ++++--- .../java/dev/geco/gsit/manager/MManager.java | 1 - src/resources/lang/it_it.yml | 2 +- src/resources/lang/tt_ru.yml | 2 +- src/resources/lang/zh_tw.yml | 4 +- 6 files changed, 46 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/dev/geco/gsit/events/InteractEvents.java b/core/src/main/java/dev/geco/gsit/events/InteractEvents.java index 66ef0c99..a5014b77 100644 --- a/core/src/main/java/dev/geco/gsit/events/InteractEvents.java +++ b/core/src/main/java/dev/geco/gsit/events/InteractEvents.java @@ -10,6 +10,7 @@ import org.bukkit.event.block.*; import org.bukkit.event.player.*; import org.bukkit.inventory.*; +import org.bukkit.util.*; import dev.geco.gsit.GSitMain; @@ -48,15 +49,17 @@ public void PIntE(PlayerInteractEvent Event) { double distance = GPM.getCManager().S_MAX_DISTANCE; - if(distance > 0d && clickedBlock.getLocation().add(0.5, 0.5, 0.5).distance(player.getLocation()) > distance) return; + Location location = clickedBlock.getLocation(); + + if(distance > 0d && location.clone().add(0.5, 0.5, 0.5).distance(player.getLocation()) > distance) return; if(!GPM.getCManager().ALLOW_UNSAFE && !(clickedBlock.getRelative(BlockFace.UP).isPassable())) return; - if(GPM.getPlotSquaredLink() != null && !GPM.getPlotSquaredLink().canCreatePlayerSeat(clickedBlock.getLocation(), player)) return; + if(GPM.getPlotSquaredLink() != null && !GPM.getPlotSquaredLink().canCreatePlayerSeat(location, player)) return; - if(GPM.getWorldGuardLink() != null && !GPM.getWorldGuardLink().checkFlag(clickedBlock.getLocation(), GPM.getWorldGuardLink().getFlag("sit"))) return; + if(GPM.getWorldGuardLink() != null && !GPM.getWorldGuardLink().checkFlag(location, GPM.getWorldGuardLink().getFlag("sit"))) return; - if(GPM.getGriefPreventionLink() != null && !GPM.getGriefPreventionLink().check(clickedBlock.getLocation(), player)) return; + if(GPM.getGriefPreventionLink() != null && !GPM.getGriefPreventionLink().check(location, player)) return; if(!GPM.getCManager().SAME_BLOCK_REST && !GPM.getSitManager().kickSeat(clickedBlock, player)) return; @@ -77,7 +80,34 @@ public void PIntE(PlayerInteractEvent Event) { if(((Slab) clickedBlock.getBlockData()).getType() != Type.BOTTOM && GPM.getCManager().S_BOTTOM_PART_ONLY) return; } - if(GPM.getSitManager().createSeat(clickedBlock, player, true, 0d, 0d, 0d, player.getLocation().getYaw(), true) != null) Event.setCancelled(true); + boolean interactionPointAvailable = GPM.getCManager().CENTER_BLOCK; + + double xoffset = interactionPointAvailable ? 0 : -0.5d; + double zoffset = interactionPointAvailable ? 0 : -0.5d; + + if(!interactionPointAvailable) { + try { + Vector interactionPointVector = Event.getClickedPosition(); + if(interactionPointVector != null) { + interactionPointAvailable = true; + xoffset += interactionPointVector.getX() - interactionPointVector.getBlockX(); + zoffset += interactionPointVector.getZ() - interactionPointVector.getBlockZ(); + } + } catch (Throwable ignored) { } + } + + if(!interactionPointAvailable) { + try { + Location interactionPoint = Event.getInteractionPoint(); + if(interactionPoint != null) { + interactionPointAvailable = true; + xoffset += interactionPoint.getX() - interactionPoint.getBlockX(); + zoffset += interactionPoint.getZ() - interactionPoint.getBlockZ(); + } + } catch (Throwable ignored) { } + } + + if(GPM.getSitManager().createSeat(clickedBlock, player, true, interactionPointAvailable ? xoffset : 0d, 0d, interactionPointAvailable ? zoffset : 0, player.getLocation().getYaw(), true) != null) Event.setCancelled(true); } } \ No newline at end of file diff --git a/core/src/main/java/dev/geco/gsit/manager/CManager.java b/core/src/main/java/dev/geco/gsit/manager/CManager.java index e397ec86..89b2c2dc 100644 --- a/core/src/main/java/dev/geco/gsit/manager/CManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/CManager.java @@ -111,15 +111,14 @@ public CManager(GSitMain GPluginMain) { InputStream configSteam = GPM.getResource("config.yml"); if(configSteam != null) { FileConfiguration configSteamConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(configSteam, StandardCharsets.UTF_8)); - if(config.getKeys(true).equals(configSteamConfig.getKeys(true))) return; - config.setDefaults(configSteamConfig); - YamlConfigurationOptions options = (YamlConfigurationOptions) config.options(); - options.parseComments(true).copyDefaults(true).width(500); - config.loadFromString(config.saveToString()); - for(String comments : config.getKeys(true)) { - config.setComments(comments, configSteamConfig.getComments(comments)); + if(!config.getKeys(true).equals(configSteamConfig.getKeys(true))) { + config.setDefaults(configSteamConfig); + YamlConfigurationOptions options = (YamlConfigurationOptions) config.options(); + options.parseComments(true).copyDefaults(true).width(500); + config.loadFromString(config.saveToString()); + for(String comments : config.getKeys(true)) config.setComments(comments, configSteamConfig.getComments(comments)); + config.save(configFile); } - config.save(configFile); } else GPM.saveDefaultConfig(); } catch (Throwable e) { GPM.saveDefaultConfig(); } } else GPM.saveDefaultConfig(); diff --git a/core/src/main/java/dev/geco/gsit/manager/MManager.java b/core/src/main/java/dev/geco/gsit/manager/MManager.java index 68a5662e..f3886ce6 100644 --- a/core/src/main/java/dev/geco/gsit/manager/MManager.java +++ b/core/src/main/java/dev/geco/gsit/manager/MManager.java @@ -1,6 +1,5 @@ package dev.geco.gsit.manager; -import org.bukkit.Bukkit; import org.jetbrains.annotations.*; import java.io.*; diff --git a/src/resources/lang/it_it.yml b/src/resources/lang/it_it.yml index fb13c157..2c2b5735 100644 --- a/src/resources/lang/it_it.yml +++ b/src/resources/lang/it_it.yml @@ -1,5 +1,5 @@ # -# Language-File created by: Christian Scaduto +# Language-File created by: Christian Scaduto # diff --git a/src/resources/lang/tt_ru.yml b/src/resources/lang/tt_ru.yml index 3410f581..03f290bf 100644 --- a/src/resources/lang/tt_ru.yml +++ b/src/resources/lang/tt_ru.yml @@ -1,5 +1,5 @@ # -# Language-File created by: Amirhan-Taipovjan-Greatest-I (Cybereggs1337) +# Language-File created by: Cybereggs1337 # diff --git a/src/resources/lang/zh_tw.yml b/src/resources/lang/zh_tw.yml index 94151c5d..1d3b4fe5 100644 --- a/src/resources/lang/zh_tw.yml +++ b/src/resources/lang/zh_tw.yml @@ -1,5 +1,5 @@ # -# Language-File created by: flandretw and notlin4 and Tsaitou7361 +# Language-File created by: flandretw, notlin4 & Tsaitou7361 # @@ -55,4 +55,4 @@ Messages: action-crawl-region-error: "[P]&c 你不能在這個區域爬行!" action-crawl-info: "&a使用&6 &a 鍵起來" - action-blocked-error: "[P]&c 你現在不能使用此指令!" + action-blocked-error: "[P]&c 你現在不能使用此指令!" \ No newline at end of file From 966d29bddf773a6c90f818f02bb4a575e48c30a5 Mon Sep 17 00:00:00 2001 From: Gecolay Date: Mon, 19 Feb 2024 22:32:57 +0100 Subject: [PATCH 6/6] Update 1.8.0 --- core/pom.xml | 2 +- dist/pom.xml | 2 +- mcv1_17/pom.xml | 2 +- mcv1_17_1/pom.xml | 2 +- mcv1_18/pom.xml | 2 +- mcv1_18_2/pom.xml | 2 +- mcv1_19/pom.xml | 2 +- mcv1_19_1/pom.xml | 2 +- mcv1_19_3/pom.xml | 2 +- mcv1_19_4/pom.xml | 2 +- mcv1_20/pom.xml | 2 +- mcv1_20_2/pom.xml | 2 +- mcv1_20_3/pom.xml | 2 +- pom.xml | 2 +- v1_17/pom.xml | 2 +- v1_17_1/pom.xml | 2 +- v1_18/pom.xml | 2 +- v1_18_2/pom.xml | 2 +- v1_19/pom.xml | 2 +- v1_19_1/pom.xml | 2 +- v1_19_3/pom.xml | 2 +- v1_19_4/pom.xml | 2 +- v1_20/pom.xml | 2 +- v1_20_2/pom.xml | 2 +- v1_20_3/pom.xml | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index e369c592..34198177 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/dist/pom.xml b/dist/pom.xml index a5fb3be2..ebdaf094 100644 --- a/dist/pom.xml +++ b/dist/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_17/pom.xml b/mcv1_17/pom.xml index 79f149ab..7aa7168a 100644 --- a/mcv1_17/pom.xml +++ b/mcv1_17/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_17_1/pom.xml b/mcv1_17_1/pom.xml index 5e6c3640..cb470d71 100644 --- a/mcv1_17_1/pom.xml +++ b/mcv1_17_1/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_18/pom.xml b/mcv1_18/pom.xml index 98c68569..7f040977 100644 --- a/mcv1_18/pom.xml +++ b/mcv1_18/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_18_2/pom.xml b/mcv1_18_2/pom.xml index 6e4543d3..48187057 100644 --- a/mcv1_18_2/pom.xml +++ b/mcv1_18_2/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_19/pom.xml b/mcv1_19/pom.xml index 8d584265..7d55af2b 100644 --- a/mcv1_19/pom.xml +++ b/mcv1_19/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_19_1/pom.xml b/mcv1_19_1/pom.xml index 1d5499f4..bd1b0348 100644 --- a/mcv1_19_1/pom.xml +++ b/mcv1_19_1/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_19_3/pom.xml b/mcv1_19_3/pom.xml index 013d10f8..c49119c0 100644 --- a/mcv1_19_3/pom.xml +++ b/mcv1_19_3/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_19_4/pom.xml b/mcv1_19_4/pom.xml index 14dc182d..059170c8 100644 --- a/mcv1_19_4/pom.xml +++ b/mcv1_19_4/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_20/pom.xml b/mcv1_20/pom.xml index e5d88982..04c2f497 100644 --- a/mcv1_20/pom.xml +++ b/mcv1_20/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_20_2/pom.xml b/mcv1_20_2/pom.xml index 9c34138e..3d0e1ccb 100644 --- a/mcv1_20_2/pom.xml +++ b/mcv1_20_2/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/mcv1_20_3/pom.xml b/mcv1_20_3/pom.xml index c5623436..745971a7 100644 --- a/mcv1_20_3/pom.xml +++ b/mcv1_20_3/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/pom.xml b/pom.xml index 9a77c7e2..a209d010 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ dev.geco.gsit GSit GSit - 1.7.1 + 1.8.0 Relax with other players on nice seats! https://www.spigotmc.org/resources/62325 2018 diff --git a/v1_17/pom.xml b/v1_17/pom.xml index a2d4d993..0894997a 100644 --- a/v1_17/pom.xml +++ b/v1_17/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_17_1/pom.xml b/v1_17_1/pom.xml index 5ef3c5da..b5d3dd15 100644 --- a/v1_17_1/pom.xml +++ b/v1_17_1/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_18/pom.xml b/v1_18/pom.xml index d76b286a..84287290 100644 --- a/v1_18/pom.xml +++ b/v1_18/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_18_2/pom.xml b/v1_18_2/pom.xml index ca50a76d..a52dbbd3 100644 --- a/v1_18_2/pom.xml +++ b/v1_18_2/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_19/pom.xml b/v1_19/pom.xml index 757914cd..b5a7da8f 100644 --- a/v1_19/pom.xml +++ b/v1_19/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_19_1/pom.xml b/v1_19_1/pom.xml index 2ff6be60..15b41afc 100644 --- a/v1_19_1/pom.xml +++ b/v1_19_1/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_19_3/pom.xml b/v1_19_3/pom.xml index 4a2a23aa..5ddca5bd 100644 --- a/v1_19_3/pom.xml +++ b/v1_19_3/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_19_4/pom.xml b/v1_19_4/pom.xml index 9a7524d6..09b3e0b4 100644 --- a/v1_19_4/pom.xml +++ b/v1_19_4/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_20/pom.xml b/v1_20/pom.xml index 93c98cb9..e95da9e3 100644 --- a/v1_20/pom.xml +++ b/v1_20/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_20_2/pom.xml b/v1_20_2/pom.xml index 85844fa0..c5db15b8 100644 --- a/v1_20_2/pom.xml +++ b/v1_20_2/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0 diff --git a/v1_20_3/pom.xml b/v1_20_3/pom.xml index 5c51ace7..120b2eae 100644 --- a/v1_20_3/pom.xml +++ b/v1_20_3/pom.xml @@ -9,7 +9,7 @@ dev.geco.gsit GSit - 1.7.1 + 1.8.0