This code was not tested and breaks in Release builds, reverting to restore
functionality of the nightly. All in-game menus do not work and generating
a world crashes.
This reverts commit a9be52c41a.
84 lines
2.1 KiB
C++
84 lines
2.1 KiB
C++
#include "stdafx.h"
|
|
#include "net.minecraft.world.level.h"
|
|
#include "net.minecraft.world.level.dimension.h"
|
|
#include "net.minecraft.world.item.enchantment.h"
|
|
#include "net.minecraft.world.food.h"
|
|
#include "net.minecraft.stats.h"
|
|
#include "IceTile.h"
|
|
|
|
IceTile::IceTile(int id) : HalfTransparentTile(id, L"ice", Material::ice, false)
|
|
{
|
|
friction = 0.98f;
|
|
setTicking(true);
|
|
}
|
|
|
|
int IceTile::getRenderLayer()
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
bool IceTile::shouldRenderFace(LevelSource *level, int x, int y, int z, int face)
|
|
{
|
|
return HalfTransparentTile::shouldRenderFace(level, x, y, z, 1 - face);
|
|
}
|
|
|
|
void IceTile::playerDestroy(Level *level, shared_ptr<Player> player, int x, int y, int z, int data)
|
|
{
|
|
player->awardStat(GenericStats::blocksMined(id), GenericStats::param_blocksMined(id,data,1) );
|
|
player->causeFoodExhaustion(FoodConstants::EXHAUSTION_MINE);
|
|
|
|
if (isSilkTouchable() && EnchantmentHelper::hasSilkTouch(player))
|
|
{
|
|
shared_ptr<ItemInstance> item = getSilkTouchItemInstance(data);
|
|
if (item != NULL)
|
|
{
|
|
popResource(level, x, y, z, item);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (level->dimension->ultraWarm)
|
|
{
|
|
level->removeTile(x, y, z);
|
|
return;
|
|
}
|
|
|
|
int playerBonusLevel = EnchantmentHelper::getDiggingLootBonus(player);
|
|
spawnResources(level, x, y, z, data, playerBonusLevel);
|
|
Material *below = level->getMaterial(x, y - 1, z);
|
|
if (below->blocksMotion() || below->isLiquid())
|
|
{
|
|
level->setTileAndUpdate(x, y, z, Tile::water_Id);
|
|
}
|
|
}
|
|
}
|
|
|
|
int IceTile::getResourceCount(Random *random)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void IceTile::tick(Level *level, int x, int y, int z, Random *random)
|
|
{
|
|
if (level->getBrightness(LightLayer::Block, x, y, z) > 11 - Tile::lightBlock[id])
|
|
{
|
|
if (level->dimension->ultraWarm)
|
|
{
|
|
level->removeTile(x, y, z);
|
|
return;
|
|
}
|
|
this->spawnResources(level, x, y, z, level->getData(x, y, z), 0);
|
|
level->setTileAndUpdate(x, y, z, Tile::calmWater_Id);
|
|
}
|
|
}
|
|
|
|
bool IceTile::shouldTileTick(Level *level, int x,int y,int z)
|
|
{
|
|
return level->getBrightness(LightLayer::Block, x, y, z) > 11 - Tile::lightBlock[id];
|
|
}
|
|
|
|
int IceTile::getPistonPushReaction()
|
|
{
|
|
return Material::PUSH_NORMAL;
|
|
}
|