// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders;

import com.hypixel.hytale.codec.Codec;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.lookup.CodecMapCodec;

public abstract class WorldLocationProvider
{
    public static final CodecMapCodec<WorldLocationProvider> CODEC;
    public static final BuilderCodec<WorldLocationProvider> BASE_CODEC;
    
    @Nullable
    public abstract Vector3i runCondition(final World p0, final Vector3i p1);
    
    @Override
    public abstract boolean equals(final Object p0);
    
    @Override
    public abstract int hashCode();
    
    @Nonnull
    @Override
    public String toString() {
        return "WorldLocationProvider{}";
    }
    
    static {
        CODEC = new CodecMapCodec<WorldLocationProvider>("Type");
        BASE_CODEC = BuilderCodec.abstractBuilder(WorldLocationProvider.class).build();
        WorldLocationProvider.CODEC.register("LookBlocksBelow", LookBlocksBelowProvider.class, LookBlocksBelowProvider.CODEC);
        WorldLocationProvider.CODEC.register("LocationRadius", LocationRadiusProvider.class, LocationRadiusProvider.CODEC);
        WorldLocationProvider.CODEC.register("TagBlockHeight", CheckTagWorldHeightRadiusProvider.class, CheckTagWorldHeightRadiusProvider.CODEC);
    }
}
