Jump to content

[1.11.2] How to store inventory and data in an Item using capabilities ??


Recommended Posts

Good days im trying to fix something else

exactly this post

 

this time just a step at time

actually i have a code that allow me to store a custom inventory in an item but using nbtTag's i made it coping code from the blockchest.class

 

this is minecraft 11.2 i has been told its suppose you do this kind of things using capabilities

i been reading things but really i don't get how to do this first steep

 

¿can someone lend mi a guide on how to read/store costume inventories in itemstack  or a working mod code whit this feature to begin from

 

o sea the code to do this same thing but with capabilities

or i just Misunderstand the whole thing and this is done this way with nbttags

	    // #########################################################################3
    public static ArrayList<ItemStack> readInventariofromItem(ItemStack chestarmour) {
        // System.out.println("!leerInventarioItem!");
	        NBTTagCompound itemnbtcmp = chestarmour.getTagCompound();
        int inventariosize = util.getInttag(chestarmour, "inventariosize");
	        ArrayList<ItemStack> chestInventory = new ArrayList<ItemStack>(inventariosize);
	        // System.out.println("!inventariosize="+inventariosize);
	        if (itemnbtcmp != null) {
	            if (itemnbtcmp.hasKey("Inventario")) {
	                NBTTagList nbttaglist = itemnbtcmp.getTagList("Inventario", 10);
	                for (int i = 0; i < nbttaglist.tagCount(); ++i) {
                    NBTTagCompound nbttagcompound = nbttaglist.getCompoundTagAt(i);
                    int j = nbttagcompound.getByte("Slot") & 255;
                    ItemStack itemstack = new ItemStack(nbttagcompound);
	                    itemstack = (itemstack == null) ? itemstack.EMPTY : itemstack;
	                    // System.out.println(i+"!itemstack="+itemstack.getUnlocalizedName()+"
                    // j="+j);
	                    if (j >= 0 && j < inventariosize) {
                        // chestInventory.set(j, itemstack);
                        chestInventory.add(itemstack);
                    }
	                }
	            }
        }
	        return chestInventory;
    }
	    // #########################################################################3
    public static ItemStack writeInventariotoItem(ItemStack chestarmour, ArrayList<ItemStack> inv) {
        // System.out.println("!escribirInventarioItem!");
	        int inventariosize = inv.size();
	        NBTTagCompound itemnbtcmp = chestarmour.getTagCompound();
	        NBTTagList nbttaglist = new NBTTagList();
	        for (int i = 0; i < inventariosize; ++i) {
            ItemStack itemstack = (ItemStack) inv.get(i);
	            itemstack = (itemstack == null) ? itemstack.EMPTY : itemstack;
	            NBTTagCompound nbttagcompound = new NBTTagCompound();
            nbttagcompound.setByte("Slot", (byte) i);
            itemstack.writeToNBT(nbttagcompound);
            nbttaglist.appendTag(nbttagcompound);
        }
	        if (itemnbtcmp == null) {
            itemnbtcmp = new NBTTagCompound();
        }
	        itemnbtcmp.setTag("Inventario", nbttaglist);
        chestarmour.setTagCompound(itemnbtcmp);
        
        util.setInttag(chestarmour, "inventariosize", inventariosize);
	        return chestarmour;
    }
	    // #########################################################################3
    public static void showInventariocontens(ArrayList<ItemStack> inv) {
	        int invsize = inv.size();
        ItemStack stack = ItemStack.EMPTY;
	        for (int i = 0; i < invsize; ++i) {
	            stack = inv.get(i);
            System.out.println("SLOT[" + i + "]=" + stack.getUnlocalizedName() + " > " + stack.getCount());
	        }
	    }
	    // #########################################################################3
	    public static void setInttag(ItemStack item, String tag, int value) {
	        NBTTagCompound etiquetas = item.getTagCompound();
        if (etiquetas == null) {
            etiquetas = new NBTTagCompound();
        }
	        etiquetas.setInteger(tag, value);
        item.setTagCompound(etiquetas);
	    }
    // #########################################################################3
	

Edited by perromercenary00
uncomplete save
Link to comment
Share on other sites

Alright, your code seems pretty messy, so you might want to try to clean it up a bit. It really makes things easier;)

Regarding the capabilities. You should override getCapability and hasCapability in your item class. (Might be itemstack, ill look it up for you later). You can initialize an instance of the itemstackhandler capability and return that instance in getcapability. You can look it up in the documentation.

 

Good luck, and let me know if you need more help. ;)

Link to comment
Share on other sites

 

https://mcforge.readthedocs.io/en/latest/datastorage/capabilities/

its that documentation that i  don't get

they explain what its the capability and more or less what it needs to work but actually has no examples of how do the things

or at least i don't understand it coze is write in English. Anyway

 

i think this capability thing came whit the idea of not use in excess NBT to write and read info, but create and object to store temporally the data and just use it read/write the data fast    

and only read write the nbt one time at load the world and write one time ad close/save world

 

first thing i don't understand, have I to create a class whit the code  to store, in this case an inventory an some other nbt's variables, where i create this class, what classes have i to implement, where i must declare it for minecrafts to be aware

