Standardize database naming across mods along with numerous minor fixes

This commit is contained in:
KaadmY 2017-05-11 21:24:54 -07:00
parent 41edd82122
commit 3f26b5431d
7 changed files with 92 additions and 152 deletions

View File

@ -9,7 +9,8 @@ achievements.achievements = {}
achievements.registered_achievements = {}
achievements.registered_achievements_list = {}
local achievements_file = minetest.get_worldpath() .. "/achievements"
local achievements_file = minetest.get_worldpath() .. "/achievements.dat"
local saving = false
function achievements.register_achievement(name, def)
local rd = {
@ -30,17 +31,32 @@ local function save_achievements()
f:write(minetest.serialize(achievements.achievements))
print("Save: " .. dump(achievements.achievements))
saving = false
io.close(f)
end
local function delayed_save()
if not saving then
saving = true
minetest.after(60, save_achievements)
end
end
local function load_achievements()
local f = io.open(achievements_file, "r")
if f then
achievements.achievements = minetest.deserialize(f:read("*all"))
print("Load: " .. dump(achievements.achievements))
io.close(f)
else
print("Firstload...")
save_achievements()
end
end
@ -76,7 +92,7 @@ function achievements.trigger_achievement(player, aname, times)
end)
end
save_achievements()
delayed_save()
end
-- Load achievements table
@ -85,6 +101,12 @@ local function on_load()
load_achievements()
end
-- Save achievements table
local function on_shutdown()
save_achievements()
end
-- New player
local function on_newplayer(player)
@ -146,6 +168,8 @@ end
minetest.after(0, on_load)
minetest.register_on_shutdown(on_shutdown)
minetest.register_on_newplayer(on_newplayer)
minetest.register_on_craft(on_craft)

View File

@ -127,7 +127,7 @@ minetest.register_craft(
bed_player_spawns = {}
local file = io.open(minetest.get_worldpath().."/bed.txt", "r")
local file = io.open(minetest.get_worldpath().."/bed.dat", "r")
if file then
bed_player_spawns = minetest.deserialize(file:read("*all"))
file:close()
@ -167,7 +167,7 @@ minetest.register_globalstep(
bed_player_spawns[player:get_player_name()] = player:getpos()
end
local file = io.open(minetest.get_worldpath().."/bed.txt", "w")
local file = io.open(minetest.get_worldpath().."/bed.dat", "w")
file:write(minetest.serialize(bed_player_spawns))
file:close()
end

View File

@ -16,7 +16,7 @@ local player_step = {}
local player_health_step = {}
local player_bar = {}
local base_interval = tonumber(minetest.setting_get("hunger_step")) or 3.0 -- seconds per hunger update, 2.0 is slightly fast
local file = minetest.get_worldpath() .. "/hunger"
local file = minetest.get_worldpath() .. "/hunger.dat"
function hunger.save_hunger()
local output = io.open(file, "w")
@ -44,7 +44,7 @@ local function load_hunger()
hunger.hunger[name] = hnger
hunger.saturation[name] = sat
-- minetest.log("action", name.." has "..hnger.." hunger and is saturated to "..sat.."%")
-- minetest.log("action", name.." has "..hnger.." hunger and is saturated to "..sat.."%")
until input:read(0) == nil
io.close(input)
else
@ -69,7 +69,7 @@ function hunger.update_bar(player)
dir = 0,
size = {x=16, y=16},
offset = {x=64, y=-(48+24+16)},
})
})
end
end
@ -83,7 +83,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
physics = {
speed = 0.6,
}
})
})
-- Prevent players from starving while afk (<--joke)
minetest.register_on_dignode(
@ -91,14 +91,14 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
if not player then return end
local name = player:get_player_name()
hunger.active[name] = hunger.active[name]+ 2
end)
end)
minetest.register_on_placenode(
function(pos, node, player)
if not player then return end
local name = player:get_player_name()
hunger.active[name] = hunger.active[name]+ 2
end)
end)
minetest.register_on_joinplayer(
function(player)
@ -113,16 +113,16 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
dir = 0,
size = {x=16, y=16},
offset = {x=64, y=-(48+24+16)},
})
})
hunger.update_bar(player)
end)
end)
minetest.register_on_leaveplayer(
function(player)
local name = player:get_player_name()
player_bar[name] = nil
end)
end)
minetest.register_on_respawnplayer(
function(player)
@ -130,7 +130,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
hunger.hunger[name] = 20
hunger.update_bar(player)
hunger.save_hunger()
end)
end)
minetest.register_on_item_eat(
function(hpdata, replace_with_item, itemstack, player, pointed_thing)
@ -139,7 +139,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
local hp_change = 0
local saturation = 2
if type(hpdata) == "number" then
hp_change = hpdata
else
@ -178,7 +178,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
minsize = 0.5,
maxsize = 2,
texture = "magicpuff.png"
})
})
minetest.after(0.15, function() minetest.delete_particlespawner(particlespawners[name]) end)
@ -190,7 +190,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
itemstack:take_item(1)
return itemstack
end)
end)
-- Main function
local timer = 0
@ -221,7 +221,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
hunger.moving[name] = moving
end
timer = timer + dtime
if timer < base_interval then return end
@ -252,9 +252,9 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
if hunger.hunger[name] <= 0 and hp >= 0 then
player:set_hp(hp - 1)
hunger.hunger[name] = 0
local pos_sound = player:getpos()
minetest.chat_send_player(name, "You are hungry.")
minetest.chat_send_player(name, minetest.colorize("#f00", "You are hungry."))
end
end
end
@ -272,7 +272,7 @@ if minetest.setting_getbool("enable_damage") and minetest.setting_getbool("hunge
end
hunger.save_hunger()
end)
end)
else
minetest.register_on_item_eat(
function(hpdata, replace_with_item, itemstack, player, pointed_thing)
@ -283,5 +283,5 @@ else
itemstack:take_item(1)
return itemstack
end)
end
end)
end

