Newer
Older
void-pack-super-server / work / nms.old.1585251758016 / minecraft / server / ContainerAccess.java
package net.minecraft.server;

import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;

public interface ContainerAccess {

    // CraftBukkit start
    default World getWorld() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    default BlockPosition getPosition() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    default org.bukkit.Location getLocation() {
        return new org.bukkit.Location(getWorld().getWorld(), getPosition().getX(), getPosition().getY(), getPosition().getZ());
    }
    // CraftBukkit end

    ContainerAccess a = new ContainerAccess() {
        @Override
        public <T> Optional<T> a(BiFunction<World, BlockPosition, T> bifunction) {
            return Optional.empty();
        }
    };

    static ContainerAccess at(final World world, final BlockPosition blockposition) {
        return new ContainerAccess() {
            // CraftBukkit start
            @Override
            public World getWorld() {
                return world;
            }

            @Override
            public BlockPosition getPosition() {
                return blockposition;
            }
            // CraftBukkit end

            @Override
            public <T> Optional<T> a(BiFunction<World, BlockPosition, T> bifunction) {
                return Optional.of(bifunction.apply(world, blockposition));
            }
        };
    }

    <T> Optional<T> a(BiFunction<World, BlockPosition, T> bifunction);

    default <T> T a(BiFunction<World, BlockPosition, T> bifunction, T t0) {
        return this.a(bifunction).orElse(t0);
    }

    default void a(BiConsumer<World, BlockPosition> biconsumer) {
        this.a((world, blockposition) -> {
            biconsumer.accept(world, blockposition);
            return Optional.empty();
        });
    }
}