summaryrefslogtreecommitdiff
path: root/mcmap/block.go
diff options
context:
space:
mode:
Diffstat (limited to 'mcmap/block.go')
-rw-r--r--mcmap/block.go377
1 files changed, 377 insertions, 0 deletions
diff --git a/mcmap/block.go b/mcmap/block.go
new file mode 100644
index 0000000..91dc374
--- /dev/null
+++ b/mcmap/block.go
@@ -0,0 +1,377 @@
+package mcmap
+
+import (
+ "github.com/kch42/gonbt/nbt"
+)
+
+type BlockID uint16
+
+type Block struct {
+ ID BlockID
+ Data byte // Actually only a half-byte.
+ BlockLight, SkyLight byte // Also, only half-bytes.
+ TileEntity nbt.TagCompound // The x, y and z values in here can be ignored, will automatically be fixed on saving.
+ Tick *TileTick // If nil, no TileTick info is available for this block
+}
+
+type TileTick struct {
+ i, t, p int32
+ hasP bool
+}
+
+func (tt *TileTick) I() int32 { return tt.i }
+func (tt *TileTick) T() int32 { return tt.t }
+func (tt *TileTick) P() int32 { return tt.p }
+
+func (tt *TileTick) SetI(i int32) { tt.i = i }
+func (tt *TileTick) SetT(t int32) { tt.t = t }
+
+func (tt *TileTick) SetP(p int32) {
+ tt.p = p
+ tt.hasP = true
+}
+
+// Names and values from: http://www.minecraftwiki.net/wiki/Data_values
+
+// Valid values for BlockID
+const (
+ BlkAir = 0
+ BlkStone = 1
+ BlkGrassBlock = 2
+ BlkDirt = 3
+ BlkCobblestone = 4
+ BlkWoodPlanks = 5
+ BlkSaplings = 6
+ BlkBedrock = 7
+ BlkWater = 8
+ BlkStationaryWater = 9
+ BlkLava = 10
+ BlkStationaryLava = 11
+ BlkSand = 12
+ BlkGravel = 13
+ BlkGoldOre = 14
+ BlkIronOre = 15
+ BlkCoalOre = 16
+ BlkWood = 17
+ BlkLeaves = 18
+ BlkSponge = 19
+ BlkGlass = 20
+ BlkLapisLazuliOre = 21
+ BlkLapisLazuliBlock = 22
+ BlkDispenser = 23
+ BlkSandstone = 24
+ BlkNoteBlock = 25
+ BlkBed = 26
+ BlkPoweredRail = 27
+ BlkDetectorRail = 28
+ BlkStickyPiston = 29
+ BlkCobweb = 30
+ BlkGrass = 31
+ BlkDeadBush = 32
+ BlkPiston = 33
+ BlkPistonExtension = 34
+ BlkWool = 35
+ BlkBlockMovedByPiston = 36
+ BlkDandelion = 37
+ BlkRose = 38
+ BlkBrownMushroom = 39
+ BlkRedMushroom = 40
+ BlkBlockOfGold = 41
+ BlkBlockOfIron = 42
+ BlkDoubleSlabs = 43
+ BlkSlabs = 44
+ BlkBricks = 45
+ BlkTNT = 46
+ BlkBookshelf = 47
+ BlkMossStone = 48
+ BlkObsidian = 49
+ BlkTorch = 50
+ BlkFire = 51
+ BlkMonsterSpawner = 52
+ BlkOakWoodStairs = 53
+ BlkChest = 54
+ BlkRedstoneWire = 55
+ BlkDiamondOre = 56
+ BlkBlockOfDiamond = 57
+ BlkCraftingTable = 58
+ BlkWheat = 59
+ BlkFarmland = 60
+ BlkFurnace = 61
+ BlkBurningFurnace = 62
+ BlkSignPost = 63
+ BlkWoodenDoor = 64
+ BlkLadders = 65
+ BlkRail = 66
+ BlkCobblestoneStairs = 67
+ BlkWallSign = 68
+ BlkLever = 69
+ BlkStonePressurePlate = 70
+ BlkIronDoor = 71
+ BlkWoodenPressurePlate = 72
+ BlkRedstoneOre = 73
+ BlkGlowingRedstoneOre = 74
+ BlkRedstoneTorchInactive = 75
+ BlkRedstoneTorchActive = 76
+ BlkStoneButton = 77
+ BlkSnow = 78
+ BlkIce = 79
+ BlkSnowBlock = 80
+ BlkCactus = 81
+ BlkClay = 82
+ BlkSugarCane = 83
+ BlkJukebox = 84
+ BlkFence = 85
+ BlkPumpkin = 86
+ BlkNetherrack = 87
+ BlkSoulSand = 88
+ BlkGlowstone = 89
+ BlkNetherPortal = 90
+ BlkJackOLantern = 91
+ BlkCakeBlock = 92
+ BlkRedstoneRepeaterInactive = 93
+ BlkRedstoneRepeaterActive = 94
+ BlkLockedChest = 95
+ BlkTrapdoor = 96
+ BlkMonsterEgg = 97
+ BlkStoneBricks = 98
+ BlkHugeBrownMushroom = 99
+ BlkHugeRedMushroom = 100
+ BlkIronBars = 101
+ BlkGlassPane = 102
+ BlkMelon = 103
+ BlkPumpkinStem = 104
+ BlkMelonStem = 105
+ BlkVines = 106
+ BlkFenceGate = 107
+ BlkBrickStairs = 108
+ BlkStoneBrickStairs = 109
+ BlkMycelium = 110
+ BlkLilyPad = 111
+ BlkNetherBrick = 112
+ BlkNetherBrickFence = 113
+ BlkNetherBrickStairs = 114
+ BlkNetherWart = 115
+ BlkEnchantmentTable = 116
+ BlkBrewingStand = 117
+ BlkCauldron = 118
+ BlkEndPortal = 119
+ BlkEndPortalBlock = 120
+ BlkEndStone = 121
+ BlkDragonEgg = 122
+ BlkRedstoneLampInactive = 123
+ BlkRedstoneLampActive = 124
+ BlkWoodenDoubleSlab = 125
+ BlkWoodenSlab = 126
+ BlkCocoa = 127
+ BlkSandstoneStairs = 128
+ BlkEmeraldOre = 129
+ BlkEnderChest = 130
+ BlkTripwireHook = 131
+ BlkTripwire = 132
+ BlkBlockOfEmerald = 133
+ BlkSpruceWoodStairs = 134
+ BlkBirchWoodStairs = 135
+ BlkJungleWoodStairs = 136
+ BlkCommandBlock = 137
+ BlkBeacon = 138
+ BlkCobblestoneWall = 139
+ BlkFlowerPot = 140
+ BlkCarrots = 141
+ BlkPotatoes = 142
+ BlkWoodenButton = 143
+ BlkMobHead = 144
+ BlkAnvil = 145
+ BlkTrappedChest = 146
+ BlkWeightedPressurePlateLight = 147
+ BlkWeightedPressurePlateHeavy = 148
+ BlkRedstoneComparatorInactive = 149
+ BlkRedstoneComparatorActive = 150
+ BlkDaylightSensor = 151
+ BlkBlockOfRedstone = 152
+ BlkNetherQuartzOre = 153
+ BlkHopper = 154
+ BlkBlockOfQuartz = 155
+ BlkQuartzStairs = 156
+ BlkActivatorRail = 157
+ BlkDropper = 158
+ BlkStainedClay = 159
+ BlkHayBlock = 170
+ BlkCarpet = 171
+ BlkHardenedClay = 172
+ BlkBlockOfCoal = 173
+)
+
+var blockNames = map[BlockID]string{
+ BlkAir: "Air",
+ BlkStone: "Stone",
+ BlkGrassBlock: "Grass Block",
+ BlkDirt: "Dirt",
+ BlkCobblestone: "Cobblestone",
+ BlkWoodPlanks: "Wood Planks",
+ BlkSaplings: "Saplings",
+ BlkBedrock: "Bedrock",
+ BlkWater: "Water",
+ BlkStationaryWater: "Stationary water",
+ BlkLava: "Lava",
+ BlkStationaryLava: "Stationary lava",
+ BlkSand: "Sand",
+ BlkGravel: "Gravel",
+ BlkGoldOre: "Gold Ore",
+ BlkIronOre: "Iron Ore",
+ BlkCoalOre: "Coal Ore",
+ BlkWood: "Wood",
+ BlkLeaves: "Leaves",
+ BlkSponge: "Sponge",
+ BlkGlass: "Glass",
+ BlkLapisLazuliOre: "Lapis Lazuli Ore",
+ BlkLapisLazuliBlock: "Lapis Lazuli Block",
+ BlkDispenser: "Dispenser",
+ BlkSandstone: "Sandstone",
+ BlkNoteBlock: "Note Block",
+ BlkBed: "Bed",
+ BlkPoweredRail: "Powered Rail",
+ BlkDetectorRail: "Detector Rail",
+ BlkStickyPiston: "Sticky Piston",
+ BlkCobweb: "Cobweb",
+ BlkGrass: "Grass",
+ BlkDeadBush: "Dead Bush",
+ BlkPiston: "Piston",
+ BlkPistonExtension: "Piston Extension",
+ BlkWool: "Wool",
+ BlkBlockMovedByPiston: "Block moved by Piston",
+ BlkDandelion: "Dandelion",
+ BlkRose: "Rose",
+ BlkBrownMushroom: "Brown Mushroom",
+ BlkRedMushroom: "Red Mushroom",
+ BlkBlockOfGold: "Block of Gold",
+ BlkBlockOfIron: "Block of Iron",
+ BlkDoubleSlabs: "Double Slabs",
+ BlkSlabs: "Slabs",
+ BlkBricks: "Bricks",
+ BlkTNT: "TNT",
+ BlkBookshelf: "Bookshelf",
+ BlkMossStone: "Moss Stone",
+ BlkObsidian: "Obsidian",
+ BlkTorch: "Torch",
+ BlkFire: "Fire",
+ BlkMonsterSpawner: "Monster Spawner",
+ BlkOakWoodStairs: "Oak Wood Stairs",
+ BlkChest: "Chest",
+ BlkRedstoneWire: "Redstone Wire",
+ BlkDiamondOre: "Diamond Ore",
+ BlkBlockOfDiamond: "Block of Diamond",
+ BlkCraftingTable: "Crafting Table",
+ BlkWheat: "Wheat",
+ BlkFarmland: "Farmland",
+ BlkFurnace: "Furnace",
+ BlkBurningFurnace: "Burning Furnace",
+ BlkSignPost: "Sign Post",
+ BlkWoodenDoor: "Wooden Door",
+ BlkLadders: "Ladders",
+ BlkRail: "Rail",
+ BlkCobblestoneStairs: "Cobblestone Stairs",
+ BlkWallSign: "Wall Sign",
+ BlkLever: "Lever",
+ BlkStonePressurePlate: "Stone Pressure Plate",
+ BlkIronDoor: "Iron Door",
+ BlkWoodenPressurePlate: "Wooden Pressure Plate",
+ BlkRedstoneOre: "Redstone Ore",
+ BlkGlowingRedstoneOre: "Glowing Redstone Ore",
+ BlkRedstoneTorchInactive: "Redstone Torch (inactive)",
+ BlkRedstoneTorchActive: "Redstone Torch (active)",
+ BlkStoneButton: "Stone Button",
+ BlkSnow: "Snow",
+ BlkIce: "Ice",
+ BlkSnowBlock: "Snow Block",
+ BlkCactus: "Cactus",
+ BlkClay: "Clay",
+ BlkSugarCane: "Sugar Cane",
+ BlkJukebox: "Jukebox",
+ BlkFence: "Fence",
+ BlkPumpkin: "Pumpkin",
+ BlkNetherrack: "Netherrack",
+ BlkSoulSand: "Soul Sand",
+ BlkGlowstone: "Glowstone",
+ BlkNetherPortal: "Nether Portal",
+ BlkJackOLantern: "Jack 'o' Lantern",
+ BlkCakeBlock: "Cake Block",
+ BlkRedstoneRepeaterInactive: "Redstone Repeater (inactive)",
+ BlkRedstoneRepeaterActive: "Redstone Repeater (active)",
+ BlkLockedChest: "Locked Chest",
+ BlkTrapdoor: "Trapdoor",
+ BlkMonsterEgg: "Monster Egg",
+ BlkStoneBricks: "Stone Bricks",
+ BlkHugeBrownMushroom: "Huge Brown Mushroom",
+ BlkHugeRedMushroom: "Huge Red Mushroom",
+ BlkIronBars: "Iron Bars",
+ BlkGlassPane: "Glass Pane",
+ BlkMelon: "Melon",
+ BlkPumpkinStem: "Pumpkin Stem",
+ BlkMelonStem: "Melon Stem",
+ BlkVines: "Vines",
+ BlkFenceGate: "Fence Gate",
+ BlkBrickStairs: "Brick Stairs",
+ BlkStoneBrickStairs: "Stone Brick Stairs",
+ BlkMycelium: "Mycelium",
+ BlkLilyPad: "Lily Pad",
+ BlkNetherBrick: "Nether Brick",
+ BlkNetherBrickFence: "Nether Brick Fence",
+ BlkNetherBrickStairs: "Nether Brick Stairs",
+ BlkNetherWart: "Nether Wart",
+ BlkEnchantmentTable: "Enchantment Table",
+ BlkBrewingStand: "Brewing Stand",
+ BlkCauldron: "Cauldron",
+ BlkEndPortal: "End Portal",
+ BlkEndPortalBlock: "End Portal Block",
+ BlkEndStone: "End Stone",
+ BlkDragonEgg: "Dragon Egg",
+ BlkRedstoneLampInactive: "Redstone Lamp (inactive)",
+ BlkRedstoneLampActive: "Redstone Lamp (active)",
+ BlkWoodenDoubleSlab: "Wooden Double Slab",
+ BlkWoodenSlab: "Wooden Slab",
+ BlkCocoa: "Cocoa",
+ BlkSandstoneStairs: "Sandstone Stairs",
+ BlkEmeraldOre: "Emerald Ore",
+ BlkEnderChest: "Ender Chest",
+ BlkTripwireHook: "Tripwire Hook",
+ BlkTripwire: "Tripwire",
+ BlkBlockOfEmerald: "Block of Emerald",
+ BlkSpruceWoodStairs: "Spruce Wood Stairs",
+ BlkBirchWoodStairs: "Birch Wood Stairs",
+ BlkJungleWoodStairs: "Jungle Wood Stairs",
+ BlkCommandBlock: "Command Block",
+ BlkBeacon: "Beacon",
+ BlkCobblestoneWall: "Cobblestone Wall",
+ BlkFlowerPot: "Flower Pot",
+ BlkCarrots: "Carrots",
+ BlkPotatoes: "Potatoes",
+ BlkWoodenButton: "Wooden Button",
+ BlkMobHead: "Mob Head",
+ BlkAnvil: "Anvil",
+ BlkTrappedChest: "Trapped Chest",
+ BlkWeightedPressurePlateLight: "Weighted Pressure Plate (Light)",
+ BlkWeightedPressurePlateHeavy: "Weighted Pressure Plate (Heavy)",
+ BlkRedstoneComparatorInactive: "Redstone Comparator (inactive)",
+ BlkRedstoneComparatorActive: "Redstone Comparator (active)",
+ BlkDaylightSensor: "Daylight Sensor",
+ BlkBlockOfRedstone: "Block of Redstone",
+ BlkNetherQuartzOre: "Nether Quartz Ore",
+ BlkHopper: "Hopper",
+ BlkBlockOfQuartz: "Block of Quartz",
+ BlkQuartzStairs: "Quartz Stairs",
+ BlkActivatorRail: "Activator Rail",
+ BlkDropper: "Dropper",
+ BlkStainedClay: "Stained Clay",
+ BlkHayBlock: "Hay Block",
+ BlkCarpet: "Carpet",
+ BlkHardenedClay: "Hardened Clay",
+ BlkBlockOfCoal: "Block of Coal",
+}
+
+func (b BlockID) String() string {
+ if s, ok := blockNames[b]; ok {
+ return s
+ }
+
+ return "(unused)"
+}