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

package com.hypixel.hytale.server.npc.corecomponents;

import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.server.npc.role.Role;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.npc.instructions.RoleStateChange;

public interface ISensorEntityCollector extends RoleStateChange
{
    public static final ISensorEntityCollector DEFAULT = new ISensorEntityCollector() {
        @Override
        public void init(@Nonnull final Ref<EntityStore> ref, @Nonnull final Role role, @Nonnull final ComponentAccessor<EntityStore> componentAccessor) {
        }
        
        @Override
        public void collectMatching(@Nonnull final Ref<EntityStore> ref, @Nonnull final Ref<EntityStore> targetRef, @Nonnull final ComponentAccessor<EntityStore> componentAccessor) {
        }
        
        @Override
        public void collectNonMatching(@Nonnull final Ref<EntityStore> targetRef, @Nonnull final ComponentAccessor<EntityStore> componentAccessor) {
        }
        
        @Override
        public boolean terminateOnFirstMatch() {
            return true;
        }
        
        @Override
        public void cleanup() {
        }
    };
    
    void init(@Nonnull final Ref<EntityStore> p0, @Nonnull final Role p1, @Nonnull final ComponentAccessor<EntityStore> p2);
    
    void collectMatching(@Nonnull final Ref<EntityStore> p0, @Nonnull final Ref<EntityStore> p1, @Nonnull final ComponentAccessor<EntityStore> p2);
    
    void collectNonMatching(@Nonnull final Ref<EntityStore> p0, @Nonnull final ComponentAccessor<EntityStore> p1);
    
    boolean terminateOnFirstMatch();
    
    void cleanup();
}
