Floating Island World Generation

Floating Island World Generation

This world generator is designed to completely replace the overworld's world generation with something a bit different. Instead, you will be presented with an endless amount of floating islands, each having their own biome with features for those biomes (listed below), and each varying in size and height, and some are also fairly flat.

Each island also contains ores (coal/iron/gold/redstone/lapis/diamond/emerald) at any depth, usually as a vein of ores, but sometimes a single ore. You can also find patches of gravel and water/lava pools underground, and some islands have cave systems.

Occasionally, an island (except flat/mushroom/nether/ender islands) will also come with a dungeon complex, consisting of a number of fixed-size dungeon rooms all linked together. Each room features a spawner with a random mob type (skeleton/zombie/spider/cavespider) and also has 0-3 chests containing randomly selected loot. Note that because of the sheer number of spawners, the complex will be an absolute nightmare to loot without torches, a pickaxe, full armour and a sword, unless it happens to be a small complex.

This plugin includes a toggleable update checker. It will not download updates, and simply notifies operators when this functionality is enabled if an update is available when the player joins the game. The plugin communicates with dev.bukkit.org to fetch the RSS feed necessary to deem whether an update is available. Look at the "What each config setting does" section to see how to disable it.

This plugin includes MCStats, which gathers data from your server (number of players, online/offline, MC version, etc.). You can turn this off by editing the config at "plugins/Plugin Metrics/" if you don't like the idea of data being gathered from your server. The data collected can be seen at http://mcstats.org/plugin/IsleWorldGen and is purely for my own curiosity.

Biome types:

Plains - Grassland with no trees, sometimes with a sand/gravel 'beach', and will have villages in the future
Forest - Grassland with trees, sometimes with a sand/gravel 'beach'
Desert - Sand with cacti, and will have desert villages and desert temples in the future
Jungle - Grassland with a lot of trees and bushes, and will have jungle temples in the future
Taiga - Snowland with a fair amount of trees
Swamp - Grassland with swamp trees and surface water
Mushroom - Mycelium coated land with a lot of huge mushrooms
Nether - Netherrack riddled with zombie pigmen spawners and the occasional unlit nether portal
Ender - End stone with obsidian towers and the occasional end portal in the floor
Lake - Island mostly consisting of water, usually with sugar cane around it

Possible extra island types:

Floating fortress - A flat plains island completely taken up by a procedurally generated fortress, with spawners and loot

To use the plugin so it generates the changed overworld:

1. Download the plugin and place it into your plugins folder
2. Start the server to generate a config.yml file in plugins/IsleWorldGen then stop the server again
3. Edit the config.yml to change values to your liking
4. Add the following lines to your bukkit.yml file (replace underscores with world name):

(note: 2 spaces before world name, 4 spaces before generator line, do NOT use tabs)
5. Change your world name in server.properties to match the one you put in bukkit.yml
6. Start the server and enjoy

To use the plugin as a world generator for MultiVerse:

1. Download the plugin and place it into your plugins folder, then do "/reload" on the server
2. Check the generation type is loaded (/mv gens), redo step 1 if it isn't
3. Edit the config.yml file in plugins/IsleWorldGen to your liking, then do "/reload" again
4. Generate a world using "/mv create <worldname> normal -g IsleWorldGen"
5. Enter that world using "/mvtp <worldname>" OR create a portal to that world using MultiVerse (check the help for it with "/mvp help")

What each config setting does:

island.spacing: how many chunks between each island centre, in a grid like pattern, with the centre of each 'square' of islands also having an island. For example, 12 would set islands 12 chunks apart.

island.height.min: the lowest y-value that an island can start at.
island.height.max: the highest y-value that an island can start at.

island.heightscale: how much to scale island height, for instance 2 doubles the island height (this includes the underbelly).
island.underbellyscale: how much to scale the island underbelly, this is the same as island.heightscale except it doesn't affect the top half of an island.

island.size.min: the minimum size an island can be (in blocks from the centre). Some islands can actually be smaller than this, it's a guideline for the generator.
island.size.max: the maximum size an island can be (in blocks from the centre). Usually islands will never hit this size.

rarity.[ORE]: a multiplier for how often an ore spawns, for example if rarity.coalore was 2.5 then there would be roughly 2.5x as much coal ore.

rarity.grass.coverchance: how much of island grass should be covered with tall grass or flowers, for example 0.1 would cover 10% of an island (roughly).

rarity.grass.flowerchance: how much of covered grass should be flowers, with the rest being tall grass. For example, 0.6 would do 60% flowers (usually half yellow half red) and 40% tall grass.

