Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / RegionFileCompression.java
package net.minecraft.server;

import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.InflaterInputStream;
import javax.annotation.Nullable;

public class RegionFileCompression {

    private static final Int2ObjectMap<RegionFileCompression> d = new Int2ObjectOpenHashMap();
    public static final RegionFileCompression a = a(new RegionFileCompression(1, GZIPInputStream::new, GZIPOutputStream::new));
    public static final RegionFileCompression b = a(new RegionFileCompression(2, InflaterInputStream::new, DeflaterOutputStream::new));
    public static final RegionFileCompression c = a(new RegionFileCompression(3, (inputstream) -> {
        return inputstream;
    }, (outputstream) -> {
        return outputstream;
    }));
    private final int e;
    private final RegionFileCompression.a<InputStream> f;
    private final RegionFileCompression.a<OutputStream> g;

    private RegionFileCompression(int i, RegionFileCompression.a<InputStream> regionfilecompression_a, RegionFileCompression.a<OutputStream> regionfilecompression_a1) {
        this.e = i;
        this.f = regionfilecompression_a;
        this.g = regionfilecompression_a1;
    }

    private static RegionFileCompression a(RegionFileCompression regionfilecompression) {
        RegionFileCompression.d.put(regionfilecompression.e, regionfilecompression);
        return regionfilecompression;
    }

    @Nullable
    public static RegionFileCompression a(int i) {
        return (RegionFileCompression) RegionFileCompression.d.get(i);
    }

    public static boolean b(int i) {
        return RegionFileCompression.d.containsKey(i);
    }

    public int a() {
        return this.e;
    }

    public OutputStream a(OutputStream outputstream) throws IOException {
        return (OutputStream) this.g.wrap(outputstream);
    }

    public InputStream a(InputStream inputstream) throws IOException {
        return (InputStream) this.f.wrap(inputstream);
    }

    @FunctionalInterface
    interface a<O> {

        O wrap(O o0) throws IOException;
    }
}