Skip to content

Commit

Permalink
Merge branch 'Gecolay:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Dreeam-qwq authored Feb 21, 2024
2 parents b960b44 + 966d29b commit be5e588
Show file tree
Hide file tree
Showing 37 changed files with 161 additions and 126 deletions.
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<parent>
<groupId>dev.geco.gsit</groupId>
<artifactId>GSit</artifactId>
<version>1.7.1</version>
<version>1.8.0</version>
</parent>

<properties>
Expand Down
40 changes: 35 additions & 5 deletions core/src/main/java/dev/geco/gsit/events/InteractEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;

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

}
29 changes: 12 additions & 17 deletions core/src/main/java/dev/geco/gsit/manager/CManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ public class CManager {

public double S_MAX_DISTANCE;

public boolean S_SIT_MESSAGE;

public boolean S_DEFAULT_SIT_MODE;


Expand All @@ -62,8 +60,6 @@ public class CManager {

public double PS_MAX_DISTANCE;

public boolean PS_SIT_MESSAGE;

public boolean PS_DEFAULT_SIT_MODE;


Expand All @@ -84,6 +80,8 @@ public class CManager {

public boolean C_DOUBLE_SNEAK;

public boolean C_DEFAULT_CRAWL_MODE;


public boolean TRUSTED_REGION_ONLY;

Expand Down Expand Up @@ -113,18 +111,16 @@ public CManager(GSitMain GPluginMain) {
InputStream configSteam = GPM.getResource("config.yml");
if(configSteam != null) {
FileConfiguration configSteamConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(configSteam, StandardCharsets.UTF_8));
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);
} catch (Throwable e) {
GPM.saveDefaultConfig();
}
} else GPM.saveDefaultConfig();
} catch (Throwable e) { GPM.saveDefaultConfig(); }
} else GPM.saveDefaultConfig();

reload();
Expand Down Expand Up @@ -170,7 +166,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);
Expand All @@ -180,7 +175,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);
Expand All @@ -192,6 +186,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");
Expand Down
86 changes: 42 additions & 44 deletions core/src/main/java/dev/geco/gsit/manager/DManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,73 +11,71 @@ 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; }

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) { } }
Expand Down
7 changes: 4 additions & 3 deletions core/src/main/java/dev/geco/gsit/manager/MManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,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");
Expand All @@ -80,7 +81,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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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++;

Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/dev/geco/gsit/manager/SitManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
Loading

0 comments on commit be5e588

Please sign in to comment.