9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-29 20:09:17 +00:00
Files
Leaf/patches/server/0081-Configurable-connection-message.patch
Dreeam becd099200 Updated Upstream (Paper)
Updated to latest Paper 1.20.6 branch, unlike Leaf 1.20.4, this upstream update didn't include backport from latest Gale branch, we recommend to use Leaf 1.21.1
2024-11-01 04:52:34 -04:00

111 lines
6.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Sun, 2 Jun 2024 01:21:36 +0800
Subject: [PATCH] Configurable connection message
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 3fcd4d93112c22717aedee2e1121d4e795d6e93a..4b9d630a9b844714e9d9b2355a72d5cb7e7d6f03 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -28,6 +28,7 @@ import java.util.function.Predicate;
import javax.annotation.Nullable;
import me.titaniumtown.ArrayConstants;
+import net.kyori.adventure.text.TextReplacementConfig;
import net.minecraft.ChatFormatting;
import net.minecraft.FileUtil;
import net.minecraft.commands.CommandSourceStack;
@@ -356,7 +357,7 @@ public abstract class PlayerList {
// Ensure that player inventory is populated with its viewer
player.containerMenu.transferTo(player.containerMenu, bukkitPlayer);
- PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(bukkitPlayer, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure
+ PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(bukkitPlayer, getJoinMsg(io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent), bukkitPlayer)); // Paper - Adventure // Leaf - Configurable connection message - join message
this.cserver.getPluginManager().callEvent(playerJoinEvent);
if (!player.connection.isAcceptingMessages()) {
@@ -369,7 +370,7 @@ public abstract class PlayerList {
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
- if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
+ if (org.dreeam.leaf.config.modules.misc.ConnectionMessage.joinEnabled && jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure // Leaf - Configurable connection message - join message
joinMessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(jm); // Paper - Adventure
this.server.getPlayerList().broadcastSystemMessage(joinMessage, false); // Paper - Adventure
}
@@ -634,7 +635,7 @@ public abstract class PlayerList {
entityplayer.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DISCONNECT); // Paper - Inventory close reason
}
- PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), leaveMessage, entityplayer.quitReason); // Paper - Adventure & Add API for quit reason
+ PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), getQuitMsg(leaveMessage, entityplayer.getBukkitEntity()), entityplayer.quitReason); // Paper - Adventure & Add API for quit reason // Leaf - Configurable connection message - quit message
this.cserver.getPluginManager().callEvent(playerQuitEvent);
entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
@@ -1707,4 +1708,29 @@ public abstract class PlayerList {
public boolean isAllowCommandsForAllPlayers() {
return this.allowCommandsForAllPlayers;
}
+
+ // Leaf start - Configurable connection message - join message
+ private net.kyori.adventure.text.Component getJoinMsg(net.kyori.adventure.text.Component defaultJoinMsg, Player player) {
+ if (org.dreeam.leaf.config.modules.misc.ConnectionMessage.joinEnabled) {
+ return org.dreeam.leaf.config.modules.misc.ConnectionMessage.joinMessage.equals("default")
+ ? defaultJoinMsg
+ : net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.dreeam.leaf.config.modules.misc.ConnectionMessage.joinMessage)
+ .replaceText(TextReplacementConfig.builder().matchLiteral("%player_name%").replacement(player.getName()).build())
+ .replaceText(TextReplacementConfig.builder().matchLiteral("%player_displayname%").replacement(player.displayName()).build());
+ }
+
+ return net.kyori.adventure.text.Component.empty();
+ }
+ private net.kyori.adventure.text.Component getQuitMsg(net.kyori.adventure.text.Component defaultQuitMsg, Player player) {
+ if (org.dreeam.leaf.config.modules.misc.ConnectionMessage.quitEnabled) {
+ return org.dreeam.leaf.config.modules.misc.ConnectionMessage.quitMessage.equals("default")
+ ? defaultQuitMsg
+ : net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.dreeam.leaf.config.modules.misc.ConnectionMessage.quitMessage)
+ .replaceText(TextReplacementConfig.builder().matchLiteral("%player_name%").replacement(player.getName()).build())
+ .replaceText(TextReplacementConfig.builder().matchLiteral("%player_displayname%").replacement(player.displayName()).build());
+ }
+
+ return net.kyori.adventure.text.Component.empty();
+ }
+ // Leaf end - Configurable connection message - join message
}
diff --git a/src/main/java/org/dreeam/leaf/config/modules/misc/ConnectionMessage.java b/src/main/java/org/dreeam/leaf/config/modules/misc/ConnectionMessage.java
new file mode 100644
index 0000000000000000000000000000000000000000..66097fa632bfd2079d2deab211e76fd45f2e01bd
--- /dev/null
+++ b/src/main/java/org/dreeam/leaf/config/modules/misc/ConnectionMessage.java
@@ -0,0 +1,29 @@
+package org.dreeam.leaf.config.modules.misc;
+
+import com.electronwill.nightconfig.core.file.CommentedFileConfig;
+import org.dreeam.leaf.config.ConfigInfo;
+import org.dreeam.leaf.config.EnumConfigCategory;
+import org.dreeam.leaf.config.IConfigModule;
+
+public class ConnectionMessage implements IConfigModule {
+
+ @Override
+ public EnumConfigCategory getCategory() {
+ return EnumConfigCategory.MISC;
+ }
+
+ @Override
+ public String getBaseName() {
+ return "connection_message";
+ }
+
+ @ConfigInfo(baseName = "join.enabled")
+ public static boolean joinEnabled = true;
+ @ConfigInfo(baseName = "join.message", comments = "Join message of player, using MiniMessage format, set to 'default' to use vanilla join message.")
+ public static String joinMessage = "default";
+
+ @ConfigInfo(baseName = "quit.enabled")
+ public static boolean quitEnabled = true;
+ @ConfigInfo(baseName = "quit.message", comments = "Quit message of player, using MiniMessage format set to 'default' to use vanilla quit message.")
+ public static String quitMessage = "default";
+}