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.enchantment.h"
3#include "net.minecraft.world.item.h"
4#include "Enchantment.h"
5
6//Enchantment *Enchantment::enchantments[256];
7EnchantmentArray Enchantment::enchantments = EnchantmentArray( 256 );
8vector<Enchantment *> Enchantment::validEnchantments;
9
10Enchantment *Enchantment::allDamageProtection = NULL;
11Enchantment *Enchantment::fireProtection = NULL;
12Enchantment *Enchantment::fallProtection = NULL;
13Enchantment *Enchantment::explosionProtection = NULL;
14Enchantment *Enchantment::projectileProtection = NULL;
15Enchantment *Enchantment::drownProtection = NULL;
16Enchantment *Enchantment::waterWorker = NULL;
17Enchantment *Enchantment::thorns = NULL;
18
19// weapon
20Enchantment *Enchantment::damageBonus = NULL;
21Enchantment *Enchantment::damageBonusUndead = NULL;
22Enchantment *Enchantment::damageBonusArthropods = NULL;
23Enchantment *Enchantment::knockback = NULL;
24Enchantment *Enchantment::fireAspect = NULL;
25Enchantment *Enchantment::lootBonus = NULL;
26
27// digger
28Enchantment *Enchantment::diggingBonus = NULL;
29Enchantment *Enchantment::untouching = NULL;
30Enchantment *Enchantment::digDurability = NULL;
31Enchantment *Enchantment::resourceBonus = NULL;
32
33// bows
34Enchantment *Enchantment::arrowBonus = NULL;
35Enchantment *Enchantment::arrowKnockback = NULL;
36Enchantment *Enchantment::arrowFire = NULL;
37Enchantment *Enchantment::arrowInfinite = NULL;
38
39void Enchantment::staticCtor()
40{
41 allDamageProtection = new ProtectionEnchantment(0, FREQ_COMMON, ProtectionEnchantment::ALL);
42 fireProtection = new ProtectionEnchantment(1, FREQ_UNCOMMON, ProtectionEnchantment::FIRE);
43 fallProtection = new ProtectionEnchantment(2, FREQ_UNCOMMON, ProtectionEnchantment::FALL);
44 explosionProtection = new ProtectionEnchantment(3, FREQ_RARE, ProtectionEnchantment::EXPLOSION);
45 projectileProtection = new ProtectionEnchantment(4, FREQ_UNCOMMON, ProtectionEnchantment::PROJECTILE);
46 drownProtection = new OxygenEnchantment(5, FREQ_RARE);
47 waterWorker = new WaterWorkerEnchantment(6, FREQ_RARE);
48 thorns = new ThornsEnchantment(7, FREQ_VERY_RARE);
49
50 // weapon
51 damageBonus = new DamageEnchantment(16, FREQ_COMMON, DamageEnchantment::ALL);
52 damageBonusUndead = new DamageEnchantment(17, FREQ_UNCOMMON, DamageEnchantment::UNDEAD);
53 damageBonusArthropods = new DamageEnchantment(18, FREQ_UNCOMMON, DamageEnchantment::ARTHROPODS);
54 knockback = new KnockbackEnchantment(19, FREQ_UNCOMMON);
55 fireAspect = new FireAspectEnchantment(20, FREQ_RARE);
56 lootBonus = new LootBonusEnchantment(21, FREQ_RARE, EnchantmentCategory::weapon);
57
58 // digger
59 diggingBonus = new DiggingEnchantment(32, FREQ_COMMON);
60 untouching = new UntouchingEnchantment(33, FREQ_VERY_RARE);
61 digDurability = new DigDurabilityEnchantment(34, FREQ_UNCOMMON);
62 resourceBonus = new LootBonusEnchantment(35, FREQ_RARE, EnchantmentCategory::digger);
63
64 // bows
65 arrowBonus = new ArrowDamageEnchantment(48, FREQ_COMMON);
66 arrowKnockback = new ArrowKnockbackEnchantment(49, FREQ_RARE);
67 arrowFire = new ArrowFireEnchantment(50, FREQ_RARE);
68 arrowInfinite = new ArrowInfiniteEnchantment(51, FREQ_VERY_RARE);
69
70 for(unsigned int i = 0; i < 256; ++i)
71 {
72 Enchantment *enchantment = enchantments[i];
73 if (enchantment != NULL)
74 {
75 validEnchantments.push_back(enchantment);
76 }
77 }
78}
79
80void Enchantment::_init(int id)
81{
82 if (enchantments[id] != NULL)
83 {
84 app.DebugPrintf("Duplicate enchantment id!");
85#ifndef _CONTENT_PACKAGE
86 __debugbreak();
87#endif
88 //throw new IllegalArgumentException("Duplicate enchantment id!");
89 }
90 enchantments[id] = this;
91}
92
93Enchantment::Enchantment(int id, int frequency, const EnchantmentCategory *category) : id(id), frequency(frequency), category(category)
94{
95 _init(id);
96}
97
98Enchantment::Enchantment(int id) : id(id), frequency(FREQ_COMMON), category(EnchantmentCategory::all)
99{
100 _init(id);
101}
102
103int Enchantment::getFrequency()
104{
105 return frequency;
106}
107
108int Enchantment::getMinLevel()
109{
110 return 1;
111}
112
113int Enchantment::getMaxLevel()
114{
115 return 1;
116}
117
118int Enchantment::getMinCost(int level)
119{
120 return 1 + level * 10;
121}
122
123int Enchantment::getMaxCost(int level)
124{
125 return getMinCost(level) + 5;
126}
127
128int Enchantment::getDamageProtection(int level, DamageSource *source)
129{
130 return 0;
131}
132
133float Enchantment::getDamageBonus(int level, shared_ptr<LivingEntity> target)
134{
135 return 0.0f;
136}
137
138bool Enchantment::isCompatibleWith(Enchantment *other) const
139{
140 return this != other;
141}
142
143Enchantment *Enchantment::setDescriptionId(int id)
144{
145 descriptionId = id;
146 return this;
147}
148
149int Enchantment::getDescriptionId()
150{
151 return descriptionId;
152}
153
154HtmlString Enchantment::getFullname(int level)
155{
156 wchar_t formatted[256];
157 swprintf(formatted, 256, L"%ls %ls", app.GetString(getDescriptionId()), getLevelString(level).c_str());
158
159 return HtmlString(formatted, eHTMLColor_f);
160}
161
162bool Enchantment::canEnchant(shared_ptr<ItemInstance> item)
163{
164 return category->canEnchant(item->getItem());
165}
166
167// 4J Added
168wstring Enchantment::getLevelString(int level)
169{
170 int stringId = IDS_ENCHANTMENT_LEVEL_1;
171 switch(level)
172 {
173 case 2:
174 stringId = IDS_ENCHANTMENT_LEVEL_2;
175 break;
176 case 3:
177 stringId = IDS_ENCHANTMENT_LEVEL_3;
178 break;
179 case 4:
180 stringId = IDS_ENCHANTMENT_LEVEL_4;
181 break;
182 case 5:
183 stringId = IDS_ENCHANTMENT_LEVEL_5;
184 break;
185 case 6:
186 stringId = IDS_ENCHANTMENT_LEVEL_6;
187 break;
188 case 7:
189 stringId = IDS_ENCHANTMENT_LEVEL_7;
190 break;
191 case 8:
192 stringId = IDS_ENCHANTMENT_LEVEL_8;
193 break;
194 case 9:
195 stringId = IDS_ENCHANTMENT_LEVEL_9;
196 break;
197 case 10:
198 stringId = IDS_ENCHANTMENT_LEVEL_10;
199 break;
200 };
201 return app.GetString(stringId); //I18n.get("enchantment.level." + level);
202}