rarity.grass.coversnow: used to determine if grass should be placed on taiga islands to replace snow coverage.

dungeonchance.regular: the chance that an island has a dungeon, if it's suitable. For example, 0.3 would give 30% of suitable islands dungeons.
dungeonchance.linked: same as above, but applies to the (potentially massive) linked dungeons, which also take priority over the regular ones.

islandchance.[TYPE]: a weight system for how often an island should spawn. For example if all islands have 1, but deserts have 3, there will be 3x as many desert islands as any other specific type (i.e. nether). Setting all of these to 0 (or under 0) will cause all islands to default to forest.

features.[TYPE]: used to determine if a specific feature should be placed on it's respective island, such as end portals on ender islands.

dungeon.maxrooms: the maximum number of rooms a generated dungeon can have, 0 disables.

dungeon.chests.min: the minimum number of chests a dungeon room can have.
dungeon.chests.max: the maximum number of chests a dungeon room can have.

dungeon.extradoorchance: the chance to add a redundant door to a dungeon when it tries to place a room where one already exists. Good for making dungeons harder to navigate.

random_spawn_point: If true, whenever a new island with trees is generated, the spawn point is moved to that island. This can cause severe lag due to the massive amount of islands that generate because of it, especially on a popular server.

minutes_between_update_checks: how often to check for an updated version, in minutes. 0 disables update checks.

parent_generator: a name of another world generator provided by another plugin (i.e. Fjord), the world generation will attempt to do that one first, and then add islands to it.

Adding custom ores (V3.0+):

1. Make an ores folder in /plugin/IsleWorldGen/, where your config.yml is.
2. Create a file for your new ore and name it what you want, then open it with notepad (or any other text editor, like notepad++).
3. Add the following lines:
  debug: [Toggle debug text in console, not required] (example: true) (defaults to false)
  id: [Name of block, or block ID] (example: LOG) (defaults to 0)
  dmg: [Block damage value, not required] (example: 2) (defaults to 0)
  minsize: [Minimum vein size] (example: 15) (defaults to 1)
  maxsize: [Maximum vein size, not required] (example: 30, not required) (default to min vein size)
  replaces: [Comma delimited list of blocks the vein may replace] (example: 1,4,MOSSY_COBBLESTONE,SAND,SANDSTONE) (defaults to none)
  chance: [Chance the vein may generate, per block] (example: 0.00025) (defaults to 0)
Example ore for a mod block (MCPC+ servers and the like):

4. Repeat steps 2 and 3 for every ore you want.
5. Restart the server with a new world, and somehow check the ores are being placed (i.e. WorldEdit away the stone). If they are, enjoy!
If you're having issues with ores not generating and/or do not understand how this works, just give me a PM and I'll explain it!

Note: While mods are supported (i.e. MCPC+ servers), you have to use the id of the mod block for it to be used.

Adding custom village houses (V4.0+)

Note that this is still in beta, it needs a fair bit of work to be reasonable.

Currently to add houses to villages you just need to place schematics into a houses folder the same way you would have an ores folder.
These schematics are loaded onto village islands with the orientation you gave.
Entities (and TileEntities) from the schematics are currently ignored so you will end up with a plain house.

Adding custom dungeon chest loot (V5.0+)

1. Make a chests folder in /plugin/IsleWorldGen/, where your config.yml is.
2. Create a file for your new dungeon loot chest and name it what you want, then open it with notepad (or any other text editor, like notepad++).
3. Follow this template for adding all the items you want, and make sure to match the indenting: http://pastebin.com/Cs861BqF
4. Repeat steps 2 and 3 for every dungeon chest type you want.
5. Restart the server with a new world, and somehow check the custom chests are being used (i.e. set dungeon chance to 1 and explore them). If they are, enjoy!
If you're having issues with custom chests not being used and/or do not understand how this works, just give me a PM and I'll explain it!
Example custom chest loot which is actually just the default chest loot: http://pastebin.com/3S9iNByh
Example custom chest loot which picks 2-5 records to add to the chest: http://pastebin.com/dzPME8xB
Example custom chest loot which is the same as above, but doesn't add the same one more than once: http://pastebin.com/GvEsvLQw

Note: While mods are supported (i.e. MCPC+ servers), you have to use the id of the mod item for it to be used.

Having issues?

First of all, make sure the plugin is actually loaded, look for "IsleWorldGen" in the plugin list when doing /pl.
Second, make sure that you have the correct version of bukkit. You need to get the right version to match the one you downloaded from here.
If you are using a multiple worlds plugin (MultiVerse for example), make sure that's up to date too.
If it still doesn't work, make a ticket and I'll try to help!

