84 lines
1.9 KiB
Java
84 lines
1.9 KiB
Java
|
package net.lax1dude.eaglercraft.v1_8;
|
||
|
|
||
|
import java.io.ByteArrayInputStream;
|
||
|
import java.io.ByteArrayOutputStream;
|
||
|
import java.io.IOException;
|
||
|
import java.io.InputStream;
|
||
|
|
||
|
/**
|
||
|
* Copyright (c) 2022 LAX1DUDE. All Rights Reserved.
|
||
|
*
|
||
|
* WITH THE EXCEPTION OF PATCH FILES, MINIFIED JAVASCRIPT, AND ALL FILES
|
||
|
* NORMALLY FOUND IN AN UNMODIFIED MINECRAFT RESOURCE PACK, YOU ARE NOT ALLOWED
|
||
|
* TO SHARE, DISTRIBUTE, OR REPURPOSE ANY FILE USED BY OR PRODUCED BY THE
|
||
|
* SOFTWARE IN THIS REPOSITORY WITHOUT PRIOR PERMISSION FROM THE PROJECT AUTHOR.
|
||
|
*
|
||
|
* NOT FOR COMMERCIAL OR MALICIOUS USE
|
||
|
*
|
||
|
* (please read the 'LICENSE' file this repo's root directory for more info)
|
||
|
*
|
||
|
*/
|
||
|
public class EaglerInputStream extends ByteArrayInputStream {
|
||
|
|
||
|
public EaglerInputStream(byte[] buf) {
|
||
|
super(buf);
|
||
|
}
|
||
|
|
||
|
public EaglerInputStream(byte[] buf, int off, int len) {
|
||
|
super(buf, off, len);
|
||
|
}
|
||
|
|
||
|
public static byte[] inputStreamToBytesQuiet(InputStream is) {
|
||
|
try {
|
||
|
return inputStreamToBytes(is);
|
||
|
}catch(IOException ex) {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static byte[] inputStreamToBytes(InputStream is) throws IOException {
|
||
|
if(is instanceof EaglerInputStream) {
|
||
|
return ((EaglerInputStream) is).getAsArray();
|
||
|
}else if(is instanceof ByteArrayInputStream) {
|
||
|
byte[] ret = new byte[is.available()];
|
||
|
is.read(ret);
|
||
|
return ret;
|
||
|
}else {
|
||
|
ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
|
||
|
byte[] buf = new byte[1024];
|
||
|
int i;
|
||
|
while((i = is.read(buf)) != -1) {
|
||
|
os.write(buf, 0, i);
|
||
|
}
|
||
|
return os.toByteArray();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public byte[] getAsArray() {
|
||
|
if(pos == 0 && count == buf.length) {
|
||
|
return buf;
|
||
|
}else {
|
||
|
byte[] ret = new byte[count];
|
||
|
System.arraycopy(buf, pos, ret, 0, count);
|
||
|
return ret;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public boolean canUseArrayDirectly() {
|
||
|
return pos == 0 && count == buf.length;
|
||
|
}
|
||
|
|
||
|
public int getPosition() {
|
||
|
return pos;
|
||
|
}
|
||
|
|
||
|
public int getMark() {
|
||
|
return mark;
|
||
|
}
|
||
|
|
||
|
public int getCount() {
|
||
|
return count;
|
||
|
}
|
||
|
|
||
|
}
|