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