Using an old version of bukkit?

If you really can't update to the needed MC version but also really want the plugin, send me a PM and I can build the plugin for the version you need (give an email address to send it to). Note that I will only update the one I make for you if you remind me, and I will not update it for small changes, so I suggest disabling the update checker for it.

See the latest development build:

I'm sometimes running a server to try out changes I make to the plugin, you can freely join this server.
The server will start you off in creative and will not have anti cheat, you are allowed to use hacked clients (i.e. nodus) as long as you don't start nuking everything.
The server may restart frequently as I change the plugin, if the server seems to not be up try refreshing. If it still isn't up I'm probably in bed.
If the MOTD says [WHITELISTED] in your server list then I am running a different server for friends only.
If something seems extremely common (i.e. all the islands have dungeons), I'm probably trying something out. You can do "/islegen data" to see what I have the config values set to.
Server IP: hexicube.no-ip.org:12345

Planned features:

Allow creation of custom island types
This would allow more advanced server owners to define their own types of islands that can spawn in their world, which would be added to the current list. They could create a special config file within an island type folder for the plugin for each island and specify everything they want the island to have, ranging from randomised top-block types and restricting some ores to custom tree schematics and village generation.
Allow creation of village houses
This one is half complete, you probably noticed that the server occasionally complains about a lack of schematics for villages every now and again. I will try and add support for schematics so that you may place some in a folder specifically for village housing. These villages only spawn on flat plains islands (unless the custom islands gets added) and fill as much of the island as it can without making overhanging houses.
Other possible features
Optional configurable water level with ability to pick a block for it
Single-room dungeons (much more common than the huge dungeons)
Make other suggestions in comments!

Other:

Remember that every version is fully compatible with the previous version! The worst that can happen is some islands will generate over other islands, as I changed the spacing in V1.3 and again in V1.4.
If you have suggestions on how to improve anything done in the generation (except for the basic island generation stuff) or suggestions on what to add to the generation, let me know!

Known issues:

Using a 'parent' generator is subject to bugs out of my control, such as the parent generator affecting the placed islands or crashes because of incompatibility. For instance, fjord trees occasionally generate on the islands, and the server crashes when using 173generator (not sure if up to date).
If using settings that make islands with trees rare on non-existant, the plugin will not fix the spawn point and you may be repeatedly dropped into the void. Sometimes the spawn point happens to be on an island, but it's far more reliable to make islands with trees more common, unless you plan on setting the spawn yourself.

Change-log:

