9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-22 00:19:20 +00:00
Files
Leaf/patches/server/0089-Configurable-connection-message.patch
Kobe ⑧ 2c4d9d40d1 Some changes to optimizations and api (#172)
* Add faster random generator for Entity random

* Option for replace worldgen random with L64X128MixRandomSource & Cleanup

* Allocate 1 thread for AsyncLocator by default

* Rename to worldgen

* Add config option for backed random generator

* Add SplittableGenerator check

* Cache random generator

* Revert cache
Caching RNGs will cause some issues during worldgen

* Set to final & cleanup

* LevelChunkMixin

* Filter null values

* Use Xoroshiro128PlusPlus by default

* Benchmark results

* Revert changes

* Better smooth teleport api

* Set seed to 0
2024-11-28 18:26:03 -05:00

115 lines
7.0 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 0d791d0e0cbbc77dd1e5b376f82c26e3618c236e..6da4b4d3f00527aabf398ab614140bc6f8c7442c 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -452,7 +452,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()) {
@@ -465,7 +465,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
}
@@ -767,7 +767,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());
@@ -1814,4 +1814,29 @@ public abstract class PlayerList {
public boolean isAllowCommandsForAllPlayers() {
return this.allowCommandsForAllPlayers;
}
+
+ // Leaf start - Configurable connection 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 "default".equals(org.dreeam.leaf.config.modules.misc.ConnectionMessage.joinMessage)
+ ? defaultJoinMsg
+ : net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.dreeam.leaf.config.modules.misc.ConnectionMessage.joinMessage)
+ .replaceText(net.kyori.adventure.text.TextReplacementConfig.builder().matchLiteral("%player_name%").replacement(player.getName()).build())
+ .replaceText(net.kyori.adventure.text.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 "default".equals(org.dreeam.leaf.config.modules.misc.ConnectionMessage.quitMessage)
+ ? defaultQuitMsg
+ : net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.dreeam.leaf.config.modules.misc.ConnectionMessage.quitMessage)
+ .replaceText(net.kyori.adventure.text.TextReplacementConfig.builder().matchLiteral("%player_name%").replacement(player.getName()).build())
+ .replaceText(net.kyori.adventure.text.TextReplacementConfig.builder().matchLiteral("%player_displayname%").replacement(player.displayName()).build());
+ }
+
+ return net.kyori.adventure.text.Component.empty();
+ }
+ // Leaf end - Configurable connection 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..72782ef6159a718b4d751a65db92812402cfab61
--- /dev/null
+++ b/src/main/java/org/dreeam/leaf/config/modules/misc/ConnectionMessage.java
@@ -0,0 +1,41 @@
+package org.dreeam.leaf.config.modules.misc;
+
+import org.dreeam.leaf.config.ConfigModules;
+import org.dreeam.leaf.config.EnumConfigCategory;
+
+public class ConnectionMessage extends ConfigModules {
+
+ public String getBasePath() {
+ return EnumConfigCategory.MISC.getBaseKeyName() + ".connection-message";
+ }
+
+ public static boolean joinEnabled = true;
+ public static String joinMessage = "default";
+ public static boolean quitEnabled = true;
+ public static String quitMessage = "default";
+
+ @Override
+ public void onLoaded() {
+ config.addCommentRegionBased(getBasePath(), """
+ Connection message, using MiniMessage format, set to "default" to use vanilla join message.
+ available placeholders:
+ %player_name% - player name
+ %player_displayname% - player display name""",
+ """
+ 自定义加入 & 退出消息 (MiniMessage 格式), 设置为 'default' 将使用原版消息.
+ 可用的内置变量:
+ %player_name% - 玩家名称
+ %player_displayname% - 玩家显示名称""");
+
+ joinEnabled = config.getBoolean(getBasePath() + ".join.enabled", joinEnabled);
+ joinMessage = config.getString(getBasePath() + ".join.message", joinMessage, config.pickStringRegionBased(
+ "Join message of player",
+ "玩家加入服务器时的消息"
+ ));
+
+ quitEnabled = config.getBoolean(getBasePath() + ".quit.enabled", quitEnabled);
+ quitMessage = config.getString(getBasePath() + ".quit.message", quitMessage, config.pickStringRegionBased(
+ "Quit message of player",
+ "玩家退出服务器时的消息"));
+ }
+}