how i attach it to the item class

 

looking in the vainilla code for the entity player i made this

https://gist.github.com/anonymous/1edf37742d0b4be02ba9b6574cdb5709

 

 

i suppose this class must have gets and sets to access all the data i need, well again now how i declare the existence of this class in the common proxy

how i attach this capability class to mi costume item chestPlate/Backpack class

?? is something like tile-entities  but whit getCapability and hasCapability

well how i retrieve mi data whit this methods ??

 

for what i read this capability thing only works for server side and is not synced with the client side, i must rearrange mi package system to send to client side the data changes  (serialize up and down everything )

 

anyway at least this guide is missing a working example

whit that i could just see how everything is declare and where,  what classes are using and what classes/interfaces are extended/implemented 

and avoid post must of this bobby question in the forum

 

thanks for reading

 

no en serio

im little mad here to see how complex has become a single item in 1.11

 

 

 

 

Edited by perromercenary00
Link to comment
Share on other sites

6 hours ago, perromercenary00 said:

first thing i don't understand, have I to create a class whit the code  to store, in this case an inventory an some other nbt's variables, where i create this class, what classes have i to implement, where i must declare it for minecrafts to be aware

how i attach it to the item class

You will have to ready and write to nbt yourself, in your capability provider class.

For what you made, you don't have to inject an existing capability, and you should instead extends the ItemStackHandler class there. It seems like you did a great job of making your own implementation. You don't have to register that class. You can instantiate it in your item class. Like below. Mind you, this class I made very quickly and without much experience with capabilities for items. It seems quite different from tile entities but still. I hope i'll give you a rough idea of what you should do.

 

public class ItemExample extends Item{

	ItemStackHandler inventory;
	
	public ItemExample()
	{
		
	}
    
    public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
    {
    	ItemStack stackToSaveTo = playerIn.getHeldItem(handIn); //Do add a check to see if this really is your item.
    	
    	//You probably wont need the capability until you open the inventory for the first time. So..
    	if(inventory == null)
    	{
    		inventory = (ItemStackHandler) initCapabilities(stackToSaveTo, null).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
    	}
    	
    	//Then here you can open the inventory and things, and, load data from nbt.
    	NBTTagCompound nbt = new NBTTagCompound();
    	inventory.deserializeNBT(nbt);
    	
    	//Now the nbt has all the information you need. Granted you gave what you wanted in the method below.
    	
    	//Now you can open inventory and things, and let the player do stuff.
    	
        return new ActionResult(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
    }
    
    public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBase entityLiving, int timeLeft)
    {
    	//This should do what it says, so now you can save the data that has changed.
    	
    	inventory.serializeNBT();
    }
	
	@Override
	public ICapabilityProvider initCapabilities(ItemStack item, NBTTagCompound nbt)
	{
		if(item.getItem() instanceof ItemExample)
		{
			return new ExampleProvider();
		}
		return null;
	}
	
	public static class ExampleProvider implements ICapabilityProvider, ICapabilitySerializable {

		@Override
		public NBTBase serializeNBT() 
		{
			//Retrieve data here
			return null;
		}

		@Override
		public void deserializeNBT(NBTBase nbt) 
		{
			//Do your saving here
		}

		@Override
		public boolean hasCapability(Capability<?> capability, EnumFacing facing) 
		{
			if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
			{
				return true;
			}
			return false;
		}

		@Override
		public <T> T getCapability(Capability<T> capability, EnumFacing facing) 
		{
			if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
			{
				return (T) new ItemStackHandler(2/**the amount of slots you want*/); 
				//This is the default implementation by forge, but you'll likely want to make your own by overriding. 
			}
			return null;
		}
	}
}

 

 

 

6 hours ago, perromercenary00 said:

for what i read this capability thing only works for server side and is not synced with the client side, i must rearrange mi package system to send to client side the data changes  (serialize up and down everything )

Just try without and see what happens. If there is information missing on the client side, you can send packages to sync up. But only when needed.

Edited by tommyte
forgot to remove an unused method.. again
Link to comment
Share on other sites

  • 2 weeks later...

good days guys

 

really dont get what i doing  m been  just like here shooting in the dark

lets make it more simple make aside for a while the chestplate/backpackk item inventory

 

this pueba01 item has only an int Nbt tag named redstone storing the amoung of redstone ""

how i get/set the value from the nbt ??

https://gist.github.com/anonymous/1db0b20c50fe1e6dca557a48a29e23be

 



  //#############################################################################################
       public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
        {
           ItemStack itemstack = playerIn.getHeldItem(handIn);
            playerIn.setActiveHand(handIn);

 

            //int redstone = util.getInttag(itemstack, "redstone");
            //util.setInttag(itemstack, "redstone", redstone);


            //but how the heck i get the value from the capability ??
            
            int redstone = capabilitywhath??
            
        System.out.print("redstone="+redstone);
                    
           if( redstone < 1 ){
               capabilitywhath??.setRedstonetoneto(1100);
           }         
            
            return new ActionResult(EnumActionResult.SUCCESS, itemstack);
        }