View File

@ -10,7 +10,7 @@ player_effects.registered_effects = {}
local update_time = 1 -- update every second
local timer = 10
local effects_file = minetest.get_worldpath() .. "/player_effects"
local effects_file = minetest.get_worldpath() .. "/player_effects.dat"
local function save_effects()
local f = io.open(effects_file, "w")
@ -45,7 +45,7 @@ end
function player_effects.get_registered_effect(ename)
local e = player_effects.registered_effects[ename]
if not e then
default.log("[mod:player_effects] Cannot find registered player effect " .. ename, "error")
@ -267,4 +267,4 @@ minetest.register_chatcommand(
end
})
default.log("mod:player_effects", "loaded")
default.log("mod:player_effects", "loaded")

View File

@ -15,55 +15,55 @@ minetest.register_chatcommand(
description = "Send somebody a private message",
privs = {shout=true},
func = function(name, param)
local sendto, message = param:match("^(%S+)%s(.+)$")
local sendto, message = param:match("^(%S+)%s(.+)$")
if not sendto then return false, "Invalid usage, see /help pm." end
if not sendto then return false, "Invalid usage, see /help pm." end
if not minetest.get_player_by_name(sendto) then
if enable_saving then
if messages[sendto] == nil then messages[sendto] = {} end
table.insert(messages[sendto], name .. ": " .. message)
if not minetest.get_player_by_name(sendto) then
if enable_saving then
if messages[sendto] == nil then messages[sendto] = {} end
table.insert(messages[sendto], name .. ": " .. message)
return false, "The player " .. sendto
.. " is not online, saving message instead."
else
return false, "The player " .. sendto
.. " is not online, and PM saving is disabled."
end
end
return false, "The player " .. sendto
.. " is not online, saving message instead."
else
return false, "The player " .. sendto
.. " is not online, and PM saving is disabled."
end
end
minetest.log("action", "PM from " .. name .. " to " .. sendto
.. ": " .. message)
minetest.chat_send_player(sendto, "PM from " .. name .. ": "
.. message)
return true, "PM sent."
end
})
minetest.log("action", "PM from " .. name .. " to " .. sendto
.. ": " .. message)
minetest.chat_send_player(sendto, "PM from " .. name .. ": "
.. message)
return true, "PM sent."
end
})
minetest.register_chatcommand(
"pms",
{
description = "Show saved private messages",
func = function(name, param)
if not enable_saving then return false, "PM saving is disabled." end
if messages[name] == nil then return false, "No saved PMs." end
if not enable_saving then return false, "PM saving is disabled." end
if messages[name] == nil then return false, "No saved PMs." end
minetest.chat_send_player(name, "Saved PMs:")
minetest.chat_send_player(name, "Saved PMs:")
local str = ""
local amt_pms = 0
for _, msg in pairs(messages[name]) do
amt_pms = amt_pms + 1
str = str .. " " .. msg .. "\n"
end
local str = ""
local amt_pms = 0
for _, msg in pairs(messages[name]) do
amt_pms = amt_pms + 1
str = str .. " " .. msg .. "\n"
end
minetest.chat_send_player(name, str)
minetest.chat_send_player(name, str)
messages[name] = nil
messages[name] = nil
return true, amt_pms .. " saved PMs"
end
})
return true, amt_pms .. " saved PMs"
end
})
if enable_saving then
minetest.register_on_joinplayer(
@ -77,7 +77,7 @@ if enable_saving then
minetest.chat_send_player(name, minetest.colorize("#0ff", "You have no saved PMs. Send PMs with the /pm command."))
return true
end
end)
end)
end
default.log("mod:pm", "loaded")

