Files
MinecraftConsoles/Minecraft.World/MobSpawnerTileEntity.cpp

102 lines
2.3 KiB
C++
Raw Normal View History

2026-03-01 12:16:08 +08:00
#include "stdafx.h"
#include "net.minecraft.network.packet.h"
#include "net.minecraft.world.level.h"
#include "net.minecraft.world.level.tile.h"
2026-03-01 12:16:08 +08:00
#include "MobSpawnerTileEntity.h"
MobSpawnerTileEntity::TileEntityMobSpawner::TileEntityMobSpawner(MobSpawnerTileEntity *parent)
2026-03-01 12:16:08 +08:00
{
m_parent = parent;
2026-03-01 12:16:08 +08:00
}
void MobSpawnerTileEntity::TileEntityMobSpawner::broadcastEvent(int id)
2026-03-01 12:16:08 +08:00
{
m_parent->level->tileEvent(m_parent->x, m_parent->y, m_parent->z, Tile::mobSpawner_Id, id, 0);
2026-03-01 12:16:08 +08:00
}
Level *MobSpawnerTileEntity::TileEntityMobSpawner::getLevel()
2026-03-01 12:16:08 +08:00
{
return m_parent->level;
2026-03-01 12:16:08 +08:00
}
int MobSpawnerTileEntity::TileEntityMobSpawner::getX()
2026-03-01 12:16:08 +08:00
{
return m_parent->x;
2026-03-01 12:16:08 +08:00
}
int MobSpawnerTileEntity::TileEntityMobSpawner::getY()
2026-03-01 12:16:08 +08:00
{
return m_parent->y;
2026-03-01 12:16:08 +08:00
}
int MobSpawnerTileEntity::TileEntityMobSpawner::getZ()
2026-03-01 12:16:08 +08:00
{
return m_parent->z;
}
2026-03-01 12:16:08 +08:00
void MobSpawnerTileEntity::TileEntityMobSpawner::setNextSpawnData(BaseMobSpawner::SpawnData *nextSpawnData)
{
BaseMobSpawner::setNextSpawnData(nextSpawnData);
if (getLevel() != NULL) getLevel()->sendTileUpdated(m_parent->x, m_parent->y, m_parent->z);
}
2026-03-01 12:16:08 +08:00
MobSpawnerTileEntity::MobSpawnerTileEntity()
{
spawner = new TileEntityMobSpawner(this);
2026-03-01 12:16:08 +08:00
}
MobSpawnerTileEntity::~MobSpawnerTileEntity()
2026-03-01 12:16:08 +08:00
{
delete spawner;
2026-03-01 12:16:08 +08:00
}
void MobSpawnerTileEntity::load(CompoundTag *tag)
{
TileEntity::load(tag);
spawner->load(tag);
2026-03-01 12:16:08 +08:00
}
void MobSpawnerTileEntity::save(CompoundTag *tag)
{
TileEntity::save(tag);
spawner->save(tag);
2026-03-01 12:16:08 +08:00
}
void MobSpawnerTileEntity::tick()
2026-03-01 12:16:08 +08:00
{
spawner->tick();
TileEntity::tick();
2026-03-01 12:16:08 +08:00
}
shared_ptr<Packet> MobSpawnerTileEntity::getUpdatePacket()
2026-03-01 12:16:08 +08:00
{
CompoundTag *tag = new CompoundTag();
save(tag);
tag->remove(L"SpawnPotentials");
return shared_ptr<TileEntityDataPacket>( new TileEntityDataPacket(x, y, z, TileEntityDataPacket::TYPE_MOB_SPAWNER, tag) );
2026-03-01 12:16:08 +08:00
}
bool MobSpawnerTileEntity::triggerEvent(int b0, int b1)
{
if (spawner->onEventTriggered(b0)) return true;
return TileEntity::triggerEvent(b0, b1);
}
BaseMobSpawner *MobSpawnerTileEntity::getSpawner()
{
return spawner;
}
2026-03-01 12:16:08 +08:00
// 4J Added
shared_ptr<TileEntity> MobSpawnerTileEntity::clone()
2026-03-01 12:16:08 +08:00
{
shared_ptr<MobSpawnerTileEntity> result = shared_ptr<MobSpawnerTileEntity>( new MobSpawnerTileEntity() );
2026-03-01 12:16:08 +08:00
TileEntity::clone(result);
return result;
}
void MobSpawnerTileEntity::setEntityId(const wstring &id)
{
spawner->setEntityId(id);
2026-03-01 12:16:08 +08:00
}