|
|
|
@@ -8,6 +8,7 @@ import com.alttd.chat.managers.RegexManager;
|
|
|
|
|
import com.alttd.chat.objects.ChatUser;
|
|
|
|
|
import com.alttd.chat.objects.ModifiableString;
|
|
|
|
|
import com.alttd.chat.objects.Toggleable;
|
|
|
|
|
import com.alttd.chat.objects.chat_log.WebHandler;
|
|
|
|
|
import com.alttd.chat.util.GalaxyUtility;
|
|
|
|
|
import com.alttd.chat.util.Utility;
|
|
|
|
|
import net.kyori.adventure.text.Component;
|
|
|
|
@@ -30,6 +31,7 @@ import org.jetbrains.annotations.NotNull;
|
|
|
|
|
|
|
|
|
|
import java.time.Instant;
|
|
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Stack;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
@@ -38,6 +40,7 @@ import java.util.concurrent.TimeUnit;
|
|
|
|
|
public class PlayerListener implements Listener {
|
|
|
|
|
|
|
|
|
|
private final ServerConfig serverConfig;
|
|
|
|
|
private final WebHandler webHandler;
|
|
|
|
|
|
|
|
|
|
public PlayerListener(ServerConfig serverConfig) {
|
|
|
|
|
this.serverConfig = serverConfig;
|
|
|
|
@@ -50,13 +53,16 @@ public class PlayerListener implements Listener {
|
|
|
|
|
UUID uuid = player.getUniqueId();
|
|
|
|
|
Toggleable.disableToggles(uuid);
|
|
|
|
|
|
|
|
|
|
if (serverConfig.FIRST_JOIN_MESSAGES && (!player.hasPlayedBefore() || System.currentTimeMillis() - player.getFirstPlayed() < TimeUnit.SECONDS.toMillis(10))) {
|
|
|
|
|
Bukkit.broadcast(MiniMessage.miniMessage().deserialize(Config.FIRST_JOIN, Placeholder.parsed("player", player.getName())));
|
|
|
|
|
if (serverConfig.FIRST_JOIN_MESSAGES && (!player.hasPlayedBefore() || System.currentTimeMillis() - player.getFirstPlayed() < TimeUnit.SECONDS.toMillis(
|
|
|
|
|
10))) {
|
|
|
|
|
Bukkit.broadcast(MiniMessage.miniMessage()
|
|
|
|
|
.deserialize(Config.FIRST_JOIN, Placeholder.parsed("player", player.getName())));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ChatUser user = ChatUserManager.getChatUser(uuid);
|
|
|
|
|
if(user != null) return;
|
|
|
|
|
|
|
|
|
|
if (user != null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// user failed to load - create a new one
|
|
|
|
|
ChatUser chatUser = new ChatUser(uuid, -1, null);
|
|
|
|
@@ -64,6 +70,7 @@ public class PlayerListener implements Listener {
|
|
|
|
|
Queries.saveUser(chatUser);
|
|
|
|
|
|
|
|
|
|
//TODO load player on other servers with plugin message?
|
|
|
|
|
updateServerState(event.getPlayer(), true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
@@ -71,8 +78,24 @@ public class PlayerListener implements Listener {
|
|
|
|
|
UUID uuid = event.getPlayer().getUniqueId();
|
|
|
|
|
ChatUser user = ChatUserManager.getChatUser(uuid);
|
|
|
|
|
ChatUserManager.removeUser(user);
|
|
|
|
|
updateServerState(event.getPlayer(), false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateServerState(Player triggerPlayer, boolean add) {
|
|
|
|
|
ArrayList<Player> playerList = new ArrayList<>(Bukkit.getOnlinePlayers());
|
|
|
|
|
if (add) {
|
|
|
|
|
if (playerList.stream()
|
|
|
|
|
.filter(player -> player.getUniqueId().equals(triggerPlayer.getUniqueId()))
|
|
|
|
|
.findFirst()
|
|
|
|
|
.isEmpty()) {
|
|
|
|
|
playerList.add(triggerPlayer);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
playerList.removeIf(player -> player.getUniqueId().equals(triggerPlayer.getUniqueId()));
|
|
|
|
|
}
|
|
|
|
|
String name = Bukkit.getServer().getName();
|
|
|
|
|
webHandler.updateServerState(name, playerList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@EventHandler(ignoreCancelled = true) // untested
|
|
|
|
|
public void onSignChangeE(SignChangeEvent event) {
|
|
|
|
@@ -88,7 +111,8 @@ public class PlayerListener implements Listener {
|
|
|
|
|
GalaxyUtility.sendBlockedNotification("Sign Language",
|
|
|
|
|
player,
|
|
|
|
|
Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())),
|
|
|
|
|
"");
|
|
|
|
|
""
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
component = modifiableString.component() == null ? Component.empty() : modifiableString.component();
|
|
|
|
@@ -99,6 +123,7 @@ public class PlayerListener implements Listener {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private final HashMap<UUID, Stack<Instant>> sendPlayerDeaths = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
|
|
|
|
public void onPlayerDeath(@NotNull PlayerDeathEvent event) {
|
|
|
|
|
UUID uuid = event.getPlayer().getUniqueId();
|
|
|
|
@@ -113,7 +138,7 @@ public class PlayerListener implements Listener {
|
|
|
|
|
event.deathMessage(Component.empty());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Component component = event.deathMessage();
|
|
|
|
|
Component component = event.deathMessage();
|
|
|
|
|
|
|
|
|
|
playerDeathsStack.push(Instant.now());
|
|
|
|
|
if (component == null) {
|
|
|
|
@@ -132,7 +157,9 @@ public class PlayerListener implements Listener {
|
|
|
|
|
.build();
|
|
|
|
|
component = component.replaceText(killerReplacement);
|
|
|
|
|
}
|
|
|
|
|
component = MiniMessage.miniMessage().deserialize("<dark_red>[</dark_red><red>☠</red><dark_red>]</dark_red> ").append(component);
|
|
|
|
|
component = MiniMessage.miniMessage()
|
|
|
|
|
.deserialize("<dark_red>[</dark_red><red>☠</red><dark_red>]</dark_red> ")
|
|
|
|
|
.append(component);
|
|
|
|
|
component = component.style(Style.style(TextColor.color(255, 155, 48), TextDecoration.ITALIC));
|
|
|
|
|
event.deathMessage(component);
|
|
|
|
|
}
|
|
|
|
|