@@ -0,0 +1,1524 @@
+package com.gmail.zahusek.essentials;%0A%0Aimport net.minecraft.util.io.netty.channel.Channel;%0A%0Aimport org.bukkit.ChatColor;%0Aimport org.bukkit.block.Block;%0Aimport org.bukkit.block.Sign;%0Aimport org.bukkit.entity.Player;%0A%0Aimport com.gmail.zahusek.protocols.Reflection;%0Aimport com.gmail.zahusek.protocols.Reflection.FieldAccessor;%0Aimport com.gmail.zahusek.protocols.TinyProtocol.PacketListener;%0A%0Apublic class PacketPlayInUpdateSign extends PacketListener %7B%0A%09%0A%09private Class%3C?%3E packet = Reflection.getClass(%22%7Bnms%7D.PacketPlayInUpdateSign%22);%0A%09private FieldAccessor%3CInteger%3E x = Reflection.getField(packet, int.class, 0);%0A%09private FieldAccessor%3CInteger%3E y = Reflection.getField(packet, int.class, 1);%0A%09private FieldAccessor%3CInteger%3E z = Reflection.getField(packet, int.class, 2);%0A%09private FieldAccessor%3CString%5B%5D%3E l = Reflection.getField(packet, String%5B%5D.class, 0);%0A%09%0A%09@Override%0A%09public Object onPacketInAsync(Player sender, Channel channel, Object packet) %7B%0A%09%09if (!this.packet.isInstance(packet)) return packet;%0A%09%09%0A%09%09int x = this.x.get(packet);%0A%09%09int y = this.y.get(packet);%0A%09%09int z = this.z.get(packet);%0A%09%09String%5B%5D l = this.l.get(packet);%0A%09%09%0A%09%09Block b = sender.getWorld().getBlockAt(x, y, z);%0A%09%09Sign s = (Sign) b.getState();%0A%09%09%0A%09%09for(int i = 0; i %3C l.length; i ++)%7B%0A%09%09%09if(sender.hasPermission(%22essentials.signs.color%22) %7C%7C sender.hasPermission(%22signgui.color%22))%0A%09%09%09%09l%5Bi%5D = ChatColor.translateAlternateColorCodes('&', l%5Bi%5D);%0A%09%09%09else %0A%09%09%09%09l%5Bi%5D = ChatColor.stripColor(l%5Bi%5D);%0A%09%09%09s.setLine(i, l%5Bi%5D);%0A%09%09%7D%0A%09%09s.update();%0A%09%09return packet;%0A%09%7D%0A%7D%0A

Create PacketPlayInUpdateSign.java