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.entity.h"
3#include "net.minecraft.world.entity.ai.attributes.h"
4#include "net.minecraft.world.entity.monster.h"
5#include "net.minecraft.world.item.h"
6#include "net.minecraft.world.level.tile.h"
7#include "DiggerItem.h"
8
9DiggerItem::DiggerItem(int id, float attackDamage, const Tier *tier, TileArray *tiles) : Item( id ), tier( tier )
10{
11 //this->tier = tier;
12 this->tiles = tiles;
13 maxStackSize = 1;
14 setMaxDamage(tier->getUses());
15 this->speed = tier->getSpeed();
16 this->attackDamage = attackDamage + tier->getAttackDamageBonus();
17}
18
19float DiggerItem::getDestroySpeed(shared_ptr<ItemInstance> itemInstance, Tile *tile)
20{
21 for (unsigned int i = 0; i < tiles->length; i++)
22 if ( (*tiles)[i] == tile) return speed;
23 return 1;
24}
25
26bool DiggerItem::hurtEnemy(shared_ptr<ItemInstance> itemInstance, shared_ptr<LivingEntity> mob, shared_ptr<LivingEntity> attacker)
27{
28 itemInstance->hurtAndBreak(2, attacker);
29 return true;
30}
31
32bool DiggerItem::mineBlock(shared_ptr<ItemInstance> itemInstance, Level *level, int tile, int x, int y, int z, shared_ptr<LivingEntity> owner)
33{
34 // Don't damage tools if the tile can be destroyed in one hit.
35 if (Tile::tiles[tile]->getDestroySpeed(level, x, y, z) != 0.0) itemInstance->hurtAndBreak(1, owner);
36 return true;
37}
38
39bool DiggerItem::isHandEquipped()
40{
41 return true;
42}
43
44int DiggerItem::getEnchantmentValue()
45{
46 return tier->getEnchantmentValue();
47}
48
49const Item::Tier *DiggerItem::getTier()
50{
51 return tier;
52}
53
54bool DiggerItem::isValidRepairItem(shared_ptr<ItemInstance> source, shared_ptr<ItemInstance> repairItem)
55{
56 if (tier->getTierItemId() == repairItem->id)
57 {
58 return true;
59 }
60 return Item::isValidRepairItem(source, repairItem);
61}
62
63attrAttrModMap *DiggerItem::getDefaultAttributeModifiers()
64{
65 attrAttrModMap *result = Item::getDefaultAttributeModifiers();
66
67 (*result)[SharedMonsterAttributes::ATTACK_DAMAGE->getId()] = new AttributeModifier(eModifierId_ITEM_BASEDAMAGE, attackDamage, AttributeModifier::OPERATION_ADDITION);
68
69 return result;
70}