diff --git a/src/pocketmine/network/mcpe/NetworkBinaryStream.php b/src/pocketmine/network/mcpe/NetworkBinaryStream.php index 69f7cd9ce..ca1dd4062 100644 --- a/src/pocketmine/network/mcpe/NetworkBinaryStream.php +++ b/src/pocketmine/network/mcpe/NetworkBinaryStream.php @@ -148,7 +148,17 @@ class NetworkBinaryStream extends BinaryStream{ $nbt = self::$itemNbtSerializer->write($item->getNamedTag()); $nbtLen = strlen($nbt); if($nbtLen > 32767){ - throw new \InvalidArgumentException("NBT encoded length must be < 32768, got $nbtLen bytes"); + /* + * TODO: Workaround bug in the protocol (overflow) + * Encoded tags larger than 32KB overflow the length field, so we can't send these over network. + * However, it's unreasonable to randomly throw this burden off onto users by crashing their servers, so the + * next best solution is to just not send the NBT. This is also not an ideal solution (books and the like + * with too-large tags won't work on the client side) but it's better than crashing the server or client due + * to a protocol bug. Mojang have confirmed this will be resolved by a future MCPE release, so we'll just + * work around this problem until then. + */ + $nbt = ""; + $nbtLen = 0; } }