Low Entry Plugins

Here’s a small example of how I would save and load my data.

public class Inventory
{
    public final ArrayList<InventoryItem> items = new ArrayList<InventoryItem>();
    
    
    public static byte] toBytes(Inventory inventory)
    {
        if(inventory == null)
        {
            return new byte[0];
        }
        ByteDataWriter writer = .writeByteData();
        
        {// writes the data >>
            writer.addInteger(inventory.items.size());
            for(InventoryItem item : inventory.items)
            {
                writer.addByteArray(InventoryItem.toBytes(item));
            }
        }// writes the data <<
        
        return writer.getBytes();
    }
    
    
    public static Inventory fromBytes(byte] bytes)
    {
        if((bytes == null) || (bytes.length == 0))
        {
            return null;
        }
        ByteDataReader reader = .readByteData(bytes);
        Inventory inventory = new Inventory();
        
        {// reads the data >>
            int itemCount = reader.getInteger();
            for(int i = 0; i < itemCount; i++)
            {
                inventory.items.add(InventoryItem.fromBytes(reader.getByteArray()));
            }
        }// reads the data <<
        
        return inventory;
    }
}

public class InventoryItem
{
    private int itemId = 0;
    
    
    public static byte] toBytes(InventoryItem item)
    {
        if(item == null)
        {
            return new byte[0];
        }
        ByteDataWriter writer = .writeByteData();
        
        {// writes the data >>
            writer.addInteger(item.itemId);
        }// writes the data <<
        
        return writer.getBytes();
    }
    
    
    public static InventoryItem fromBytes(byte] bytes)
    {
        if((bytes == null) || (bytes.length == 0))
        {
            return null;
        }
        ByteDataReader reader = .readByteData(bytes);
        InventoryItem item = new InventoryItem();
        
        {// reads the data >>
            item.itemId = reader.getInteger();
        }// reads the data <<
        
        return item;
    }
}