Fix right click sign editor color codes

This commit is contained in:
William Blake Galbreath
2020-08-15 05:24:03 -05:00
parent 333fc3eeca
commit ad8b66099f
122 changed files with 80 additions and 54 deletions

View File

@@ -0,0 +1,44 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Sat, 15 Aug 2020 03:49:33 -0500
Subject: [PATCH] Add component util
diff --git a/src/main/java/net/pl3x/purpur/ComponentUtil.java b/src/main/java/net/pl3x/purpur/ComponentUtil.java
new file mode 100644
index 000000000..3f7bc68d1
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/ComponentUtil.java
@@ -0,0 +1,32 @@
+package net.pl3x.purpur;
+
+import net.md_5.bungee.api.chat.BaseComponent;
+import net.md_5.bungee.api.chat.TextComponent;
+import net.md_5.bungee.chat.ComponentSerializer;
+import net.minecraft.server.IChatBaseComponent;
+import net.minecraft.server.MinecraftServer;
+
+import java.util.List;
+
+public class ComponentUtil {
+ public static String fromComponent(IChatBaseComponent component) {
+ String json = "";
+ try {
+ int chop;
+ List<IChatBaseComponent> siblings = component.getSiblings();
+ if (siblings.size() > 0) chop = siblings.get(0).getChatModifier().getColor() == null ? 4 : 2;
+ else chop = component.getChatModifier().getColor() == null ? 2 : 0;
+ json = IChatBaseComponent.ChatSerializer.componentToJson(component);
+ BaseComponent[] parsed = ComponentSerializer.parse(json);
+ return TextComponent.toLegacyText(parsed).substring(chop);
+ } catch (Exception e) {
+ MinecraftServer.LOGGER.warn("There was a problem processing a chat component!");
+ MinecraftServer.LOGGER.warn("We have fallen back to legacy colorless string to prevent real errors");
+ MinecraftServer.LOGGER.warn("Please report this to Purpur!");
+ MinecraftServer.LOGGER.warn("JSON: " + json);
+ MinecraftServer.LOGGER.warn("The following error describes what went wrong:");
+ e.printStackTrace();
+ return component.getString();
+ }
+ }
+}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/src/main/java/net/minecraft/server/BlockEnderChest.java b/src/main/java/net/minecraft/server/BlockEnderChest.java
index af2819bb83..73ab299a40 100644
index 896d99d40..9ab8336df 100644
--- a/src/main/java/net/minecraft/server/BlockEnderChest.java
+++ b/src/main/java/net/minecraft/server/BlockEnderChest.java
@@ -48,6 +48,27 @@ public class BlockEnderChest extends BlockChestAbstract<TileEntityEnderChest> im
@@ -37,7 +37,7 @@ index af2819bb83..73ab299a40 100644
}, BlockEnderChest.e));
entityhuman.a(StatisticList.OPEN_ENDERCHEST);
diff --git a/src/main/java/net/minecraft/server/InventoryEnderChest.java b/src/main/java/net/minecraft/server/InventoryEnderChest.java
index bf8c5436b6..d147377e5d 100644
index bf8c5436b..d147377e5 100644
--- a/src/main/java/net/minecraft/server/InventoryEnderChest.java
+++ b/src/main/java/net/minecraft/server/InventoryEnderChest.java
@@ -20,7 +20,7 @@ public class InventoryEnderChest extends InventorySubcontainer {
@@ -50,7 +50,7 @@ index bf8c5436b6..d147377e5d 100644
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/server/TileEntityBarrel.java b/src/main/java/net/minecraft/server/TileEntityBarrel.java
index f70faa39a8..1d2c8aef9c 100644
index c5551a9e9..03bde6067 100644
--- a/src/main/java/net/minecraft/server/TileEntityBarrel.java
+++ b/src/main/java/net/minecraft/server/TileEntityBarrel.java
@@ -55,7 +55,7 @@ public class TileEntityBarrel extends TileEntityLootable {
@@ -80,7 +80,7 @@ index f70faa39a8..1d2c8aef9c 100644
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index 1d00832bff..803a7ff92a 100644
index 1d00832bf..803a7ff92 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -7,6 +7,7 @@ import org.bukkit.Bukkit;
@@ -121,7 +121,7 @@ index 1d00832bff..803a7ff92a 100644
+ }
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
index 8c714c7430..cae362bae9 100644
index 8c714c743..cae362bae 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
@@ -198,8 +198,10 @@ public class CraftContainer extends Container {
@@ -137,7 +137,7 @@ index 8c714c7430..cae362bae9 100644
case DISPENSER:
case DROPPER:
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
index 7266313482..a451000340 100644
index 726631348..a45100034 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
@@ -81,7 +81,7 @@ public class CraftInventory implements Inventory {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Advancement API
diff --git a/src/main/java/net/minecraft/server/Advancement.java b/src/main/java/net/minecraft/server/Advancement.java
index c405047c..384d4090 100644
index c405047c0..384d4090f 100644
--- a/src/main/java/net/minecraft/server/Advancement.java
+++ b/src/main/java/net/minecraft/server/Advancement.java
@@ -64,7 +64,7 @@ public class Advancement {
@@ -18,7 +18,7 @@ index c405047c..384d4090 100644
}
diff --git a/src/main/java/net/minecraft/server/AdvancementDisplay.java b/src/main/java/net/minecraft/server/AdvancementDisplay.java
index b0d4b7a6..ac4fac89 100644
index b0d4b7a67..ac4fac898 100644
--- a/src/main/java/net/minecraft/server/AdvancementDisplay.java
+++ b/src/main/java/net/minecraft/server/AdvancementDisplay.java
@@ -15,10 +15,11 @@ public class AdvancementDisplay {
@@ -66,7 +66,7 @@ index b0d4b7a6..ac4fac89 100644
return this.h;
}
diff --git a/src/main/java/net/minecraft/server/AdvancementFrameType.java b/src/main/java/net/minecraft/server/AdvancementFrameType.java
index 90b78e49..9a3a53cf 100644
index 90b78e49c..9a3a53cf3 100644
--- a/src/main/java/net/minecraft/server/AdvancementFrameType.java
+++ b/src/main/java/net/minecraft/server/AdvancementFrameType.java
@@ -1,15 +1,26 @@
@@ -99,7 +99,7 @@ index 90b78e49..9a3a53cf 100644
this.e = i;
this.f = enumchatformat;
diff --git a/src/main/java/net/minecraft/server/CriterionTrigger.java b/src/main/java/net/minecraft/server/CriterionTrigger.java
index cfb420a9..6fd3671c 100644
index cfb420a9c..6fd3671c3 100644
--- a/src/main/java/net/minecraft/server/CriterionTrigger.java
+++ b/src/main/java/net/minecraft/server/CriterionTrigger.java
@@ -26,6 +26,7 @@ public interface CriterionTrigger<T extends CriterionInstance> {
@@ -111,7 +111,7 @@ index cfb420a9..6fd3671c 100644
return this.a;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java
index a5aadf28..b0a7092d 100644
index a5aadf285..b0a7092d6 100644
--- a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java
+++ b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java
@@ -27,4 +27,11 @@ public class CraftAdvancement implements org.bukkit.advancement.Advancement {
@@ -128,7 +128,7 @@ index a5aadf28..b0a7092d 100644
}
diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java
new file mode 100644
index 00000000..1cbb1e67
index 000000000..1cbb1e67b
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java
@@ -0,0 +1,47 @@

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Llama API
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
index d4175f2d..e90ff597 100644
index d4175f2da..e90ff597d 100644
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
@@ -13,7 +13,8 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
@@ -73,7 +73,7 @@ index d4175f2d..e90ff597 100644
}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java b/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java
index 1b29ca2c..47ffa669 100644
index 1b29ca2ca..47ffa6696 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java
@@ -6,7 +6,7 @@ import java.util.List;
@@ -102,7 +102,7 @@ index 1b29ca2c..47ffa669 100644
double d0 = this.a.h((Entity) this.a.fD());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
index 3f94c5a9..a0276348 100644
index 3f94c5a92..a02763480 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
@@ -65,4 +65,48 @@ public class CraftLlama extends CraftChestedHorse implements Llama, CraftRangedE

View File

@@ -193,7 +193,7 @@ index d32f423c5..6c1438f7d 100644
if (from.getX() != Double.MAX_VALUE) {
Location oldTo = to.clone();
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 92646b86b..eaf13fb15 100644
index abc6b6548..5cc5b609c 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -843,7 +843,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] ItemFactory#getMonsterEgg
diff --git a/src/main/java/net/minecraft/server/ItemMonsterEgg.java b/src/main/java/net/minecraft/server/ItemMonsterEgg.java
index 6d8321080..793e42072 100644
index 76c585299..f543bd84f 100644
--- a/src/main/java/net/minecraft/server/ItemMonsterEgg.java
+++ b/src/main/java/net/minecraft/server/ItemMonsterEgg.java
@@ -9,7 +9,7 @@ import javax.annotation.Nullable;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index eaf13fb15..18e8e36d7 100644
index 5cc5b609c..699a03a9e 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1053,12 +1053,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@@ -95,7 +95,7 @@ index a5718af9b..b6b4c8c49 100644
return this.E;
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 18e8e36d7..17105c9a1 100644
index 699a03a9e..004cc8616 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -2530,6 +2530,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {

View File

@@ -5,17 +5,17 @@ Subject: [PATCH] Signs allow color codes
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 2738194fc..eaca7b445 100644
index 2738194fc..66e786b25 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1245,6 +1245,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -1243,6 +1243,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@Override
public void openSign(TileEntitySign tileentitysign) {
+ if (world.purpurConfig.signAllowColors) this.playerConnection.sendPacket(tileentitysign.getTranslatedUpdatePacket()); // Purpur
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/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index a01b80327..c9798d775 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -36,25 +36,10 @@ index a01b80327..c9798d775 100644
}
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 316766970..db81ee600 100644
index 316766970..852bb5db8 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 { //
@@ -93,6 +93,18 @@ public class TileEntitySign extends TileEntity implements ICommandListener { //
this.g[i] = null;
}
@@ -62,11 +47,8 @@ index 316766970..db81ee600 100644
+ 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]));
+ String line = net.pl3x.purpur.ComponentUtil.fromComponent(lines[i]).replace("\u00a7", "&");
+ nbt.setString("Text" + (i + 1), IChatBaseComponent.ChatSerializer.componentToJson(org.bukkit.craftbukkit.util.CraftChatMessage.fromString(line)[0]));
+ }
+ nbt.setString("PurpurEditor", "true");
+ return new PacketPlayOutTileEntityData(position, 9, nbt);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Players should not cram to death
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index eaca7b445..869ba9679 100644
index 66e786b25..47f48d3b7 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1219,7 +1219,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {

View File

@@ -126,7 +126,7 @@ index 34e08dda2..6bb73f869 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 869ba9679..10c9905c5 100644
index 47f48d3b7..e524705bf 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1771,8 +1771,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {

View File

@@ -233,7 +233,7 @@ index beaea041d..ce8834980 100644
return iblockdata.r(iblockaccess, blockposition) ? false : (iblockdata.isPowerSource() ? false : (!fluid.isEmpty() ? false : (iblockdata.a((Tag) TagsBlock.PREVENT_MOB_SPAWNING_INSIDE) ? false : !entitytypes.a(iblockdata))));
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e91e5c766..489ae5459 100644
index e9e55c6f1..db372797a 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1430,6 +1430,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {

View File

@@ -49,7 +49,7 @@ index 120bf8436..848a185c0 100644
return true;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 489ae5459..90b4beba7 100644
index db372797a..6cc37f5b9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1505,4 +1505,14 @@ public abstract class World implements GeneratorAccess, AutoCloseable {

Some files were not shown because too many files have changed in this diff Show More