TU43 Structures, bug fixes & minor changes

- Elytra flight, damage, kinetic energy, pretty much any bug someone reported, paper doll, etc.
- Fossil & Igloo generation
- Texture interpolation
- Iggy mouse fix for world settings
- Neo branding on main screen
- Release build txt logger
- Debug mode spectator
- Several server fixes
- Flowerpot fixes
- Several more changes made in TU43
This commit is contained in:
Tranqlmao
2026-07-11 19:30:16 -04:00
parent d236146e92
commit a4c746bee4
89 changed files with 1793 additions and 590 deletions
+55 -27
View File
@@ -4,14 +4,20 @@
#include "net.minecraft.world.level.h"
#include "net.minecraft.world.level.tile.h"
#include "FlowerPotTile.h"
#include "FlowerPotTileEntity.h"
FlowerPotTile::FlowerPotTile(int id) : Tile(id, Material::decoration, isSolidRender() )
FlowerPotTile::FlowerPotTile(int id) : BaseEntityTile(id, Material::decoration, isSolidRender())
{
setLightBlock(0);
updateDefaultShape();
sendTileData();
}
shared_ptr<TileEntity> FlowerPotTile::newTileEntity(Level *level)
{
return std::make_shared<FlowerPotTileEntity>();
}
void FlowerPotTile::createBlockStateDefinition()
{
if (!m_blockStateDefinition)
@@ -71,6 +77,15 @@ bool FlowerPotTile::use(Level *level, int x, int y, int z, shared_ptr<Player> pl
{
level->setData(x, y, z, type, Tile::UPDATE_CLIENTS);
shared_ptr<TileEntity> teBase = level->getTileEntity(x, y, z);
shared_ptr<FlowerPotTileEntity> te = teBase ? std::dynamic_pointer_cast<FlowerPotTileEntity>(teBase) : nullptr;
if (te == nullptr)
{
te = std::make_shared<FlowerPotTileEntity>();
level->setTileEntity(x, y, z, te);
}
te->setFlowerItem(item->getItem()->id, item->getAuxValue());
if (!player->abilities.instabuild)
{
if (--item->count <= 0)
@@ -87,30 +102,24 @@ bool FlowerPotTile::use(Level *level, int x, int y, int z, shared_ptr<Player> pl
int FlowerPotTile::cloneTileId(Level *level, int x, int y, int z)
{
shared_ptr<ItemInstance> item = getItemFromType(level->getData(x, y, z));
shared_ptr<TileEntity> te = level->getTileEntity(x, y, z);
shared_ptr<FlowerPotTileEntity> fpte = te ? std::dynamic_pointer_cast<FlowerPotTileEntity>(te) : nullptr;
if (fpte && fpte->hasFlower())
return fpte->getFlowerItemId();
if (item == nullptr)
{
return Item::flower_pot_Id;
}
else
{
return item->id;
}
shared_ptr<ItemInstance> item = getItemFromType(level->getData(x, y, z));
return item ? item->id : Item::flower_pot_Id;
}
int FlowerPotTile::cloneTileData(Level *level, int x, int y, int z)
{
shared_ptr<ItemInstance> item = getItemFromType(level->getData(x, y, z));
shared_ptr<TileEntity> te = level->getTileEntity(x, y, z);
shared_ptr<FlowerPotTileEntity> fpte = te ? std::dynamic_pointer_cast<FlowerPotTileEntity>(te) : nullptr;
if (fpte && fpte->hasFlower())
return fpte->getFlowerAuxValue();
if (item == nullptr)
{
return Item::flower_pot_Id;
}
else
{
return item->getAuxValue();
}
shared_ptr<ItemInstance> item = getItemFromType(level->getData(x, y, z));
return item ? item->getAuxValue() : 0;
}
bool FlowerPotTile::useOwnCloneData()
@@ -133,15 +142,26 @@ void FlowerPotTile::neighborChanged(Level *level, int x, int y, int z, int type)
}
}
void FlowerPotTile::onRemove(Level *level, int x, int y, int z, int id, int data)
{
if (data > 0)
{
shared_ptr<TileEntity> te = level->getTileEntity(x, y, z);
shared_ptr<FlowerPotTileEntity> fpte = te ? std::dynamic_pointer_cast<FlowerPotTileEntity>(te) : nullptr;
shared_ptr<ItemInstance> item;
if (fpte && fpte->hasFlower())
item = std::make_shared<ItemInstance>(fpte->getFlowerItemId(), 1, fpte->getFlowerAuxValue());
else
item = getItemFromType(data);
if (item != nullptr)
popResource(level, x, y, z, item);
}
BaseEntityTile::onRemove(level, x, y, z, id, data);
}
void FlowerPotTile::spawnResources(Level *level, int x, int y, int z, int data, float odds, int playerBonusLevel)
{
Tile::spawnResources(level, x, y, z, data, odds, playerBonusLevel);
if (data > 0)
{
shared_ptr<ItemInstance> item = getItemFromType(data);
if (item != nullptr) popResource(level, x, y, z, item);
}
}
int FlowerPotTile::getResource(int data, Random *random, int playerBonusLevel)
@@ -154,7 +174,15 @@ shared_ptr<ItemInstance> FlowerPotTile::getItemFromType(int type)
switch (type)
{
case TYPE_FLOWER_RED:
return std::make_shared<ItemInstance>(Tile::rose);
return std::make_shared<ItemInstance>(Tile::rose, 1, 0);
case TYPE_FLOWER_BLUE_ORCHID:
return std::make_shared<ItemInstance>(Tile::rose, 1, Rose::BLUE_ORCHID);
case TYPE_FLOWER_ALLIUM:
return std::make_shared<ItemInstance>(Tile::rose, 1, Rose::ALLIUM);
case TYPE_FLOWER_AZURE_BLUET:
return std::make_shared<ItemInstance>(Tile::rose, 1, Rose::AZURE_BLUET);
case TYPE_FLOWER_OXEYE_DAISY:
return std::make_shared<ItemInstance>(Tile::rose, 1, Rose::OXEYE_DAISY);
case TYPE_FLOWER_YELLOW:
return std::make_shared<ItemInstance>(Tile::flower);
case TYPE_CACTUS:
@@ -216,4 +244,4 @@ int FlowerPotTile::getTypeFromItem(shared_ptr<ItemInstance> item)
}
return 0;
}
}