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 "..\..\..\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}