2025-11-24 22:52:51 +03:00

73 lines
2.6 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* com.google.gson.JsonObject
* com.mojang.logging.LogUtils
* com.mojang.serialization.DynamicOps
* com.mojang.serialization.JsonOps
* org.jspecify.annotations.Nullable
* org.slf4j.Logger
*/
package net.minecraft.server.packs;
import com.google.gson.JsonObject;
import com.mojang.logging.LogUtils;
import com.mojang.serialization.DynamicOps;
import com.mojang.serialization.JsonOps;
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.PackLocationInfo;
import net.minecraft.server.packs.PackResources;
import net.minecraft.server.packs.metadata.MetadataSectionType;
import net.minecraft.server.packs.resources.IoSupplier;
import net.minecraft.util.GsonHelper;
import org.jspecify.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;
}
@Override
public <T> @Nullable T getMetadataSection(MetadataSectionType<T> metadataSerializer) throws IOException {
IoSupplier<InputStream> metadata = this.getRootResource("pack.mcmeta");
if (metadata == null) {
return null;
}
try (InputStream resource = metadata.get();){
T t = AbstractPackResources.getMetadataFromStream(metadataSerializer, resource, this.location);
return t;
}
}
public static <T> @Nullable T getMetadataFromStream(MetadataSectionType<T> serializer, InputStream stream, PackLocationInfo location) {
JsonObject metadata;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8));){
metadata = GsonHelper.parse(reader);
}
catch (Exception e) {
LOGGER.error("Couldn't load {} {} metadata: {}", new Object[]{location.id(), serializer.name(), e.getMessage()});
return null;
}
if (!metadata.has(serializer.name())) {
return null;
}
return serializer.codec().parse((DynamicOps)JsonOps.INSTANCE, (Object)metadata.get(serializer.name())).ifError(error -> LOGGER.error("Couldn't load {} {} metadata: {}", new Object[]{location.id(), serializer.name(), error.message()})).result().orElse(null);
}
@Override
public PackLocationInfo location() {
return this.location;
}
}