--- /dev/null
+unit Blocks;\r
+\r
+interface\r
+\r
+ const (* Block id *)\r
+ none = 0;\r
+ dirt = 1;\r
+ grass = 2;\r
+ stone = 3;\r
+ oakWoodPlanks = 4;\r
+ cobblestone = 5;\r
+ bedrock = 6;\r
+ sand = 7;\r
+ gravel = 8;\r
+ oakWood = 9;\r
+ obsidian = 10;\r
+ bookshelf = 11;\r
+ mossStone = 12;\r
+ blockOfIron = 13;\r
+ blockOfGold = 14;\r
+ blockOfDiamond = 15;\r
+ goldOre = 16;\r
+ ironOre = 17;\r
+ coalOre = 18;\r
+ diamondOre = 19;\r
+ redstoneOre = 20;\r
+ oakLeaves = 21;\r
+ redFlower = 22;\r
+ yellowFlower = 23;\r
+ redMooshroom = 24;\r
+ brownMooshroom = 25;\r
+ torch = 26;\r
+ tnt = 27;\r
+ chest = 28;\r
+ craftingTable = 29;\r
+ cactus = 30;\r
+ glass = 31;\r
+ wool1 = 32;\r
+ wool2 = 33;\r
+ wool3 = 34;\r
+ wool4 = 35;\r
+ wool5 = 36;\r
+ wool6 = 37;\r
+ wool7 = 38;\r
+ wool8 = 39;\r
+ wool9 = 40;\r
+ wool10 = 41;\r
+ wool11 = 42;\r
+ wool12 = 43;\r
+ wool13 = 44;\r
+ wool14 = 45;\r
+ wool15 = 46;\r
+ wool16 = 47;\r
+ snow = 48;\r
+ ladder = 49;\r
+ water = 50;\r
+ lava = 51;\r
+ oakSapling = 52;\r
+ sponge = 53;\r
+ lapisLazuliOre = 54;\r
+ lapisLazuliBlock = 55;\r
+ sandstone = 56;\r
+ tallGrass = 57;\r
+ deadBush = 58;\r
+ cobweb = 59;\r
+ bricks = 60;\r
+ snowBlock = 61;\r
+ ice = 62;\r
+ snowLayer = 63;\r
+ clayBlock = 64;\r
+ sugarCane = 65;\r
+ pumpkin = 66;\r
+ jackLantern = 67;\r
+ stoneBricks = 68;\r
+ mossyStoneBricks = 69;\r
+ crackedStoneBricks = 70;\r
+ chiseledStokeBricks = 71;\r
+ ironBras = 72;\r
+ melonBlock = 73;\r
+ mycelium = 74;\r
+ backgroundOakWood = 75;\r
+ spawner = 76;\r
+ bed1 = 77;\r
+ bed2 = 78;\r
+ openWoodenDoor1 = 79;\r
+ openWoodenDoor2 = 80;\r
+ closedWoodenDoor1 = 81;\r
+ closedWoodenDoor2 = 82;\r
+ birchWood = 83;\r
+ backgroundBirchWood = 84;\r
+ spruceWood = 85;\r
+ backgroundSpruceWood = 86;\r
+ spruceLeaves = 87;\r
+ redMushroomBlock1 = 88;\r
+ redMushroomBlock2 = 89;\r
+ brownMushroomBlock1 = 90;\r
+ brownMushroomBlock2 = 91;\r
+ oakFence = 92;\r
+ backgroundOakFence = 93;\r
+ backgroundOakWoodPlanks = 94;\r
+ painting1 = 95;\r
+ painting2 = 96;\r
+ painting3 = 97;\r
+ painting4 = 98;\r
+ painting5 = 99;\r
+ painting6 = 100;\r
+ painting7 = 101;\r
+ giftChest = 102;\r
+ vines = 103;\r
+ sign = 104;\r
+ redstoneTorch = 105;\r
+ furnace = 106;\r
+ closedWoodenTrapdoor = 107;\r
+ openWoodenTrapdoor = 108;\r
+ netherrack = 109;\r
+ netherPortal = 110;\r
+ glowstone = 111;\r
+ birchLeaves = 112;\r
+ soulSand = 113;\r
+ birchSapling = 114;\r
+ spruceSapling = 115;\r
+ redstoneLampOff = 116;\r
+ redstoneLampOn = 117;\r
+ backgroundObsidian = 118;\r
+ glassPlane = 119;\r
+ farmland = 120;\r
+ cake = 121;\r
+ wheat = 122;\r
+ melonStem = 123;\r
+ pumpkinStem = 124;\r
+ burningFurnace = 125;\r
+ reservedBlock = 126;\r
+\r
+ function GetTexture(id : integer) : integer;\r
+ function GetResistant(id : integer) : integer;\r
+ function GetTool(id : integer) : integer;\r
+ function GetLevel(id : integer) : integer;\r
+ function GetLightAbsorbtion(id : integer) : integer;\r
+ function GetLightEmission(id : integer) : integer;\r
+\r
+ function IsTransporent(id : integer) : boolean;\r
+ function IsForeground(id : integer) : boolean;\r
+ function IsOverlapped(id : integer) : boolean;\r
+ function IsSolid(id : integer) : boolean;\r
+\r
+implementation\r
+\r
+ uses items_store;\r
+\r
+ const\r
+ lastBlock = 125;\r
+\r
+ var\r
+ bltex, hp, tool, lvl, abslight, emmlight, flags : array [0..lastBlock] of integer;\r
+\r
+ function GetTexture(id : integer) : integer;\r
+ begin\r
+ result := bltex[id];\r
+ end;\r
+\r
+ function GetResistant(id : integer) : integer;\r
+ begin\r
+ result := hp[id];\r
+ end;\r
+\r
+ function GetTool(id : integer) : integer;\r
+ begin\r
+ result := tool[id];\r
+ end;\r
+\r
+ function GetLevel(id : integer) : integer;\r
+ begin\r
+ result := lvl[id];\r
+ end;\r
+\r
+ function GetLightAbsorbtion(id : integer) : integer;\r
+ begin\r
+ result := abslight[id];\r
+ end;\r
+\r
+ function GetLightEmission(id : integer) : integer;\r
+ begin\r
+ result := emmlight[id];\r
+ end;\r
+\r
+ function IsTransporent(id : integer) : boolean;\r
+ begin\r
+ result := (flags[id] and (1 << 0)) <> 0;\r
+ end;\r
+\r
+ function IsForeground(id : integer) : boolean;\r
+ begin\r
+ result := (flags[id] and (1 << 1)) <> 0;\r
+ end;\r
+\r
+ function IsOverlapped(id : integer) : boolean;\r
+ begin\r
+ result := (flags[id] and (1 << 2)) <> 0;\r
+ end;\r
+\r
+ function IsSolid(id : integer) : boolean;\r
+ begin\r
+ result := (flags[id] and (1 << 3)) <> 0;\r
+ end;\r
+\r
+ procedure InitBlock(id, xtex, xhp, xtool, xlvl, xabslight, xemmlight : integer; solid, transporent, foreground, overlap : boolean);\r
+ begin\r
+ Assert((id >= 0) and (id <= lastBlock));\r
+ bltex[id] := xtex;\r
+ hp[id] := xhp;\r
+ tool[id] := xtool;\r
+ lvl[id] := xlvl;\r
+ abslight[id] := xabslight;\r
+ emmlight[id] := xemmlight;\r
+ flags[id] := 0;\r
+ if transporent then flags[id] := flags[id] or (1 << 0);\r
+ if foreground then flags[id] := flags[id] or (1 << 1);\r
+ if overlap then flags[id] := flags[id] or (1 << 2);\r
+ if solid then flags[id] := flags[id] or (1 << 3);\r
+ end;\r
+\r
+initialization\r
+ InitBlock(none, 0, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(dirt, 1, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(grass, 2, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(stone, 3, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(oakWoodPlanks, 4, 30, 3, 0, 15, 0, true, false, false, false);\r
+ InitBlock(cobblestone, 5, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(bedrock, 6, 2147483647, 0, 0, 15, 0, true, false, false, false);\r
+ InitBlock(sand, 7, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(gravel, 8, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(oakWood, 9, 30, 3, 0, 15, 0, true, false, false, false);\r
+ InitBlock(obsidian, 10, 1000, 1, 5, 15, 0, true, false, false, false);\r
+ InitBlock(bookshelf, 11, 24, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(mossStone, 12, 40, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(blockOfIron, 13, 40, 1, 2, 15, 0, true, false, false, false);\r
+ InitBlock(blockOfGold, 14, 60, 1, 3, 15, 0, true, false, false, false);\r
+ InitBlock(blockOfDiamond, 15, 60, 1, 3, 15, 0, true, false, false, false);\r
+ InitBlock(goldOre, 16, 65, 1, 3, 15, 0, true, false, false, false);\r
+ InitBlock(ironOre, 17, 65, 1, 2, 15, 0, true, false, false, false);\r
+ InitBlock(coalOre, 18, 65, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(diamondOre, 19, 65, 1, 3, 15, 0, true, false, false, false);\r
+ InitBlock(redstoneOre, 20, 65, 1, 3, 15, 6, true, false, false, false);\r
+ InitBlock(oakLeaves, 21, 3, 4, 1, 1, 0, true, false, false, false);\r
+ InitBlock(redFlower, 22, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(yellowFlower, 23, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(redMooshroom, 24, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(brownMooshroom, 25, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(torch, 26, 0, 0, 0, 0, 14, false, true, false, false);\r
+ InitBlock(tnt, 27, 0, 0, 0, 15, 0, true, false, false, false);\r
+ InitBlock(chest, 28, 39, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(craftingTable, 29, 39, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(cactus, 30, 6, 0, 0, 0, 0, true, true, false, false);\r
+ InitBlock(glass, 31, 6, 0, 1, 1, 0, true, true, false, false);\r
+ InitBlock(wool1, 32, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool2, 33, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool3, 34, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool4, 35, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool5, 36, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool6, 37, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool7, 38, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool8, 39, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool9, 40, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool10, 41, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool11, 42, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool12, 43, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool13, 44, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool14, 45, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool15, 46, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(wool16, 47, 12, 0, 0, 0, 0, false, false, false, false);\r
+ InitBlock(snow, 48, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(ladder, 49, 6, 0, 0, 0, 0, false, true, false, false);\r
+ InitBlock(water, 50, 2147483647, 0, 0, 1, 0, false, true, true, true);\r
+ InitBlock(lava, 55, 2147483647, 0, 0, 15, 15, false, true, true, true);\r
+ InitBlock(oakSapling, 60, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(sponge, 61, 9, 0, 0, 15, 0, true, false, false, false);\r
+ InitBlock(lapisLazuliOre, 62, 65, 1, 2, 15, 0, true, false, false, false);\r
+ InitBlock(lapisLazuliBlock, 63, 65, 1, 2, 15, 0, true, false, false, false);\r
+ InitBlock(sandstone, 64, 50, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(tallGrass, 65, 0, 4, 1, 0, 0, false, true, false, true);\r
+ InitBlock(deadBush, 66, 0, 4, 1, 0, 0, false, true, false, true);\r
+ InitBlock(cobweb, 67, 60, 4, 1, 0, 0, false, true, false, true);\r
+ InitBlock(bricks, 68, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(snowBlock, 69, 3, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(ice, 70, 8, 1, 6, 2, 0, true, true, false, false);\r
+ InitBlock(snowLayer, 71, 2, 2, 1, 1, 0, false, true, true, true);\r
+ InitBlock(clayBlock, 72, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(sugarCane, 73, 0, 0, 0, 0, 0, false, true, true, true);\r
+ InitBlock(pumpkin, 74, 15, 3, 0, 1, 0, true, false, false, false);\r
+ InitBlock(jackLantern, 75, 15, 3, 0, 1, 15, true, false, false, false);\r
+ InitBlock(stoneBricks, 76, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(mossyStoneBricks, 77, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(crackedStoneBricks, 78, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(chiseledStokeBricks, 79, 60, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(ironBras, 80, 60, 1, 1, 0, 0, false, true, true, false);\r
+ InitBlock(melonBlock, 81, 15, 0, 0, 15, 0, true, false, false, false);\r
+ InitBlock(mycelium, 82, 8, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(backgroundOakWood, 98, 30, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(spawner, 83, 75, 0, 0, 0, 0, false, true, false, false);\r
+ InitBlock(bed1, 84, 3, 0, 0, 0, 0, false, true, false, false);\r
+ InitBlock(bed2, 85, 3, 0, 0, 0, 0, false, true, false, false);\r
+ InitBlock(openWoodenDoor1, 86, 30, 3, 0, 0, 0, false, true, false, false);\r
+ InitBlock(openWoodenDoor2, 102, 30, 3, 0, 0, 0, false, true, false, false);\r
+ InitBlock(closedWoodenDoor1, 88, 30, 3, 0, 0, 0, true, true, true, false);\r
+ InitBlock(closedWoodenDoor2, 104, 30, 3, 0, 0, 0, true, true, true, false);\r
+ InitBlock(birchWood, 90, 30, 3, 0, 0, 0, true, false, false, false);\r
+ InitBlock(backgroundBirchWood, 99, 30, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(spruceWood, 91, 30, 3, 0, 0, 0, true, false, false, false);\r
+ InitBlock(backgroundSpruceWood, 100, 30, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(spruceLeaves, 92, 3, 4, 1, 1, 0, true, false, false, false);\r
+ InitBlock(redMushroomBlock1, 93, 3, 3, 0, 2, 0, true, false, false, false);\r
+ InitBlock(redMushroomBlock2, 95, 3, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(brownMushroomBlock1, 94, 3, 3, 0, 2, 0, true, false, false, false);\r
+ InitBlock(brownMushroomBlock2, 95, 3, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(oakFence, 96, 30, 3, 0, 0, 0, true, true, false, false);\r
+ InitBlock(backgroundOakFence, 101, 30, 3, 0, 0, 0, false, true, false, false);\r
+ InitBlock(backgroundOakWoodPlanks, 97, 30, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(painting1, 106, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(painting2, 107, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(painting3, 108, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(painting4, 109, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(painting5, 110, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(painting6, 111, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(painting7, 112, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(giftChest, 113, 30, 3, 0, 0, 15, false, false, false, false);\r
+ InitBlock(vines, 114, 3, 4, 1, 0, 0, false, true, true, true);\r
+ InitBlock(sign, 115, 15, 0, 0, 0, 0, false, true, false, false);\r
+ InitBlock(redstoneTorch, 116, 0, 0, 0, 0, 7, false, true, false, true);\r
+ InitBlock(furnace, 117, 40, 3, 0, 0, 0, false, false, false, false);\r
+ InitBlock(closedWoodenTrapdoor, 118, 30, 3, 0, 0, 0, true, true, true, false);\r
+ InitBlock(openWoodenTrapdoor, 119, 30, 3, 0, 0, 0, false, true, false, false);\r
+ InitBlock(netherrack, 120, 30, 1, 1, 15, 0, true, false, false, false);\r
+ InitBlock(netherPortal, 129, 2147483647, 0, 0, 0, 11, false, true, true, false);\r
+ InitBlock(glowstone, 121, 10, 1, 0, 0, 15, true, false, false, false);\r
+ InitBlock(birchLeaves, 135, 3, 4, 1, 1, 0, true, false, false, false);\r
+ InitBlock(soulSand, 122, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(birchSapling, 123, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(spruceSapling, 124, 0, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(redstoneLampOff, 125, 10, 1, 0, 0, 0, true, false, false, false);\r
+ InitBlock(redstoneLampOn, 126, 10, 1, 0, 0, 15, true, false, false, false);\r
+ InitBlock(backgroundObsidian, 127, 1000, 1, 5, 15, 0, false, false, false, false);\r
+ InitBlock(glassPlane, 128, 6, 0, 1, 1, 0, false, true, false, false);\r
+ InitBlock(farmland, 136, 9, 2, 0, 15, 0, true, false, false, false);\r
+ InitBlock(cake, 137, 9, 0, 0, 0, 0, false, true, false, false);\r
+ InitBlock(wheat, 138, 1, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(melonStem, 139, 1, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(pumpkinStem, 139, 1, 0, 0, 0, 0, false, true, false, true);\r
+ InitBlock(burningFurnace, 134, 40, 3, 0, 0, 15, false, false, false, false);\r
+end.\r