mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-27 10:59:16 +00:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1595e4a Make watchdog thread extend TickThread again PaperMC/Paper@34a2917 Add default canUse and permission methods to BasicCommand (#11047) PaperMC/Paper@99ae7bb Don't require author and title to be set on signed book meta (#11068) PaperMC/Paper@9fd5b3c Add AttributeModifier constructor without EquipmentSlotGroup (#11079) PaperMC/Paper@8b35adc Fix HelpCommand searching (#11066) PaperMC/Paper@b4f04ff Add Plugin#getDataPath (#11080) PaperMC/Paper@05e5865 Add ItemType#getItemRarity (#11049) PaperMC/Paper@aa929d6 Call PlayerLaunchProjectileEvent for wind charge (#10911) PaperMC/Paper@8b23018 Avoid collision shapes outside world border in findFreePosition PaperMC/Paper@3b45454 Port random ticking optimisation from Moonrise PaperMC/Paper@77fcb29 Apply incremental player/level saving patch PaperMC/Paper@9fd7710 Apply automatic regionfile header recalculation patch PaperMC/Paper@b57b24d Do not try to stop main thread during watchdog shutdown PaperMC/Paper@2cd8c46 Add OMINOUS_ITEM_SPAWNER SpawnReason (#10897) Gale Changes: Dreeam-qwq/Gale@8631b42 Updated Upstream (Paper) Dreeam-qwq/Gale@9b17b16 [ci skip] Add upstream commit msg generator Dreeam-qwq/Gale@75850c6 Updated Upstream (Paper) Dreeam-qwq/Gale@655a887 [ci skip] Update auto upstream Dreeam-qwq/Gale@c38b773 Updated Upstream (Paper) Dreeam-qwq/Gale@65a5517 Add back Optimize random calls in chunk ticking Purpur Changes: PurpurMC/Purpur@458dc18 Updated Upstream (Paper), closes #1556 PurpurMC/Purpur@87cf9f1 Updated Upstream (Paper)
113 lines
7.5 KiB
Diff
113 lines
7.5 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 e8d44e6d5293e4b616597e0d63dda1f379c91a2d..e7d5610de6bda486e512f18bf0684686ed9c08df 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -26,6 +26,7 @@ import java.util.UUID;
|
|
import java.util.function.Function;
|
|
import java.util.function.Predicate;
|
|
import javax.annotation.Nullable;
|
|
+import net.kyori.adventure.text.TextReplacementConfig;
|
|
import net.minecraft.ChatFormatting;
|
|
import net.minecraft.FileUtil;
|
|
import net.minecraft.commands.CommandSourceStack;
|
|
@@ -354,7 +355,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()) {
|
|
@@ -367,7 +368,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
|
|
}
|
|
@@ -626,7 +627,7 @@ public abstract class PlayerList {
|
|
entityplayer.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DISCONNECT); // Paper - Inventory close reason
|
|
}
|
|
|
|
- PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())), entityplayer.quitReason); // Paper - Adventure & Add API for quit reason
|
|
+ PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), getQuitMsg(net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())), 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());
|
|
|
|
@@ -1659,4 +1660,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..bb8173c7a307b980babf858f7b65aaeb70305ecf
|
|
--- /dev/null
|
|
+++ b/src/main/java/org/dreeam/leaf/config/modules/misc/ConnectionMessage.java
|
|
@@ -0,0 +1,31 @@
|
|
+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.addComment(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""");
|
|
+
|
|
+ joinEnabled = config.getBoolean(getBasePath() + ".join.enabled", joinEnabled);
|
|
+ joinMessage = config.getString(getBasePath() + ".join.message", joinMessage, "Join message of player");
|
|
+
|
|
+ quitEnabled = config.getBoolean(getBasePath() + ".quit.enabled", quitEnabled);
|
|
+ quitMessage = config.getString(getBasePath() + ".quit.message", quitMessage, "Quit message of player");
|
|
+ }
|
|
+}
|