4jcraft/Minecraft.World/Blocks/RedLightTile.cpp
2026-03-21 15:52:50 -05:00

62 lines
2 KiB
C++

#include "../Platform/stdafx.h"
#include "../Headers/net.minecraft.world.level.h"
#include "../Headers/net.minecraft.world.level.tile.h"
#include "../Headers/net.minecraft.world.h"
#include "RedLightTile.h"
RedlightTile::RedlightTile(int id, bool isLit)
: Tile(id, Material::buildable_glass) {
this->isLit = isLit;
if (isLit) {
setLightEmission(1.0f);
}
}
void RedlightTile::registerIcons(IconRegister* iconRegister) {
if (isLit) {
icon = iconRegister->registerIcon(L"redstoneLight_lit");
} else {
icon = iconRegister->registerIcon(L"redstoneLight");
}
}
void RedlightTile::onPlace(Level* level, int x, int y, int z) {
if (!level->isClientSide) {
if (isLit && !level->hasNeighborSignal(x, y, z)) {
level->addToTickNextTick(x, y, z, id, 4);
} else if (!isLit && level->hasNeighborSignal(x, y, z)) {
level->setTileAndData(x, y, z, Tile::redstoneLight_lit_Id, 0,
UPDATE_CLIENTS);
}
}
}
void RedlightTile::neighborChanged(Level* level, int x, int y, int z,
int type) {
if (!level->isClientSide) {
if (isLit && !level->hasNeighborSignal(x, y, z)) {
level->addToTickNextTick(x, y, z, id, 4);
} else if (!isLit && level->hasNeighborSignal(x, y, z)) {
level->setTileAndData(x, y, z, Tile::redstoneLight_lit_Id, 0,
UPDATE_CLIENTS);
}
}
}
void RedlightTile::tick(Level* level, int x, int y, int z, Random* random) {
if (!level->isClientSide) {
if (isLit && !level->hasNeighborSignal(x, y, z)) {
level->setTileAndData(x, y, z, Tile::redstoneLight_Id, 0,
UPDATE_CLIENTS);
}
}
}
int RedlightTile::getResource(int data, Random* random, int playerBonusLevel) {
return Tile::redstoneLight_Id;
}
int RedlightTile::cloneTileId(Level* level, int x, int y, int z) {
return Tile::redstoneLight_Id;
}