V5.4 (development):
TODO: Improve naturally spawning villages
TODO: Make a program to modify village house schematics to add needed data
V5.3
Disabling pig zombie spawners is now respected on nether islands that lack a soulsand beach (surprised it went unnoticed for so long!)
V5.2:
New island type: None (doesn't spawn an island for that slot)
An unlinked dungeon can now spawn on an island that allows a linked one, but that doesn't have a linked one
Split config option for dungeon chance into 2 separate chances for both types, old config value is respected during conversion and becomes the new dungeonchance.linked one
V5.1:
Updated to MC 1.7.9
V5.0:
Added custom dungeon loot chest tables (will explain fully on this page)
Fixed tiny bug where single-blocks of snow coverage were missing on taiga islands
Redwood trees on taiga islands now remove snow their leaves would cover (not perfect yet)
V4.1:
Fixed missing jungle trees
Added config setting for island height scaling
Added config setting for island underbelly scaling (with respect to the top half)
Changed config setting for island start height to be 2 numbers for min and max (previous setting auto converts)
Added config setting to change the size range of islands (may get buggy and/or look weird with very large values)
Added config setting for max number of rooms in a dungeon
Added config setting for min and max number of chests per dungeon room
Added config setting for the chance of extra dungeon 'doors' between rooms that were created earlier in the generation, these are not needed for a fully connected dungeon and are good for making the dungeon harder to navigate
V4.0:
Added metrics for mcstats.org
Toggle-able option to control placing grass on taiga islands (default: off)
Toggle-able nether portal generation (default: on)
Toggle-able end portal generation (default: on)
Toggle-able zombie pigman spawners (default: on)
Toggle-able obsidian pillars (default: on)
Naturally spawning villages using schematics that you provide
V3.2:
Improved island underbellies
Improved lake islands
Lake islands are now a lot bigger and deeper
Added lapis ore
V3.1:
Ores no longer generate in sand (custom ores still can)
Desert islands are now mostly sandstone instead of mostly sand
Fixed nether ores being placed mid-air at lake islands
V3.0:
Added custom ore creation (will explain fully on this page)
Added nether quartz and glowstone to the list of removable blocks
Added glowstone ore veins to nether islands
Only nether quartz and glowstone veins will be on nether islands
Added config setting for glowstone vein rarity
No ores spawn on ender islands (unless custom ones added for it)
Nether quartz and glowstone veins can generate into the air
V2.2:
Cacti no longer spawns next to other blocks or other cacti
Cacti now varies in height
Server OPs are told about a new version when they join the server
Server OPs do not get told about a new version in an update check, unless it's different to the last one (console still gets told)
Trees spawn inside other trees a lot less now (still slightly common with redwood)
Increased tree coverage on islands that have trees, to balance tree checks
Valid spawn islands now check the island has at least 1 tree, instead of just being a certain type
V2.1:
Fixed biome setter to set the biome if no parent worldgen is set
Pigman spawners on nether islands now spawn when a player is within 64 blocks
Spawners in dungeons now spawn when a player is within 26 blocks
There should no longer be warnings in the console about spawners when an island generates over another island
Tiny performance increase involving spawners
Gravel no longer replaces bottom blocks on islands, to prevent lag if this happens on desert islands and the gravel falls
V2.0:
You can now set a 'parent' world generator, which the islands will add on to (will default to none if it can't be found)
Grass/Flowers/Mushrooms are now removed if the block they were on is also removed (not 100% tested)
V1.8.1.1:
Added tall grass and flowers to the list of erasable blocks (things like dungeons hated them)
Rounded island spawn chances to 2 decimals
Update checker will no longer do an on load update check if the delay is set to 0 or less (got told off for having it forced :P)
V1.8.1:
Added tall grass and flowers
Added config for how much tall grass spawns, per grass block (default 0.4)
Added config for how much tall grass to replace with flowers (default 0.15)
V1.8:
Added lake islands, comes with sand edges and is mostly water, there is normally clay and sugar cane on the island
Changed dungeon loot, replaced dirt with pumpkin/melon seeds and sugar cane
Added config values to change the chance of lake islands, and the chance of clay and sugar cane on these islands
Dungeons will no longer spawn on ender islands, never seen them on one because they're rare, but I imagine it would look odd
V1.7.1:
Removed a 5-second delay on plugin start-up if routine checks were disabled with the timer set to 0
V1.7:
Added config options to change the chances of each island type
The spawn will be set to be on an island with trees if the current spawn is invalid
Added a command (/islegen) to check on the plugin and the various config settings, available to all users, and with some sub-commands
The plugin now checks for updates when reloading and every 15 minutes after that (by default), notifying admins if any are found, and shortening the link with bit.ly so you can click it in the MC chat without losing half the link
V1.6:
Added ender island, with obsidian towers and end portals
Added config option to change how many caves are generated (default 1.0)
Fixed a crash when islands generate below y=0 or above world height
Changes to island generation code to make them more interesting
Added quartz ore to nether islands
Dungeons now remove sandstone when being placed
V1.5:
Changes to loot in dungeon chests
Added config value to set the per-island chance for dungeons on islands that allow them (default 0.02)
Dungeon rooms are now always connected to each other to make them more spacious and annoying
V1.4:
Added water patches to the surface of swamps
Reduced spacing between islands
Island spacing can now be set in the config (V1.0-V1.2 used 6, V1.3 used 10, default is 8)
Island starting height can now be set in the config (default is 150)
Island ore rarity, water/lava pool rarity and gravel patch rarity can now be set in the config (1.0 is normal, 2.0 is double, 0.5 is half, etc.)
V1.3:
Added dungeon complexes
Beaches no longer generate on some biomes, as they looked weird
Increased spacing between islands, as they would often overlap (avoid using V1.3 with worlds made using older version)
V1.2:
Caves are now generated in islands, larger islands will contain more caves.
Gravel 'blobs' and water/lava pools no longer get half cut-off by the generation code going over it.
V1.1:
Mushroom 'trees' are now made with my own code, so they don't get cut-off.
Ores are now placed into islands in veins of varying sizes, which was intended in the first place.
V1.0:
Initial Release


Some screenshots I took of a world it generated:
Image 1
Image 2
Image 3
Image 4
Image 5
Image 6

Comments

Posts Quoted:
Reply
Clear All Quotes

About This Project

  • Project ID
    63030
  • Created
    Aug 3, 2013
  • Last Released File
    Apr 11, 2015
  • Total Downloads
    46,190
  • License

Categories

Members