Inactive [INACTIVE][WGEN] BananaImageToMap v3.1 - now with proper ores! [1000]

Discussion in 'Inactive/Unsupported Plugins' started by codename_B, Jun 22, 2011.

  1. Offline


    turn any image into a world!

    Version 3.1
    Download Here

    Configuration options:
    • image to use
    This plugin allows you to turn any image into a world - this means it can be generated with, for example, BananaMapRender, and do stuff like this!

    That's right, heightmaps translated to maps in-game, for zero effort, just configure the worldname and the image and you're away!

    You need to configure your bukkit.yml correctly and start with a fresh world before using this or it will not work.
                 generator: BananaImageToMap
    • CavePopulator
    • DesertPopulator
    • DungeonPopulator
    • FlowerPopulator
    • LakePopulator
    • Mushroom Populator
    • QuarryPopulator
    • Ruins Populator - thanks @Nightgunner5
    • Snow Populator
    • SpookyRoomPopulator
    • TorchPopulator - thanks @Nightgunner5
    • Tree Populator - thanks @heldplayer and @SpaceManiac
    • Ores! - thanks @Notch
    Fun extras:
    • Will generate a heightmap image if you don't specify any!


    • v1 - released awesome plugins
    • v2 - added block populator for ores, thanks @Pandarr also added awesome cavegen, thanks me!
    • v3 - added fixed populators and cleaned up code, thanks @SpaceManiac (no extra configuration options this time - sorry) :p
    • v3.1 - re-added caves (minus the memory leak) - added proper ore population :D
    glen3b, hammale, TAT and 9 others like this.
  2. Offline


    As far as I can tell, the heightmap is for controlling how the SURFACE looks. Anything below sea level is unaffected. The dev's custom populators aren't customizable currently.
  3. Offline


  4. server is offline right now because of other problems. Give me a few minutes. :)

    //EDIT: Online again.
  5. Offline


    That "freaky border" is trees and stuff... it's called population lol

    I love that heightmap btw - I can haz? :D
  6. Freaky population... But if you say it's okay it has to. :D

    Of course you can have the heightmap. :)
  7. Offline


    Well that's why forcing a render isn't advised :p the chunks don't get populated!

    Ideally you should let the world gen naturally as players explore.
  8. Ah okay, good to know. :)
    BTW, I'm testing a few hightmaps and for see how thry look I always force a rendering.
    2011-08-06 05:09:00 [WARNING] Failed to handle packet: java.lang.ClassCastException: org.bukkit.craftbukkit.block.CraftBlockState cannot be cast to org.bukkit.block.CreatureSpawner
    java.lang.ClassCastException: org.bukkit.craftbukkit.block.CraftBlockState cannot be cast to org.bukkit.block.CreatureSpawner
    	at net.minecraft.server.ChunkProviderServer.getChunkAt(
    	at net.minecraft.server.ChunkProviderServer.getChunkAt(
    	at net.minecraft.server.PlayerInstance.<init>(
    	at net.minecraft.server.PlayerManager.a(
    	at net.minecraft.server.PlayerManager.movePlayer(
    	at net.minecraft.server.ServerConfigurationManager.d(
    	at net.minecraft.server.NetServerHandler.a(
    	at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    	at net.minecraft.server.NetworkManager.b(
    	at net.minecraft.server.NetServerHandler.a(
    	at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
    	at net.minecraft.server.MinecraftServer.h(
    Which had the effect to kick me out (Internal server error) but the renderer finished it's job and I could log on again, so no big thing. :)
  9. I walked over a map and was somewhere on "creeper island":
    I walked on it because I wanted to have it rendered from BMR. Anyway, I get kicked from the server:
    2011-08-07 09:42:47 [WARNING] Failed to handle packet: java.lang.ArrayIndexOutOfBoundsException: 4194304
    java.lang.ArrayIndexOutOfBoundsException: 4194304
    	at org.bukkit.craftbukkit.generator.CustomChunkGenerator.getOrCreateChunk(
    	at net.minecraft.server.ChunkProviderServer.getChunkAt(
    	at net.minecraft.server.PlayerInstance.<init>(
    	at net.minecraft.server.PlayerManager.a(
    	at net.minecraft.server.PlayerManager.movePlayer(
    	at net.minecraft.server.ServerConfigurationManager.d(
    	at net.minecraft.server.NetServerHandler.a(
    	at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    	at net.minecraft.server.NetworkManager.b(
    	at net.minecraft.server.NetServerHandler.a(
    	at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
    	at net.minecraft.server.MinecraftServer.h(
    And now I can't logon again:
    2011-08-07 09:43:26 [INFO] andysteph [/] logged in with entity id 559712 at ([world_wonder] 958.5, 63.0, -791.5)
    2011-08-07 09:43:28 [INFO] Disconnecting andysteph [/]: Internal server error
    2011-08-07 09:43:28 [WARNING] Failed to handle packet: java.lang.ArrayIndexOutOfBoundsException

    Oh, and even if this is the wrong topic:
    2011-08-07 09:46:26 [WARNING] Task of 'BMR' generated an exception
    I think BMR can't render because BITM can't build the world?

    I hope you can fix this fast because I want to be able to login again before moving the player with some out-of-game editor first.

    //EDIT: P.S. Server restart doesn't help.
  10. Offline


    Hi - there's issues with non-square heightmaps and this plugin at the minute - your best bet is to make a considerable black border around the image.
  11. A 1 px border is enough? Do I have to remove the world after that so it get's completly rebuildet?

    //EDIT: Instead of fixing the image, I fixed the code:
    Please note that I didn't read into your codes for that so maybe this is a evil workaround. Also it's not tested very much (I was able to log on the server again, more isn't tested).
    Also I replaced every getFace() with getRelative() because getFace() will be deprecated soon. :)

    //EDIT²: Bugs or features:
    Defective shroom:
    Lava tree:

    //EDIT³: The workaround is evil!
  12. Offline


    The lava tree shouldn't be happening - but the defective shroom is intentional :)
  13. Offline


    Try Do World Of Warcraft Full map to see how looks like! ;D
  14. Offline


    I was about to start developing my own plugin for something very similar :p... Almost the same... I'm glad I searched first. I wanted to create a map of earth from satellite and elevation maps :p. I decided to just do Italy for now... I thought it would be easier. Here is the elevation data image for Italy, the second pic is the color to elevation data (I haven't made a composite of the satellite images yet though...)

    Italy elevation map (caution 17 mb):
    ^ Made from 30 screenshots -_- took FOREVER
    Color to elevation pic:

    The way I was going to do it was use 1 block per pixel. One image for the height map, one for block type. (I might just use the elevation map for block type too...) Anyways, if it is possible for this map to be created from your plug in, I would be delighted :D (Its not a black and white height map though and I think there are shadows :confused: -any way to remove those?).

    If you need any help generating maps/images to go along with your plugin I could do that... I want to help anyway I can.

    I'm pretty much a beginner programmer and the most I have done is a 3D pool game in Java and I'm only 17. I'm new to contributing any programming skills I have to society and Bukkit :p.

    Ok well I'm going to try messing with your plugin and my map... if you have any luck just send me a message.
    Oh btw anyone is free to use that map image as much as they want.


    EDIT: The links were changing for some reason to some google links (That didn't work) so I kept editing until somehow they didn't change...
  15. codename are you still going to add the option for a color to block conversion ?

    if so a tiny snippet of code that takes rgb values and convert them to blocks.

    its a bit old so it doesnt support wool colors

    just use convert(r,g,b) and it returns a block int

    public class RGBtoBlock
        /* Colors */
        static java.awt.Color Color[] =
            new java.awt.Color(123,123,123),
            new java.awt.Color(124,177,74),
            new java.awt.Color(130,86,53),
            new java.awt.Color(77,77,77),
            new java.awt.Color(164,124,68),
            new java.awt.Color(204,196,132),
            new java.awt.Color(164,148,147),
            new java.awt.Color(163,123,67),
            new java.awt.Color(26,122,26),
            new java.awt.Color(149,149,18),
            new java.awt.Color(193,193,193),
            new java.awt.Color(255,248,73),
            new java.awt.Color(243,243,243),
            new java.awt.Color(145,145,145),
            new java.awt.Color(142,58,37),
            new java.awt.Color(7,7,11),
            new java.awt.Color(110,224,219),
            new java.awt.Color(105,63,34),
            new java.awt.Color(97,152,255),
            new java.awt.Color(255,255,255),
            new java.awt.Color(135,139,157),
            new java.awt.Color(255,166,75),
            new java.awt.Color(124,12,12)
        /* Block IDs */
        static int Block[] =
        /* Store the Differences temporary */
        static double Difference[] = new double[Color.length];
        public static int convert(int r, int g, int b)
            /* Calculate all Differences */
            for(int i = 0; i < Color.length; i++)
                /* Use Math.abs because sqrt wont work with negatives */
                Difference[i] = Math.sqrt(Math.abs((r-Color[i].getRed())^2) + Math.abs((g-Color[i].getGreen())^2) + Math.abs((b-Color[i].getBlue())^2));
            /* Initialite it with MAX_VALUE to make sure,
             * that the first Difference is smaller
            double minDifference = Double.MAX_VALUE;
            /* Store the Block with the lowest Difference */
            int minBlock = 0;
            for(int i = 0; i < Difference.length; i++)
                /* Block with lower Difference found */
                if(Difference[i] < minDifference)
                    minBlock = Block[i];
                    minDifference = Difference[i];
            return minBlock;
    codename_B likes this.
  16. Offline


    I might add that now yep :p
  17. Offline

    Marcos Cosmos

    I was wondering, could a similar method be used from this for populators rather than generators? Like, take an images, (or more likely set of images) and use that to represent objects (like trees) for populating within configured patterns? :3 coz that would be amazingly helpful... :p
  18. Offline


    @codename_B This is the error I'm getting on the current version of this: 174 recipes
    27 achievements
    19:14:45 [INFO] Starting minecraft server version 1.0.1
    19:14:45 [WARNING] **** NOT ENOUGH RAM!
    19:14:45 [WARNING] To start the server with more ram, launch it as "java -Xmx102
    4M -Xms1024M -jar minecraft_server.jar"
    19:14:45 [INFO] Loading properties
    19:14:45 [INFO] Starting Minecraft server on
    19:14:45 [INFO] This server is running Craftbukkit version git-Bukkit-1.0.1-R1-b
    1597jnks (MC: 1.0.1) (Implementing API version 1.0.1-R1)
    19:14:45 [SEVERE] mapping values are not allowed here
    in "<string>", line 34, column 23:
    generator: BananaImageToMap

    19:14:45 [SEVERE] at org.yaml.snakeyaml.scanner.ScannerImpl.fetchValue(Sca
    19:14:45 [SEVERE] at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreToken
    19:14:45 [SEVERE] at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(Sca
    19:14:45 [SEVERE] at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappin
    19:14:45 [SEVERE] at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(Parser
    19:14:45 [SEVERE] at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(Parse
    19:14:45 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeMappingNo
    19:14:45 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeNode(Comp
    19:14:45 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeMappingNo
    19:14:45 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeNode(Comp
    19:14:45 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeDocument(
    19:14:45 [SEVERE] at org.yaml.snakeyaml.composer.Composer.getSingleNode(Co
    19:14:45 [SEVERE] at org.yaml.snakeyaml.constructor.BaseConstructor.getSin
    19:14:45 [SEVERE] at org.yaml.snakeyaml.Yaml.loadFromReader(

    19:14:45 [SEVERE] at org.yaml.snakeyaml.Yaml.load(
    19:14:45 [SEVERE] at org.bukkit.configuration.file.YamlConfiguration.loadF
    19:14:45 [SEVERE] at org.bukkit.configuration.file.FileConfiguration.load(
    19:14:45 [SEVERE] at org.bukkit.configuration.file.FileConfiguration.load(
    19:14:45 [SEVERE] at org.bukkit.configuration.file.YamlConfiguration.loadC
    19:14:45 [SEVERE] at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer
    19:14:45 [SEVERE] at net.minecraft.server.ServerConfigurationManager.<init
    19:14:45 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftSe
    19:14:45 [SEVERE] at
    19:14:45 [SEVERE] at
    19:14:45 [SEVERE] Unexpected exception
    mapping values are not allowed here
    in "<string>", line 34, column 23:
    generator: BananaImageToMap

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchValue(
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.ja
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(Par
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
    at org.yaml.snakeyaml.composer.Composer.composeNode(
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
    at org.yaml.snakeyaml.composer.Composer.composeNode(
    at org.yaml.snakeyaml.composer.Composer.composeDocument(
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(

    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
    at org.yaml.snakeyaml.Yaml.loadFromReader(
    at org.yaml.snakeyaml.Yaml.load(
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlCo
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguratio
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(Yam
    at org.bukkit.craftbukkit.CraftServer.<init>(
    at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigur
    at net.minecraft.server.MinecraftServer.init(
  19. Offline


    You screwed up your bukkit.yml, either with tabs or by just putting the generator declaration in the wrong place. Try resetting your bukkit.yml to what it was before and use Multiverse to handle the custom generator instead. It's a lot easier from my point of view.

    Multiverse can be found on bukkit dev:

    You can find documentation on how to use BananaImageToMap with MV on Github:

    EDIT: It appears that the version in the OP isn't the newest, and doesn't have the features that the newest one does (config-less setup and the like) Maybe @codename_B could fix that?
  20. Offline


    As you know this is now inactive due to not being maintained if it is on Bukkitdev or you wish to revive it tag me.
  21. Offline


    This is amazing :') TOO AMAZING HOW IS THIS POSSIBLE /me kicks seat [cake]
  22. Offline


    Does this still work?
  23. Offline


    IIRC, this version is not up-to-date, if you're feeling adventurous, the codes on github at or you could bug codename b for a compiled copy.

    it hasn't been updated in a while, but should still work. I'm not positive if it handles the new world hight gracefully...
  24. Offline


    Can anyone upload the .jar? the download link doesnt work anymore :(
    Doesnt matter that its outdated
  25. Offline


    how do the mean turn a image into a world?
  26. brord olha2
    Have a look at Dynmap instead.
  27. Offline


    Dynmap is like the inverse of what this plugin does...
  28. [quote uid=82967 name="nightpool" post=1136623]Dynmap is like the inverse of what this plugin does...[/quote]
    Sorry, In my mind I mixed up BananaImageToMap and BananaMapRenderer. ;)

    Anyway, as codename_B provided a link to github I updated it to the newest CB version. Binary + Source: <Edit by Moderator: Redacted mediafire url>

    Show Spoiler
    diff -Nru src/com/ubempire/map/
    --- src/com/ubempire/map/DesertPopulator.java2012-05-27 09:51:02.413845060 +0200
    +++ 09:54:08.544466511 +0200
    @@ -22,12 +22,12 @@
                     int tz = (chunk.getZ() << 4) + z;
                     int y = world.getHighestBlockYAt(tx, tz);
    -                Block block = chunk.getBlock(x, y, z).getFace(BlockFace.DOWN);
    +                Block block = chunk.getBlock(x, y, z).getRelative(BlockFace.DOWN);
                     if (block.getBiome() != Biome.DESERT) continue;
                     // Set top few layers of grass/dirt to sand
                     for (int i = 0; i < 5; ++i) {
    -                    Block b2 = block.getFace(BlockFace.DOWN, i);
    +                    Block b2 = block.getRelative(BlockFace.DOWN, i);
                         if (b2.getType() == Material.GRASS || b2.getType() == Material.DIRT) {
    @@ -37,8 +37,8 @@
                     if (block.getType() == Material.SAND) {
                         if (random.nextInt(20) == 0) {
                             // Make sure it's surrounded by air
    -                        Block base = block.getFace(BlockFace.UP);
    -                        if (base.getTypeId() == 0 && base.getFace(BlockFace.NORTH).getTypeId() == 0 && base.getFace(BlockFace.EAST).getTypeId() == 0 && base.getFace(BlockFace.SOUTH).getTypeId() == 0 & base.getFace(BlockFace.WEST).getTypeId() == 0) {
    +                        Block base = block.getRelative(BlockFace.UP);
    +                        if (base.getTypeId() == 0 && base.getRelative(BlockFace.NORTH).getTypeId() == 0 && base.getRelative(BlockFace.EAST).getTypeId() == 0 && base.getRelative(BlockFace.SOUTH).getTypeId() == 0 & base.getRelative(BlockFace.WEST).getTypeId() == 0) {
                                 generateCactus(base, random.nextInt(4));
    @@ -49,7 +49,7 @@
         private void generateCactus(Block block, int height) {
             for (int i = 0; i < height; ++i) {
    -            block.getFace(BlockFace.UP, i).setType(Material.CACTUS);
    +            block.getRelative(BlockFace.UP, i).setType(Material.CACTUS);
    diff -Nru src/com/ubempire/map/
    --- src/com/ubempire/map/DungeonPopulator.java2012-05-27 09:51:02.413845060 +0200
    +++ 09:55:14.824838739 +0200
    @@ -7,10 +7,10 @@
     import org.bukkit.World;
     import org.bukkit.block.Block;
     import org.bukkit.block.Chest;
    +import org.bukkit.entity.EntityType;
     import org.bukkit.generator.BlockPopulator;
     import org.bukkit.inventory.ItemStack;
     import org.bukkit.block.CreatureSpawner;
    -import org.bukkit.entity.CreatureType;
     import org.bukkit.inventory.Inventory;
     import org.bukkit.util.noise.SimplexNoiseGenerator;
    @@ -121,12 +121,12 @@
         private void placeSpawner(Block block) {
    -        CreatureType[] types = new CreatureType[]{
    -            CreatureType.SKELETON, CreatureType.ZOMBIE, CreatureType.CREEPER, CreatureType.SPIDER
    +        EntityType[] types = new EntityType[]{
    +        EntityType.SKELETON, EntityType.ZOMBIE, EntityType.CREEPER, EntityType.SPIDER
    -        ((CreatureSpawner) block.getState()).setCreatureType(types[random.nextInt(types.length)]);
    +        ((CreatureSpawner) block.getState()).setSpawnedType(types[random.nextInt(types.length)]);
         private void placeChest(Block block) {
    diff -Nru src/com/ubempire/map/
    --- src/com/ubempire/map/FlowerPopulator.java2012-05-27 09:51:02.413845060 +0200
    +++ 09:55:38.866885521 +0200
    @@ -23,7 +23,7 @@
                     int y = world.getHighestBlockYAt(cx, cz);
                     Block block = chunk.getBlock(x, y, z);
    -                if (block.getType() == Material.AIR && block.getFace(BlockFace.DOWN).getType() == Material.GRASS) {
    +                if (block.getType() == Material.AIR && block.getRelative(BlockFace.DOWN).getType() == Material.GRASS) {
                         if (block.getBiome() == Biome.PLAINS) {
                             int n = random.nextInt(64);
                             if (n < 1) {
    diff -Nru src/com/ubempire/map/
    --- src/com/ubempire/map/MushroomPopulator.java2012-05-27 09:51:02.413845060 +0200
    +++ 09:55:58.075123941 +0200
    @@ -26,13 +26,13 @@
             if (block.getBiome() != Biome.TAIGA && block.getBiome() != Biome.TUNDRA) {
    -        if (block.getFace(BlockFace.DOWN).getType() != Material.GRASS) {
    +        if (block.getRelative(BlockFace.DOWN).getType() != Material.GRASS) {
             int size = 2 + random.nextInt(4);
             for (int i = 0; i <= size + 1; i++) {
    -            Block mushroom = block.getFace(BlockFace.UP, i);
    +            Block mushroom = block.getRelative(BlockFace.UP, i);
                 mushroom.setData((byte) 2);
    diff -Nru src/com/ubempire/map/
    --- src/com/ubempire/map/SnowPopulator.java2012-05-27 09:51:02.413845060 +0200
    +++ 09:56:08.998690831 +0200
    @@ -33,7 +33,7 @@
                         } else if (block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA) {
                         } else if (block.getType() != Material.AIR) {
    -                        block.getFace(BlockFace.UP).setType(Material.SNOW);
    +                        block.getRelative(BlockFace.UP).setType(Material.SNOW);
                             if (block.getType() == Material.DIRT)
    diff -Nru src/com/ubempire/map/
    --- src/com/ubempire/map/SpookyRoomPopulator.java2012-05-27 09:51:02.413845060 +0200
    +++ 09:57:14.251103540 +0200
    @@ -7,7 +7,7 @@
     import org.bukkit.block.Block;
     import org.bukkit.block.BlockFace;
     import org.bukkit.block.CreatureSpawner;
    -import org.bukkit.entity.CreatureType;
    +import org.bukkit.entity.EntityType;
     import org.bukkit.generator.BlockPopulator;
    @@ -93,13 +93,13 @@
                         CreatureSpawner spawner = (CreatureSpawner) block.getState();
                         if (floor <= 2) {
    -                        spawner.setCreatureType(CreatureType.ZOMBIE);
    +                        spawner.setSpawnedType(EntityType.ZOMBIE);
                         } else if (floor >= 3 && floor <= 7) {
    -                        spawner.setCreatureType(CreatureType.SPIDER);
    +                        spawner.setSpawnedType(EntityType.SPIDER);
                         } else if (floor >= 8 && floor <= 10) {
    -                        spawner.setCreatureType(CreatureType.SKELETON);
    +                        spawner.setSpawnedType(EntityType.SKELETON);
                         } else {
    -                        spawner.setCreatureType(CreatureType.GHAST);
    +                        spawner.setSpawnedType(EntityType.GHAST);
                     } else {
    @@ -117,7 +117,7 @@
                 for (int x = minX; x <= maxX; x++) {
                     for (int y = minY; y <= maxY; y++) {
                         Block block = world.getBlockAt(x, y, z);
    -                    if (block.getFace(BlockFace.DOWN).getType() != Material.AIR && block.getFace(BlockFace.DOWN).getType() != matDecor) {
    +                    if (block.getRelative(BlockFace.DOWN).getType() != Material.AIR && block.getRelative(BlockFace.DOWN).getType() != matDecor) {
                             int rand = random.nextInt(10);
                             if (rand <= 6) {
                                 world.getBlockAt(x, y, z).setType(matFloor);
    diff -Nru src/plugin.yml
    --- src/plugin.yml2012-05-27 09:51:02.414845021 +0200
    +++ 09:53:10.545765818 +0200
    @@ -1,6 +1,6 @@
     name: BananaImageToMap
    -version: 3.1
    +version: 3.1.1
     description: Generates a world based on an image heightmap complete with custom map features
    -authors: ['codename_B', 'SpaceManiac']
    +authors: ['codename_B', 'SpaceManiac', 'V10lator']
     load: startup

    Please note that this is untested and that I won't give support for it.
    Last edited by a moderator: Nov 27, 2016
  29. Thanks for updating the code. I'm new to minecraft and bukkit and was wondering is there a way to increase the max height for the BananaImageToMap code? I've modified the code so that it imports up to 256. Is there a way to increase the max height to say 512? I am working on importing my Digital Middle Earth model into Minecraft so that we can create the Mines of Moria in Minecraft. Right now the model is 16386x16386 and is about 1/4 scale. Here are some test images of the falls of Rauros. I am also interested in how I can use another image with color assignments to assign biomes to my world map. rauros.jpg rauros2.jpg

    Attached Files:

  30. Offline


    slight problem here, I compiled the github source myself, fixing all errors, but the world generates like this:
    Note: the squids can still swim in what should be water, and I can still collide with what should be solid blocks, but it is invisible.

    edit: I believe it to be something with one or more of the populators.
    edit2: only appears to happen in water (water surrounded by forest shows as 'forest' biome still, so it is an issue with the part of the image reading code that generates water.
    edit3: if I regenerate good chunks with //regen they are fine, but 'broken' chunks regenerate completely empty.

Share This Page