Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
Glavo committed Oct 17, 2024
1 parent 5ef24ff commit 606ceab
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
23 changes: 19 additions & 4 deletions HMCL/src/main/java/org/jackhuang/hmcl/ui/nbt/NBTFileType.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
import com.github.steveice10.opennbt.tag.builtin.IntTag;
import com.github.steveice10.opennbt.tag.builtin.ListTag;
import com.github.steveice10.opennbt.tag.builtin.Tag;
import org.apache.commons.io.input.BoundedInputStream;
import org.apache.commons.compress.utils.BoundedInputStream;
import org.jackhuang.hmcl.util.io.FileUtils;

import java.io.*;
import java.util.Arrays;
import java.util.zip.GZIPInputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
Expand All @@ -17,8 +18,22 @@ public enum NBTFileType {
COMPRESSED("dat", "dat_old") {
@Override
public Tag read(File file) throws IOException {
try (InputStream in = new GZIPInputStream(new FileInputStream(file))) {
Tag tag = NBTIO.readTag(in);
try (BufferedInputStream fileInputStream = new BufferedInputStream(new FileInputStream(file))) {
fileInputStream.mark(3);
byte[] header = new byte[3];
if (fileInputStream.read(header) < 3) {
throw new IOException("File is too small");
}
fileInputStream.reset();

InputStream input;
if (Arrays.equals(header, new byte[]{0x1f, (byte) 0x8b, 0x08})) {
input = new GZIPInputStream(fileInputStream);
} else {
input = fileInputStream;
}

Tag tag = NBTIO.readTag(input);
if (!(tag instanceof CompoundTag))
throw new IOException("Unexpected tag: " + tag);
return tag;
Expand Down Expand Up @@ -62,7 +77,7 @@ public Tag read(File file) throws IOException {

InputStream input = new ByteArrayInputStream(buffer);
input.skip(5);
input = BoundedInputStream.builder().setInputStream(input).setMaxCount(chunkLength - 1).get();
input = new BoundedInputStream(input, chunkLength - 1);

switch (buffer[4]) {
case 0x01:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@
* @author Glavo
*/
final class CallerFinder {
private static final StackWalker WALKER = StackWalker.getInstance();
private static final String PACKAGE_PREFIX = CallerFinder.class.getPackageName() + ".";
private static final Predicate<StackWalker.StackFrame> PREDICATE = stackFrame -> !stackFrame.getClassName().startsWith(PACKAGE_PREFIX);
private static final Function<Stream<StackWalker.StackFrame>, Optional<StackWalker.StackFrame>> FUNCTION = stream -> stream.filter(PREDICATE).findFirst();
private static final Function<StackWalker.StackFrame, String> FRAME_MAPPING = frame -> frame.getClassName() + "." + frame.getMethodName();;
private static final Function<StackWalker.StackFrame, String> FRAME_MAPPING = frame -> frame.getClassName() + "." + frame.getMethodName();

static String getCaller() {
return WALKER.walk(FUNCTION).map(FRAME_MAPPING).orElse(null);
return StackWalker.getInstance().walk(FUNCTION).map(FRAME_MAPPING).orElse(null);
}

private CallerFinder() {
Expand Down

0 comments on commit 606ceab

Please sign in to comment.