Created
May 19, 2017 01:54
-
-
Save anonymous/b261636775b9d168454f864bf75d35cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package modmercenario.poderes; | |
import java.util.ArrayList; | |
import java.util.concurrent.Callable; | |
import modmercenario.utilidades.util; | |
import net.minecraft.item.ItemStack; | |
import net.minecraft.nbt.NBTBase; | |
import net.minecraft.nbt.NBTTagCompound; | |
import net.minecraft.nbt.NBTTagList; | |
import net.minecraft.util.EnumFacing; | |
import net.minecraftforge.common.capabilities.Capability; | |
import net.minecraftforge.common.capabilities.CapabilityInject; | |
import net.minecraftforge.common.capabilities.CapabilityManager; | |
import net.minecraftforge.common.capabilities.ICapabilityProvider; | |
import net.minecraftforge.common.capabilities.ICapabilitySerializable; | |
import net.minecraftforge.common.capabilities.Capability.IStorage; | |
import net.minecraftforge.items.CapabilityItemHandler; | |
import net.minecraftforge.items.IItemHandler; | |
import net.minecraftforge.items.IItemHandlerModifiable; | |
import net.minecraftforge.items.ItemStackHandler; | |
public class capacidaddealmacenamiento extends ItemStackHandler // implements ICapabilityProvider, ICapabilitySerializable | |
implements ICapabilityProvider | |
{ | |
private int Slots = 36; | |
private ArrayList<ItemStack> chestInventory = new ArrayList<ItemStack>(Slots); | |
boolean inicializado = false; | |
int redstone = 0; | |
public ArrayList<ItemStack> getChestInventory() { | |
return chestInventory; | |
} | |
public void setChestInventory(ArrayList<ItemStack> chestInventory) { | |
this.chestInventory = chestInventory; | |
} | |
public boolean isInicializado() { | |
return inicializado; | |
} | |
public void setInicializado(boolean inicializado) { | |
this.inicializado = inicializado; | |
} | |
public int getRedstone() { | |
return redstone; | |
} | |
public void setRedstone(int redstone) { | |
this.redstone = redstone; | |
} | |
//####################################################################################### | |
public static void register() { | |
CapabilityManager.INSTANCE.register(IItemHandler.class, new Capability.IStorage<IItemHandler>() { | |
@Override | |
public NBTBase writeNBT(Capability<IItemHandler> capability, IItemHandler instance, EnumFacing side) { | |
NBTTagList nbtTagList = new NBTTagList(); | |
int size = instance.getSlots(); | |
for (int i = 0; i < size; i++) { | |
ItemStack stack = instance.getStackInSlot(i); | |
if (!stack.isEmpty()) { | |
NBTTagCompound itemTag = new NBTTagCompound(); | |
itemTag.setInteger("Slot", i); | |
stack.writeToNBT(itemTag); | |
nbtTagList.appendTag(itemTag); | |
} | |
} | |
return nbtTagList; | |
} | |
//####################################################################################### | |
@Override | |
public void readNBT(Capability<IItemHandler> capability, IItemHandler instance, EnumFacing side, | |
NBTBase base) { | |
if (!(instance instanceof IItemHandlerModifiable)) | |
throw new RuntimeException("IItemHandler instance does not implement IItemHandlerModifiable"); | |
IItemHandlerModifiable itemHandlerModifiable = (IItemHandlerModifiable) instance; | |
NBTTagList tagList = (NBTTagList) base; | |
for (int i = 0; i < tagList.tagCount(); i++) { | |
NBTTagCompound itemTags = tagList.getCompoundTagAt(i); | |
int j = itemTags.getInteger("Slot"); | |
if (j >= 0 && j < instance.getSlots()) { | |
itemHandlerModifiable.setStackInSlot(j, new ItemStack(itemTags)); | |
} | |
} | |
} | |
}, new Callable<ItemStackHandler>() { | |
@Override | |
public ItemStackHandler call() throws Exception { | |
return new ItemStackHandler(); | |
} | |
}); | |
} | |
//this method | |
@Override | |
public boolean hasCapability(Capability<?> capability, EnumFacing facing) { | |
return true; | |
} | |
//and this other trouble is here at least i think that but how to return this class avalues as an object | |
@Override | |
public <T> T getCapability(Capability<T> capability, EnumFacing facing) { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
//####################################################################################### | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment