96 lines
2.5 KiB
Java
96 lines
2.5 KiB
Java
package net.minecraft.server.packs;
|
|
|
|
import com.google.gson.JsonObject;
|
|
import com.mojang.logging.LogUtils;
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.nio.charset.StandardCharsets;
|
|
import net.minecraft.server.packs.metadata.MetadataSectionSerializer;
|
|
import net.minecraft.server.packs.resources.IoSupplier;
|
|
import net.minecraft.util.GsonHelper;
|
|
import org.jetbrains.annotations.Nullable;
|
|
import org.slf4j.Logger;
|
|
|
|
public abstract class AbstractPackResources implements PackResources {
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
private final PackLocationInfo location;
|
|
|
|
protected AbstractPackResources(PackLocationInfo location) {
|
|
this.location = location;
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public <T> T getMetadataSection(MetadataSectionSerializer<T> deserializer) throws IOException {
|
|
IoSupplier<InputStream> ioSupplier = this.getRootResource(new String[]{"pack.mcmeta"});
|
|
if (ioSupplier == null) {
|
|
return null;
|
|
} else {
|
|
InputStream inputStream = ioSupplier.get();
|
|
|
|
Object var4;
|
|
try {
|
|
var4 = getMetadataFromStream(deserializer, inputStream);
|
|
} catch (Throwable var7) {
|
|
if (inputStream != null) {
|
|
try {
|
|
inputStream.close();
|
|
} catch (Throwable var6) {
|
|
var7.addSuppressed(var6);
|
|
}
|
|
}
|
|
|
|
throw var7;
|
|
}
|
|
|
|
if (inputStream != null) {
|
|
inputStream.close();
|
|
}
|
|
|
|
return (T)var4;
|
|
}
|
|
}
|
|
|
|
@Nullable
|
|
public static <T> T getMetadataFromStream(MetadataSectionSerializer<T> deserializer, InputStream inputStream) {
|
|
JsonObject jsonObject;
|
|
try {
|
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
|
|
|
|
try {
|
|
jsonObject = GsonHelper.parse(bufferedReader);
|
|
} catch (Throwable var8) {
|
|
try {
|
|
bufferedReader.close();
|
|
} catch (Throwable var6) {
|
|
var8.addSuppressed(var6);
|
|
}
|
|
|
|
throw var8;
|
|
}
|
|
|
|
bufferedReader.close();
|
|
} catch (Exception var9) {
|
|
LOGGER.error("Couldn't load {} metadata", deserializer.getMetadataSectionName(), var9);
|
|
return null;
|
|
}
|
|
|
|
if (!jsonObject.has(deserializer.getMetadataSectionName())) {
|
|
return null;
|
|
} else {
|
|
try {
|
|
return deserializer.fromJson(GsonHelper.getAsJsonObject(jsonObject, deserializer.getMetadataSectionName()));
|
|
} catch (Exception var7) {
|
|
LOGGER.error("Couldn't load {} metadata", deserializer.getMetadataSectionName(), var7);
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public PackLocationInfo location() {
|
|
return this.location;
|
|
}
|
|
}
|