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 "ColourTable.h"
3#include "..\..\..\Minecraft.World\StringHelpers.h"
4
5unordered_map<wstring,eMinecraftColour> ColourTable::s_colourNamesMap;
6
7wchar_t *ColourTable::ColourTableElements[eMinecraftColour_COUNT] =
8{
9 L"NOTSET",
10
11 L"Foliage_Evergreen",
12 L"Foliage_Birch",
13 L"Foliage_Default",
14 L"Foliage_Common",
15 L"Foliage_Ocean",
16 L"Foliage_Plains",
17 L"Foliage_Desert",
18 L"Foliage_ExtremeHills",
19 L"Foliage_Forest",
20 L"Foliage_Taiga",
21 L"Foliage_Swampland",
22 L"Foliage_River",
23 L"Foliage_Hell",
24 L"Foliage_Sky",
25 L"Foliage_FrozenOcean",
26 L"Foliage_FrozenRiver",
27 L"Foliage_IcePlains",
28 L"Foliage_IceMountains",
29 L"Foliage_MushroomIsland",
30 L"Foliage_MushroomIslandShore",
31 L"Foliage_Beach",
32 L"Foliage_DesertHills",
33 L"Foliage_ForestHills",
34 L"Foliage_TaigaHills",
35 L"Foliage_ExtremeHillsEdge",
36 L"Foliage_Jungle",
37 L"Foliage_JungleHills",
38
39 L"Grass_Common",
40 L"Grass_Ocean",
41 L"Grass_Plains",
42 L"Grass_Desert",
43 L"Grass_ExtremeHills",
44 L"Grass_Forest",
45 L"Grass_Taiga",
46 L"Grass_Swampland",
47 L"Grass_River",
48 L"Grass_Hell",
49 L"Grass_Sky",
50 L"Grass_FrozenOcean",
51 L"Grass_FrozenRiver",
52 L"Grass_IcePlains",
53 L"Grass_IceMountains",
54 L"Grass_MushroomIsland",
55 L"Grass_MushroomIslandShore",
56 L"Grass_Beach",
57 L"Grass_DesertHills",
58 L"Grass_ForestHills",
59 L"Grass_TaigaHills",
60 L"Grass_ExtremeHillsEdge",
61 L"Grass_Jungle",
62 L"Grass_JungleHills",
63
64 L"Water_Ocean",
65 L"Water_Plains",
66 L"Water_Desert",
67 L"Water_ExtremeHills",
68 L"Water_Forest",
69 L"Water_Taiga",
70 L"Water_Swampland",
71 L"Water_River",
72 L"Water_Hell",
73 L"Water_Sky",
74 L"Water_FrozenOcean",
75 L"Water_FrozenRiver",
76 L"Water_IcePlains",
77 L"Water_IceMountains",
78 L"Water_MushroomIsland",
79 L"Water_MushroomIslandShore",
80 L"Water_Beach",
81 L"Water_DesertHills",
82 L"Water_ForestHills",
83 L"Water_TaigaHills",
84 L"Water_ExtremeHillsEdge",
85 L"Water_Jungle",
86 L"Water_JungleHills",
87
88 L"Sky_Ocean",
89 L"Sky_Plains",
90 L"Sky_Desert",
91 L"Sky_ExtremeHills",
92 L"Sky_Forest",
93 L"Sky_Taiga",
94 L"Sky_Swampland",
95 L"Sky_River",
96 L"Sky_Hell",
97 L"Sky_Sky",
98 L"Sky_FrozenOcean",
99 L"Sky_FrozenRiver",
100 L"Sky_IcePlains",
101 L"Sky_IceMountains",
102 L"Sky_MushroomIsland",
103 L"Sky_MushroomIslandShore",
104 L"Sky_Beach",
105 L"Sky_DesertHills",
106 L"Sky_ForestHills",
107 L"Sky_TaigaHills",
108 L"Sky_ExtremeHillsEdge",
109 L"Sky_Jungle",
110 L"Sky_JungleHills",
111
112 L"Tile_RedstoneDust",
113 L"Tile_RedstoneDustUnlit",
114 L"Tile_RedstoneDustLitMin",
115 L"Tile_RedstoneDustLitMax",
116 L"Tile_StemMin",
117 L"Tile_StemMax",
118 L"Tile_WaterLily",
119
120 L"Sky_Dawn_Dark",
121 L"Sky_Dawn_Bright",
122
123 L"Material_None",
124 L"Material_Grass",
125 L"Material_Sand",
126 L"Material_Cloth",
127 L"Material_Fire",
128 L"Material_Ice",
129 L"Material_Metal",
130 L"Material_Plant",
131 L"Material_Snow",
132 L"Material_Clay",
133 L"Material_Dirt",
134 L"Material_Stone",
135 L"Material_Water",
136 L"Material_Wood",
137 L"Material_Emerald",
138
139 L"Particle_Note_00",
140 L"Particle_Note_01",
141 L"Particle_Note_02",
142 L"Particle_Note_03",
143 L"Particle_Note_04",
144 L"Particle_Note_05",
145 L"Particle_Note_06",
146 L"Particle_Note_07",
147 L"Particle_Note_08",
148 L"Particle_Note_09",
149 L"Particle_Note_10",
150 L"Particle_Note_11",
151 L"Particle_Note_12",
152 L"Particle_Note_13",
153 L"Particle_Note_14",
154 L"Particle_Note_15",
155 L"Particle_Note_16",
156 L"Particle_Note_17",
157 L"Particle_Note_18",
158 L"Particle_Note_19",
159 L"Particle_Note_20",
160 L"Particle_Note_21",
161 L"Particle_Note_22",
162 L"Particle_Note_23",
163 L"Particle_Note_24",
164
165 L"Particle_NetherPortal",
166 L"Particle_EnderPortal",
167 L"Particle_Smoke",
168 L"Particle_Ender",
169
170 L"Particle_Explode",
171 L"Particle_HugeExplosion",
172
173 L"Particle_DripWater",
174 L"Particle_DripLavaStart",
175 L"Particle_DripLavaEnd",
176
177 L"Particle_EnchantmentTable",
178 L"Particle_DragonBreathMin",
179 L"Particle_DragonBreathMax",
180 L"Particle_Suspend",
181
182 L"Particle_CritStart", // arrow in air
183 L"Particle_CritEnd", // arrow in air
184
185 L"Effect_MovementSpeed",
186 L"Effect_MovementSlowDown",
187 L"Effect_DigSpeed",
188 L"Effect_DigSlowdown",
189 L"Effect_DamageBoost",
190 L"Effect_Heal",
191 L"Effect_Harm",
192 L"Effect_Jump",
193 L"Effect_Confusion",
194 L"Effect_Regeneration",
195 L"Effect_DamageResistance",
196 L"Effect_FireResistance",
197 L"Effect_WaterBreathing",
198 L"Effect_Invisiblity",
199 L"Effect_Blindness",
200 L"Effect_NightVision",
201 L"Effect_Hunger",
202 L"Effect_Weakness",
203 L"Effect_Poison",
204 L"Effect_Wither",
205 L"Effect_HealthBoost",
206 L"Effect_Absorption",
207 L"Effect_Saturation",
208
209 L"Potion_BaseColour",
210
211 L"Mob_Creeper_Colour1",
212 L"Mob_Creeper_Colour2",
213 L"Mob_Skeleton_Colour1",
214 L"Mob_Skeleton_Colour2",
215 L"Mob_Spider_Colour1",
216 L"Mob_Spider_Colour2",
217 L"Mob_Zombie_Colour1",
218 L"Mob_Zombie_Colour2",
219 L"Mob_Slime_Colour1",
220 L"Mob_Slime_Colour2",
221 L"Mob_Ghast_Colour1",
222 L"Mob_Ghast_Colour2",
223 L"Mob_PigZombie_Colour1",
224 L"Mob_PigZombie_Colour2",
225 L"Mob_Enderman_Colour1",
226 L"Mob_Enderman_Colour2",
227 L"Mob_CaveSpider_Colour1",
228 L"Mob_CaveSpider_Colour2",
229 L"Mob_Silverfish_Colour1",
230 L"Mob_Silverfish_Colour2",
231 L"Mob_Blaze_Colour1",
232 L"Mob_Blaze_Colour2",
233 L"Mob_LavaSlime_Colour1",
234 L"Mob_LavaSlime_Colour2",
235 L"Mob_Pig_Colour1",
236 L"Mob_Pig_Colour2",
237 L"Mob_Sheep_Colour1",
238 L"Mob_Sheep_Colour2",
239 L"Mob_Cow_Colour1",
240 L"Mob_Cow_Colour2",
241 L"Mob_Chicken_Colour1",
242 L"Mob_Chicken_Colour2",
243 L"Mob_Squid_Colour1",
244 L"Mob_Squid_Colour2",
245 L"Mob_Wolf_Colour1",
246 L"Mob_Wolf_Colour2",
247 L"Mob_MushroomCow_Colour1",
248 L"Mob_MushroomCow_Colour2",
249 L"Mob_Ocelot_Colour1",
250 L"Mob_Ocelot_Colour2",
251 L"Mob_Villager_Colour1",
252 L"Mob_Villager_Colour2",
253 L"Mob_Bat_Colour1",
254 L"Mob_Bat_Colour2",
255 L"Mob_Witch_Colour1",
256 L"Mob_Witch_Colour2",
257 L"Mob_Horse_Colour1",
258 L"Mob_Horse_Colour2",
259
260 L"Armour_Default_Leather_Colour",
261 L"Under_Water_Clear_Colour",
262 L"Under_Lava_Clear_Colour",
263 L"In_Cloud_Base_Colour",
264
265 L"Under_Water_Fog_Colour",
266 L"Under_Lava_Fog_Colour",
267 L"In_Cloud_Fog_Colour",
268
269 L"Default_Fog_Colour",
270 L"Nether_Fog_Colour",
271 L"End_Fog_Colour",
272
273 L"Sign_Text",
274 L"Map_Text",
275
276 L"Leash_Light_Colour",
277 L"Leash_Dark_Colour",
278
279 L"Fire_Overlay",
280
281 L"HTMLColor_0",
282 L"HTMLColor_1",
283 L"HTMLColor_2",
284 L"HTMLColor_3",
285 L"HTMLColor_4",
286 L"HTMLColor_5",
287 L"HTMLColor_6",
288 L"HTMLColor_7",
289 L"HTMLColor_8",
290 L"HTMLColor_9",
291 L"HTMLColor_a",
292 L"HTMLColor_b",
293 L"HTMLColor_c",
294 L"HTMLColor_d",
295 L"HTMLColor_e",
296 L"HTMLColor_f",
297 L"HTMLColor_dark_0",
298 L"HTMLColor_dark_1",
299 L"HTMLColor_dark_2",
300 L"HTMLColor_dark_3",
301 L"HTMLColor_dark_4",
302 L"HTMLColor_dark_5",
303 L"HTMLColor_dark_6",
304 L"HTMLColor_dark_7",
305 L"HTMLColor_dark_8",
306 L"HTMLColor_dark_9",
307 L"HTMLColor_dark_a",
308 L"HTMLColor_dark_b",
309 L"HTMLColor_dark_c",
310 L"HTMLColor_dark_d",
311 L"HTMLColor_dark_e",
312 L"HTMLColor_dark_f",
313 L"HTMLColor_T1",
314 L"HTMLColor_T2",
315 L"HTMLColor_T3",
316 L"HTMLColor_Black",
317 L"HTMLColor_White",
318 L"Color_EnchantText",
319 L"Color_EnchantTextFocus",
320 L"Color_EnchantTextDisabled",
321 L"Color_RenamedItemTitle",
322};
323
324void ColourTable::staticCtor()
325{
326 for(unsigned int i = eMinecraftColour_NOT_SET; i < eMinecraftColour_COUNT; ++i)
327 {
328 s_colourNamesMap.insert( unordered_map<wstring,eMinecraftColour>::value_type( ColourTableElements[i], (eMinecraftColour)i) );
329 }
330}
331
332ColourTable::ColourTable(PBYTE pbData, DWORD dwLength)
333{
334 loadColoursFromData(pbData, dwLength);
335}
336
337ColourTable::ColourTable(ColourTable *defaultColours, PBYTE pbData, DWORD dwLength)
338{
339 // 4J Stu - Default the colours that of the table passed in
340 XMemCpy( (void *)m_colourValues, (void *)defaultColours->m_colourValues, sizeof(int) * eMinecraftColour_COUNT);
341 loadColoursFromData(pbData, dwLength);
342}
343void ColourTable::loadColoursFromData(PBYTE pbData, DWORD dwLength)
344{
345 byteArray src(pbData, dwLength);
346
347 ByteArrayInputStream bais(src);
348 DataInputStream dis(&bais);
349
350 int versionNumber = dis.readInt();
351 int coloursCount = dis.readInt();
352
353 for(int i = 0; i < coloursCount; ++i)
354 {
355 wstring colourId = dis.readUTF();
356 int colourValue = dis.readInt();
357 setColour(colourId, colourValue);
358 AUTO_VAR(it,s_colourNamesMap.find(colourId));
359 }
360
361 bais.reset();
362}
363
364void ColourTable::setColour(const wstring &colourName, int value)
365{
366 AUTO_VAR(it,s_colourNamesMap.find(colourName));
367 if(it != s_colourNamesMap.end())
368 {
369 m_colourValues[(int)it->second] = value;
370 }
371}
372
373void ColourTable::setColour(const wstring &colourName, const wstring &value)
374{
375 setColour(colourName, _fromHEXString<int>(value));
376}
377
378unsigned int ColourTable::getColour(eMinecraftColour id)
379{
380 return m_colourValues[(int)id];
381}