the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 105 lines 2.9 kB view raw
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}