Files
minecraft-pe-0.6.1/src/world/item/WeaponItem.h
2026-03-02 22:04:18 +03:00

83 lines
2.0 KiB
C++
Executable File

#ifndef NET_MINECRAFT_WORLD_ITEM__WeaponItem_H__
#define NET_MINECRAFT_WORLD_ITEM__WeaponItem_H__
//package net.minecraft.world.item;
#include "Item.h"
#include "../entity/Entity.h"
#include "../entity/Mob.h"
#include "../entity/player/Player.h"
#include "../level/Level.h"
#include "../level/tile/Tile.h"
class WeaponItem: public Item
{
typedef Item super;
public:
WeaponItem(int id, const Item::Tier& tier)
: super(id),
tier(tier)
{
maxStackSize = 1;
setMaxDamage(tier.getUses());
damage = 4 + tier.getAttackDamageBonus();
}
/*@Override*/
float getDestroySpeed(ItemInstance* itemInstance, Tile* tile) {
//@todo
if (tile->id == Tile::web->id) {
// swords can quickly cut web
return 15;
}
return 1.5f;
}
void hurtEnemy(ItemInstance* itemInstance, Mob* mob/*, Mob* attacker*/) {
itemInstance->hurt(1);// attacker);
//return true;
}
bool mineBlock(ItemInstance* itemInstance, int tile, int x, int y, int z/*, Mob* owner*/) {
itemInstance->hurt(2);//, owner);
return true;
}
int getAttackDamage(Entity* entity) {
return damage;
}
bool isHandEquipped() const {
return true;
}
//UseAnim getUseAnimation(ItemInstance itemInstance) {
// return UseAnim.block;
//}
int getUseDuration(ItemInstance* itemInstance) {
return 20 * 60 * 60; // Block for a maximum of one hour!
}
ItemInstance* use(ItemInstance* instance, Level* level, Player* player) {
//player->startUsingItem(instance, getUseDuration(instance)); //@todo
return instance;
}
// /*@Override*/
bool canDestroySpecial(const Tile* tile) const {
return tile->id == Tile::web->id;
}
///*@Override*/
//int getEnchantmentValue() {
// return tier.getEnchantmentValue();
//}
private:
int damage;
const Tier& tier;
};
#endif /*NET_MINECRAFT_WORLD_ITEM__WeaponItem_H__*/