#include "stdafx.h" #include "net.minecraft.world.phys.h" #include "net.minecraft.world.entity.player.h" #include "net.minecraft.world.level.h" #include "net.minecraft.world.level.material.h" #include "net.minecraft.world.item.h" #include "BottleItem.h" BottleItem::BottleItem(int id) : Item(id) { } Icon *BottleItem::getIcon(int auxValue) { return Item::potion->getIcon(0); } shared_ptr BottleItem::use(shared_ptr itemInstance, Level *level, shared_ptr player) { HitResult *hr = getPlayerPOVHitResult(level, player, true); if (hr == nullptr) return itemInstance; if (hr->type == HitResult::TILE) { int xt = hr->x; int yt = hr->y; int zt = hr->z; delete hr; if (!level->mayInteract(player, xt, yt, zt, 0)) { return itemInstance; } if (!player->mayUseItemAt(xt, yt, zt, hr->f, itemInstance)) { return itemInstance; } if (level->getMaterial(xt, yt, zt) == Material::water) { itemInstance->count--; if (itemInstance->count <= 0) { return std::make_shared(static_cast(Item::potion)); } else { if (!player->inventory->add(std::make_shared(static_cast(Item::potion)))) { player->drop(std::make_shared(Item::potion_Id, 1, 0)); } } } } else { delete hr; } return itemInstance; } // 4J-PB - added to allow tooltips bool BottleItem::TestUse(shared_ptr itemInstance, Level *level, shared_ptr player) { HitResult *hr = getPlayerPOVHitResult(level, player, true); if (hr == nullptr) return false; if (hr->type == HitResult::TILE) { int xt = hr->x; int yt = hr->y; int zt = hr->z; delete hr; if (!level->mayInteract(player, xt, yt, zt, 0)) { return false; } if (!player->mayUseItemAt(xt, yt, zt, hr->f, itemInstance)) { return false; } if (level->getMaterial(xt, yt, zt) == Material::water) { return true; } } else { delete hr; } return false; } void BottleItem::registerIcons(IconRegister *iconRegister) { // We reuse another texture. }