mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: ab347c4c9 Updated Upstream (Bukkit/CraftBukkit/Spigot) e2e09326d [Auto] Updated Upstream (Bukkit/CraftBukkit) 778d63b19 Add Gradle usage information to README (#3700) 25c14f76f Fix compile 78c855237 Updated Upstream (CraftBukkit) 8a4af269b fix EntityDismountEvent being fired on gen threads 55fb7da78 Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 d70195264 Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 443fb80bf Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 d75c939e5 Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 1431b1d6c Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 e4f2ec002 Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 122475aee Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 b98da027d Merge branch 'ver/1.16' of https://github.com/PaperMC/Paper into ver/1.16 a8ffecc74 Fix NPE and uuid lookup for player skulls
118 lines
5.9 KiB
Diff
118 lines
5.9 KiB
Diff
From 448a2ac9aa4422c108643494f19c1cdbe900ed3b Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Thu, 6 Jun 2019 17:40:30 -0500
|
|
Subject: [PATCH] Signs allow color codes
|
|
|
|
---
|
|
.../net/minecraft/server/EntityPlayer.java | 1 +
|
|
.../minecraft/server/IChatBaseComponent.java | 1 +
|
|
.../minecraft/server/PlayerConnection.java | 8 +++++++
|
|
.../net/minecraft/server/TileEntitySign.java | 23 +++++++++++++++++++
|
|
.../net/pl3x/purpur/PurpurWorldConfig.java | 3 +++
|
|
5 files changed, 36 insertions(+)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
index 07f8f0fa7d..3556e86fd7 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
@@ -1269,6 +1269,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
public void openSign(TileEntitySign tileentitysign) {
|
|
tileentitysign.a((EntityHuman) this);
|
|
this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition()));
|
|
+ if (world.purpurConfig.signAllowColors) this.playerConnection.sendPacket(tileentitysign.getTranslatedUpdatePacket()); // Purpur
|
|
}
|
|
|
|
public int nextContainerCounter() { // CraftBukkit - void -> int
|
|
diff --git a/src/main/java/net/minecraft/server/IChatBaseComponent.java b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
|
index fd3e6cda6a..750896fc82 100644
|
|
--- a/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
|
+++ b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
|
@@ -344,6 +344,7 @@ public interface IChatBaseComponent extends Message, IChatFormatted, Iterable<IC
|
|
return jsonobject;
|
|
}
|
|
|
|
+ public static String toJson(IChatBaseComponent ichatbasecomponent) { return a(ichatbasecomponent); } // Purpur - OBFHELPER
|
|
public static String a(IChatBaseComponent ichatbasecomponent) {
|
|
return IChatBaseComponent.ChatSerializer.a.toJson(ichatbasecomponent);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
index e2c7ab7f04..be5b5b0573 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -2701,6 +2701,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
}
|
|
}
|
|
// Paper end
|
|
+ // Purpur start
|
|
+ if (worldserver.purpurConfig.signAllowColors) {
|
|
+ lines[i] = astring[i];
|
|
+ if (player.hasPermission("purpur.sign.color")) lines[i] = lines[i].replaceAll("(?i)&([0-9a-fr])", "\u00a7$1");
|
|
+ if (player.hasPermission("purpur.sign.style")) lines[i] = lines[i].replaceAll("(?i)&([l-or])", "\u00a7$1");
|
|
+ if (player.hasPermission("purpur.sign.magic")) lines[i] = lines[i].replaceAll("(?i)&([kr])", "\u00a7$1");
|
|
+ } else
|
|
+ // Purpur end
|
|
lines[i] = SharedConstants.a(astring[i]); //Paper - Replaced with anvil color stripping method to stop exploits that allow colored signs to be created.
|
|
}
|
|
SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.server.getPlayer(this.player), lines);
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntitySign.java b/src/main/java/net/minecraft/server/TileEntitySign.java
|
|
index e1ab299756..1778c5474f 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntitySign.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntitySign.java
|
|
@@ -1,6 +1,14 @@
|
|
package net.minecraft.server;
|
|
|
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
|
+import net.md_5.bungee.api.chat.BaseComponent;
|
|
+import net.md_5.bungee.api.chat.TextComponent;
|
|
+import net.md_5.bungee.chat.BaseComponentSerializer;
|
|
+import net.md_5.bungee.chat.ComponentSerializer;
|
|
+import net.md_5.bungee.chat.TextComponentSerializer;
|
|
+import org.bukkit.craftbukkit.util.CraftChatMessage;
|
|
+
|
|
+import java.util.List;
|
|
import java.util.UUID;
|
|
import javax.annotation.Nullable;
|
|
|
|
@@ -93,6 +101,21 @@ public class TileEntitySign extends TileEntity implements ICommandListener { //
|
|
this.g[i] = null;
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ public PacketPlayOutTileEntityData getTranslatedUpdatePacket() {
|
|
+ NBTTagCompound nbt = save(new NBTTagCompound());
|
|
+ for (int i = 0; i < 4; ++i) {
|
|
+ String line = CraftChatMessage.fromComponent(lines[i]).replace("\u00a7", "&");
|
|
+ if (line.endsWith("&r")) {
|
|
+ line = line.substring(0, line.length() - 2);
|
|
+ }
|
|
+ nbt.setString("Text" + (i + 1), CraftChatMessage.toJSON(CraftChatMessage.fromString(line)[0]));
|
|
+ }
|
|
+ nbt.setString("PurpurEditor", "true");
|
|
+ return new PacketPlayOutTileEntityData(position, 9, nbt);
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
@Nullable
|
|
@Override
|
|
public PacketPlayOutTileEntityData getUpdatePacket() {
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index ed6102b407..5df442c5b8 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -92,9 +92,12 @@ public class PurpurWorldConfig {
|
|
playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack);
|
|
}
|
|
|
|
+ public boolean signAllowColors = false;
|
|
public boolean signRightClickEdit = false;
|
|
private void signSettings() {
|
|
+ signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors);
|
|
signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit);
|
|
+
|
|
}
|
|
|
|
public boolean turtleEggsBreakFromExpOrbs = true;
|
|
--
|
|
2.26.2
|
|
|