Skip to content

Instantly share code, notes, and snippets.

@Shadows-of-Fire
Created February 19, 2019 02:34
Show Gist options
  • Save Shadows-of-Fire/6f8960b12822561cfbf52ce886911c3a to your computer and use it in GitHub Desktop.
Save Shadows-of-Fire/6f8960b12822561cfbf52ce886911c3a to your computer and use it in GitHub Desktop.
package shadows.compatched;
import com.tattyseal.compactstorage.tileentity.TileEntityChest;
import com.tattyseal.compactstorage.tileentity.TileEntityChestBuilder;
import net.minecraft.inventory.IInventory;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.wrapper.InvWrapper;
@Mod(modid = ComPatchedStorage.MODID, name = ComPatchedStorage.MODNAME, version = ComPatchedStorage.VERSION, dependencies = "required-after:compactstorage")
public class ComPatchedStorage {
public static final String MODID = "compatched";
public static final String MODNAME = "ComPatchedStorage";
public static final String VERSION = "1.1.0";
@EventHandler
public void preInit(FMLPreInitializationEvent e) {
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void caps(AttachCapabilitiesEvent<TileEntity> e) {
TileEntity te = e.getObject();
if (te instanceof TileEntityChest || te instanceof TileEntityChestBuilder) {
e.addCapability(new ResourceLocation(MODID, "invwrapper"), new InvWrappingCap((IInventory) te));
}
}
private static class InvWrappingCap implements ICapabilityProvider {
InvWrapper wrapped;
InvWrappingCap(IInventory toWrap) {
wrapped = new InvWrapper(toWrap);
}
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY;
}
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (this.hasCapability(capability, facing)) return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(wrapped);
return null;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment