diff --git a/src/packets.c b/src/packets.c index 59c2ebb..f9ad352 100644 --- a/src/packets.c +++ b/src/packets.c @@ -429,7 +429,7 @@ int cs_useItemOn (int client_fd) { if (getPlayerData(client_fd, &player)) return 1; uint16_t item = player->inventory_items[player->hotbar]; - uint8_t block = item == 320 ? B_crafting_table : I_to_B[item]; // hack!! + uint8_t block = I_to_B(item); // if the selected item doesn't correspond to a block, exit if (block == 0) return 0; diff --git a/src/registries.c b/src/registries.c index c38327b..049563d 100644 --- a/src/registries.c +++ b/src/registries.c @@ -482,9 +482,266 @@ uint8_t registries_bin[] = { 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x00 }; +// Block palette +uint16_t block_palette[] = { 0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 31, 33, 35, 37, 39, 41, 43, 50, 85, 86, 118, 119, 123, 124, 125, 129, 130, 131, 132, 133, 134, 135, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 166, 169, 172, 175, 178, 181, 184, 187, 190, 193, 196, 199, 202, 205, 208, 211, 214, 217, 220, 223, 226, 229, 232, 235, 238, 241, 244, 247, 250, 279, 307, 335, 363, 391, 419, 447, 475, 503, 531, 559, 560, 561, 562, 563, 564, 565, 567, 578, 579, 580, 582, 1734, 1750, 1766, 1782, 1798, 1814, 1830, 1846, 1862, 1878, 1894, 1910, 1926, 1942, 1958, 1974, 2000, 2024, 2041, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2063, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2141, 2142, 2206, 2399, 2400, 2401, 2919, 2927, 2949, 3019, 4338, 4339, 4340, 4341, 4342, 4350, 4359, 4367, 4399, 4431, 4463, 4495, 4527, 4559, 4591, 4623, 4655, 4697, 4751, 4759, 4789, 4971, 5035, 5099, 5163, 5227, 5291, 5355, 5419, 5483, 5547, 5611, 5675, 5811, 5827, 5839, 5893, 5895, 5897, 5899, 5901, 5903, 5905, 5907, 5909, 5911, 5913, 5915, 5916, 5935, 5950, 5958, 5959, 5960, 5976, 5977, 5978, 5995, 6027, 6028, 6029, 6030, 6032, 6035, 6037, 6042, 6045, 6049, 6053, 6063, 6124, 6125, 6126, 6127 }; // Block-to-item mapping uint8_t B_to_I[] = { 0, 1, 2, 3, 4, 5, 6, 7, 27, 28, 29, 30, 35, 36, 37, 38, 39, 40, 41, 42, 177, 43, 44, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 59, 60, 62, 63, 61, 70, 71, 66, 67, 64, 65, 80, 134, 135, 136, 137, 138, 139, 141, 140, 142, 143, 144, 147, 149, 150, 151, 152, 153, 154, 155, 148, 156, 170, 171, 172, 173, 174, 175, 176, 178, 179, 159, 160, 161, 162, 163, 164, 165, 166, 167, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 76, 77, 197, 0, 198, 199, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 202, 203, 207, 204, 209, 210, 211, 0, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 244, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 242, 247, 248, 92, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // 256 // Item-to-block mapping -uint8_t I_to_B[] = { 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 40, 38, 39, 45, 46, 43, 44, 0, 0, 41, 42, 228, 229, 0, 0, 101, 102, 182, 183, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 169, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, 53, 55, 54, 56, 57, 58, 0, 0, 59, 67, 60, 61, 62, 63, 64, 65, 66, 68, 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 0, 69, 70, 71, 72, 73, 74, 75, 20, 76, 77, 0, 0, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 0, 103, 105, 106, 107, 128, 129, 130, 132, 0, 0, 131, 0, 133, 134, 135, 0, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 0, 0, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 165, 154, 0, 0, 167, 168, 0, 0, 0, 0, 0, 0, 0 }; // 256 -// Block palette -uint16_t block_palette[] = { 0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 31, 33, 35, 37, 39, 41, 43, 50, 85, 86, 118, 119, 123, 124, 125, 129, 130, 131, 132, 133, 134, 135, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 166, 169, 172, 175, 178, 181, 184, 187, 190, 193, 196, 199, 202, 205, 208, 211, 214, 217, 220, 223, 226, 229, 232, 235, 238, 241, 244, 247, 250, 279, 307, 335, 363, 391, 419, 447, 475, 503, 531, 559, 560, 561, 562, 563, 564, 565, 567, 578, 579, 580, 582, 1734, 1750, 1766, 1782, 1798, 1814, 1830, 1846, 1862, 1878, 1894, 1910, 1926, 1942, 1958, 1974, 2000, 2024, 2041, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2063, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2141, 2142, 2206, 2399, 2400, 2401, 2919, 2927, 2949, 3019, 4338, 4339, 4340, 4341, 4342, 4350, 4359, 4367, 4399, 4431, 4463, 4495, 4527, 4559, 4591, 4623, 4655, 4697, 4751, 4759, 4789, 4971, 5035, 5099, 5163, 5227, 5291, 5355, 5419, 5483, 5547, 5611, 5675, 5811, 5827, 5839, 5893, 5895, 5897, 5899, 5901, 5903, 5905, 5907, 5909, 5911, 5913, 5915, 5916, 5935, 5950, 5958, 5959, 5960, 5976, 5977, 5978, 5995, 6027, 6028, 6029, 6030, 6032, 6035, 6037, 6042, 6045, 6049, 6053, 6063, 6124, 6125, 6126, 6127 }; +uint8_t I_to_B (uint16_t item) { + if (item == 0) return 0; + if (item == 1) return 1; + if (item == 2) return 2; + if (item == 3) return 3; + if (item == 4) return 4; + if (item == 5) return 5; + if (item == 6) return 6; + if (item == 7) return 7; + if (item == 27) return 8; + if (item == 28) return 9; + if (item == 29) return 10; + if (item == 30) return 11; + if (item == 35) return 12; + if (item == 36) return 13; + if (item == 37) return 14; + if (item == 38) return 15; + if (item == 39) return 16; + if (item == 40) return 17; + if (item == 41) return 18; + if (item == 42) return 19; + if (item == 177) return 20; + if (item == 43) return 21; + if (item == 44) return 22; + if (item == 45) return 23; + if (item == 48) return 24; + if (item == 49) return 25; + if (item == 50) return 26; + if (item == 51) return 27; + if (item == 52) return 28; + if (item == 53) return 29; + if (item == 54) return 30; + if (item == 55) return 31; + if (item == 56) return 32; + if (item == 57) return 33; + if (item == 58) return 34; + if (item == 59) return 36; + if (item == 60) return 37; + if (item == 62) return 38; + if (item == 63) return 39; + if (item == 61) return 40; + if (item == 70) return 41; + if (item == 71) return 42; + if (item == 66) return 43; + if (item == 67) return 44; + if (item == 64) return 45; + if (item == 65) return 46; + if (item == 80) return 47; + if (item == 134) return 48; + if (item == 135) return 49; + if (item == 136) return 50; + if (item == 137) return 51; + if (item == 138) return 52; + if (item == 139) return 53; + if (item == 141) return 54; + if (item == 140) return 55; + if (item == 142) return 56; + if (item == 143) return 57; + if (item == 144) return 58; + if (item == 147) return 59; + if (item == 149) return 60; + if (item == 150) return 61; + if (item == 151) return 62; + if (item == 152) return 63; + if (item == 153) return 64; + if (item == 154) return 65; + if (item == 155) return 66; + if (item == 148) return 67; + if (item == 156) return 68; + if (item == 170) return 69; + if (item == 171) return 70; + if (item == 172) return 71; + if (item == 173) return 72; + if (item == 174) return 73; + if (item == 175) return 74; + if (item == 176) return 75; + if (item == 178) return 76; + if (item == 179) return 77; + if (item == 159) return 78; + if (item == 160) return 79; + if (item == 161) return 80; + if (item == 162) return 81; + if (item == 163) return 82; + if (item == 164) return 83; + if (item == 165) return 84; + if (item == 166) return 85; + if (item == 167) return 86; + if (item == 182) return 87; + if (item == 183) return 88; + if (item == 184) return 89; + if (item == 185) return 90; + if (item == 186) return 91; + if (item == 187) return 92; + if (item == 188) return 93; + if (item == 189) return 94; + if (item == 190) return 95; + if (item == 191) return 96; + if (item == 192) return 97; + if (item == 193) return 98; + if (item == 194) return 99; + if (item == 195) return 100; + if (item == 76) return 101; + if (item == 77) return 102; + if (item == 197) return 103; + if (item == 699) return 104; + if (item == 198) return 105; + if (item == 199) return 106; + if (item == 200) return 107; + if (item == 712) return 108; + if (item == 1041) return 109; + if (item == 1042) return 110; + if (item == 1043) return 111; + if (item == 1044) return 112; + if (item == 1045) return 113; + if (item == 1046) return 114; + if (item == 1047) return 115; + if (item == 1048) return 116; + if (item == 1049) return 117; + if (item == 1050) return 118; + if (item == 1051) return 119; + if (item == 1052) return 120; + if (item == 1053) return 121; + if (item == 1054) return 122; + if (item == 1055) return 123; + if (item == 1056) return 124; + if (item == 797) return 125; + if (item == 798) return 126; + if (item == 694) return 127; + if (item == 201) return 128; + if (item == 202) return 129; + if (item == 203) return 130; + if (item == 207) return 131; + if (item == 204) return 132; + if (item == 209) return 133; + if (item == 210) return 134; + if (item == 211) return 135; + if (item == 693) return 136; + if (item == 213) return 137; + if (item == 214) return 138; + if (item == 215) return 139; + if (item == 216) return 140; + if (item == 217) return 141; + if (item == 218) return 142; + if (item == 219) return 143; + if (item == 220) return 144; + if (item == 221) return 145; + if (item == 222) return 146; + if (item == 223) return 147; + if (item == 224) return 148; + if (item == 225) return 149; + if (item == 226) return 150; + if (item == 227) return 151; + if (item == 228) return 152; + if (item == 229) return 153; + if (item == 244) return 154; + if (item == 232) return 155; + if (item == 233) return 156; + if (item == 234) return 157; + if (item == 235) return 158; + if (item == 236) return 159; + if (item == 237) return 160; + if (item == 238) return 161; + if (item == 239) return 162; + if (item == 240) return 163; + if (item == 241) return 164; + if (item == 243) return 165; + if (item == 242) return 166; + if (item == 247) return 167; + if (item == 248) return 168; + if (item == 92) return 169; + if (item == 90) return 170; + if (item == 304) return 171; + if (item == 710) return 172; + if (item == 305) return 173; + if (item == 306) return 174; + if (item == 308) return 175; + if (item == 309) return 176; + if (item == 310) return 177; + if (item == 317) return 178; + if (item == 318) return 179; + if (item == 412) return 180; + if (item == 319) return 181; + if (item == 78) return 182; + if (item == 79) return 183; + if (item == 93) return 184; + if (item == 320) return 185; + if (item == 911) return 186; + if (item == 321) return 187; + if (item == 322) return 188; + if (item == 943) return 189; + if (item == 944) return 190; + if (item == 945) return 191; + if (item == 947) return 192; + if (item == 948) return 193; + if (item == 946) return 194; + if (item == 949) return 195; + if (item == 950) return 196; + if (item == 951) return 197; + if (item == 952) return 198; + if (item == 744) return 199; + if (item == 323) return 200; + if (item == 799) return 201; + if (item == 324) return 202; + if (item == 955) return 203; + if (item == 956) return 204; + if (item == 957) return 205; + if (item == 959) return 206; + if (item == 960) return 207; + if (item == 958) return 208; + if (item == 961) return 209; + if (item == 962) return 210; + if (item == 965) return 211; + if (item == 966) return 212; + if (item == 963) return 213; + if (item == 964) return 214; + if (item == 703) return 215; + if (item == 727) return 216; + if (item == 743) return 217; + if (item == 731) return 218; + if (item == 732) return 219; + if (item == 733) return 220; + if (item == 734) return 221; + if (item == 735) return 222; + if (item == 736) return 223; + if (item == 737) return 224; + if (item == 738) return 225; + if (item == 739) return 226; + if (item == 740) return 227; + if (item == 72) return 228; + if (item == 73) return 229; + if (item == 689) return 230; + if (item == 713) return 231; + if (item == 325) return 232; + if (item == 326) return 233; + if (item == 327) return 234; + if (item == 328) return 235; + if (item == 329) return 236; + if (item == 330) return 237; + if (item == 256) return 238; + if (item == 331) return 239; + if (item == 332) return 240; + if (item == 347) return 241; + if (item == 348) return 242; + if (item == 349) return 243; + if (item == 350) return 244; + if (item == 351) return 245; + if (item == 353) return 246; + if (item == 354) return 247; + if (item == 345) return 248; + if (item == 346) return 249; + if (item == 1040) return 250; + if (item == 691) return 251; + if (item == 501) return 252; + if (item == 502) return 253; + if (item == 503) return 254; + if (item == 504) return 255; + return 0; +} \ No newline at end of file diff --git a/src/registries.h b/src/registries.h index 5ebafa8..d5954c0 100644 --- a/src/registries.h +++ b/src/registries.h @@ -5,9 +5,9 @@ extern uint8_t registries_bin[5718]; -extern uint8_t B_to_I[256]; // Block-to-item mapping -extern uint8_t I_to_B[256]; // Item-to-block mapping extern uint16_t block_palette[256]; // Block palette +extern uint8_t B_to_I[256]; // Block-to-item mapping +uint8_t I_to_B (uint16_t item); // Item-to-block mapping // Block identifiers #define B_acacia_hanging_sign 206