Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //using the Minecraft Coder Pack 5.0
- //----------------------------------
- //in Minecraft.java; in the finally block at the end of shutdownMinecraftApplet(), line 600:
- mod_MapRecorder.getInstance().saveExisting();
- //in Chunk.java; at the end of onChunkLoad(), line 687:
- mod_MapRecorder.getInstance().renderChunk(worldObj, this);
- //and finally, mod_MapRecorder.java; please don't judge me too harshly for the number of terrible, terrible coding practices this employs, it only needed to work once :)
- package net.minecraft.src;
- import java.io.*;
- import java.awt.image.*;
- import javax.imageio.*;
- import java.util.Date;
- import net.minecraft.client.Minecraft;
- public class mod_MapRecorder
- {
- private static mod_MapRecorder instance;
- private static final int WIDTH = 6000;
- private static final int HEIGHT = 6000;
- private String worldName;
- private File directory;
- private BufferedImage day;
- private BufferedImage night;
- private Date lastSave;
- private mod_MapRecorder()
- {
- directory = new File(Minecraft.getMinecraftDir(), new StringBuilder().append("mods").append(File.separatorChar).append("MapRecorder").toString());
- if (!directory.exists())
- {
- directory.mkdirs();
- }
- worldName = "";
- lastSave = new Date();
- }
- protected void finalize()
- {
- saveExisting();
- }
- public static mod_MapRecorder getInstance()
- {
- if(instance == null)
- instance = new mod_MapRecorder();
- return instance;
- }
- protected void beginNew()
- {
- try
- {
- File fileDay = new File(directory, new StringBuilder().append(worldName).append(".day.png").toString());
- if(fileDay.exists())
- day = ImageIO.read(fileDay);
- else
- day = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
- /*File fileNight = new File(directory, new StringBuilder().append(worldName).append(".night.png").toString());
- if(fileNight.exists())
- night = ImageIO.read(fileNight);
- else
- night = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);*/
- }
- catch(IOException e)
- {
- e.printStackTrace();
- }
- }
- public void saveExisting()
- {
- if(worldName.compareTo("") == 0)
- return;
- try
- {
- File fileDay = new File(directory, new StringBuilder().append(worldName).append(".day.png").toString());
- ImageIO.write(day, "png", fileDay);
- //File fileNight = new File(directory, new StringBuilder().append(worldName).append(".night.png").toString());
- //ImageIO.write(night, "png", fileNight);
- }
- catch(IOException e)
- {
- e.printStackTrace();
- }
- }
- public void renderChunk(World w, Chunk c)
- {
- if(worldName != w.getWorldInfo().getWorldName())
- {
- saveExisting();
- lastSave = new Date();
- worldName = w.getWorldInfo().getWorldName();
- beginNew();
- }
- try{
- //doit
- for(int x = 0; x < 16; x++)
- {
- for(int z = 0; z < 16; z++)
- {
- int pixelX = convertX(c.xPosition, x);
- int pixelZ = convertZ(c.zPosition, z);
- if(pixelX < 0 || pixelX > (WIDTH-1) || pixelZ < 0 || pixelZ > (HEIGHT-1))
- continue;
- int color = colorLookup(w, c, x, z);
- int diff = ((c.getHeightValue(x, z)-72));
- int red = (color & 0xff0000) + (diff << 16);
- if(red > 0xff0000)
- red = 0xff0000;
- else if(red < 0)
- red = 0;
- int green = (color & 0x00ff00) + (diff << 8);
- if(green > 0x00ff00)
- green = 0x00ff00;
- else if (green < 0)
- green = 0;
- int blue = (color & 0x0000ff) + diff;
- if(blue > 0x0000ff)
- blue = 0x0000ff;
- else if (blue < 0)
- blue = 0;
- color = red | green | blue;
- day.setRGB(pixelX, pixelZ, color);
- }
- }
- }catch(Exception e)
- {
- try{
- FileOutputStream outFile = new FileOutputStream("C:\\Users\\Matthew\\Desktop\\a.txt", true);
- PrintStream out = new PrintStream(outFile);
- e.printStackTrace(out);
- out.close();
- }
- catch(Exception e2)
- {
- e2.printStackTrace();
- }
- }
- if(new Date().getTime() - lastSave.getTime() >= 180000)
- {
- saveExisting();
- lastSave = new Date();
- }
- }
- private int colorLookup(World w, Chunk c, int x, int z)
- {
- int ret = 0;
- int y = c.getHeightValue(x, z);
- if(y >= 128)
- y = 127;
- else if(y <= 0)
- y = 1;
- int aboveId = c.getBlockID(x, y, z);
- int id = c.getBlockID(x, y -1 , z);
- int damage = c.data.getNibble(x, y -1, z);
- switch(aboveId)
- {
- case 37: //yellow flower
- ret = 0xf1f902;
- break;
- case 38: //red flower
- ret = 0xf7070f;
- break;
- case 54: //chest
- ret = 0x8e6525;
- break;
- case 78: //snow cover
- ret = 0xf1fcfc;
- break;
- case 81: //cactus
- ret = 0x0b5715;
- break;
- case 83: //sugar cane
- ret = 0xa0e080;
- break;
- case 85: //fence
- case 107:
- ret = 0xa08250;
- break;
- case 111: //lily pad
- ret = 0x13621c;
- break;
- case 113: //nether fence
- ret = 0x2d171b;
- default:
- ret = 0;
- break;
- }
- if(ret != 0)
- return ret;
- if(id == 2) //grass
- {
- WorldChunkManager mgmt = w.getWorldChunkManager();
- float temperature = mgmt.func_35554_b(c.xPosition*16 + x, 64, c.zPosition*16 + z);
- float humidity = mgmt.func_35558_c(c.xPosition*16, c.zPosition);
- return ColorizerGrass.getGrassColor(temperature, humidity) - 0x171717;
- }
- /*else if(id == 8 || id == 9) //water
- {
- int seaFloor = 0;
- int depth = 0;
- int floorColor = 0;
- int i = y - 1;
- while(i > 0)
- {
- seaFloor = c.getBlockID(x, i, z);
- if(seaFloor == 8 || seaFloor == 9)
- depth++;
- else
- {
- floorColor = rawColorLookup(seaFloor, c.data.getNibble(x, i, z));
- break;
- }
- i--;
- }
- double opacity = ((double)depth)/7.0;
- if(opacity > 1.0)
- opacity = 1.0;
- int r = floorColor & 0xff0000;
- int g = floorColor & 0x00ff00;
- int b = floorColor & 0x0000ff;
- r = (int)((((double)0x2a0000) * opacity) + ((1.0-opacity) * ((double)r)));
- g = (int)((((double)0x005f00) * opacity) + ((1.0-opacity) * ((double)g)));
- b = (int)((((double)0x0000ff) * opacity) + ((1.0-opacity) * ((double)b)));
- if(r > 0xff0000)
- r = 0xff0000;
- else if(r < 0)
- r = 0;
- if(g > 0x00ff00)
- g = 0x00ff00;
- else if(g < 0)
- g = 0;
- if(b > 0x0000ff)
- b = 0x0000ff;
- else if(r < 0)
- b = 0;
- return r | g | b;
- } */
- else
- return rawColorLookup(id, damage);
- }
- private int rawColorLookup(int id, int damage)
- {
- int ret = 0;
- switch(id)
- {
- case 1: //stone
- ret = 0x7e7e7e;
- break;
- case 2: //grass
- ret = 0x62a238;
- break;
- case 3: //dirt
- ret = 0x866043;
- break;
- case 4: //cobble
- case 67:
- ret = 0x7c7c7c;
- break;
- case 5: //planks
- case 53:
- ret = 0xa08250;
- break;
- case 7: //bedrock
- ret = 0x555555;
- break;
- case 8: //water
- case 9:
- ret = 0x2a5fff;
- break;
- case 10: //lava
- case 11:
- ret = 0xf74700;
- break;
- case 12: //sand
- ret = 0xdbd3a0;
- break;
- case 13: //gravel
- ret = 0x857d7d;
- break;
- case 14: //gold ore
- ret = 0x928e7d;
- break;
- case 15: //iron ore
- ret = 0x89837f;
- break;
- case 16: //coal ore
- ret = 0x727272;
- break;
- case 17: //log
- ret = 0xa38452;
- break;
- case 18: //
- if(damage == 1) //pine
- ret = 0x2d472d;
- else if(damage == 2) //birch
- ret = 0x074b36;
- else
- ret = 0x2c5619;
- break;
- case 19: //sponge
- ret = 0xb5b538;
- break;
- case 21: //lapis ore
- ret = 0x636f88;
- break;
- case 22: //lapis block
- ret = 0x1d46a6;
- break;
- case 23: //dispenser
- ret = 0x676767;
- break;
- case 24: //sandstone
- ret = 0xdad29f;
- break;
- case 25: //noteblock
- ret = 0x6c4734;
- break;
- case 29: //sticky piston
- ret = 0x8d9462;
- break;
- case 33: //piston
- ret = 0x9b8157;
- break;
- case 35: //wool
- switch (damage)
- {
- case 1: //orange
- ret = 0xea8037;
- break;
- case 2: //magenta
- ret = 0xbf4cc9;
- break;
- case 3: //light blue
- ret = 0x688bd4;
- break;
- case 4: //yellow
- ret = 0xc2b51c;
- break;
- case 5: //lime green
- ret = 0x3bbd30;
- break;
- case 6: //pink
- ret = 0xd9849b;
- break;
- case 7: //dark gray
- ret = 0x434343;
- break;
- case 8: //light gray
- ret = 0x9ea6a6;
- break;
- case 9: //cyan
- ret = 0x277596;
- break;
- case 10: //purple
- ret = 0x8136c4;
- break;
- case 11: //blue
- ret = 0x27339a;
- break;
- case 12: //brown
- ret = 0x56331c;
- break;
- case 13: //green
- ret = 0x384d18;
- break;
- case 14: //red
- ret = 0xa42d29;
- break;
- case 15: //black
- ret = 0x1b1717;
- break;
- default: //white
- ret = 0xdfdfdf;
- break;
- }
- break;
- case 41: //gold block
- ret = 0xfbf152;
- break;
- case 42: //iron block
- ret = 0xe0e0e0;
- break;
- case 43: //slabs
- case 44:
- switch(damage)
- {
- case 1: //sandstone
- ret = 0xdad29f;
- break;
- case 2: //wood
- ret = 0xa08250;
- break;
- case 3: //cobble
- ret = 0x7c7c7c;
- break;
- case 4: //brick
- ret = 0x916052;
- break;
- case 5: //stone brick
- ret = 0x7d7d7d;
- break;
- default: //stone
- ret = 0xa3a3a3;
- break;
- }
- break;
- case 45: //brick
- case 108:
- ret = 0x916052;
- break;
- case 46: //tnt
- ret = 0xad5238;
- break;
- case 47: //bookshelve
- ret = 0xa08250;
- break;
- case 48: //mossy cobble
- ret = 0x697b69;
- break;
- case 49: //obsidian
- ret = 0x15131f;
- break;
- case 54: //chest
- ret = 0x8e6525;
- case 56: //diamond ore
- ret = 0x828f92;
- break;
- case 57: //diamond block
- ret = 0x6fdfda;
- break;
- case 58: //workbench
- ret = 0x764e2f;
- break;
- case 60: //farmland
- ret = 0x724b2d;
- break;
- case 61: //furnace
- case 62:
- ret = 0x676767;
- break;
- case 73: //redstone ore
- case 74:
- ret = 0x866969;
- break;
- case 80: //snow block
- ret = 0xf1fcfc;
- break;
- case 79: //ice
- ret = 0x7eaeff;
- break;
- case 82: //clay
- ret = 0x9fa4b1;
- break;
- case 84: //jukebox
- ret = 0x734d39;
- break;
- case 86: //pumpkin
- case 91:
- ret = 0xc27816;
- break;
- case 87: //netherrak
- ret = 0x703635;
- break;
- case 88: //soul sand
- ret = 0x543f33;
- break;
- case 89: //glowstone
- ret = 0x927848;
- break;
- case 98: //stone brick
- case 109:
- ret = 0x7d7d7d;
- break;
- case 99: //huge brown mushroom
- ret = 0x8d6a53;
- break;
- case 100: //huge red mushroom
- ret = 0xb72725;
- break;
- case 103: //melon
- ret = 0x969925;
- break;
- case 110: //mycelium
- ret = 0x6f6469;
- break;
- case 112: //nether brick
- case 114:
- ret = 0x2d171b;
- break;
- case 121: //end stone
- ret = 0xdddfa5;
- break;
- default:
- ret = 0x000000;
- break;
- }
- return ret;
- }
- private int convertX(int chunkX, int x)
- {
- return (chunkX*16) + x + (HEIGHT/2);
- }
- private int convertZ(int chunkZ, int z)
- {
- return (chunkZ*16) + z + (WIDTH/2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement