Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump -> 1.0.10 #28

Merged
merged 16 commits into from
Nov 6, 2022
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
}

group = 'fr.efreicraft'
version = '1.0.8-dev'
version = '1.0.10'

compileJava.options.encoding "UTF-8"

Expand Down
35 changes: 15 additions & 20 deletions src/main/java/fr/efreicraft/ecatup/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import fr.efreicraft.ecatup.listeners.Join;
import fr.efreicraft.ecatup.listeners.LuckPermsListener;
import fr.efreicraft.ecatup.listeners.Quit;
import fr.efreicraft.ecatup.utils.DBConnection;
import fr.efreicraft.ecatup.utils.DiscordWebhook;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
Expand All @@ -24,19 +25,17 @@
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

@SuppressWarnings("UnstableApiUsage")
public final class Main extends JavaPlugin {

public static JavaPlugin INSTANCE;
public static FileConfiguration config;
public static Connection connection;
public static DBConnection DB;
public static LuckPerms LP;


Expand All @@ -56,12 +55,12 @@ public void onEnable() {

try {
Class.forName("org.mariadb.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mariadb://"
+ config.getString("database.host")
+ ":" + config.getInt("database.port") + "/" + config.getString("database.database")
+ "?user=" + config.getString("database.user")
+ "&password=" + config.getString("database.password")
+ "&autoReconnect=true");
DB = new DBConnection(config.getString("database.host"),
config.getInt("database.port"),
config.getString("database.database"),
config.getString("database.user"),
config.getString("database.password"));
DB.open();
} catch (Exception e) {
e.printStackTrace();
}
Expand All @@ -77,7 +76,7 @@ public void onEnable() {
Bukkit.getPluginManager().registerEvents(new LuckPermsListener((Main) INSTANCE, LP), INSTANCE);

// Register commands
if (!config.getString("server_name").equals("lobby")) {
if (!config.getString("server_name", "").equals("lobby")) {
registerCommand("lobby", new Lobby()); // Only register /lobby if the server's name is "lobby"
}

Expand Down Expand Up @@ -117,11 +116,7 @@ public void onDisable() {
getServer().getMessenger().unregisterIncomingPluginChannel(INSTANCE);

// Close database connection
try {
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
DB.close();

// Send log to Discord
DiscordWebhook webhook = new DiscordWebhook(config.getString("webhook"));
Expand All @@ -131,10 +126,10 @@ public void onDisable() {
.setColor(java.awt.Color.decode("#ffffff"))
.setFooter("Efrei Craft", "https://efreicraft.fr/img/favicon.png")
);

for (Player player : Bukkit.getOnlinePlayers()) {
sendPlayerToServer(player, "lobby");
}
if (!config.getString("server_name", "").equalsIgnoreCase("lobby"))
for (Player player : Bukkit.getOnlinePlayers()) {
sendPlayerToServer(player, "lobby");
}

try {
webhook.execute();
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/fr/efreicraft/ecatup/commands/Chat.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import static fr.efreicraft.ecatup.utils.Msg.colorize;

@SuppressWarnings("ConstantConditions")
public class Chat implements CommandExecutor, TabExecutor {

@Override
Expand Down Expand Up @@ -76,15 +76,15 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command

public void sendChannelPrefToDB(Player player, PreferenceCache.ChatChannel channel) {
try {
PreparedStatement verifyIfHasEntry = Main.connection.prepareStatement("SELECT * FROM `usersPrefs` WHERE mcUUID=?");
PreparedStatement verifyIfHasEntry = Main.DB.openThenGetConnection().prepareStatement("SELECT * FROM `usersPrefs` WHERE mcUUID=?");
verifyIfHasEntry.setString(1, player.getUniqueId().toString());
ResultSet result1 = verifyIfHasEntry.executeQuery();
boolean hasEntryInDB = result1.next();

verifyIfHasEntry.close();
result1.close();

PreparedStatement applyChanges = Main.connection.prepareStatement(hasEntryInDB ? "UPDATE `usersPrefs` SET channel=? WHERE mcUUID=?"
PreparedStatement applyChanges = Main.DB.openThenGetConnection().prepareStatement(hasEntryInDB ? "UPDATE `usersPrefs` SET channel=? WHERE mcUUID=?"
: "INSERT INTO `usersPrefs` (channel, mcUUID) VALUES(?,?)");

applyChanges.setInt(1, channel.ID);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fr/efreicraft/ecatup/commands/Gmc.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class Gmc implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
Player player = null;
Player player;
if (args.length == 0) {
if (sender instanceof Player) {
player = (Player) sender;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fr/efreicraft/ecatup/commands/Gms.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class Gms implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
Player player = null;
Player player;
if (args.length == 0) {
if (sender instanceof Player) {
player = (Player) sender;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fr/efreicraft/ecatup/commands/Gmsp.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class Gmsp implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
Player player = null;
Player player;
if (args.length == 0) {
if (sender instanceof Player) {
player = (Player) sender;
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/fr/efreicraft/ecatup/commands/WhoIs.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,16 @@ public class WhoIs implements CommandExecutor {
* Serveur (si connecté): serveur
**/

LuckPerms LP = Main.LP;
final LuckPerms LP = Main.LP;

final TextColor KEY_COLOR = NamedTextColor.AQUA;
final TextColor VALUE_COLOR = NamedTextColor.WHITE;


// Jsuis obligé
HoverEvent<Component> CLICK_TO_COPY = HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Cliquez pour copier !"));
final HoverEvent<Component> CLICK_TO_COPY = HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Cliquez pour copier !"));

@SuppressWarnings("ConstantConditions")
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
// ========== PRECISION : ON PEUT S'AUTO-WHOIS (because I said so) ==========
Expand Down
56 changes: 34 additions & 22 deletions src/main/java/fr/efreicraft/ecatup/listeners/Join.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,49 @@
import fr.efreicraft.ecatup.utils.DiscordWebhook;
import net.kyori.adventure.text.Component;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.model.user.User;
import net.luckperms.api.node.Node;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

import java.awt.*;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;

import static fr.efreicraft.ecatup.utils.Msg.colorize;

public class Join implements Listener {
LuckPerms LP = Main.LP;
@EventHandler
static final LuckPerms LP = Main.LP;
static Set<UUID> isNotDone = new HashSet<>();

// Histoire d'exécuter cet event APRES le onJoin de LP
@EventHandler(priority = EventPriority.HIGHEST)
public void onJoin(org.bukkit.event.player.PlayerJoinEvent event) throws IOException {
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).getCachedData().invalidate();
isNotDone.add(event.getPlayer().getUniqueId());
User user = LP.getUserManager().loadUser(event.getPlayer().getUniqueId()).join();

// Get player rank from Association Database
ResultSet result = null;
try {
String rank = "Visiteur";
String rank;

/* ===== ROLES STUFF ===== */
PreparedStatement mcLinkStatement = Main.connection.prepareStatement("SELECT * FROM `discordmclink` WHERE `mcaccount` = ?");
PreparedStatement mcLinkStatement = Main.DB.openThenGetConnection().prepareStatement("SELECT * FROM `discordmclink` WHERE `mcaccount` = ?");
mcLinkStatement.setString(1, event.getPlayer().getName());
Bukkit.getLogger().info("Getting discord ID for " + event.getPlayer().getName());

// Execute query
result = mcLinkStatement.executeQuery();
if (result.next()) {
String discordId = result.getString("discordid");
PreparedStatement memberDataStatement = Main.connection.prepareStatement("SELECT * FROM `members` WHERE `discordid` = ?");
PreparedStatement memberDataStatement = Main.DB.openThenGetConnection().prepareStatement("SELECT * FROM `members` WHERE `discordid` = ?");
memberDataStatement.setString(1, discordId);
Bukkit.getLogger().info("Getting rank for " + discordId);
// Execute query
Expand All @@ -47,32 +56,32 @@ public void onJoin(org.bukkit.event.player.PlayerJoinEvent event) throws IOExcep
rank = memberDataResult.getString("rank");
Bukkit.getLogger().info("Rank for " + event.getPlayer().getName() + " is " + rank);
// Remove player permissions
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().clear();
user.data().clear();
// Set player rank
switch (rank) {
case "Membre" -> LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.member").build());
case "Membre" -> user.data().add(Node.builder("group.member").build());

case "Beta Tester" -> LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.beta").build());
case "Beta Tester" -> user.data().add(Node.builder("group.beta").build());

case "Builder" -> LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.builder").build());
case "Builder" -> user.data().add(Node.builder("group.builder").build());

case "Responsable 1P" -> LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.respo1p").build());
case "Responsable 1P" -> user.data().add(Node.builder("group.respo1p").build());

case "Responsable Event", "Responsable Dev", "Responsable Infra", "Responsable Comm", "Responsable Build", "Responsable Design" -> {
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.be").build());
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("prefix.10.&c&l[" + rank + "] &c").build());
user.data().add(Node.builder("group.be").build());
user.data().add(Node.builder("prefix.10.&c&l[" + rank + "] &c").build());
}

case "Président", "Vice-Président", "Trésorier", "Secrétaire" -> {
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.br").build());
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("prefix.10.&4&l[" + rank + "] &4").build());
user.data().add(Node.builder("group.br").build());
user.data().add(Node.builder("prefix.10.&4&l[" + rank + "] &4").build());
}

default -> LP.getUserManager().getUser(event.getPlayer().getUniqueId()).data().add(Node.builder("group.visitor").build());
default -> user.data().add(Node.builder("group.visitor").build());
}
LP.getUserManager().saveUser(LP.getUserManager().getUser(event.getPlayer().getUniqueId()));
LP.getUserManager().saveUser(LP.getUserManager().loadUser(event.getPlayer().getUniqueId()).join()).join();
networkSync();

// Check if player has permission to connect to this server
if (!event.getPlayer().hasPermission("server." + Main.config.getString("server_name"))) {
event.getPlayer().kick(Component.text("§cVous n'avez pas la permission d'accéder ce serveur !"));
Expand All @@ -99,14 +108,14 @@ public void onJoin(org.bukkit.event.player.PlayerJoinEvent event) throws IOExcep
result.close();

/* ===== PREFERENCES STUFF ===== */
PreparedStatement userPrefsStatement = Main.connection.prepareStatement("SELECT * FROM `usersPrefs` WHERE `mcUUID` = ?");
PreparedStatement userPrefsStatement = Main.DB.openThenGetConnection().prepareStatement("SELECT * FROM `usersPrefs` WHERE `mcUUID` = ?");
userPrefsStatement.setString(1, event.getPlayer().getUniqueId().toString());
Bukkit.getLogger().info("Getting " + event.getPlayer().getName() + "'s user preferences");

ResultSet resultPrefs = userPrefsStatement.executeQuery();
if (resultPrefs.next()) {
int channel = resultPrefs.getInt("channel");
// récup 1 par 1 les préférences de l'utilisateur
int channel = resultPrefs.getInt("channel");

PreferenceCache.cache(event.getPlayer(), channel);
} else {
Expand All @@ -116,9 +125,10 @@ public void onJoin(org.bukkit.event.player.PlayerJoinEvent event) throws IOExcep
resultPrefs.close();
userPrefsStatement.close();
} catch (SQLException e) {
isNotDone.remove(event.getPlayer().getUniqueId());
throw new RuntimeException(e);
}
LP.getUserManager().getUser(event.getPlayer().getUniqueId()).getCachedData().invalidate();
user.getCachedData().invalidate();
String prefix = LP.getUserManager().loadUser(event.getPlayer().getUniqueId()).join().getCachedData().getMetaData().getPrefix().replaceAll("&", "§");
event.getPlayer().displayName(Component.text(prefix + event.getPlayer().getName()));
event.joinMessage(event.getPlayer().displayName().append(Component.text(colorize("&7 a rejoint le serveur !"))));
Expand All @@ -135,9 +145,11 @@ public void onJoin(org.bukkit.event.player.PlayerJoinEvent event) throws IOExcep
.setFooter("Efrei Craft", "https://efreicraft.fr/img/favicon.png")
);
webhook.execute();

isNotDone.remove(event.getPlayer().getUniqueId());
}

public void networkSync() {
public static void networkSync() {
LP.runUpdateTask();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import net.luckperms.api.LuckPerms;
import net.luckperms.api.event.EventBus;
import net.luckperms.api.event.user.UserDataRecalculateEvent;
import net.luckperms.api.model.user.User;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
Expand All @@ -22,13 +21,12 @@ public LuckPermsListener(Main plugin, LuckPerms LP) {
}

private void onUserDataRecalculate(UserDataRecalculateEvent event) {
if (Join.isNotDone.contains(event.getUser().getUniqueId())) return;
Player player = Bukkit.getPlayer(Objects.requireNonNull(event.getUser().getUsername()));
if (player != null) {
player.displayName(Component.text(colorize(event.getUser().getCachedData().getMetaData().getPrefix()) + player.getName()));
player.playerListName(player.displayName());
User user = Main.LP.getUserManager().getUser(event.getUser().getUsername());
if (user != null)
user.getCachedData().invalidate();
event.getUser().getCachedData().invalidate();
}
}
}
Loading