Pickups are now being saved into Anvil.
Also changed cEntity rotation datatype to double git-svn-id: http://mc-server.googlecode.com/svn/trunk@1262 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
|
||||
// NBTChunkSerializer.h
|
||||
|
||||
// Declares the cNBTChunkSerializer class that is used for saving individual chunks into NBT format used by Anvil
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../ChunkDef.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// fwd:
|
||||
class cFastNBTWriter;
|
||||
class cEntity;
|
||||
class cBlockEntity;
|
||||
class cChestEntity;
|
||||
class cFurnaceEntity;
|
||||
class cDispenserEntity;
|
||||
class cSignEntity;
|
||||
class cNoteEntity;
|
||||
class cJukeboxEntity;
|
||||
class cFallingBlock;
|
||||
class cMinecart;
|
||||
class cMinecartWithChest;
|
||||
class cMinecartWithFurnace;
|
||||
class cMonster;
|
||||
class cPickup;
|
||||
|
||||
|
||||
|
||||
|
||||
class cNBTChunkSerializer :
|
||||
public cChunkDataSeparateCollector
|
||||
{
|
||||
public:
|
||||
cChunkDef::BiomeMap m_Biomes;
|
||||
unsigned char m_VanillaBiomes[cChunkDef::Width * cChunkDef::Width];
|
||||
bool m_BiomesAreValid;
|
||||
|
||||
|
||||
cNBTChunkSerializer(cFastNBTWriter & a_Writer);
|
||||
|
||||
/// Close NBT tags that we've opened
|
||||
void Finish(void);
|
||||
|
||||
bool IsLightValid(void) const {return m_IsLightValid; }
|
||||
|
||||
protected:
|
||||
|
||||
/* From cChunkDataSeparateCollector we inherit:
|
||||
- m_BlockTypes[]
|
||||
- m_BlockMetas[]
|
||||
- m_BlockLight[]
|
||||
- m_BlockSkyLight[]
|
||||
*/
|
||||
|
||||
cFastNBTWriter & m_Writer;
|
||||
|
||||
bool m_IsTagOpen; // True if a tag has been opened in the callbacks and not yet closed.
|
||||
bool m_HasHadEntity; // True if any Entity has already been received and processed
|
||||
bool m_HasHadBlockEntity; // True if any BlockEntity has already been received and processed
|
||||
bool m_IsLightValid; // True if the chunk lighting is valid
|
||||
|
||||
|
||||
/// Writes an item into the writer, if slot >= 0, adds the Slot tag. The compound is named as requested.
|
||||
void AddItem(const cItem & a_Item, int a_Slot, const AString & a_CompoundName = "");
|
||||
|
||||
// Block entities:
|
||||
void AddBasicTileEntity(cBlockEntity * a_Entity, const char * a_EntityTypeID);
|
||||
void AddChestEntity(cChestEntity * a_Entity);
|
||||
void AddDispenserEntity(cDispenserEntity * a_Entity);
|
||||
void AddFurnaceEntity(cFurnaceEntity * a_Furnace);
|
||||
void AddSignEntity(cSignEntity * a_Sign);
|
||||
void AddNoteEntity(cNoteEntity * a_Note);
|
||||
void AddJukeboxEntity(cJukeboxEntity * a_Jukebox);
|
||||
void AddBasicEntity(cEntity * a_Entity, const AString & a_ClassName);
|
||||
|
||||
// Entities:
|
||||
void AddFallingBlockEntity(cFallingBlock * a_FallingBlock);
|
||||
void AddMinecartEntity (cMinecart * a_Minecart);
|
||||
void AddMonsterEntity (cMonster * a_Monster);
|
||||
void AddPickupEntity (cPickup * a_Pickup);
|
||||
|
||||
void AddMinecartChestContents(cMinecartWithChest * a_Minecart);
|
||||
|
||||
// cChunkDataSeparateCollector overrides:
|
||||
virtual bool LightIsValid(bool a_IsLightValid) override;
|
||||
virtual void BiomeData(const cChunkDef::BiomeMap * a_BiomeMap) override;
|
||||
virtual void Entity(cEntity * a_Entity) override;
|
||||
virtual void BlockEntity(cBlockEntity * a_Entity) override;
|
||||
} ; // class cNBTChunkSerializer
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user