Skip to content

Commit

Permalink
fix d'invocations de l'event UserDataRecalculate alors qu'on a pas fi…
Browse files Browse the repository at this point in the history
…ni de traiter le joueur dans Join.java
  • Loading branch information
Niilyx committed Nov 6, 2022
1 parent 26870b1 commit cc4ebe2
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 30 deletions.
50 changes: 31 additions & 19 deletions src/main/java/fr/efreicraft/ecatup/listeners/Join.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,38 @@
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 {
final 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.DB.openThenGetConnection().prepareStatement("SELECT * FROM `discordmclink` WHERE `mcaccount` = ?");
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 Down Expand Up @@ -105,8 +114,8 @@ public void onJoin(org.bukkit.event.player.PlayerJoinEvent event) throws IOExcep

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();
}
}
}
9 changes: 2 additions & 7 deletions src/main/java/fr/efreicraft/ecatup/utils/Msg.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,10 @@

public class Msg {
public static String colorize(String message) {
return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNullElse(message, nullText()));
return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNullElse(message, ""));
}

public static String colorize(TextComponent message) {
return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNullElse(message.content(), nullText()));
}

private static String nullText() {
Bukkit.getLogger().warning("Tried to colorize a null text (LuckPerms is at it again...)");
return "null";
return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNullElse(message.content(), ""));
}
}

0 comments on commit cc4ebe2

Please sign in to comment.