world generator - Printable Version +- Cuberite Forum (https://forum.cuberite.org) +-- Forum: Plugins (https://forum.cuberite.org/forum-1.html) +--- Forum: Plugin Discussion (https://forum.cuberite.org/forum-8.html) +--- Thread: world generator (/thread-1468.html) Pages:
1
2
|
world generator - Seadragon91 - 05-04-2014 Hello! I have looked and played around with the chunk generation. For first I tried to generate a air world with that code. Code: -- Add hook for chunk generation in function Initialize I tried to use that and get this error in the console "[14:02:13] cChunk::UnboundedRelGetBlock: requesting a block with a_RelY out of range: -1" Is a custom world generator supported or not? RE: world generator - xoft - 05-04-2014 Hello, welcome to the forum. Please next time paste code in [ shcode=lua ] [ /shcode ] tags - that will syntax-highlight the code and will expand the box, so that no scrollbar is needed. As for the error you're seeing, it looks as a bug in the server. Are you using a debug build or a release build of MCServer? (Debug build is something you build yourself, includes more checks). I think the debug build should terminate on encountering this error; if you run the server under a debugger, you will be able to see where exactly it happened, and what the callstack was. This would help us hunt the bug down. Can you try changing your FillBlocks() function to temporarily add a layer of solid blocks somewhere? Like this: function FillBlocks(ChunkDesc) ChunkDesc:FillBlocks(E_BLOCK_AIR, 0) ChunkDesc:FillRelCuboid(0, 15, 60, 60, 0, 15, E_BLOCK_STONE, 0) -- Fill 1 layer with stone, at height 60 ChunkDesc:SetUseDefaultBiomes(false) ChunkDesc:SetUseDefaultHeight(false) ChunkDesc:SetUseDefaultComposition(false) ChunkDesc:SetUseDefaultFinish(false) end As for the DefaultStructures, there has been a change recently in the generator, it no longer distinguishes between a structure and a finisher, so the function is "deprecated" - it is still in the API but does nothing except for a log message. You don't need to use it at all. Custom generators are completely supported, as a proof you can see the Gallery server, it uses a custom generator to fill the galleries with the templates for the areas. RE: world generator - Seadragon91 - 05-04-2014 I cloned the git repository. Okay tested your code and that crashed the server with this error: "Unhandled exception at 0x013dd226 in MCServer.exe: 0xC0000005: Access violation reading at position 0x00000033 ." I wasn't able to start the project in debug mode that crashes at startup with error "Assertion failed: 0, file ChunkStay.cpp, line 34" Edit: Tested the build from the website, crashes after teleporting to the world with an access violation. RE: world generator - xoft - 05-05-2014 I'm afraid I can't replicate this. I tried your initial example (had to modify it slightly so that the plugin loads - added the Initialize function and moved the hook registration to the bottom) and it works okay for me. If it crashes for you in the executable from the nightbuild website, could you help me out? There's a guide on how to report crashes, https://forum.cuberite.org/showthread.php?tid=400 , follow that to get the crashdump. Alternatively, if it crashes in your MSVC debugger, post the contents of the Call Stack window when it breaks into the debugger (you can Shift-select all the rows and copy and paste them). RE: world generator - Seadragon91 - 05-05-2014 Okay, tested that now under linux. Cloned source with git from github and compiled it without any problems. Created a release version of the server. Added my plugin, started the server and joined the world. Then the console get spammed with this error. Code: [20:51:23] UnboundedRelGetBlock: requesting a block with a_RelY out of range: -1 If I try to start the debug version of the server, it stops with that error. Code: [7fe29337d740|20:58:34] Assertion failed: m_World == NULL, file /home/lukas/cpp/MCServer/src/LightingThread.cpp, line 93 Here's the source of the plugin, do I make a very big mistake? PLUGIN = nil function Initialize(Plugin) Plugin:SetName("TestPlugin") Plugin:SetVersion(1) PLUGIN = Plugin LOG("Initialised " .. Plugin:GetName() .. " v." .. Plugin:GetVersion()) -- create the world CreateWorld() -- Hooks cPluginManager:AddHook(cPluginManager.HOOK_CHUNK_GENERATING, AirGenerator) -- Command Bindings cPluginManager.BindCommand("/checkworld", "testplugin.checkworld", CheckWorld, " - Check if world exists") cPluginManager.BindCommand("/teleportto", "testplugin.teleportto", TeleportTo, " - Teleport to world") return true end function OnDisable() LOG(PLUGIN:GetName() .. " is shutting down...") end function CheckWorld(Split, Player) if (#Split ~=2) then Player:SendMessage("Usage: /checkworld <worldname>") return true end if (cRoot:Get():GetWorld(Split[2]) == Nil) then Player:SendMessage("No world exists with that name.") return true end Player:SendMessage("The world exists.") return true end function TeleportTo(Split, Player) if (#Split ~=2) then Player:SendMessage("Usage: /teleportto <worldname>") return true end if (cRoot:Get():GetWorld(Split[2]) == Nil) then Player:SendMessage("No world exists with that name.") return true end Player:MoveToWorld(Split[2]) Player:TeleportToCoords(0, 100, 0) Player:SendMessage("Teleported you...") return true end function CreateWorld() cRoot:Get():CreateAndInitializeWorld("airworld") end function AirGenerator(a_World, a_ChunkX, a_ChunkZ, a_ChunkDesc) if (a_World:GetName() == "airworld") then FillBlocks(a_ChunkDesc) end end function FillBlocks(a_ChunkDesc) a_ChunkDesc:FillBlocks(E_BLOCK_AIR, 0) a_ChunkDesc:FillRelCuboid(0, 15, 60, 60, 0, 15, E_BLOCK_STONE, 0) -- Fill 1 layer with stone, at height 60 a_ChunkDesc:SetUseDefaultBiomes(false) a_ChunkDesc:SetUseDefaultHeight(false) a_ChunkDesc:SetUseDefaultComposition(false) a_ChunkDesc:SetUseDefaultFinish(false) end RE: world generator - bearbin - 05-05-2014 Looks like the lighting generator is failing? Maybe it needs a block in the chunk to work? RE: world generator - NiLSPACE - 05-05-2014 No this is probably because the height is not set properly. RE: world generator - xoft - 05-05-2014 I *think* it might be because your plugin is creating and initializing a world in its Initialize() function, that's too early. I'll test later today and get back with the results. RE: world generator - Seadragon91 - 05-05-2014 I commented out the hook for chunk generating and tried only to generate a new world. After joining server crashes with that error Code: [07:18:09] D: | MCServer has encountered an error and needs to close Without my plugin the server starts fine in debug mode. Anyone have an idea, how I can provide more informations? Edit: Didn't see your post will try to create a world trough a command. RE: world generator - tigerw - 05-05-2014 This is not related at all, but... I think those Windows 8-esque error messages were a huge success! |