09-09-2020, 05:11 PM
Unit tests: We have a few of those already, so you might want to copy the approach used in them. Basically they compile in the minimum amount of Cuberite CPPs and a Stubs file that provides dummy implementation of stuff that is needed for dependencies, but is not critical for the operation. Then just provide a separate main function that runs the tests. Have a look at the tests subfolder in the repo.
I think the loottable reference should be stored within the cBlockEntityWithItems directly (including NBT read and write in the world files and the schematic serializer). That way plugins can manipulate the loot tables. Do note that vanilla keeps the loot table info until the first player actually opens the container, at which point the loot is generated. There are commands to regenerate the loot in a container (which we should have, too).
I think the loottable reference should be stored within the cBlockEntityWithItems directly (including NBT read and write in the world files and the schematic serializer). That way plugins can manipulate the loot tables. Do note that vanilla keeps the loot table info until the first player actually opens the container, at which point the loot is generated. There are commands to regenerate the loot in a container (which we should have, too).