diff --git a/src/main/java/com/gtnh/findit/FindIt.java b/src/main/java/com/gtnh/findit/FindIt.java index dde3ee9..138abe4 100644 --- a/src/main/java/com/gtnh/findit/FindIt.java +++ b/src/main/java/com/gtnh/findit/FindIt.java @@ -11,6 +11,7 @@ import com.gtnh.findit.handler.DraconicEvolutionProvider; import com.gtnh.findit.handler.ForestryStackFilterProvider; import com.gtnh.findit.handler.GregTechCoverChestProvider; +import com.gtnh.findit.handler.GregTechCoverProvider; import com.gtnh.findit.handler.MinecraftProvider; import com.gtnh.findit.handler.ProjectRedExplorationProvider; import com.gtnh.findit.handler.ThaumcraftProvider; @@ -97,6 +98,7 @@ public void preInit(FMLPreInitializationEvent event) { } if (this.isGregTechLoaded) { + this.pluginsList.add(new GregTechCoverProvider()); this.pluginsList.add(new GregTechCoverChestProvider()); } diff --git a/src/main/java/com/gtnh/findit/handler/GregTechCoverProvider.java b/src/main/java/com/gtnh/findit/handler/GregTechCoverProvider.java new file mode 100644 index 0000000..dcb8917 --- /dev/null +++ b/src/main/java/com/gtnh/findit/handler/GregTechCoverProvider.java @@ -0,0 +1,48 @@ +package com.gtnh.findit.handler; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +import com.gtnh.findit.IStackFilter; +import com.gtnh.findit.IStackFilter.IStackFilterProvider; + +import gregtech.api.covers.CoverRegistry; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GTUtility; + +public class GregTechCoverProvider implements IStackFilterProvider { + + @Override + public IStackFilter getFilter(EntityPlayer player, TileEntity tileEntity) { + if (!(tileEntity instanceof ICoverable coverable)) { + return null; + } + + return request -> { + ItemStack stackToFind = request.getStackToFind(); + if (stackToFind == null || !CoverRegistry.isCover(stackToFind)) { + return false; + } + + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { + if (!coverable.hasCoverAtSide(side)) { + continue; + } + + ItemStack coverStack = coverable.getCoverItemAtSide(side); + if (GTUtility.areStacksEqual(stackToFind, coverStack, true)) { + return true; + } + } + + return false; + }; + } + + @Override + public IStackFilter getFilter(EntityPlayer player, ItemStack stack) { + return null; + } +}