diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index 5812d24a01..5afc92fbec 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -15,13 +15,16 @@ import org.bukkit.ChatColor; import org.bukkit.craftbukkit.ChunkCompressionThread; import org.bukkit.Location; import org.bukkit.command.CommandException; +import org.bukkit.conversations.Conversable; import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.inventory.CraftInventoryCustom; import org.bukkit.craftbukkit.inventory.CraftInventoryView; import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.block.CraftBlock; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.TextWrapper; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.Event; @@ -715,7 +718,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener { this.player.compassTarget = new Location(this.getPlayer().getWorld(), packet6.x, packet6.y, packet6.z); } else if (packet instanceof Packet3Chat) { String message = ((Packet3Chat) packet).message; - for (final String line : message.split("\n")) { + boolean first = true; + for (String line : TextWrapper.wrapText(message)) { + if (!first) line = " " + line; + first = false; this.networkManager.queue(new Packet3Chat(line)); } packet = null; diff --git a/src/main/java/org/bukkit/craftbukkit/TextWrapper.java b/src/main/java/org/bukkit/craftbukkit/TextWrapper.java new file mode 100644 index 0000000000..588b59ee1b --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/TextWrapper.java @@ -0,0 +1,20 @@ +package org.bukkit.craftbukkit; + +import org.bukkit.ChatColor; + +public class TextWrapper { + private static final int CHAT_STRING_LENGTH = 119; + + public static String[] wrapText(final String text) { + return insertLineBreaks(text).split("\n"); + } + + public static String insertLineBreaks(String input) { + if (input.length() <= CHAT_STRING_LENGTH) return input; + + String head = input.substring(0, CHAT_STRING_LENGTH); + String tail = ChatColor.getLastColors(head) + input.substring(CHAT_STRING_LENGTH + (input.charAt(CHAT_STRING_LENGTH) == ' ' ? 1 : 0)); + + return head + "\n" + insertLineBreaks(tail); + } +}