Files
2026-05-14 19:16:33 -04:00

90 lines
2.2 KiB
C++

#include "stdafx.h"
#include "net.minecraft.world.level.h"
#include "net.minecraft.world.level.tile.piston.h"
#include "net.minecraft.h"
#include "net.minecraft.world.h"
#include "LeafTile.h"
#include "LogTile.h"
const unsigned int LogTile::TREE_NAMES[LogTile::TREE_NAMES_LENGTH] = {
IDS_TILE_LOG_OAK,
IDS_TILE_LOG_SPRUCE,
IDS_TILE_LOG_BIRCH,
IDS_TILE_LOG_JUNGLE,
IDS_TILE_LOG_ACACIA,
IDS_TILE_LOG_DARK_OAK
};
const wstring LogTile::TREE_STRING_NAMES[LogTile::TREE_NAMES_LENGTH] = {
L"oak", L"spruce", L"birch", L"jungle", L"acacia", L"big_oak"
};
LogTile::LogTile(int id) : RotatedPillarTile(id, Material::wood)
{
}
int LogTile::getResourceCount(Random *random)
{
return 1;
}
void LogTile::onRemove(Level *level, int x, int y, int z, int id, int data)
{
int r = LeafTile::REQUIRED_WOOD_RANGE;
int r2 = r + 1;
if (level->hasChunksAt(x - r2, y - r2, z - r2, x + r2, y + r2, z + r2))
{
for (int xo = -r; xo <= r; xo++)
for (int yo = -r; yo <= r; yo++)
for (int zo = -r; zo <= r; zo++)
{
int t = level->getTile(x + xo, y + yo, z + zo);
if (t == Tile::leaves_Id)
{
int currentData = level->getData(x + xo, y + yo, z + zo);
if ((currentData & LeafTile::UPDATE_LEAF_BIT) == 0)
{
level->setData(x + xo, y + yo, z + zo, currentData | LeafTile::UPDATE_LEAF_BIT, Tile::UPDATE_NONE);
}
}
}
}
}
unsigned int LogTile::getDescriptionId(int iData /*= -1*/)
{
int type = getWoodType(iData);
if (type < 0) type = 0;
return LogTile::TREE_NAMES[type];
}
Icon *LogTile::getTypeTexture(int type)
{
return icons_side[getWoodType(type)];
}
Icon *LogTile::getTopTexture(int type)
{
return icons_top[getWoodType(type)];
}
int LogTile::getWoodType(int data)
{
return data & MASK_TYPE;
}
shared_ptr<ItemInstance> LogTile::getSilkTouchItemInstance(int data)
{
// fix to avoid getting silktouched sideways logs
return shared_ptr<ItemInstance>(new ItemInstance(id, 1, getWoodType(data)));
}
void LogTile::registerIcons(IconRegister *iconRegister)
{
for (int i = 0; i < TREE_NAMES_LENGTH; i++)
{
icons_side[i] = iconRegister->registerIcon(getIconName() + L"_" + TREE_STRING_NAMES[i]);
icons_top[i] = iconRegister->registerIcon(getIconName() + L"_" + TREE_STRING_NAMES[i] + L"_top");
}
}