View File

@ -6,7 +6,7 @@ local mp = minetest.get_modpath("village")
village.villages = {}
local village_file = minetest.get_worldpath() .. "/villages"
local village_file = minetest.get_worldpath() .. "/villages.dat"
function village.get_id(name, pos)
return name .. minetest.hash_node_position(pos)

View File

@ -143,6 +143,7 @@ minetest.register_globalstep(
minsize = 3,
maxsize = 4,
collisiondetection = true,
collision_removal = true,
vertical = false,
texture = "weather_snowflake.png",
playername = player:get_player_name()
@ -154,92 +155,7 @@ minetest.register_globalstep(
end
)
minetest.register_abm(
{
nodenames = {"weather:ice"},
interval = 4,
chance = 80,
action = function(pos, node, active_object_count, active_object_count_wider)
if weather.weather ~= "snowstorm" then
minetest.remove_node(pos)
end
end
})
--[[minetest.register_abm(
{
nodenames = {"air"},
interval = 2,
chance = 80,
action = function(pos, node, active_object_count, active_object_count_wider)
if minetest.get_node_light(pos) ~= 15 then return end
local under_nodepos={x=pos.x, y=pos.y-1, z=pos.z}
local under_node=minetest.get_node(under_nodepos)
if under_node.name == "air" then return end
local under_nodedef=minetest.registered_nodes[under_node.name]
if under_node.name == "default:water_source" and weather.weather == "snowstorm" then
minetest.set_node(under_nodepos, {name = "weather:ice"})
else
if under_node.name ~= "weather:snow" then
if weather.weather == "snowstorm" then
if under_node.name ~= "default:heated_dirt_path" then
if under_nodedef.walkable then
minetest.set_node(pos, {name = "weather:snow"})
elseif under_nodedef.drawtype ~= "airlike" and under_nodedef.buildable_to and math.random(0, 20) <= 1 then
minetest.set_node(under_nodepos, {name = "weather:snow"})
end
end
end
else
if weather.weather ~= "snowstorm" then
minetest.remove_node(under_nodepos)
end
end
end
end,
})--]]
minetest.register_node(
"weather:snow",
{
description = "Snow",
tiles ={"weather_snow.png"},
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(1/8), 0.5},
},
groups = {crumbly=3, falling_node=1, snow=1, fall_damage_add_percent=-10},
sounds = default.node_sound_snow_defaults(),
})
minetest.register_node(
"weather:ice",
{
description = "Ice",
drawtype = "glasslike",
tiles ={"weather_ice.png"},
use_texture_alpha = true,
paramtype = "light",
groups = {snappy=3, ice=1, fall_damage_add_percent=10},
sounds = default.node_sound_glass_defaults(),
on_destruct = function(pos)
local function add_water()
minetest.set_node(pos, {name = "default:water_source"})
end
if minetest.find_node_near(pos, 1, {"weather:ice", "default:water_source"}) then
minetest.after(0, add_water)
end
end
})
minetest.register_privilege("weather", "Can use /weather.weather command")
minetest.register_privilege("weather", "Can use /weather command")
minetest.register_chatcommand(
"weather",
@ -248,9 +164,9 @@ minetest.register_chatcommand(
description = "Set the weather to either clear, storm, or snowstorm",
privs = {weather= true},
func = function(name, param)
setweather_type(param)
end
})
setweather_type(param)
end
})
setweather_type("clear")