From 93b45bffed67e1b318921ad40a8e889f488caa66 Mon Sep 17 00:00:00 2001 From: Toad-Dev <748280+toad-dev@users.noreply.github.com> Date: Fri, 17 Dec 2021 10:39:16 -0800 Subject: [PATCH] Don't use apache commons-codec to encode NBT Hex. Causes NoClassDefFoundError on dedicated server. I did test this to make sure it output the same format as old implementation (hex with lowercase alphas). --- .../java/dan200/computercraft/shared/util/NBTUtil.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/dan200/computercraft/shared/util/NBTUtil.java b/src/main/java/dan200/computercraft/shared/util/NBTUtil.java index 9c30d5ce8..4b83fe47e 100644 --- a/src/main/java/dan200/computercraft/shared/util/NBTUtil.java +++ b/src/main/java/dan200/computercraft/shared/util/NBTUtil.java @@ -7,7 +7,6 @@ package dan200.computercraft.shared.util; import dan200.computercraft.ComputerCraft; import net.minecraft.nbt.*; -import org.apache.commons.codec.binary.Hex; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -177,7 +176,7 @@ public final class NBTUtil DataOutput output = new DataOutputStream( new DigestOutputStream( digest ) ); NbtIo.write( tag, output ); byte[] hash = digest.digest(); - return new String( Hex.encodeHex( hash ) ); + return encodeHex( hash ); } catch( NoSuchAlgorithmException | IOException e ) { @@ -186,6 +185,13 @@ public final class NBTUtil } } + private static String encodeHex( byte[] bytes ) + { + StringBuilder result = new StringBuilder(); + for ( byte b : bytes ) result.append( String.format( "%02x", b ) ); + return result.toString(); + } + private static final class DigestOutputStream extends OutputStream { private final MessageDigest digest;