#include "PlaceBlockUpdate.h" #include "Block.h" #include "Dimension.h" PlaceBlockUpdate::PlaceBlockUpdate( Block* block, int dimensionId ) : WorldUpdate( PlaceBlockUpdateType::ID, dimensionId, block->getPos(), block->getPos() ), block( block ) {} PlaceBlockUpdate::~PlaceBlockUpdate() { block->release(); } void PlaceBlockUpdate::onUpdate( Dimension* zDimension ) { zDimension->placeBlock( dynamic_cast(block->getThis()) ); } void PlaceBlockUpdate::write( Framework::StreamWriter* zWriter ) { zWriter->schreibe( (char*)&PlaceBlockUpdateType::ID, 4 ); int dimensionID = getAffectedDimension(); zWriter->schreibe( (char*)&dimensionID, 4 ); auto pos = block->getPos(); zWriter->schreibe( (char*)&pos.x, 4 ); zWriter->schreibe( (char*)&pos.y, 4 ); zWriter->schreibe( (char*)&pos.z, 4 ); unsigned char id = (unsigned char)block->zBlockType()->getId(); zWriter->schreibe( (char*)&id, 2 ); block->zBlockType()->saveBlock( block, zWriter ); } Block* PlaceBlockUpdate::zBlock() const { return block; } PlaceBlockUpdateType::PlaceBlockUpdateType() : WorldUpdateType( ID ) {}