mirror of
https://github.com/Eaglercraft-Archive/EaglercraftX-1.8-workspace.git
synced 2026-07-18 03:44:01 +02:00
u37
This commit is contained in:
+129
@@ -0,0 +1,129 @@
|
||||
package net.minecraft.nbt;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.DataInput;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutput;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import net.lax1dude.eaglercraft.v1_8.EaglerZLIB;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraft.util.ReportedException;
|
||||
|
||||
/**+
|
||||
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
|
||||
*
|
||||
* Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!"
|
||||
* Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team
|
||||
*
|
||||
* EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
public class CompressedStreamTools {
|
||||
/**+
|
||||
* Load the gzipped compound from the inputstream.
|
||||
*/
|
||||
public static NBTTagCompound readCompressed(InputStream is) throws IOException {
|
||||
DataInputStream datainputstream = new DataInputStream(
|
||||
new BufferedInputStream(EaglerZLIB.newGZIPInputStream(is)));
|
||||
|
||||
NBTTagCompound nbttagcompound;
|
||||
try {
|
||||
nbttagcompound = read(datainputstream, NBTSizeTracker.INFINITE);
|
||||
} finally {
|
||||
datainputstream.close();
|
||||
}
|
||||
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
/**+
|
||||
* Write the compound, gzipped, to the outputstream.
|
||||
*/
|
||||
public static void writeCompressed(NBTTagCompound outputStream, OutputStream parOutputStream) throws IOException {
|
||||
DataOutputStream dataoutputstream = new DataOutputStream(
|
||||
new BufferedOutputStream(EaglerZLIB.newGZIPOutputStream(parOutputStream)));
|
||||
|
||||
try {
|
||||
write(outputStream, (DataOutput) dataoutputstream);
|
||||
} finally {
|
||||
dataoutputstream.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**+
|
||||
* Reads the given DataInput, constructs, and returns an
|
||||
* NBTTagCompound with the data from the DataInput
|
||||
*/
|
||||
public static NBTTagCompound read(DataInputStream inputStream) throws IOException {
|
||||
/**+
|
||||
* Reads the given DataInput, constructs, and returns an
|
||||
* NBTTagCompound with the data from the DataInput
|
||||
*/
|
||||
return read(inputStream, NBTSizeTracker.INFINITE);
|
||||
}
|
||||
|
||||
/**+
|
||||
* Reads the given DataInput, constructs, and returns an
|
||||
* NBTTagCompound with the data from the DataInput
|
||||
*/
|
||||
public static NBTTagCompound read(DataInput parDataInput, NBTSizeTracker parNBTSizeTracker) throws IOException {
|
||||
NBTBase nbtbase = func_152455_a(parDataInput, 0, parNBTSizeTracker);
|
||||
if (nbtbase instanceof NBTTagCompound) {
|
||||
return (NBTTagCompound) nbtbase;
|
||||
} else {
|
||||
throw new IOException("Root tag must be a named compound tag");
|
||||
}
|
||||
}
|
||||
|
||||
public static void write(NBTTagCompound parNBTTagCompound, DataOutput parDataOutput) throws IOException {
|
||||
writeTag(parNBTTagCompound, parDataOutput);
|
||||
}
|
||||
|
||||
private static void writeTag(NBTBase parNBTBase, DataOutput parDataOutput) throws IOException {
|
||||
parDataOutput.writeByte(parNBTBase.getId());
|
||||
if (parNBTBase.getId() != 0) {
|
||||
parDataOutput.writeUTF("");
|
||||
parNBTBase.write(parDataOutput);
|
||||
}
|
||||
}
|
||||
|
||||
private static NBTBase func_152455_a(DataInput parDataInput, int parInt1, NBTSizeTracker parNBTSizeTracker)
|
||||
throws IOException {
|
||||
byte b0 = parDataInput.readByte();
|
||||
if (b0 == 0) {
|
||||
return new NBTTagEnd();
|
||||
} else {
|
||||
parDataInput.readUTF();
|
||||
NBTBase nbtbase = NBTBase.createNewByType(b0);
|
||||
|
||||
try {
|
||||
nbtbase.read(parDataInput, parInt1, parNBTSizeTracker);
|
||||
return nbtbase;
|
||||
} catch (IOException ioexception) {
|
||||
CrashReport crashreport = CrashReport.makeCrashReport(ioexception, "Loading NBT data");
|
||||
CrashReportCategory crashreportcategory = crashreport.makeCategory("NBT Tag");
|
||||
crashreportcategory.addCrashSection("Tag name", "[UNNAMED TAG]");
|
||||
crashreportcategory.addCrashSection("Tag type", Byte.valueOf(b0));
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user