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

import com.google.common.collect.Sets;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Stream;

public class TickListChunk<T> implements TickList<T> {

    private final Set<NextTickListEntry<T>> a;
    private final Function<T, MinecraftKey> b;

    public TickListChunk(Function<T, MinecraftKey> function, List<NextTickListEntry<T>> list) {
        this(function, (Set) Sets.newHashSet(list));
    }

    private TickListChunk(Function<T, MinecraftKey> function, Set<NextTickListEntry<T>> set) {
        this.a = set;
        this.b = function;
    }

    @Override
    public boolean a(BlockPosition blockposition, T t0) {
        return false;
    }

    @Override
    public void a(BlockPosition blockposition, T t0, int i, TickListPriority ticklistpriority) {
        this.a.add(new NextTickListEntry<>(blockposition, t0, (long) i, ticklistpriority));
    }

    @Override
    public boolean b(BlockPosition blockposition, T t0) {
        return false;
    }

    @Override
    public void a(Stream<NextTickListEntry<T>> stream) {
        Set set = this.a;

        this.a.getClass();
        stream.forEach(set::add);
    }

    public Stream<NextTickListEntry<T>> b() {
        return this.a.stream();
    }

    public NBTTagList a(long i) {
        return TickListServer.a(this.b, this.a, i);
    }

    public static <T> TickListChunk<T> a(NBTTagList nbttaglist, Function<T, MinecraftKey> function, Function<MinecraftKey, T> function1) {
        Set<NextTickListEntry<T>> set = Sets.newHashSet();

        for (int i = 0; i < nbttaglist.size(); ++i) {
            NBTTagCompound nbttagcompound = nbttaglist.getCompound(i);
            T t0 = function1.apply(new MinecraftKey(nbttagcompound.getString("i")));

            if (t0 != null) {
                set.add(new NextTickListEntry<>(new BlockPosition(nbttagcompound.getInt("x"), nbttagcompound.getInt("y"), nbttagcompound.getInt("z")), t0, (long) nbttagcompound.getInt("t"), TickListPriority.a(nbttagcompound.getInt("p"))));
            }
        }

        return new TickListChunk<>(function, set);
    }
}