3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-12-26 08:10:09 +01:00

Merge pull request #1576 from astei/remove-unneeded-indirection

Remove unneeded indirection
Dieser Commit ist enthalten in:
Myles 2019-12-13 08:30:22 +00:00 committet von GitHub
Commit d5907711e1
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23
2 geänderte Dateien mit 9 neuen und 15 gelöschten Zeilen

Datei anzeigen

@ -1,14 +1,15 @@
package us.myles.ViaVersion.api.type.types; package us.myles.ViaVersion.api.type.types;
import com.google.common.base.Charsets;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.Type;
import java.nio.charset.StandardCharsets;
public class StringType extends Type<String> { public class StringType extends Type<String> {
// String#length() (used to limit the string in Minecraft source code) uses char[]#length // String#length() (used to limit the string in Minecraft source code) uses char[]#length
private static final int maxJavaCharUtf8Length = Character.toString(Character.MAX_VALUE) private static final int maxJavaCharUtf8Length = Character.toString(Character.MAX_VALUE)
.getBytes(Charsets.UTF_8).length; .getBytes(StandardCharsets.UTF_8).length;
public StringType() { public StringType() {
super(String.class); super(String.class);
@ -21,9 +22,9 @@ public class StringType extends Type<String> {
Preconditions.checkArgument(len <= Short.MAX_VALUE * maxJavaCharUtf8Length, Preconditions.checkArgument(len <= Short.MAX_VALUE * maxJavaCharUtf8Length,
"Cannot receive string longer than Short.MAX_VALUE * " + maxJavaCharUtf8Length + " bytes (got %s bytes)", len); "Cannot receive string longer than Short.MAX_VALUE * " + maxJavaCharUtf8Length + " bytes (got %s bytes)", len);
byte[] b = new byte[len]; String string = buffer.toString(buffer.readerIndex(), len, StandardCharsets.UTF_8);
buffer.readBytes(b); buffer.skipBytes(len);
String string = new String(b, Charsets.UTF_8);
Preconditions.checkArgument(string.length() <= Short.MAX_VALUE, Preconditions.checkArgument(string.length() <= Short.MAX_VALUE,
"Cannot receive string longer than Short.MAX_VALUE characters (got %s bytes)", string.length()); "Cannot receive string longer than Short.MAX_VALUE characters (got %s bytes)", string.length());
@ -34,7 +35,7 @@ public class StringType extends Type<String> {
public void write(ByteBuf buffer, String object) throws Exception { public void write(ByteBuf buffer, String object) throws Exception {
Preconditions.checkArgument(object.length() <= Short.MAX_VALUE, "Cannot send string longer than Short.MAX_VALUE (got %s characters)", object.length()); Preconditions.checkArgument(object.length() <= Short.MAX_VALUE, "Cannot send string longer than Short.MAX_VALUE (got %s characters)", object.length());
byte[] b = object.getBytes(Charsets.UTF_8); byte[] b = object.getBytes(StandardCharsets.UTF_8);
Type.VAR_INT.write(buffer, b.length); Type.VAR_INT.write(buffer, b.length);
buffer.writeBytes(b); buffer.writeBytes(b);
} }

Datei anzeigen

@ -36,10 +36,7 @@ public class NBTType extends Type<CompoundTag> {
return null; return null;
} else { } else {
buffer.readerIndex(readerIndex); buffer.readerIndex(readerIndex);
ByteBufInputStream bytebufStream = new ByteBufInputStream(buffer); return (CompoundTag) NBTIO.readTag((DataInput) new ByteBufInputStream(buffer));
try (DataInputStream dataInputStream = new DataInputStream(bytebufStream)) {
return (CompoundTag) NBTIO.readTag((DataInput) dataInputStream);
}
} }
} }
@ -49,11 +46,7 @@ public class NBTType extends Type<CompoundTag> {
buffer.writeByte(0); buffer.writeByte(0);
} else { } else {
ByteBufOutputStream bytebufStream = new ByteBufOutputStream(buffer); ByteBufOutputStream bytebufStream = new ByteBufOutputStream(buffer);
DataOutputStream dataOutputStream = new DataOutputStream(bytebufStream); NBTIO.writeTag((DataOutput) bytebufStream, object);
NBTIO.writeTag((DataOutput) dataOutputStream, object);
dataOutputStream.close();
} }
} }
} }