11-22-2015, 09:57 AM
Yes, this is one of the bugs I'm working on. Unfortunately it involves a lot of work, due to complexities at the hart of the server.
|
Question about multi-worlds
|
|
11-22-2015, 09:57 AM
Yes, this is one of the bugs I'm working on. Unfortunately it involves a lot of work, due to complexities at the hart of the server.
11-22-2015, 08:14 PM
(This post was last modified: 11-22-2015, 08:15 PM by LogicParrot.)
How stable is it to have multiple worlds at the moment?
@DrMasik could you provide a link to your problematic plugin? (11-22-2015, 08:14 PM)Safwat Wrote: How stable is it to have multiple worlds at the moment? 10-20 minutes and i'm post the code. (11-22-2015, 08:14 PM)Safwat Wrote: How stable is it to have multiple worlds at the moment? Schema ( Player login -> Teleport to wrap world ->Teleport to selected world) Move player to main world
function teleport_to_wrap_world(a_player)
local func_name = "teleport_to_wrap_world()";
-- Get spawn world
local obj_world = cRoot:Get():GetWorld(g_spawn_world);
-- Get free SIZO coordinates
local SpawnX = 14;
local SpawnZ = 4;
-- Mark SIZO as beasy
-- Calculate Y
-- local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
-- Run function after chunks loaded
local OnAllChunksAvailable = function()
console_log(func_name .." -> chunks redy for player ID ".. a_player:GetUniqueID(), 1);
-- Move to spawn world
a_player:MoveToWorld(obj_world);
-- Calculate Y
local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
if ret1 then
console_log(func_name .." -> SpawnY detected", 1);
else
console_log(func_name .." -> SpawnY NOT detected", 1);
end
console_log(func_name .." -> SpawnY =".. SpawnY, 1);
-- Move to SIZO
-- a_player:TeleportToCoords(SpawnX, SpawnY, SpawnZ);
-- Set clear player inventory
-- a_player:GetInventory():Clear();
-- Set game mode for the plater
-- a_player:SetGameMode(0);
end
-- Prepare chunks for teleportation
console_log(func_name .." -> prepare chunks", 1);
obj_world:ChunkStay({{SpawnX/16, SpawnZ/16}}, OnChunkAvailable, OnAllChunksAvailable)
return 0;
end
Next function called to teleport into some of worlds (survival1):
function teleport_to_survival1(a_player)
local func_name = "teleport_to_survival1()";
if not a_player then
console_log(func_name .." -> a_player is nil", 2);
return (-1);
end
local world_name = "survival1";
local obj_world = cRoot:Get():GetWorld(world_name);
if not obj_world then
console_log(func_name .." -> do not find world ".. world_name, 2);
return (-1);
end
-- Get player respawn point into current world
local SpawnX = 1024;
local SpawnZ = 1024;
-- Get world default spawn points
local WSpawnX = obj_world:GetSpawnX();
local WSpawnZ = obj_world:GetSpawnZ();
-- Save player ID
local player_id = a_player:GetUniqueID();
local player = g_players[player_id];
-- Run function after chunks loaded
local OnAllChunksAvailable = function()
console_log(func_name .." -> chunks redy for player ID ".. a_player:GetUniqueID(), 1);
local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
local ret2, WSpawnY = obj_world:TryGetHeight(WSpawnX, WSpawnZ);
-- Move to spawn world
a_player:MoveToWorld(obj_world);
-- Teleport to coordinates
a_player:TeleportToCoords(SpawnX, SpawnY, SpawnZ);
-- Load player inventory
player:LoadInventory(a_player);
-- Load player experience
player:LoadExperience(a_player);
-- Set game mode for the plater
a_player:SetGameMode(0);
end
-- Prepare chunks for teleportation
console_log(func_name .." -> prepare chunks", 1);
obj_world:ChunkStay({{WSpawnX/16, WSpawnZ/16}, {SpawnX/16, SpawnZ/16}}, OnChunkAvailable, OnAllChunksAvailable)
return 0;
end
11-24-2015, 04:59 PM
(This post was last modified: 11-24-2015, 05:14 PM by LogicParrot.)
The book has basic multi-world documentation now. I'd like to improve it further. Here are several more questions.
Quote:You'll have to create a plugin to do that. You can only tell what type of portal (nether, end) should go to what world. In this post, Tonibm19 mentioned Essentials. So, can Essentials do that already? Related plugin ftr: https://forum.cuberite.org/showthread.ph...BungeeCord @DrMasik Thanks for the code. I'll have a look when I learn the API.
11-24-2015, 05:15 PM
Edited the last post and added more questions.
(11-24-2015, 05:15 PM)Safwat Wrote: . Do not confuse "Multi world" and "Multi server". The "Multi server" - it is Bungeecord. It is multiply instances of running servers. Different IPs or/and ports. The "Multi world" - it is one instance of the running server to provide multiply independent worlds. (11-24-2015, 04:59 PM)Safwat Wrote: .. Bungeecord servers can not share inventory. In my plugin player inventory saved for the world. Updated when player disconnected. Clean and load when player connect to the world. It is simple but block to transfer inventory from creative to survival
|
|
« Next Oldest | Next Newest »
|