Use setMessage instead of arraycopy

setMessage affects messages, filteredMessage, and renderMessages, we were only doing an arraycopy for messages

fixes #7774
This commit is contained in:
Jason Penilla 2022-04-28 19:51:06 -07:00 committed by Jason
parent ce059b4f99
commit 6f5e6c60d3
22 changed files with 61 additions and 59 deletions

View file

@ -2285,7 +2285,7 @@ index 446fdca49a5a6999626a7ee3a1d5c168b15a09dd..f9863e138994f6c7a7975a852f106faa
public boolean isOp() {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c9e069fac 100644
index 2577a135bb88adc9000ab67477846c6466d973e7..7ff1fcfdc87bcd299da46fe8a7e090c118a42cfa 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -272,14 +272,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -2398,7 +2398,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
@Override
public void setCompassTarget(Location loc) {
if (this.getHandle().connection == null) return;
@@ -620,6 +656,33 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -620,6 +656,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
@ -2424,7 +2424,9 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
+ SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState());
+ sign.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
+ sign.setHasGlowingText(hasGlowingText);
+ System.arraycopy(components, 0, sign.messages, 0, sign.messages.length);
+ for (int i = 0; i < components.length; i++) {
+ sign.setMessage(i, components[i]);
+ }
+
+ getHandle().connection.send(sign.getUpdatePacket());
+ }
@ -2432,7 +2434,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
@Override
public void sendSignChange(Location loc, String[] lines) {
this.sendSignChange(loc, lines, DyeColor.BLACK);
@@ -647,14 +710,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -647,14 +712,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
Component[] components = CraftSign.sanitizeLines(lines);
@ -2450,7 +2452,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
}
@Override
@@ -1425,7 +1489,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1425,7 +1491,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url) {
@ -2459,7 +2461,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
}
@Override
@@ -1440,7 +1504,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1440,7 +1506,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url, byte[] hash, boolean force) {
@ -2468,7 +2470,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
}
@Override
@@ -1456,6 +1520,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1456,6 +1522,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@ -2490,7 +2492,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
public void addChannel(String channel) {
Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel);
channel = StandardMessenger.validateAndCorrectChannel(channel);
@@ -1860,6 +1939,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1860,6 +1941,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return (this.getHandle().clientViewDistance == null) ? Bukkit.getViewDistance() : this.getHandle().clientViewDistance;
}
@ -2503,7 +2505,7 @@ index 2577a135bb88adc9000ab67477846c6466d973e7..09f43730e40b4ab9f0a6c8d175cbcf7c
@Override
public int getPing() {
return this.getHandle().latency;
@@ -1905,6 +1990,194 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1905,6 +1992,194 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().allowsListing();
}