//###################################################################

[!code]

 

a working example could be a very valuable aid

Thanks for reading

 

 

 

 

 

 

 

 

 

 

 

 

Link to comment
Share on other sites

27 minutes ago, perromercenary00 said:

how i get/set the value from the nbt ??

 

Getting a value from NBT is different to getting a value from a capability. Which do you want to do?

 

For NBT, you can call stack#getTagCompound. For the capability, you call stack#getCapability and pass your capability instance.

Link to comment
Share on other sites

some more shoots in the dark

 

 

https://gist.github.com/anonymous/b261636775b9d168454f864bf75d35cb

 

Itemside code

	    // #############################################################################################
    public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
     
        ItemStack itemstack = playerIn.getHeldItem(handIn);
	      
	 Capability<?> capacidaddealmacenamiento = null;
	 
	        if (itemstack.hasCapability(capacidaddealmacenamiento, EnumFacing.UP)) {
	            capacidaddealmacenamiento xt = (capacidaddealmacenamiento) itemstack.getCapability(capacidaddealmacenamiento, EnumFacing.UP);
	            int redstone = xt.getRedstone();
	            if (redstone < 1) {
                xt.setRedstone(1100);
            }
	        }
	        playerIn.setActiveHand(handIn);
	        return new ActionResult(EnumActionResult.FAIL, itemstack);
    }
    // ###################################################################
	

Link to comment
Share on other sites

capacidaddealmacenamiento xt = (capacidaddealmacenamiento) itemstack.getCapability(capacidaddealmacenamiento, EnumFacing.UP);

should be: 

capacidaddealmacenamiento xt = (capacidaddealmacenamiento) itemstack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP);

 

Furthermore, you'd need a capabilityprovider for this item:

public static class ExampleProvider implements ICapabilityProvider, ICapabilitySerializable {

		@Override
		public NBTBase serializeNBT() 
		{
			//Retrieve data here
			return null;
		}

		@Override
		public void deserializeNBT(NBTBase nbt) 
		{
			//Do your saving here
		}

		@Override
		public boolean hasCapability(Capability<?> capability, EnumFacing facing) 
		{
			if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
			{
				return true;
			}
			return false;
		}

		@Override
		public <T> T getCapability(Capability<T> capability, EnumFacing facing) 
		{
			if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
			{
				return (T) new ItemStackHandler(2/**the amount of slots you want*/); 
				//This is the default implementation by forge, but you'll likely want to make your own by overriding. 
			}
			return null;
		}
	}

 

Serialize and deserialize nbt will be called for you when the world respectively starts or closes. You can save your stored items here using the ItemStackHelper class.

 

I don't quite get the purpose of this either: 

playerIn.setActiveHand(handIn);

 

But, if you'd try explaining us a little more what exactly it is you want to achieve, I'm sure we could help you out a little better (:

Link to comment
Share on other sites

thanks for reply

 

i been playing whit mods from 1.7 and i m a little complicated whit the results

i like mi items has animations and sounds and lights and things

until now i been controlling the animations making Excessive use of nbttags values

 

 

 

in the long run i wanna update all mi items and entities to 1.11.2 but i siting here still stuck in the basic becoze i don't get how to use the new capability system and trying to make this items animations old nbttag style  is not working 

 

##################

going back to the original question where i get the item nbtdata from the item in this part

 

        @Override
        public NBTBase serializeNBT()
        {
            //Retrieve data here
            return null;
        }

 

Thanks for reading

 

 

 

 

 

 

 

 

 

 

 

Link to comment
Share on other sites

This is an example with the energy capability:

public NBTBase serializeNBT() 
{
	NBTTagCompound nbt = new NBTTagCompound();
			
	nbt.setInteger("energy", energy.getEnergyStored());
			
	return nbt;
}

public void deserializeNBT(NBTBase nbt) 
{
	if(((NBTTagCompound) nbt).hasKey("energy"))
	{
		energy.setEnergy(((NBTTagCompound) nbt).getInteger("energy"));
	}
}

 

Notice that you can only store the info from the capability here. So in your case you'd save the items in the inventory of your item here. If, however, you want to store more info on the nbt of the itemstack, you should use ItemStack::getTagCompound() to retrieve and alter the nbt tag compound of your item. Call this where ever you find it useful. Maybe you want to update the nbt every tick? Then call it in the update method. If you want to update it every time the item is right-clicked? Use the onItemRightClick method. 

Link to comment
Share on other sites

!Por fin¡

Thanks to the forums i now have a funtional capabilitie class that allow me to store data and inventories 

and the data is synced whit client side whitout having to mess whith custom packets 

https://gist.github.com/anonymous/df2656774483a6f335c1fa4be4d1fff4

https://youtu.be/zi5hZE8K204

 

 

now i have another doub i set some system.out's in the code to understand when it reads and when it writtes

i have an old little quarry whith the unequip animation and i like to have some control over when minecraft writes back the data to the nbt and to the item 

	[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Client thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
[19:21:16] [Server thread/INFO]: [STDOUT]: ### >>>     serializeNBT()
	

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.