| package com.plusminus.craft; | |
| import java.awt.Color; | |
| import java.awt.Font; | |
| import java.util.HashMap; | |
| /*** | |
| * Precalcs and the like | |
| * @author Vincent | |
| */ | |
| public class MineCraftConstants { | |
| // translation table for colors for the minimap | |
| public static Color[] blockColors; | |
| // translation table from block data to sprite sheet index | |
| public static int[] blockDataToSpriteSheet; | |
| // translation table (precalc) from sprite sheet index to texture coordinates | |
| public static float[] precalcSpriteSheetToTextureX; | |
| public static float[] precalcSpriteSheetToTextureY; | |
| public static final float TEX16 = 1.0f/16.0f; | |
| public static final float TEX32 = 1.0f/32.0f; | |
| public static final float TEX64 = 1.0f/64.0f; | |
| public static final float TEX128 = 1.0f/128.0f; | |
| public static final int BLOCKSPERROW = 128; | |
| public static final int BLOCKSPERCOLUMN = BLOCKSPERROW * 16; | |
| // sensitivity and speed mouse configuration | |
| public static final float MOUSE_SENSITIVITY = 0.05f; // mouse delta is multiplied by this | |
| public static float MOVEMENT_SPEED = 10.0f; // world units per second | |
| // the font to draw information to the screen | |
| public static final Font ARIALFONT = new Font("Arial", Font.BOLD, 14); | |
| public static final Font HEADERFONT = new Font("Arial", Font.BOLD, 26); | |
| // some convenience statics regarding time calculation | |
| public static final long NANOSPERSECOND = 1000000000; | |
| public static final long MILLISPERSECOND = 1000; | |
| public static final long NANOSPERMILLIS = NANOSPERSECOND / MILLISPERSECOND; | |
| // Types of blocks | |
| public static enum BLOCK_TYPE { | |
| NORMAL, | |
| TORCH, | |
| DECORATION_SMALL, | |
| DECORATION_FULL, | |
| CROPS, | |
| LADDER, | |
| FLOOR, | |
| PRESSURE_PLATE, | |
| HALFHEIGHT, | |
| DOOR, | |
| STAIRS, | |
| SIGNPOST, | |
| WALLSIGN, | |
| FENCE, | |
| LEVER, | |
| BUTTON, | |
| PORTAL, | |
| DATAVAL, | |
| MINECART_TRACKS, | |
| WATER, | |
| LAVA, | |
| FIRE | |
| } | |
| // This HashMap determines how we draw various block types | |
| public static HashMap<Byte, BLOCK_TYPE> BLOCK_TYPE_MAP = new HashMap<Byte, BLOCK_TYPE>(); | |
| // This HashMap is used to determine which texture to use for blocks whose data value determines | |
| // what texture to use | |
| public static HashMap<Byte, HashMap<Byte, Integer>> blockDataSpriteSheetMap = new HashMap<Byte, HashMap<Byte, Integer>>(); | |
| public static enum BLOCK { | |
| STONE (1, "Stone"), | |
| GRASS (2, "Grass"), | |
| DIRT (3, "Dirt"), | |
| COBBLESTONE (4, "Cobbles"), | |
| WOOD (5, "Wood"), | |
| SAPLING (6, "Sapling"), | |
| BEDROCK (7, "Bedrock"), | |
| WATER (8, "Water"), | |
| STATIONARY_WATER (9, "Water"), | |
| LAVA (10, "Lava"), | |
| STATIONARY_LAVA (11, "Lava"), | |
| SAND (12, "Sand"), | |
| GRAVEL (13, "Gravel"), | |
| GOLD_ORE (14, "Gold"), | |
| IRON_ORE (15, "Iron"), | |
| COAL_ORE (16, "Coal"), | |
| LOG (17, "Wood"), | |
| LEAVES (18, "Leaves"), | |
| SPONGE (19, "Sponge"), | |
| GLASS (20, "Glass"), | |
| LAPIS_LAZULI_ORE (21, "Lapis"), | |
| LAPIS_LAZULI_BLOCK (22, "Lapis"), | |
| DISPENSER (23, "Dispenser"), | |
| SANDSTONE (24, "Sandstone"), | |
| NOTE_BLOCK (25, "Note"), | |
| WOOL (35, "Wool"), | |
| YELLOW_FLOWER (37, "Flower"), | |
| RED_ROSE (38, "Rose"), | |
| BROWN_MUSHROOM (39, "Mushroom"), | |
| RED_MUSHROOM (40, "Mushroom"), | |
| GOLD_BLOCK (41, "Gold"), | |
| IRON_BLOCK (42, "Iron"), | |
| DOUBLE_STEP (43, "Step"), | |
| STEP (44, "Step"), | |
| BRICK (45, "Brick"), | |
| TNT (46, "TNT"), | |
| BOOKSHELF (47, "Bookshelf"), | |
| MOSSY_COBBLESTONE (48, "Moss"), | |
| OBSIDIAN (49, "Obsidian"), | |
| TORCH (50, "Torch"), | |
| FIRE (51, "Fire"), | |
| MOB_SPAWNER (52, "Spawner"), | |
| WOODEN_STAIRS (53, "Stairs"), | |
| CHEST (54, "Chest"), | |
| REDSTONE_WIRE (55, "Wire"), | |
| DIAMOND_ORE (56, "Diamond"), | |
| DIAMOND_BLOCK (57, "Diamond"), | |
| WORKBENCH (58, "Bench"), | |
| CROPS (59, "Crops"), | |
| SOIL (60, "Soil"), | |
| FURNACE (61, "Furnace"), | |
| BURNING_FURNACE (62, "Furnace"), | |
| SIGNPOST (63, "Sign"), | |
| WOODEN_DOOR (64, "Door"), | |
| LADDER (65, "Ladder"), | |
| MINECART_TRACKS (66, "Tracks"), | |
| COBBLESTONE_STAIRS (67, "Stairs"), | |
| WALL_SIGN (68, "Sign"), | |
| LEVER (69, "Lever"), | |
| STONE_PRESSURE_PLATE (70, "Plate"), | |
| IRON_DOOR (71, "Door"), | |
| WOODEN_PRESSURE_PLATE (72, "Plate"), | |
| REDSTONE_ORE (73, "Redstone"), | |
| GLOWING_REDSTONE_ORE (74, "Redstone"), | |
| REDSTONE_TORCH_OFF (75, "Torch"), | |
| REDSTONE_TORCH_ON (76, "Torch"), | |
| STONE_BUTTON (77, "Button"), | |
| SNOW (78, "Snow"), | |
| ICE (79, "Ice"), | |
| SNOW_BLOCK (80, "Snow"), | |
| CACTUS (81, "Cactus"), | |
| CLAY (82, "Clay"), | |
| SUGARCANE (83, "Sugarcane"), | |
| JUKEBOX (84, "Jukebox"), | |
| FENCE (85, "Fence"), | |
| PUMPKIN (86, "Pumpkin"), | |
| NETHERSTONE (87, "Netherrack"), | |
| SLOW_SAND (88, "Soul Sand"), | |
| LIGHTSTONE (89, "Glowstone"), | |
| PORTAL (90, "Portal"), | |
| JACK_O_LANTERN (91, "Jack"), | |
| CAKE (92, "Cake") | |
| ; | |
| public final int id; | |
| public final String name; | |
| BLOCK(int id, String name) | |
| { | |
| this.id = id; | |
| this.name = name; | |
| } | |
| } | |
| // HIGHLIGHT_ORES defines the kinds of blocks that we'll highlight. | |
| public static final BLOCK[] preferred_highlight_ores = new BLOCK[] { | |
| BLOCK.CLAY, BLOCK.PUMPKIN, BLOCK.OBSIDIAN, BLOCK.COAL_ORE, BLOCK.IRON_ORE, | |
| BLOCK.GOLD_ORE, BLOCK.LAPIS_LAZULI_ORE, BLOCK.DIAMOND_ORE, BLOCK.REDSTONE_ORE, BLOCK.MOB_SPAWNER}; | |
| public static final Block[] SURROUNDINGBLOCKS = new Block[] { | |
| new Block(+1,0,0), | |
| new Block(-1,0,0), | |
| new Block(0,+1,0), | |
| new Block(0,-1,0), | |
| new Block(0,0,+1), | |
| new Block(0,0,-1), | |
| }; | |
| // Vars for painting information | |
| public static HashMap<String, PaintingInfo> paintings; | |
| public static PaintingInfo paintingback; | |
| static { | |
| initBlockColorsTable(); | |
| initBlockDatatoSpriteSheetIndexTable(); | |
| initSpriteSheetToTextureTable(); | |
| initBlockTypes(); | |
| initPaintings(); | |
| } | |
| /*** | |
| * Initializes our BLOCK_TYPE_MAP HashMap, which determines how we render various blocks | |
| */ | |
| public static void initBlockTypes() { | |
| // First seed the array with "normal" so we don't have to catch NullPointerExceptions | |
| int i; | |
| for (i=Byte.MIN_VALUE; i<=Byte.MAX_VALUE; i++) | |
| { | |
| BLOCK_TYPE_MAP.put((byte)i, BLOCK_TYPE.NORMAL); | |
| } | |
| // Now our actual type values... | |
| // Torches | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.TORCH.id, BLOCK_TYPE.TORCH); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.REDSTONE_TORCH_ON.id, BLOCK_TYPE.TORCH); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.REDSTONE_TORCH_OFF.id, BLOCK_TYPE.TORCH); | |
| // Small decoration blocks | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.RED_MUSHROOM.id, BLOCK_TYPE.DECORATION_SMALL); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.BROWN_MUSHROOM.id, BLOCK_TYPE.DECORATION_SMALL); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.RED_ROSE.id, BLOCK_TYPE.DECORATION_SMALL); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.YELLOW_FLOWER.id, BLOCK_TYPE.DECORATION_SMALL); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.SAPLING.id, BLOCK_TYPE.DECORATION_SMALL); | |
| // "Full" decoration blocks | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.SUGARCANE.id, BLOCK_TYPE.DECORATION_FULL); | |
| // Crops | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.CROPS.id, BLOCK_TYPE.CROPS); | |
| // Ladders | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.LADDER.id, BLOCK_TYPE.LADDER); | |
| // "floor" decorations | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.REDSTONE_WIRE.id, BLOCK_TYPE.FLOOR); | |
| // Minecart tracks | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.MINECART_TRACKS.id, BLOCK_TYPE.MINECART_TRACKS); | |
| // Pressure plates | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.STONE_PRESSURE_PLATE.id, BLOCK_TYPE.PRESSURE_PLATE); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.WOODEN_PRESSURE_PLATE.id, BLOCK_TYPE.PRESSURE_PLATE); | |
| // Half-height blocks | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.STEP.id, BLOCK_TYPE.HALFHEIGHT); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.CAKE.id, BLOCK_TYPE.HALFHEIGHT); | |
| // Doors | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.WOODEN_DOOR.id, BLOCK_TYPE.DOOR); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.IRON_DOOR.id, BLOCK_TYPE.DOOR); | |
| // Stairs | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.WOODEN_STAIRS.id, BLOCK_TYPE.STAIRS); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.COBBLESTONE_STAIRS.id, BLOCK_TYPE.STAIRS); | |
| // Signs | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.SIGNPOST.id, BLOCK_TYPE.SIGNPOST); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.WALL_SIGN.id, BLOCK_TYPE.WALLSIGN); | |
| // Fences | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.FENCE.id, BLOCK_TYPE.FENCE); | |
| // Lever | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.LEVER.id, BLOCK_TYPE.LEVER); | |
| // Button | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.STONE_BUTTON.id, BLOCK_TYPE.BUTTON); | |
| // Portal | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.PORTAL.id, BLOCK_TYPE.PORTAL); | |
| // Blocks whose texture depends on their data value (in addition to block type) | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.LOG.id, BLOCK_TYPE.DATAVAL); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.WOOL.id, BLOCK_TYPE.DATAVAL); | |
| // Water | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.WATER.id, BLOCK_TYPE.WATER); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.STATIONARY_WATER.id, BLOCK_TYPE.WATER); | |
| // Lava | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.LAVA.id, BLOCK_TYPE.LAVA); | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.STATIONARY_LAVA.id, BLOCK_TYPE.LAVA); | |
| // Fire | |
| BLOCK_TYPE_MAP.put((byte)BLOCK.FIRE.id, BLOCK_TYPE.FIRE); | |
| } | |
| /*** | |
| * Colors. From block data -> colors | |
| * (I took the color list from a c program which draws minecraft maps.. forgot the name) | |
| */ | |
| public static void initBlockColorsTable() { | |
| blockColors = new Color[128]; | |
| for(int i=0;i<128;i++) { | |
| blockColors[i] = Color.BLACK; | |
| } | |
| //blockColors[0] = new Color(255,255,255); | |
| blockColors[BLOCK.STONE.id] = new Color(120,120,120); | |
| blockColors[BLOCK.GRASS.id] = new Color(117,176,73); | |
| blockColors[BLOCK.DIRT.id] = new Color(134,96,67); | |
| blockColors[BLOCK.COBBLESTONE.id] = new Color(115,115,115); | |
| blockColors[BLOCK.MOSSY_COBBLESTONE.id] = new Color(115,115,115); | |
| blockColors[BLOCK.WOOD.id] = new Color(157,128,79); | |
| blockColors[BLOCK.SAPLING.id] = new Color(120,120,120); | |
| blockColors[BLOCK.BEDROCK.id] = new Color(84,84,84); | |
| blockColors[BLOCK.WATER.id] = new Color(38,92,255); | |
| blockColors[BLOCK.STATIONARY_WATER.id] = new Color(38,92,255); | |
| blockColors[BLOCK.LAVA.id] = new Color(255,90,0); | |
| blockColors[BLOCK.STATIONARY_LAVA.id] = new Color(255,90,0); | |
| blockColors[BLOCK.SAND.id] = new Color(218,210,158); | |
| blockColors[BLOCK.GRAVEL.id] = new Color(136,126,126); | |
| blockColors[BLOCK.GOLD_ORE.id] = new Color(143,140,125); | |
| blockColors[BLOCK.IRON_ORE.id] = new Color(136,130,127); | |
| blockColors[BLOCK.COAL_ORE.id] = new Color(115,115,115); | |
| blockColors[BLOCK.LOG.id] = new Color(102,81,51); | |
| blockColors[BLOCK.LEAVES.id] = new Color(60,192,41); | |
| blockColors[BLOCK.GLASS.id] = new Color(255,255,255); | |
| blockColors[BLOCK.LAPIS_LAZULI_ORE.id] = new Color(27,70,161); | |
| blockColors[BLOCK.LAPIS_LAZULI_BLOCK.id] = blockColors[BLOCK.LAPIS_LAZULI_BLOCK.id]; | |
| blockColors[BLOCK.DISPENSER.id] = new Color(96,96,96); | |
| blockColors[BLOCK.NOTE_BLOCK.id] = new Color(114,88,56); | |
| blockColors[BLOCK.SANDSTONE.id] = blockColors[BLOCK.SAND.id]; | |
| blockColors[BLOCK.WOOL.id] = new Color(222,222,222); //Color(143,143,143,255); | |
| blockColors[BLOCK.RED_ROSE.id] = new Color(255,0,0); | |
| blockColors[BLOCK.YELLOW_FLOWER.id] = new Color(255,255,0); | |
| blockColors[BLOCK.GOLD_BLOCK.id] = new Color(231,165,45); | |
| blockColors[BLOCK.IRON_BLOCK.id] = new Color(191,191,191); | |
| blockColors[BLOCK.DOUBLE_STEP.id] = new Color(200,200,200); | |
| blockColors[BLOCK.STEP.id] = new Color(200,200,200); | |
| blockColors[BLOCK.BRICK.id] = new Color(170,86,62); | |
| blockColors[BLOCK.TNT.id] = new Color(160,83,65); | |
| blockColors[BLOCK.OBSIDIAN.id] = new Color(26,11,43); | |
| blockColors[BLOCK.TORCH.id] = new Color(245,220,50); | |
| blockColors[BLOCK.FIRE.id] = new Color(255,170,30); | |
| //blockColors[BLOCK.MOB_SPAWNER.id] = Color(245,220,50,255); unnecessary afaik | |
| blockColors[BLOCK.WOODEN_STAIRS.id] = new Color(157,128,79); | |
| blockColors[BLOCK.CHEST.id] = new Color(125,91,38); | |
| //blockColors[BLOCK.REDSTONE_WIRE.id] = Color(245,220,50,255); unnecessary afaik | |
| blockColors[BLOCK.DIAMOND_ORE.id] = new Color(129,140,143); | |
| blockColors[BLOCK.DIAMOND_BLOCK.id] = new Color(45,166,152); | |
| blockColors[BLOCK.WORKBENCH.id] = blockColors[BLOCK.NOTE_BLOCK.id]; | |
| blockColors[BLOCK.CROPS.id] = new Color(146,192,0); | |
| blockColors[BLOCK.SOIL.id] = new Color(95,58,30); | |
| blockColors[BLOCK.FURNACE.id] = new Color(96,96,96); | |
| blockColors[BLOCK.BURNING_FURNACE.id] = new Color(96,96,96); | |
| blockColors[BLOCK.SIGNPOST.id] = new Color(111,91,54); | |
| blockColors[BLOCK.WOODEN_DOOR.id] = new Color(136,109,67); | |
| blockColors[BLOCK.LADDER.id] = new Color(181,140,64); | |
| blockColors[BLOCK.MINECART_TRACKS.id] = new Color(150,134,102); | |
| blockColors[BLOCK.COBBLESTONE_STAIRS.id] = new Color(115,115,115); | |
| blockColors[BLOCK.IRON_DOOR.id] = new Color(191,191,191); | |
| blockColors[BLOCK.REDSTONE_ORE.id] = new Color(131,107,107); | |
| blockColors[BLOCK.GLOWING_REDSTONE_ORE.id] = new Color(131,107,107); | |
| blockColors[BLOCK.REDSTONE_TORCH_OFF.id] = new Color(181,140,64); | |
| blockColors[BLOCK.REDSTONE_TORCH_ON.id] = new Color(255,0,0); | |
| blockColors[BLOCK.SNOW.id] = new Color(255,255,255); | |
| blockColors[BLOCK.ICE.id] = new Color(83,113,163); | |
| blockColors[BLOCK.SNOW_BLOCK.id] = new Color(250,250,250); | |
| blockColors[BLOCK.CACTUS.id] = new Color(25,120,25); | |
| blockColors[BLOCK.CLAY.id] = new Color(151,157,169); | |
| blockColors[BLOCK.SUGARCANE.id] = new Color(100,67,50); | |
| blockColors[BLOCK.JUKEBOX.id] = blockColors[BLOCK.NOTE_BLOCK.id]; | |
| } | |
| public static final int TEXTURE_COAL = (2*16) + 2; | |
| public static final int TEXTURE_IRON = (2*16) + 1; | |
| public static final int TEXTURE_GOLD = (2*16) + 0; | |
| public static final int TEXTURE_DIAMOND = (3*16) + 2; | |
| public static final int TEXTURE_REDSTONE = (3*16) + 3; | |
| public static final int TEXTURE_SPAWNER = (4*16) + 1; | |
| public static final int TEXTURE_CLAY = (4*16)+8; | |
| public static final int TEXTURE_PUMPKIN = (7*16)+7; | |
| public static final int TEXTURE_OBSIDIAN = (2*16)+5; | |
| public static final int TEXTURE_BEDROCK = 17; | |
| /*** | |
| * block data to sprite sheet texture index | |
| */ | |
| public static void initBlockDatatoSpriteSheetIndexTable() { | |
| blockDataToSpriteSheet = new int[128]; | |
| for(int i=0;i<128;i++) { | |
| blockDataToSpriteSheet[i] = -1; | |
| } | |
| //blockTrans[0] = -1; | |
| blockDataToSpriteSheet[BLOCK.STONE.id] = 1; | |
| blockDataToSpriteSheet[BLOCK.GRASS.id] = 0; | |
| blockDataToSpriteSheet[BLOCK.DIRT.id] = 2; | |
| blockDataToSpriteSheet[BLOCK.COBBLESTONE.id] = 16; | |
| blockDataToSpriteSheet[BLOCK.WOOD.id] = 4; | |
| blockDataToSpriteSheet[BLOCK.SAPLING.id] = 15; | |
| blockDataToSpriteSheet[BLOCK.BEDROCK.id] = 17; | |
| blockDataToSpriteSheet[BLOCK.WATER.id] = 207; | |
| blockDataToSpriteSheet[BLOCK.STATIONARY_WATER.id] = 207; | |
| blockDataToSpriteSheet[BLOCK.LAVA.id] = 239; | |
| blockDataToSpriteSheet[BLOCK.STATIONARY_LAVA.id] = 239; | |
| blockDataToSpriteSheet[BLOCK.SAND.id] = 18; | |
| blockDataToSpriteSheet[BLOCK.GRAVEL.id] = 19; | |
| blockDataToSpriteSheet[BLOCK.GOLD_ORE.id] = (2*16) + 0; | |
| blockDataToSpriteSheet[BLOCK.IRON_ORE.id] = (2*16) + 1; | |
| blockDataToSpriteSheet[BLOCK.COAL_ORE.id] = (2*16) + 2; | |
| blockDataToSpriteSheet[BLOCK.LOG.id] = 20; | |
| blockDataToSpriteSheet[BLOCK.LEAVES.id] = (3*16)+5; // The "correct" one is actually +4, but with the current transparency | |
| // rendering glitches, the non-transparent texture looks better. | |
| blockDataToSpriteSheet[BLOCK.SPONGE.id] = (3*16); | |
| blockDataToSpriteSheet[BLOCK.GLASS.id] = 49; | |
| blockDataToSpriteSheet[BLOCK.LAPIS_LAZULI_ORE.id] = 10*16; | |
| blockDataToSpriteSheet[BLOCK.LAPIS_LAZULI_BLOCK.id] = 9*16; | |
| blockDataToSpriteSheet[BLOCK.DISPENSER.id] = (2*16) + 14; | |
| blockDataToSpriteSheet[BLOCK.SANDSTONE.id] = 12*16; | |
| blockDataToSpriteSheet[BLOCK.NOTE_BLOCK.id] = (4*16) + 10; | |
| blockDataToSpriteSheet[BLOCK.WOOL.id] = 64; | |
| blockDataToSpriteSheet[BLOCK.YELLOW_FLOWER.id] = 13; | |
| blockDataToSpriteSheet[BLOCK.RED_ROSE.id] = 12; | |
| blockDataToSpriteSheet[BLOCK.BROWN_MUSHROOM.id] = (1*16) + 13; | |
| blockDataToSpriteSheet[BLOCK.RED_MUSHROOM.id] = (1*16) + 12; | |
| blockDataToSpriteSheet[BLOCK.GOLD_BLOCK.id] = 23; | |
| blockDataToSpriteSheet[BLOCK.IRON_BLOCK.id] = 22; | |
| blockDataToSpriteSheet[BLOCK.DOUBLE_STEP.id] = 5; // previously 72, which was clay | |
| blockDataToSpriteSheet[BLOCK.STEP.id] = 6; // previously 72, which was clay | |
| blockDataToSpriteSheet[BLOCK.BRICK.id] = 7; | |
| blockDataToSpriteSheet[BLOCK.TNT.id] = 8; | |
| blockDataToSpriteSheet[BLOCK.BOOKSHELF.id] = 35; | |
| blockDataToSpriteSheet[BLOCK.MOSSY_COBBLESTONE.id] = (2*16)+4; | |
| blockDataToSpriteSheet[BLOCK.OBSIDIAN.id] = (2*16)+5; | |
| blockDataToSpriteSheet[BLOCK.TORCH.id] = 80; | |
| blockDataToSpriteSheet[BLOCK.FIRE.id] = 16+15; // previously 30 | |
| blockDataToSpriteSheet[BLOCK.MOB_SPAWNER.id] = (4*16) + 1; | |
| blockDataToSpriteSheet[BLOCK.WOODEN_STAIRS.id] = 4; // previously 55 | |
| blockDataToSpriteSheet[BLOCK.CHEST.id] = 26; | |
| blockDataToSpriteSheet[BLOCK.REDSTONE_WIRE.id] = 100; | |
| blockDataToSpriteSheet[BLOCK.DIAMOND_ORE.id] = (3*16) + 2; | |
| blockDataToSpriteSheet[BLOCK.DIAMOND_BLOCK.id] = 24; | |
| blockDataToSpriteSheet[BLOCK.WORKBENCH.id] = 25; | |
| blockDataToSpriteSheet[BLOCK.CROPS.id] = (5*16)+15; | |
| blockDataToSpriteSheet[BLOCK.SOIL.id] = (5*16)+6; | |
| blockDataToSpriteSheet[BLOCK.FURNACE.id] = 44; | |
| blockDataToSpriteSheet[BLOCK.BURNING_FURNACE.id] = (3*16)+13; | |
| blockDataToSpriteSheet[BLOCK.SIGNPOST.id] = 4; | |
| blockDataToSpriteSheet[BLOCK.WOODEN_DOOR.id] = (6*16)+1; | |
| blockDataToSpriteSheet[BLOCK.LADDER.id] = (5*16)+3; | |
| blockDataToSpriteSheet[BLOCK.MINECART_TRACKS.id] = (8*16); | |
| blockDataToSpriteSheet[BLOCK.COBBLESTONE_STAIRS.id] = 16; | |
| blockDataToSpriteSheet[BLOCK.WALL_SIGN.id] = 4; | |
| blockDataToSpriteSheet[BLOCK.LEVER.id] = (6*16); | |
| blockDataToSpriteSheet[BLOCK.STONE_PRESSURE_PLATE.id] = 6; | |
| blockDataToSpriteSheet[BLOCK.IRON_DOOR.id] = (6*16)+2; | |
| blockDataToSpriteSheet[BLOCK.WOODEN_PRESSURE_PLATE.id] = 4; | |
| blockDataToSpriteSheet[BLOCK.REDSTONE_ORE.id] = (3*16) + 3; | |
| blockDataToSpriteSheet[BLOCK.GLOWING_REDSTONE_ORE.id] = 51; | |
| blockDataToSpriteSheet[BLOCK.REDSTONE_TORCH_OFF.id] = (7*16)+3; | |
| blockDataToSpriteSheet[BLOCK.REDSTONE_TORCH_ON.id] = (6*16)+3; | |
| blockDataToSpriteSheet[BLOCK.STONE_BUTTON.id] = 6; | |
| blockDataToSpriteSheet[BLOCK.SNOW.id] = 66; | |
| blockDataToSpriteSheet[BLOCK.ICE.id] = 67; | |
| blockDataToSpriteSheet[BLOCK.SNOW_BLOCK.id] = 66; | |
| blockDataToSpriteSheet[BLOCK.CACTUS.id] = 70; | |
| blockDataToSpriteSheet[BLOCK.CLAY.id] = (4*16)+8; | |
| blockDataToSpriteSheet[BLOCK.SUGARCANE.id] = 73; | |
| blockDataToSpriteSheet[BLOCK.JUKEBOX.id] = (4*16)+10; | |
| blockDataToSpriteSheet[BLOCK.FENCE.id] = 4; | |
| blockDataToSpriteSheet[BLOCK.PUMPKIN.id] = (7*16)+7; | |
| blockDataToSpriteSheet[BLOCK.NETHERSTONE.id] = (6*16)+7; | |
| blockDataToSpriteSheet[BLOCK.SLOW_SAND.id] = (6*16)+8; | |
| blockDataToSpriteSheet[BLOCK.LIGHTSTONE.id] = (6*16)+9; | |
| blockDataToSpriteSheet[BLOCK.PORTAL.id] = 16+14; | |
| blockDataToSpriteSheet[BLOCK.JACK_O_LANTERN.id] = (7*16)+8; | |
| blockDataToSpriteSheet[BLOCK.CAKE.id] = (7*16) + 9; | |
| // Textures used by logs | |
| HashMap<Byte, Integer> logMap = new HashMap<Byte, Integer>(); | |
| blockDataSpriteSheetMap.put((byte)BLOCK.LOG.id, logMap); | |
| logMap.put((byte)0, 16+4); // Regular log | |
| logMap.put((byte)1, (7*16)+4); // Redwood-or-whatever | |
| logMap.put((byte)2, (7*16)+5); // Birch | |
| // Textures used by wool | |
| HashMap<Byte, Integer> woolMap = new HashMap<Byte, Integer>(); | |
| blockDataSpriteSheetMap.put((byte)BLOCK.WOOL.id, woolMap); | |
| woolMap.put((byte)0, 64); // Regular wool | |
| woolMap.put((byte)15, (7*16)+1); // Black | |
| woolMap.put((byte)14, (8*16)+1); // Red | |
| woolMap.put((byte)13, (9*16)+1); // Dark Green | |
| woolMap.put((byte)12, (10*16)+1); // Brown | |
| woolMap.put((byte)11, (11*16)+1); // Blue | |
| woolMap.put((byte)10, (12*16)+1); // Purple | |
| woolMap.put((byte)9, (13*16)+1); // Cyan | |
| woolMap.put((byte)8, (14*16)+1); // Grey | |
| woolMap.put((byte)7, (7*16)+2); // Dark Grey | |
| woolMap.put((byte)6, (8*16)+2); // Pink | |
| woolMap.put((byte)5, (9*16)+2); // Light Green | |
| woolMap.put((byte)4, (10*16)+2); // Yellow | |
| woolMap.put((byte)3, (11*16)+2); // Light Blue | |
| woolMap.put((byte)2, (12*16)+2); // Magenta | |
| woolMap.put((byte)1, (13*16)+2); // Orange | |
| } | |
| /*** | |
| * Sprite sheet texture index to texture coordinates | |
| */ | |
| public static void initSpriteSheetToTextureTable() { | |
| precalcSpriteSheetToTextureX = new float[256]; | |
| precalcSpriteSheetToTextureY = new float[256]; | |
| for(int i=0;i<256;i++) { | |
| float texYy = ((int) (i / 16))/16.0f; | |
| float texXx = ((int) (i % 16))/16.0f; | |
| precalcSpriteSheetToTextureX[i] = texXx; | |
| precalcSpriteSheetToTextureY[i] = texYy; | |
| } | |
| } | |
| /** | |
| * Initialize our paintings. Note that our hashmap exepects to be | |
| * in lowercase. | |
| */ | |
| public static void initPaintings() { | |
| // I put these in here in the same order that they appeared at | |
| // http://www.minecraftwiki.net/wiki/Painting | |
| paintings = new HashMap<String, PaintingInfo>(); | |
| paintings.put("kebab", new PaintingInfo(1, 1, 0, 0)); | |
| paintings.put("aztec", new PaintingInfo(1, 1, 1, 0)); | |
| paintings.put("alban", new PaintingInfo(1, 1, 2, 0)); | |
| paintings.put("aztec2", new PaintingInfo(1, 1, 3, 0)); | |
| paintings.put("bomb", new PaintingInfo(1, 1, 4, 0)); | |
| paintings.put("plant", new PaintingInfo(1, 1, 5, 0)); | |
| paintings.put("wasteland", new PaintingInfo(1, 1, 6, 0)); | |
| paintings.put("wanderer", new PaintingInfo(1, 2, 0, 4)); | |
| paintings.put("graham", new PaintingInfo(1, 2, 1, 4)); | |
| paintings.put("pool", new PaintingInfo(2, 1, 0, 2)); | |
| paintings.put("courbet", new PaintingInfo(2, 1, 2, 2)); | |
| paintings.put("sunset", new PaintingInfo(2, 1, 6, 2)); | |
| paintings.put("sea", new PaintingInfo(2, 1, 4, 2)); | |
| paintings.put("creebet", new PaintingInfo(2, 1, 8, 2)); | |
| paintings.put("match", new PaintingInfo(2, 2, 0, 8)); | |
| paintings.put("bust", new PaintingInfo(2, 2, 2, 8)); | |
| paintings.put("stage", new PaintingInfo(2, 2, 4, 8)); | |
| paintings.put("void", new PaintingInfo(2, 2, 6, 8)); | |
| paintings.put("skullandroses", new PaintingInfo(2, 2, 8, 8)); | |
| paintings.put("fighters", new PaintingInfo(4, 2, 0, 6)); | |
| paintings.put("skeleton", new PaintingInfo(4, 3, 12, 4)); | |
| paintings.put("donkeykong", new PaintingInfo(4, 3, 12, 7)); | |
| paintings.put("pointer", new PaintingInfo(4, 4, 0, 12)); | |
| paintings.put("pigscene", new PaintingInfo(4, 4, 4, 12)); | |
| paintingback = new PaintingInfo(4, 4, 12, 0); | |
| } | |
| } |