Files
MinecraftConsoles/Minecraft.World/FireworksItem.cpp
daoge b3feddfef3 feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
2026-03-03 03:04:10 +08:00

81 lines
2.4 KiB
C++

#include "stdafx.h"
#include "net.minecraft.world.entity.player.h"
#include "net.minecraft.world.entity.projectile.h"
#include "net.minecraft.world.item.h"
#include "net.minecraft.world.level.h"
#include "FireworksItem.h"
const wstring FireworksItem::TAG_FIREWORKS = L"Fireworks";
const wstring FireworksItem::TAG_EXPLOSION = L"Explosion";
const wstring FireworksItem::TAG_EXPLOSIONS = L"Explosions";
const wstring FireworksItem::TAG_FLIGHT = L"Flight";
const wstring FireworksItem::TAG_E_TYPE = L"Type";
const wstring FireworksItem::TAG_E_TRAIL = L"Trail";
const wstring FireworksItem::TAG_E_FLICKER = L"Flicker";
const wstring FireworksItem::TAG_E_COLORS = L"Colors";
const wstring FireworksItem::TAG_E_FADECOLORS = L"FadeColors";
FireworksItem::FireworksItem(int id) : Item(id)
{
}
bool FireworksItem::useOn(shared_ptr<ItemInstance> instance, shared_ptr<Player> player, Level *level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, bool bTestUseOnOnly)
{
// 4J-JEV: Fix for xb1 #173493 - CU7: Content: UI: Missing tooltip for Firework Rocket.
if (bTestUseOnOnly) return true;
if (!level->isClientSide)
{
shared_ptr<FireworksRocketEntity> f = shared_ptr<FireworksRocketEntity>( new FireworksRocketEntity(level, x + clickX, y + clickY, z + clickZ, instance) );
level->addEntity(f);
if (!player->abilities.instabuild)
{
instance->count--;
}
return true;
}
return false;
}
void FireworksItem::appendHoverText(shared_ptr<ItemInstance> itemInstance, shared_ptr<Player> player, vector<HtmlString> *lines, bool advanced)
{
if (!itemInstance->hasTag())
{
return;
}
CompoundTag *fireTag = itemInstance->getTag()->getCompound(TAG_FIREWORKS);
if (fireTag == NULL)
{
return;
}
if (fireTag->contains(TAG_FLIGHT))
{
lines->push_back(wstring(app.GetString(IDS_ITEM_FIREWORKS_FLIGHT)) + L" " + _toString<int>((fireTag->getByte(TAG_FLIGHT))));
}
ListTag<CompoundTag> *explosions = (ListTag<CompoundTag> *) fireTag->getList(TAG_EXPLOSIONS);
if (explosions != NULL && explosions->size() > 0)
{
for (int i = 0; i < explosions->size(); i++)
{
CompoundTag *expTag = explosions->get(i);
vector<HtmlString> eLines;
FireworksChargeItem::appendHoverText(expTag, &eLines);
if (eLines.size() > 0)
{
// Indent lines after first line
for (int i = 1; i < eLines.size(); i++)
{
eLines[i].indent = true;
}
lines->insert(lines->end(), eLines.begin(), eLines.end());
}
}
}
}