/** Updates Client side signs */ public void handleUpdateSign(Packet130UpdateSign par1Packet130UpdateSign) { WorldServer worldserver = mcServer.worldServerForDimension(playerEntity.dimension); if (worldserver.blockExists( par1Packet130UpdateSign.xPosition, par1Packet130UpdateSign.yPosition, par1Packet130UpdateSign.zPosition)) { TileEntity tileentity = worldserver.getBlockTileEntity( par1Packet130UpdateSign.xPosition, par1Packet130UpdateSign.yPosition, par1Packet130UpdateSign.zPosition); if (tileentity instanceof TileEntitySign) { TileEntitySign tileentitysign = (TileEntitySign) tileentity; if (!tileentitysign.isEditable()) { mcServer.logWarningMessage( (new StringBuilder()) .append("Player ") .append(playerEntity.username) .append(" just tried to change non-editable sign") .toString()); return; } } for (int i = 0; i < 4; i++) { boolean flag = true; if (par1Packet130UpdateSign.signLines[i].length() > 15) { flag = false; } else { for (int l = 0; l < par1Packet130UpdateSign.signLines[i].length(); l++) { if (ChatAllowedCharacters.allowedCharacters.indexOf( par1Packet130UpdateSign.signLines[i].charAt(l)) < 0) { flag = false; } } } if (!flag) { par1Packet130UpdateSign.signLines[i] = "!?"; } } if (tileentity instanceof TileEntitySign) { int j = par1Packet130UpdateSign.xPosition; int k = par1Packet130UpdateSign.yPosition; int i1 = par1Packet130UpdateSign.zPosition; TileEntitySign tileentitysign1 = (TileEntitySign) tileentity; System.arraycopy(par1Packet130UpdateSign.signLines, 0, tileentitysign1.signText, 0, 4); tileentitysign1.onInventoryChanged(); worldserver.markBlockNeedsUpdate(j, k, i1); } } }