Banner Patterns!

Banner Patterns, some lighting fixes, and loot-table nbt!
This commit is contained in:
Tranqlmao
2026-07-14 20:31:05 -04:00
parent 93f1d55db9
commit d7a08122c7
7 changed files with 169 additions and 28 deletions
+16 -16
View File
@@ -10,22 +10,22 @@
const unsigned int BannerItem::COLOR_DESCS[16] =
{
IDS_TILE_BANNER_BLACK,
IDS_TILE_BANNER_RED,
IDS_TILE_BANNER_GREEN,
IDS_TILE_BANNER_BROWN,
IDS_TILE_BANNER_BLUE,
IDS_TILE_BANNER_PURPLE,
IDS_TILE_BANNER_CYAN,
IDS_TILE_BANNER_SILVER,
IDS_TILE_BANNER_GRAY,
IDS_TILE_BANNER_PINK,
IDS_TILE_BANNER_LIME,
IDS_TILE_BANNER_YELLOW,
IDS_TILE_BANNER_LIGHT_BLUE,
IDS_TILE_BANNER_MAGENTA,
IDS_TILE_BANNER_ORANGE,
IDS_TILE_BANNER_WHITE,
IDS_TILE_BANNER_ORANGE,
IDS_TILE_BANNER_MAGENTA,
IDS_TILE_BANNER_LIGHT_BLUE,
IDS_TILE_BANNER_YELLOW,
IDS_TILE_BANNER_LIME,
IDS_TILE_BANNER_PINK,
IDS_TILE_BANNER_GRAY,
IDS_TILE_BANNER_SILVER,
IDS_TILE_BANNER_CYAN,
IDS_TILE_BANNER_PURPLE,
IDS_TILE_BANNER_BLUE,
IDS_TILE_BANNER_BROWN,
IDS_TILE_BANNER_GREEN,
IDS_TILE_BANNER_RED,
IDS_TILE_BANNER_BLACK,
};
BannerItem::BannerItem(int id) : Item(id)
@@ -70,7 +70,7 @@ bool BannerItem::useOn(shared_ptr<ItemInstance> instance, shared_ptr<Player> pla
shared_ptr<BannerTileEntity> bte = dynamic_pointer_cast<BannerTileEntity>(level->getTileEntity(x, y, z));
if (bte != nullptr)
{
int color = instance->getAuxValue() & 15;
int color = 15 - (instance->getAuxValue() & 15);
bte->setBaseColor(color);
bte->setChanged();
}
+1 -1
View File
@@ -133,7 +133,7 @@ void BannerTile::registerIcons(IconRegister *iconRegister)
void BannerTile::playerWillDestroy(Level *level, int x, int y, int z, int data, shared_ptr<Player> player)
{
shared_ptr<BannerTileEntity> bte = dynamic_pointer_cast<BannerTileEntity>(level->getTileEntity(x, y, z));
m_dropColor = (bte != nullptr) ? (bte->getBaseColor() & 15) : 15;
m_dropColor = (bte != nullptr) ? (15 - (bte->getBaseColor() & 15)) : 0;
BaseEntityTile::playerWillDestroy(level, x, y, z, data, player);
}
+11
View File
@@ -4,6 +4,7 @@
#include "LootTableManager.h"
#include "WeighedRandom.h"
#include "WeighedTreasure.h"
#include "EnchantmentHelper.h"
#include <vector>
@@ -21,6 +22,16 @@ namespace
shared_ptr<ItemInstance> item = std::make_shared<ItemInstance>(drop.itemId, 1, drop.data);
if (drop.damageFraction > 0.0)
{
item->setAuxValue((int)((double)item->getMaxDamage() * drop.damageFraction));
}
if (drop.enchantLevels > 0)
{
EnchantmentHelper::enchantItem(random, item, drop.enchantLevels);
}
if (item->getMaxStackSize() >= drop.count)
{
shared_ptr<ItemInstance> copy = item->copy();