
net.minecraft.server.NBTCompressedStreamTools Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of walk-server Show documentation
Show all versions of walk-server Show documentation
A spigot fork to kotlin structure and news.
package net.minecraft.server;
import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class NBTCompressedStreamTools {
public static NBTTagCompound a(InputStream inputstream) throws IOException {
DataInputStream datainputstream = new DataInputStream(new BufferedInputStream(new GZIPInputStream(inputstream)));
NBTTagCompound nbttagcompound;
try {
nbttagcompound = a(datainputstream, NBTReadLimiter.a);
} finally {
datainputstream.close();
}
return nbttagcompound;
}
public static void a(NBTTagCompound nbttagcompound, OutputStream outputstream) throws IOException {
try (DataOutputStream dataoutputstream = new DataOutputStream(new BufferedOutputStream(new GZIPOutputStream(outputstream)))) {
a(nbttagcompound, (DataOutput) dataoutputstream);
}
}
// ChestMC start - readable methods.
public static void save(NBTTagCompound nbttagcompound, OutputStream outputstream) throws IOException {
a(nbttagcompound, outputstream);
}
public static NBTTagCompound load(InputStream inputstream) throws IOException {
return a(inputstream);
}
// ChestMC end.
public static NBTTagCompound a(DataInputStream datainputstream) throws IOException {
return a(datainputstream, NBTReadLimiter.a);
}
public static NBTTagCompound a(DataInput datainput, NBTReadLimiter nbtreadlimiter) throws IOException {
// Spigot start
if (datainput instanceof io.netty.buffer.ByteBufInputStream) {
datainput = new DataInputStream(new org.spigotmc.LimitStream((InputStream) datainput, nbtreadlimiter));
}
// Spigot end
NBTBase nbtbase = a(datainput, 0, nbtreadlimiter);
if (nbtbase instanceof NBTTagCompound) {
return (NBTTagCompound) nbtbase;
} else {
throw new IOException("Root tag must be a named compound tag");
}
}
public static void a(NBTTagCompound nbttagcompound, DataOutput dataoutput) throws IOException {
a((NBTBase) nbttagcompound, dataoutput);
}
private static void a(NBTBase nbtbase, DataOutput dataoutput) throws IOException {
dataoutput.writeByte(nbtbase.getTypeId());
if (nbtbase.getTypeId() != 0) {
dataoutput.writeUTF("");
nbtbase.write(dataoutput);
}
}
private static NBTBase a(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException {
byte b0 = datainput.readByte();
if (b0 == 0) {
return new NBTTagEnd();
} else {
datainput.readUTF();
NBTBase nbtbase = NBTBase.createTag(b0);
try {
nbtbase.load(datainput, i, nbtreadlimiter);
return nbtbase;
} catch (IOException ioexception) {
CrashReport crashreport = CrashReport.a(ioexception, "Loading NBT data");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("NBT Tag");
crashreportsystemdetails.a("Tag name", "[UNNAMED TAG]");
crashreportsystemdetails.a("Tag type", b0);
throw new ReportedException(crashreport);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy