the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "net.minecraft.world.item.h"
3#include "net.minecraft.world.entity.h"
4#include "net.minecraft.world.entity.ai.attributes.h"
5#include "net.minecraft.world.entity.player.h"
6#include "net.minecraft.world.entity.monster.h"
7#include "net.minecraft.world.level.tile.h"
8#include "WeaponItem.h"
9
10WeaponItem::WeaponItem(int id, const Tier *tier) : Item(id), tier( tier )
11{
12 maxStackSize = 1;
13 setMaxDamage(tier->getUses());
14
15 damage = 4 + tier->getAttackDamageBonus();
16}
17
18float WeaponItem::getTierDamage()
19{
20 return tier->getAttackDamageBonus();
21}
22
23float WeaponItem::getDestroySpeed(shared_ptr<ItemInstance> itemInstance, Tile *tile)
24{
25 if (tile->id == Tile::web_Id)
26 {
27 // swords can quickly cut web
28 return 15;
29 }
30 // this change modifies which tiles the swords can destroy in creative
31 // mode (>1 == yes)
32 Material *material = tile->material;
33 if (material == Material::plant || material == Material::replaceable_plant || material == Material::coral || material == Material::leaves || material == Material::vegetable)
34 {
35 return 1.5f;
36 }
37 return 1.0f;
38}
39
40bool WeaponItem::hurtEnemy(shared_ptr<ItemInstance> itemInstance, shared_ptr<LivingEntity> mob, shared_ptr<LivingEntity> attacker)
41{
42 itemInstance->hurtAndBreak(1, attacker);
43 return true;
44}
45
46bool WeaponItem::mineBlock(shared_ptr<ItemInstance> itemInstance, Level *level, int tile, int x, int y, int z, shared_ptr<LivingEntity> owner)
47{
48 // Don't damage weapons if the tile can be destroyed in one hit.
49 if (Tile::tiles[tile]->getDestroySpeed(level, x, y, z) != 0.0) itemInstance->hurtAndBreak(2, owner);
50 return true;
51}
52
53bool WeaponItem::isHandEquipped()
54{
55 return true;
56}
57
58UseAnim WeaponItem::getUseAnimation(shared_ptr<ItemInstance> itemInstance)
59{
60 return UseAnim_block;
61}
62
63int WeaponItem::getUseDuration(shared_ptr<ItemInstance> itemInstance)
64{
65 return 20 * 60 * 60; // Block for a maximum of one hour!
66}
67
68shared_ptr<ItemInstance> WeaponItem::use(shared_ptr<ItemInstance> instance, Level *level, shared_ptr<Player> player)
69{
70 player->startUsingItem(instance, getUseDuration(instance));
71 return instance;
72}
73
74bool WeaponItem::canDestroySpecial(Tile *tile)
75{
76 return tile->id == Tile::web_Id;
77}
78
79int WeaponItem::getEnchantmentValue()
80{
81 return tier->getEnchantmentValue();
82}
83
84const Item::Tier *WeaponItem::getTier()
85{
86 return tier;
87}
88
89bool WeaponItem::isValidRepairItem(shared_ptr<ItemInstance> source, shared_ptr<ItemInstance> repairItem)
90{
91 if (tier->getTierItemId() == repairItem->id)
92 {
93 return true;
94 }
95 return Item::isValidRepairItem(source, repairItem);
96}
97
98attrAttrModMap *WeaponItem::getDefaultAttributeModifiers()
99{
100 attrAttrModMap *result = Item::getDefaultAttributeModifiers();
101
102 result->insert(attrAttrModMap::value_type( SharedMonsterAttributes::ATTACK_DAMAGE->getId(), new AttributeModifier(eModifierId_ITEM_BASEDAMAGE, damage, AttributeModifier::OPERATION_ADDITION) ) );
103
104 return result;
105}