Files
LegacyRenouveau/Minecraft.World/MagmaTile.cpp
T

52 lines
1.5 KiB
C++

#include "stdafx.h"
#include "net.minecraft.world.level.h"
#include "MagmaTile.h"
MagmaTile::MagmaTile(int id) : Tile(id, Material::stone)
{
setLightEmission(0.2f);
}
void MagmaTile::tick(Level *level, int x, int y, int z, Random *random)
{
int above = level->getTile(x, y + 1, z);
if (above == Tile::water_Id || above == Tile::flowing_water_Id)
{
level->removeTile(x, y + 1, z);
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, eSoundType_RANDOM_FIZZ, 0.5f, 2.6f + (random->nextFloat() - random->nextFloat()) * 0.8f);
for (int i = 0; i < 8; ++i)
{
float rx = x + 0.5f + (random->nextFloat() - random->nextFloat()) * 0.5f;
float ry = y + 0.25f + random->nextFloat() * 0.25f;
float rz = z + 0.5f + (random->nextFloat() - random->nextFloat()) * 0.5f;
level->addParticle(eParticleType_largesmoke, rx, ry, rz, 0, 0, 0);
}
}
level->addToTickNextTick(x, y, z, id, getTickDelay(level) + random->nextInt(10));
}
void MagmaTile::animateTick(Level *level, int x, int y, int z, Random *random)
{
// rain -> smoke particles
if (level->isRainingAt(x, y + 1, z))
{
for (int i = 0; i < 4; ++i)
{
float rx = x + random->nextFloat();
float ry = y + 1.0f + random->nextFloat() * 0.5f;
float rz = z + random->nextFloat();
level->addParticle(eParticleType_largesmoke, rx, ry, rz, 0, 0, 0);
}
}
}
int MagmaTile::getTickDelay(Level *level)
{
return 160;
}
int MagmaTile::getLightColor(LevelSource *level, int x, int y, int z, int tileId)
{
return 0x0f000f0;
}