forked from MineClone5/MineClone5
Add Breaking Changes: gamemode changes fly and noclip; chunksize set to 8
This commit is contained in:
parent
e155db8f9e
commit
ae63e32048
|
@ -36,6 +36,10 @@ mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_de
|
||||||
# Probably values >10 won't work because of numerous overridings. Type: int.
|
# Probably values >10 won't work because of numerous overridings. Type: int.
|
||||||
max_block_generate_distance = 13
|
max_block_generate_distance = 13
|
||||||
|
|
||||||
|
# Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).
|
||||||
|
# type: int
|
||||||
|
chunksize = 8
|
||||||
|
|
||||||
# MCL2-specific stuff
|
# MCL2-specific stuff
|
||||||
keepInventory = false
|
keepInventory = false
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass")
|
||||||
local c_dirt_with_grass_snow = minetest.get_content_id("mcl_core:dirt_with_grass_snow")
|
local c_dirt_with_grass_snow = minetest.get_content_id("mcl_core:dirt_with_grass_snow")
|
||||||
local c_top_snow = minetest.get_content_id("mcl_core:snow")
|
local c_top_snow = minetest.get_content_id("mcl_core:snow")
|
||||||
local c_snow_block = minetest.get_content_id("mcl_core:snowblock")
|
local c_snow_block = minetest.get_content_id("mcl_core:snowblock")
|
||||||
|
|
|
@ -60,8 +60,6 @@ local flat = mcl_mapgen.flat
|
||||||
|
|
||||||
-- Content IDs
|
-- Content IDs
|
||||||
local c_bedrock = minetest.get_content_id("mcl_core:bedrock")
|
local c_bedrock = minetest.get_content_id("mcl_core:bedrock")
|
||||||
local c_dirt = minetest.get_content_id("mcl_core:dirt")
|
|
||||||
local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass")
|
|
||||||
local c_void = minetest.get_content_id("mcl_core:void")
|
local c_void = minetest.get_content_id("mcl_core:void")
|
||||||
local c_lava = minetest.get_content_id("mcl_core:lava_source")
|
local c_lava = minetest.get_content_id("mcl_core:lava_source")
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ local mcl_mushrooms = minetest.get_modpath("mcl_mushrooms")
|
||||||
local c_water = minetest.get_content_id("mcl_core:water_source")
|
local c_water = minetest.get_content_id("mcl_core:water_source")
|
||||||
local c_stone = minetest.get_content_id("mcl_core:stone")
|
local c_stone = minetest.get_content_id("mcl_core:stone")
|
||||||
local c_sand = minetest.get_content_id("mcl_core:sand")
|
local c_sand = minetest.get_content_id("mcl_core:sand")
|
||||||
|
local c_dirt = minetest.get_content_id("mcl_core:dirt")
|
||||||
|
|
||||||
local c_soul_sand = minetest.get_content_id("mcl_nether:soul_sand")
|
local c_soul_sand = minetest.get_content_id("mcl_nether:soul_sand")
|
||||||
local c_netherrack = minetest.get_content_id("mcl_nether:netherrack")
|
local c_netherrack = minetest.get_content_id("mcl_nether:netherrack")
|
||||||
|
|
|
@ -32,8 +32,17 @@ minetest.is_creative_enabled = function(name)
|
||||||
return core_is_creative_enabled(name)
|
return core_is_creative_enabled(name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local registered_functions_on_gamemode_change = {}
|
||||||
|
|
||||||
local function handle_gamemode_command(player_name, new_gamemode)
|
local function handle_gamemode_command(player_name, new_gamemode)
|
||||||
|
local old_gamemode_id = player_to_gamemode_id[player_name]
|
||||||
|
local old_gamemode = old_gamemode_id and id_to_gamemode[old_gamemode_id]
|
||||||
player_to_gamemode_id[player_name] = gamemode_ids[new_gamemode]
|
player_to_gamemode_id[player_name] = gamemode_ids[new_gamemode]
|
||||||
|
if old_gamemode ~= new_gamemode then
|
||||||
|
for _, function_ref in pairs(registered_functions_on_gamemode_change) do
|
||||||
|
function_ref(player_name, old_gamemode, new_gamemode)
|
||||||
|
end
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -78,3 +87,41 @@ minetest.register_chatcommand("gamemode", {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local action_id_to_index = {}
|
||||||
|
|
||||||
|
function mcl_commands.register_on_gamemode_change(action_id, function_ref)
|
||||||
|
if action_id_to_index[action_id] then
|
||||||
|
minetest.log("warning", "[mcl_command] [gamemode] Duplicate register_on_gamemode_change action_id")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local new_index = #registered_functions_on_gamemode_change + 1
|
||||||
|
registered_functions_on_gamemode_change[new_index] = function_ref
|
||||||
|
action_id_to_index[action_id] = new_index
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_commands.unregister_on_gamemode_change(action_id)
|
||||||
|
local old_index = action_id_to_index[action_id]
|
||||||
|
if not old_index then
|
||||||
|
minetest.log("warning", "[mcl_command] [gamemode] Can't unregister not registered action_id in unregister_on_gamemode_change")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
table.remove(registered_functions_on_gamemode_change, old_index)
|
||||||
|
action_to_id[action_id] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
mcl_commands.register_on_gamemode_change("check_fly_and_noclip", function(player_name, old_gamemode, new_gamemode)
|
||||||
|
if new_gamemode == "creative" then
|
||||||
|
local privs = minetest.get_player_privs(player_name)
|
||||||
|
if not privs then return end
|
||||||
|
privs.fly = true
|
||||||
|
privs.noclip = true
|
||||||
|
minetest.set_player_privs(player_name, privs)
|
||||||
|
elseif new_gamemode == "survival" then
|
||||||
|
local privs = minetest.get_player_privs(player_name)
|
||||||
|
if not privs then return end
|
||||||
|
privs.fly = nil
|
||||||
|
privs.noclip = nil
|
||||||
|
minetest.set_player_privs(player_name, privs)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
mcl_commands = {}
|
||||||
|
|
||||||
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
|
||||||
dofile(modpath.."/gamemode.lua")
|
dofile(modpath.."/gamemode.lua")
|
||||||
|
|
Loading…
Reference in New Issue