mirror of
https://github.com/neoStudiosLCE/neoLegacy.git
synced 2026-06-29 07:57:01 +00:00
fix: sunflower
FINALLY IT WORKS NOW IN THE TUTORIAL WORLD RAHHHHHHHHHHHHHHHHHHHHHHHHHHHH
This commit is contained in:
parent
322d426868
commit
31d5c12f8f
|
|
@ -18,6 +18,13 @@ TerrainParticle::TerrainParticle(Level *level, double x, double y, double z, dou
|
|||
shared_ptr<TerrainParticle> TerrainParticle::init(int x, int y, int z, int data) // 4J - added data parameter
|
||||
{
|
||||
if (tile == nullptr) return nullptr; // tu31 tutorial world fix
|
||||
// double check particle texture cause sunflowers are dysfunctional for whatever reason
|
||||
Icon *resolvedIcon = tile->getTexture(level, x, y, z, 0);
|
||||
if (resolvedIcon != nullptr)
|
||||
{
|
||||
setTex(Minecraft::GetInstance()->textures, resolvedIcon);
|
||||
}
|
||||
|
||||
if (tile == Tile::grass) return dynamic_pointer_cast<TerrainParticle>( shared_from_this() );
|
||||
int col = tile->getColor(level, x, y, z, data); // 4J - added data parameter
|
||||
rCol *= ((col >> 16) & 0xff) / 255.0f;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "../Minecraft.World/JavaMath.h"
|
||||
#include "Tesselator.h"
|
||||
#include "EntityTileRenderer.h"
|
||||
#include "LevelRenderer.h"
|
||||
#include "Options.h"
|
||||
#include "../Minecraft.World/TallGrass2.h"
|
||||
|
||||
|
|
@ -4199,6 +4200,10 @@ bool TileRenderer::tesselateCrossInWorld( Tile* tt, int x, int y, int z )
|
|||
{
|
||||
const int data = level->getData(x, y, z);
|
||||
const bool isUpper = (data & TallGrass2::UPPER_BIT) != 0;
|
||||
if (isUpper && level->getTile(x, y - 1, z) != Tile::double_plant_Id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
int lowerData = data;
|
||||
if (isUpper && level->getTile(x, y - 1, z) == Tile::double_plant_Id)
|
||||
{
|
||||
|
|
@ -4209,7 +4214,8 @@ bool TileRenderer::tesselateCrossInWorld( Tile* tt, int x, int y, int z )
|
|||
if (isUpper && variant == TallGrass2::SUNFLOWER)
|
||||
{
|
||||
// cut off stem height (i think thats how it was in the original LCE?)
|
||||
tesselateCrossStemHeight(tt, data, xt, yt, zt, 0.875f);
|
||||
const int stemRenderData = (lowerData & ~TallGrass2::UPPER_BIT) | TallGrass2::UPPER_BIT;
|
||||
tesselateCrossStemHeight(tt, stemRenderData, xt, yt, zt, 0.875f);
|
||||
TallGrass2* tallGrass = static_cast<TallGrass2*>(tt);
|
||||
Icon* frontTex = tallGrass->getSunflowerHeadFrontIcon();
|
||||
Icon* backTex = tallGrass->getSunflowerHeadBackIcon();
|
||||
|
|
|
|||
|
|
@ -8,10 +8,9 @@
|
|||
#include "../Minecraft.Client/Minecraft.h"
|
||||
#include "net.minecraft.stats.h"
|
||||
|
||||
|
||||
// tranq please i beg you make sure the ids are correct so we dont get corrupted worlds from people
|
||||
static const int TILE_IDS[TallGrass2::VARIANT_COUNT] = {
|
||||
IDS_TILE_SUNFLOWER, // 0 - Sunflower, not implemented yet
|
||||
IDS_TILE_SUNFLOWER, // 0 - Sunflower
|
||||
IDS_TILE_LILAC, // 1 - Lilac
|
||||
IDS_TILE_DOUBLE_TALL_GRASS, // 2 - Tall Grass
|
||||
IDS_TILE_LARGE_FERN, // 3 - Large Fern
|
||||
|
|
@ -20,7 +19,7 @@ static const int TILE_IDS[TallGrass2::VARIANT_COUNT] = {
|
|||
};
|
||||
|
||||
static const int DESCRIPTION_IDS[TallGrass2::VARIANT_COUNT] = {
|
||||
IDS_DESC_SUNFLOWER, // 0 - Sunflower, not implemented yet
|
||||
IDS_DESC_SUNFLOWER, // 0 - Sunflower
|
||||
IDS_DESC_LILAC, // 1 - Lilac
|
||||
IDS_DESC_DOUBLE_TALL_GRASS, // 2 - Tall Grass
|
||||
IDS_DESC_LARGE_FERN, // 3 - Large Fern
|
||||
|
|
@ -133,7 +132,7 @@ void TallGrass2::registerIcons(IconRegister* iconRegister)
|
|||
}
|
||||
|
||||
// sunflower item
|
||||
icon = iconHeadFront[SUNFLOWER] != nullptr ? iconHeadFront[SUNFLOWER] : iconTop[TALL_GRASS];
|
||||
icon = iconHeadFront[SUNFLOWER] != nullptr ? iconHeadFront[SUNFLOWER] : iconTop[SUNFLOWER];
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -326,11 +325,12 @@ void TallGrass2::tick(Level* level, int x, int y, int z, Random* random)
|
|||
int TallGrass2::getResource(int data, Random* random, int playerBonusLevel)
|
||||
{
|
||||
(void)playerBonusLevel;
|
||||
if ((data & UPPER_BIT) != 0) return -1;
|
||||
|
||||
int variant = data & ~UPPER_BIT;
|
||||
if (variant < 0 || variant >= VARIANT_COUNT) variant = 0;
|
||||
|
||||
if (variant == TALL_GRASS)
|
||||
if (variant == TALL_GRASS || variant == LARGE_FERN)
|
||||
{
|
||||
if (random->nextInt(8) == 0)
|
||||
{
|
||||
|
|
@ -338,6 +338,7 @@ int TallGrass2::getResource(int data, Random* random, int playerBonusLevel)
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
return Tile::double_plant_Id;
|
||||
}
|
||||
|
||||
|
|
@ -365,13 +366,16 @@ shared_ptr<ItemInstance> TallGrass2::getSilkTouchItemInstance(int data)
|
|||
|
||||
void TallGrass2::playerDestroy(Level* level, shared_ptr<Player> player, int x, int y, int z, int data)
|
||||
{
|
||||
if ((data & ~UPPER_BIT) == SUNFLOWER)
|
||||
int resolvedVariant = getVariant(level, x, y, z);
|
||||
int resolvedData = (data & UPPER_BIT) | resolvedVariant;
|
||||
|
||||
if (resolvedVariant == SUNFLOWER)
|
||||
{
|
||||
if (!level->isClientSide && !player->abilities.instabuild)
|
||||
{
|
||||
player->awardStat(
|
||||
GenericStats::blocksMined(id),
|
||||
GenericStats::param_blocksMined(id, data, 1));
|
||||
GenericStats::param_blocksMined(id, resolvedData, 1));
|
||||
|
||||
popResource(level, x, y, z, std::make_shared<ItemInstance>(this, 1, SUNFLOWER));
|
||||
}
|
||||
|
|
@ -384,18 +388,17 @@ void TallGrass2::playerDestroy(Level* level, shared_ptr<Player> player, int x, i
|
|||
{
|
||||
player->awardStat(
|
||||
GenericStats::blocksMined(id),
|
||||
GenericStats::param_blocksMined(id, data, 1));
|
||||
GenericStats::param_blocksMined(id, resolvedData, 1));
|
||||
|
||||
if ((data & UPPER_BIT) == 0)
|
||||
if ((resolvedData & UPPER_BIT) == 0)
|
||||
{
|
||||
int variant = data & ~UPPER_BIT;
|
||||
popResource(level, x, y, z, std::make_shared<ItemInstance>(this, 1, variant));
|
||||
popResource(level, x, y, z, std::make_shared<ItemInstance>(this, 1, resolvedVariant));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Tile::playerDestroy(level, player, x, y, z, data);
|
||||
Tile::playerDestroy(level, player, x, y, z, resolvedData);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue