Files
MinecraftConsoles/Minecraft.World/EmptyLevelChunk.cpp
2026-03-07 03:31:30 +07:00

228 lines
4.4 KiB
C++

#include "stdafx.h"
#include "Arrays.h"
#include "net.minecraft.world.level.h"
#include "net.minecraft.world.phys.h"
#include "EmptyLevelChunk.h"
EmptyLevelChunk::EmptyLevelChunk(Level *level, int x, int z) : LevelChunk(level,x,z)
{
dontSave = true;
// Set this as fully post-processed, so we don't try and run post-processing on any edge chunks that will overlap into real chunks
terrainPopulated = LevelChunk::sTerrainPopulatedAllNeighbours | LevelChunk::sTerrainPostPostProcessed;
}
EmptyLevelChunk::EmptyLevelChunk(Level *level, byteArray blocks, int x, int z): LevelChunk(level,blocks,x,z)
{
dontSave = true;
delete [] blocks.data;
// Set this as fully post-processed, so we don't try and run post-processing on any edge chunks that will overlap into real chunks
terrainPopulated = LevelChunk::sTerrainPopulatedAllNeighbours | LevelChunk::sTerrainPostPostProcessed;
}
bool EmptyLevelChunk::isAt(int x, int z)
{
return x == this->x && z == this->z;
}
int EmptyLevelChunk::getHeightmap(int x, int z)
{
return 0;
}
void EmptyLevelChunk::recalcBlockLights()
{
}
void EmptyLevelChunk::recalcHeightmapOnly()
{
}
void EmptyLevelChunk::recalcHeightmap()
{
}
void EmptyLevelChunk::lightLava()
{
}
int EmptyLevelChunk::getTile(int x, int y, int z)
{
return 0;
}
bool EmptyLevelChunk::setTileAndData(int x, int y, int z, int _tile, int _data)
{
return true;
}
bool EmptyLevelChunk::setTile(int x, int y, int z, int _tile)
{
return true;
}
int EmptyLevelChunk::getData(int x, int y, int z)
{
return 0;
}
bool EmptyLevelChunk::setData(int x, int y, int z, int val, int mask, bool *maskedBitsChanged)
{
*maskedBitsChanged = true;
return false;
}
int EmptyLevelChunk::getBrightness(LightLayer::variety layer, int x, int y, int z)
{
return 0;
}
// 4J added
void EmptyLevelChunk::getNeighbourBrightnesses(int *brightnesses, LightLayer::variety layer, int x, int y, int z)
{
for(int i = 0; i < 6; i++ )
{
brightnesses[i] = 0;
}
}
void EmptyLevelChunk::setBrightness(LightLayer::variety layer, int x, int y, int z, int brightness)
{
}
int EmptyLevelChunk::getRawBrightness(int x, int y, int z, int skyDampen)
{
return 0;
}
void EmptyLevelChunk::addEntity(shared_ptr<Entity> e)
{
}
void EmptyLevelChunk::removeEntity(shared_ptr<Entity> e)
{
}
void EmptyLevelChunk::removeEntity(shared_ptr<Entity> e, int yc)
{
}
bool EmptyLevelChunk::isSkyLit(int x, int y, int z)
{
return false;
}
void EmptyLevelChunk::skyBrightnessChanged()
{
}
shared_ptr<TileEntity> EmptyLevelChunk::getTileEntity(int x, int y, int z)
{
return shared_ptr<TileEntity>();
}
void EmptyLevelChunk::addTileEntity(shared_ptr<TileEntity> te)
{
}
void EmptyLevelChunk::setTileEntity(int x, int y, int z, shared_ptr<TileEntity> tileEntity)
{
}
void EmptyLevelChunk::removeTileEntity(int x, int y, int z)
{
}
void EmptyLevelChunk::load()
{
}
void EmptyLevelChunk::unload(bool unloadTileEntities) // 4J - added parameter
{
}
bool EmptyLevelChunk::containsPlayer()
{
return false;
}
void EmptyLevelChunk::markUnsaved()
{
}
void EmptyLevelChunk::getEntities(shared_ptr<Entity> except, AABB bb, vector<shared_ptr<Entity> > &es, EntitySelector *selector)
{
}
void EmptyLevelChunk::getEntitiesOfClass(const type_info& ec, AABB bb, vector<shared_ptr<Entity> > &es, EntitySelector *selector)
{
}
int EmptyLevelChunk::countEntities()
{
return 0;
}
bool EmptyLevelChunk::shouldSave(bool force)
{
return false;
}
void EmptyLevelChunk::setBlocks(byteArray newBlocks, int sub)
{
}
int EmptyLevelChunk::getBlocksAndData(byteArray data, int x0, int y0, int z0, int x1, int y1, int z1, int p, bool includeLighting/* = true*/)
{
int xs = x1 - x0;
int ys = y1 - y0;
int zs = z1 - z0;
int s = xs * ys * zs;
int len;
if( includeLighting )
{
len = s + s / 2 * 3;
}
else
{
len = s + s / 2;
}
Arrays::fill(data, p, p + len, (byte) 0);
return len;
}
int EmptyLevelChunk::setBlocksAndData(byteArray data, int x0, int y0, int z0, int x1, int y1, int z1, int p, bool includeLighting/* = true*/)
{
int xs = x1 - x0;
int ys = y1 - y0;
int zs = z1 - z0;
int s = xs * ys * zs;
if( includeLighting )
{
return s + s / 2 * 3;
}
else
{
return s + s / 2;
}
}
bool EmptyLevelChunk::testSetBlocksAndData(byteArray data, int x0, int y0, int z0, int x1, int y1, int z1, int p)
{
return false;
}
Random *EmptyLevelChunk::getRandom(int64_t l)
{
return new Random((level->getSeed() + x * x * 4987142 + x * 5947611 + z * z * 4392871l + z * 389711) ^ l);
}
bool EmptyLevelChunk::isEmpty()
{
return true;
}