VoidGenerator (obsolete)
#1
OBSOLETE! The User's Manual contains information about creating an empty world: https://book.cuberite.org/#3.7

Ever wanted to generate a completely empty world?  No?  Well, I don't care!  I made a void generator anyways!

https://github.com/DevToaster/VoidGenerator

How to use:
In the plugin folder, create a file named "worlds.ini" (Also generates on first use)
Create a line called "[Worlds]" (no quotes) if it does not exist.
under [Worlds], type "world1=InsertNameOfWorldHere".  The next world will be put under "world2", and so on.

Example:

[Worlds]
world1=VoidWorld
world2=FloatingBuildings
world3=MoreStuff
Reply
Thanks given by:
#2
(04-11-2015, 10:56 AM)DiamondToaster Wrote: Ever wanted to generate a completely empty world? No? Well, I don't care! I made a void generator anyways!

https://github.com/DevToaster/VoidGenerator

How to use:
In the plugin folder, create a file named "worlds.ini" (Also generates on first use)
Create a line called "[Worlds]" (no quotes) if it does not exist.
under [Worlds], type "world1=InsertNameOfWorldHere". The next world will be put under "world2", and so on.

Example:

[Worlds]
world1=VoidWorld
world2=FloatingBuildings
world3=MoreStuff

Does it have a floating starting block?
Reply
Thanks given by:
#3
Nope. You gotta use WorldEdit and the command "/up 0" to create a block where you're standing to start building.
Reply
Thanks given by:
#4
That should be pretty easy to add though. Something like this should work:
function OnChunkGenerating(World, ChunkX, ChunkZ, ChunkDesc)
	-- Other code
	
	local ChunkSpawnX, ChunkSpawnZ = math.floor(World:GetSpawnX() / 16), math.floor(World:GetSpawnZ())
	if ((ChunkSpawnX == ChunkX) and (ChunkSpawnZ == ChunkZ)) then
		FillRelCuboid(0, 15, 8, 8, 0, 15, E_BLOCK_STONE, 0)
	end
end

This will create a floor of stone blocks on the spawn chunks at layer 8. Smile
Reply
Thanks given by:
#5
Unfortunately, when you spawn/do a /portal into the void world, there's no guarantee that you'll end up at spawn and may just fall. I'm not really sure on what to do with that. :/
Reply
Thanks given by:
#6
(09-24-2015, 05:54 AM)DiamondToaster Wrote: Unfortunately, when you spawn/do a /portal into the void world, there's no guarantee that you'll end up at spawn and may just fall. I'm not really sure on what to do with that. :/

I guess that the chunk is not loaded. Try cWorld:ChunkStay (look in the api-docs), with that the chunk will be loaded. Had that problem in my skyblock plugin and with that I was able to fix that.
Reply
Thanks given by:
#7
The plugin could check (I think OnPlayerSpawn is called each time the player changes worlds) and if the player is above in a block a column that is entirely empty, it could teleport them to spawn. This way players won't end up dying, yet they can portal into the world after they have built something there.
Reply
Thanks given by:
#8
Before player spawn you must:
1. Get SpawnX
2. Get SpawnZ
3. Load chunk.
4. Detect (get) free height (SpawnY) bloks for spawn player.
5. Teleport player to SpawnX, SpawnY, SpawnZ.
Sample code:

-- ...
    -- Get world default spawn point
    local world = cRoot:Get():GetWorld("world2");
    local SpawnX = world:GetSpawnX();
    local SpawnZ = world:GetSpawnZ();

    -- Get player last bed position
    local PlayerX = (-8);
    local PlayerZ = 3;

    local OnAllChunksAvailable = function()
      console_log(func_name .." -> chunks redy for player ID ".. a_player:GetUniqueID(), 1);
      a_player:MoveToWorld("world2");
      local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
      a_player:TeleportToCoords(SpawnX, SpawnY , SpawnZ);
      a_player:SetGameMode(1);
    end

    world:ChunkStay({{PlayerX, PlayerZ}, {SpawnX, SpawnZ}}, OnChunkAvailable, OnAllChunksAvailable);

-- ...
Reply
Thanks given by:




Users browsing this thread: 1 Guest(s)