the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 70 lines 2.3 kB view raw
1#include "stdafx.h" 2#include "..\..\..\Minecraft.World\StringHelpers.h" 3#include "..\..\..\Minecraft.World\net.minecraft.world.item.h" 4#include "..\..\..\Minecraft.World\net.minecraft.world.item.enchantment.h" 5#include "AddEnchantmentRuleDefinition.h" 6 7AddEnchantmentRuleDefinition::AddEnchantmentRuleDefinition() 8{ 9 m_enchantmentId = m_enchantmentLevel = 0; 10} 11 12void AddEnchantmentRuleDefinition::writeAttributes(DataOutputStream *dos, UINT numAttributes) 13{ 14 GameRuleDefinition::writeAttributes(dos, numAttributes + 2); 15 16 ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_enchantmentId); 17 dos->writeUTF( _toString( m_enchantmentId ) ); 18 19 ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_enchantmentLevel); 20 dos->writeUTF( _toString( m_enchantmentLevel ) ); 21} 22 23void AddEnchantmentRuleDefinition::addAttribute(const wstring &attributeName, const wstring &attributeValue) 24{ 25 if(attributeName.compare(L"enchantmentId") == 0) 26 { 27 int value = _fromString<int>(attributeValue); 28 if(value < 0) value = 0; 29 if(value >= 256) value = 255; 30 m_enchantmentId = value; 31 app.DebugPrintf("AddEnchantmentRuleDefinition: Adding parameter enchantmentId=%d\n",m_enchantmentId); 32 } 33 else if(attributeName.compare(L"enchantmentLevel") == 0) 34 { 35 int value = _fromString<int>(attributeValue); 36 if(value < 0) value = 0; 37 m_enchantmentLevel = value; 38 app.DebugPrintf("AddEnchantmentRuleDefinition: Adding parameter enchantmentLevel=%d\n",m_enchantmentLevel); 39 } 40 else 41 { 42 GameRuleDefinition::addAttribute(attributeName, attributeValue); 43 } 44} 45 46bool AddEnchantmentRuleDefinition::enchantItem(shared_ptr<ItemInstance> item) 47{ 48 bool enchanted = false; 49 if (item != NULL) 50 { 51 // 4J-JEV: Ripped code from enchantmenthelpers 52 // Maybe we want to add an addEnchantment method to EnchantmentHelpers 53 if (item->id == Item::enchantedBook_Id) 54 { 55 Item::enchantedBook->addEnchantment( item, new EnchantmentInstance(m_enchantmentId, m_enchantmentLevel) ); 56 } 57 else if (item->isEnchantable()) 58 { 59 Enchantment *e = Enchantment::enchantments[m_enchantmentId]; 60 61 if(e != NULL && e->category->canEnchant(item->getItem())) 62 { 63 int level = min(e->getMaxLevel(), m_enchantmentLevel); 64 item->enchant(e, m_enchantmentLevel); 65 enchanted = true; 66 } 67 } 68 } 69 return enchanted; 70}