Grass spread to dirt_with_snow, fix playereffects, remove playerphysics

This commit is contained in:
MoNTE48 2019-07-24 18:55:24 +02:00 committed by MoNTE48
parent 1a7786260e
commit 97b4906965
5 changed files with 18 additions and 58 deletions

View File

@ -418,12 +418,15 @@ end
minetest.register_abm({ minetest.register_abm({
label = "Grass spread", label = "Grass spread",
nodenames = {"default:dirt"}, nodenames = {
"default:dirt",
"default:dirt_with_snow"
},
neighbors = { neighbors = {
"air", "air",
"group:grass", "group:grass",
"group:dry_grass", "group:dry_grass",
"default:snow", "default:snow"
}, },
interval = 10, interval = 10,
chance = 25, chance = 25,

View File

@ -666,6 +666,7 @@ minetest.register_node("default:birch_leaves", {
tiles = {"default_birch_leaves.png"}, tiles = {"default_birch_leaves.png"},
waving = 1, waving = 1,
paramtype = "light", paramtype = "light",
walkable = false,
is_ground_content = false, is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
drop = { drop = {

View File

@ -9,7 +9,7 @@ local ppa = minetest.get_modpath("playerphysics")
pep = {} pep = {}
-- Whether to use save (true, false or minetest.is_singleplayer()) -- Whether to use mole (true, false or minetest.is_singleplayer())
pep.mole = minetest.is_singleplayer() pep.mole = minetest.is_singleplayer()
function return_empty_bottle(potiondef, user, itemstack) function return_empty_bottle(potiondef, user, itemstack)

View File

@ -47,8 +47,8 @@ playereffects.autosave_time = 10
--[=[ Load inactive_effects and last_effect_id from playereffects, if this file exists ]=] --[=[ Load inactive_effects and last_effect_id from playereffects, if this file exists ]=]
do if playereffects.save then
if playereffects.save then do
local filepath = minetest.get_worldpath().."/playereffects" local filepath = minetest.get_worldpath().."/playereffects"
local file = io.open(filepath, "r") local file = io.open(filepath, "r")
if file then if file then
@ -415,12 +415,12 @@ minetest.register_on_joinplayer(function(player)
end end
end) end)
-- Autosave into file
if playereffects.use_autosave then if playereffects.use_autosave then
playereffects.autosave_timer = 0
minetest.register_globalstep(function(dtime) minetest.register_globalstep(function(dtime)
playereffects.autosave_timer = playereffects.autosave_timer or 0
playereffects.autosave_timer = playereffects.autosave_timer + dtime playereffects.autosave_timer = playereffects.autosave_timer + dtime
-- Autosave into file
if playereffects.autosave_timer >= playereffects.autosave_time then if playereffects.autosave_timer >= playereffects.autosave_time then
playereffects.autosave_timer = 0 playereffects.autosave_timer = 0
minetest.log("action", "[playereffects] Autosaving mod data to playereffects ...") minetest.log("action", "[playereffects] Autosaving mod data to playereffects ...")
@ -430,21 +430,20 @@ if playereffects.use_autosave then
end end
minetest.register_playerstep(function(dtime, playernames) minetest.register_playerstep(function(dtime, playernames)
-- Update HUDs of all players
for _, name in pairs(playernames) do for _, name in pairs(playernames) do
playereffects.hud_update(name) local player = minetest.get_player_by_name(name)
if player and player:is_player() then
playereffects.hud_update(player)
end
end end
end, minetest.is_singleplayer()) -- Force step in singlplayer mode only end)
--[=[ HUD ]=] --[=[ HUD ]=]
function playereffects.hud_update(player) function playereffects.hud_update(player)
if(playereffects.use_hud == true) then if(playereffects.use_hud == true) then
local now = os.time() local now = os.time()
local player = minetest.get_player_by_name(player) local playername = player:get_player_name()
if not player or not player:is_player() then local hudinfos = playereffects.hudinfos[playername]
return
end
local hudinfos = playereffects.hudinfos[player]
if(hudinfos ~= nil) then if(hudinfos ~= nil) then
for effect_id, hudinfo in pairs(hudinfos) do for effect_id, hudinfo in pairs(hudinfos) do
local effect = playereffects.effects[effect_id] local effect = playereffects.effects[effect_id]

View File

@ -1,43 +0,0 @@
playerphysics = {}
local function calculate_attribute_product(player, attribute)
local a = minetest.deserialize(player:get_attribute("playerphysics:physics"))
local product = 1
if a == nil or a[attribute] == nil then
return product
end
local factors = a[attribute]
if type(factors) == "table" then
for _, factor in pairs(factors) do
product = product * factor
end
end
return product
end
function playerphysics.add_physics_factor(player, attribute, id, value)
local a = minetest.deserialize(player:get_attribute("playerphysics:physics"))
if a == nil then
a = { [attribute] = { [id] = value } }
elseif a[attribute] == nil then
a[attribute] = { [id] = value }
else
a[attribute][id] = value
end
player:set_attribute("playerphysics:physics", minetest.serialize(a))
local raw_value = calculate_attribute_product(player, attribute)
player:set_physics_override({[attribute] = raw_value})
end
function playerphysics.remove_physics_factor(player, attribute, id)
local a = minetest.deserialize(player:get_attribute("playerphysics:physics"))
if a == nil or a[attribute] == nil then
-- Nothing to remove
return
else
a[attribute][id] = nil
end
player:set_attribute("playerphysics:physics", minetest.serialize(a))
local raw_value = calculate_attribute_product(player, attribute)
player:set_physics_override({[attribute] = raw_value})
end