4jcraft/Minecraft.World/Entities/MinecartSpawner.cpp
2026-03-21 16:29:02 -05:00

74 lines
2.1 KiB
C++

#include "../Platform/stdafx.h"
#include "../Headers/net.minecraft.world.level.h"
#include "../Headers/net.minecraft.world.level.tile.h"
#include "MinecartSpawner.h"
MinecartSpawner::MinecartMobSpawner::MinecartMobSpawner(
MinecartSpawner* parent) {
m_parent = parent;
}
void MinecartSpawner::MinecartMobSpawner::broadcastEvent(int id) {
m_parent->level->broadcastEntityEvent(m_parent->shared_from_this(),
(uint8_t)id);
}
Level* MinecartSpawner::MinecartMobSpawner::getLevel() {
return m_parent->level;
}
int MinecartSpawner::MinecartMobSpawner::getX() {
return Mth::floor(m_parent->x);
}
int MinecartSpawner::MinecartMobSpawner::getY() {
return Mth::floor(m_parent->y);
}
int MinecartSpawner::MinecartMobSpawner::getZ() {
return Mth::floor(m_parent->z);
}
MinecartSpawner::MinecartSpawner(Level* level) : Minecart(level) {
// 4J Stu - This function call had to be moved here from the Entity ctor to
// ensure that the derived version of the function is called
this->defineSynchedData();
spawner = new MinecartMobSpawner(this);
}
MinecartSpawner::MinecartSpawner(Level* level, double x, double y, double z)
: Minecart(level, x, y, z) {
// 4J Stu - This function call had to be moved here from the Entity ctor to
// ensure that the derived version of the function is called
this->defineSynchedData();
spawner = new MinecartMobSpawner(this);
}
MinecartSpawner::~MinecartSpawner() { delete spawner; }
int MinecartSpawner::getType() { return TYPE_SPAWNER; }
Tile* MinecartSpawner::getDefaultDisplayTile() { return Tile::mobSpawner; }
void MinecartSpawner::readAdditionalSaveData(CompoundTag* tag) {
Minecart::readAdditionalSaveData(tag);
spawner->load(tag);
}
void MinecartSpawner::addAdditonalSaveData(CompoundTag* tag) {
Minecart::addAdditonalSaveData(tag);
spawner->save(tag);
}
void MinecartSpawner::handleEntityEvent(uint8_t eventId) {
spawner->onEventTriggered(eventId);
}
void MinecartSpawner::tick() {
Minecart::tick();
spawner->tick();
}
BaseMobSpawner* MinecartSpawner::getSpawner() { return spawner; }