diff --git a/builtin/game/chatcommands.lua b/builtin/game/chatcommands.lua index 96a672e5b..8ad448a01 100644 --- a/builtin/game/chatcommands.lua +++ b/builtin/game/chatcommands.lua @@ -765,6 +765,7 @@ core.register_chatcommand("rollback", { core.register_chatcommand("status", { description = "Print server status", + privs = {server=true}, func = function(name, param) return true, core.get_server_status() end, diff --git a/builtin/game/statbars.lua b/builtin/game/statbars.lua index a2982f6d6..6342727dc 100644 --- a/builtin/game/statbars.lua +++ b/builtin/game/statbars.lua @@ -188,33 +188,33 @@ end) minetest.register_playerstep(function(dtime, playernames) for _, name in pairs(playernames) do local player = minetest.get_player_by_name(name) - local player_name = player:get_player_name() + if player and player:is_player() then + local wielded_item = player:get_wielded_item() + local wielded_item_name = wielded_item:get_name() - local wielded_item = player:get_wielded_item() - local wielded_item_name = wielded_item:get_name() + timer[player] = timer[player] and timer[player] + dtime or 0 + wield[player] = wield[player] or "" - timer[player_name] = timer[player_name] and timer[player_name] + dtime or 0 - wield[player_name] = wield[player_name] or "" + if timer[player] > timeout and player then + hud.change_item(player, "itemname", {text = ""}) + timer[player] = 0 + return + end - if timer[player_name] > timeout and player then - hud.change_item(player, "itemname", {text = ""}) - timer[player_name] = 0 - return - end + if player and wielded_item_name ~= wield[player] then + wield[player] = wielded_item_name + timer[player] = 0 - if player and wielded_item_name ~= wield[player_name] then - wield[player_name] = wielded_item_name - timer[player_name] = 0 + local def = core.registered_items[wielded_item_name] + local meta = wielded_item:get_meta() + local meta_desc = meta:get_string("description") + meta_desc = meta_desc:gsub("\27", ""):gsub("%(c@#%w%w%w%w%w%w%)", "") - local def = core.registered_items[wielded_item_name] - local meta = wielded_item:get_meta() - local meta_desc = meta:get_string("description") - meta_desc = meta_desc:gsub("\27", ""):gsub("%(c@#%w%w%w%w%w%w%)", "") + local description = meta_desc ~= "" and meta_desc or + (def and (def.description:match("(.-)\n") or def.description) or "") - local description = meta_desc ~= "" and meta_desc or - (def and (def.description:match("(.-)\n") or def.description) or "") - - hud.change_item(player, "itemname", {text = description}) + hud.change_item(player, "itemname", {text = description}) + end end end end, minetest.is_singleplayer()) -- Force step in singlplayer mode only diff --git a/games/default/files/carts/cart_entity.lua b/games/default/files/carts/cart_entity.lua index 031dde59b..16df77efc 100644 --- a/games/default/files/carts/cart_entity.lua +++ b/games/default/files/carts/cart_entity.lua @@ -144,12 +144,6 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, self.punched = true end -function carts:on_rail_step(entity, pos, distance) - if minetest.global_exists("mesecon") then - carts:signal_detector_rail(pos) - end -end - -- sound refresh interval = 1.0sec local function rail_sound(self, dtime) if not self.sound_ttl then @@ -434,6 +428,12 @@ local function rail_on_step(self, dtime) end end +function carts:on_rail_step(entity, pos, distance) + if minetest.global_exists("mesecon") then + carts:signal_detector_rail(pos) + end +end + function cart_entity:on_step(dtime) rail_on_step(self, dtime) rail_sound(self, dtime) @@ -444,7 +444,6 @@ minetest.register_entity("carts:cart", cart_entity) minetest.register_craftitem("carts:cart", { description = "Cart (Sneak+Click to pick up)", inventory_image = "carts_cart_inv.png", - wield_image = "carts_cart_inv.png", stack_max = 1, sounds = default.node_sound_metal_defaults(), on_place = function(itemstack, placer, pointed_thing) diff --git a/games/default/files/default/functions.lua b/games/default/files/default/functions.lua index 6fc28ee98..871ecaf65 100644 --- a/games/default/files/default/functions.lua +++ b/games/default/files/default/functions.lua @@ -569,8 +569,12 @@ local function snowball_impact(thrower, pos, dir, hit_object) end end -function default.snow_shoot_snowball(itemstack, player, pointed_thing) - local obj = minetest.item_throw("default:snow", player, 19, -3, +function default.snow_shoot_snowball(itemstack, thrower, pointed_thing) + local playerpos = thrower:get_pos() + if not minetest.is_valid_pos(playerpos) then + return + end + local obj = minetest.item_throw("default:snow", thrower, 19, -3, snowball_impact) if obj then obj:set_properties({ @@ -578,19 +582,16 @@ function default.snow_shoot_snowball(itemstack, player, pointed_thing) visual_size = {x=1, y=1}, textures = {"default_snowball.png"}, }) + minetest.sound_play("throwing_sound", { + pos = playerpos, + gain = 0.7, + max_hear_distance = 10, + }) if not (creative and creative.is_enabled_for and - creative.is_enabled_for(player)) or + creative.is_enabled_for(thrower)) or not minetest.is_singleplayer() then itemstack:take_item() end - local playerpos = player:get_pos() - if minetest.is_valid_pos(playerpos) then - minetest.sound_play("throwing_sound", { - pos = playerpos, - gain = 0.7, - max_hear_distance = 10, - }) - end end return itemstack end diff --git a/games/default/files/drops/init.lua b/games/default/files/drops/init.lua index 52950abb5..07fdfff59 100644 --- a/games/default/files/drops/init.lua +++ b/games/default/files/drops/init.lua @@ -1,6 +1,5 @@ local age = 0.5 -- How old an item has to be before collecting local radius_magnet = 2 -- Radius of item magnet -local player_collect_height = 1.3 -- Added to their pos y value local function collect_items(player) local pos = player:get_pos() @@ -8,11 +7,12 @@ local function collect_items(player) return end -- Detect - local col_pos = vector.add(pos, {x = 0, y = player_collect_height, z = 0}) + local col_pos = vector.add(pos, {x = 0, y = 1.3, z = 0}) local objects = minetest.get_objects_inside_radius(col_pos, radius_magnet) - for _,object in ipairs(objects) do + for _, object in ipairs(objects) do local entity = object:get_luaentity() if entity and not object:is_player() and + not entity.collectioner and entity.name == "__builtin:item" and entity.age > age then local item = ItemStack(entity.itemstring) local inv = player:get_inventory() @@ -23,15 +23,15 @@ local function collect_items(player) entity.collectioner = true -- Collect if entity.collectioner == true then - minetest.after(0.01, function() + minetest.after(0.05, function() minetest.sound_play("item_drop_pickup", { - pos = pos, + pos = col_pos, max_hear_distance = 10, - gain = 0.25, + gain = 0.2, }) - inv:add_item("main", item) entity.itemstring = "" object:remove() + inv:add_item("main", item) end) end end diff --git a/games/default/files/player/playereffects/init.lua b/games/default/files/player/playereffects/init.lua index 54e2fcabd..42d81ab51 100644 --- a/games/default/files/player/playereffects/init.lua +++ b/games/default/files/player/playereffects/init.lua @@ -430,7 +430,7 @@ end) minetest.register_playerstep(function(dtime, playernames) -- Update HUDs of all players for _, name in pairs(playernames) do - playereffects.hud_update(minetest.get_player_by_name(name)) + playereffects.hud_update(name) end end, minetest.is_singleplayer()) -- Force step in singlplayer mode only @@ -438,8 +438,11 @@ end, minetest.is_singleplayer()) -- Force step in singlplayer mode only function playereffects.hud_update(player) if(playereffects.use_hud == true) then local now = os.time() - local playername = player:get_player_name() - local hudinfos = playereffects.hudinfos[playername] + local player = minetest.get_player_by_name(player) + if not player or not player:is_player() then + return + end + local hudinfos = playereffects.hudinfos[player] if(hudinfos ~= nil) then for effect_id, hudinfo in pairs(hudinfos) do local effect = playereffects.effects[effect_id] diff --git a/games/default/files/wieldview/init.lua b/games/default/files/wieldview/init.lua index 58360fdbc..1415080f0 100644 --- a/games/default/files/wieldview/init.lua +++ b/games/default/files/wieldview/init.lua @@ -1,10 +1,6 @@ +local update_time = 1 local has_armor = minetest.get_modpath("3d_armor") local time = 0 -local update_time = tonumber(minetest.settings:get("wieldview_update_time")) -if not update_time then - update_time = 2 - minetest.settings:set("wieldview_update_time", tostring(update_time)) -end local wield_tiles = {} local wield_cubes = {} diff --git a/games/default/files/workbench/init.lua b/games/default/files/workbench/init.lua index 91ff741b2..670188dc6 100644 --- a/games/default/files/workbench/init.lua +++ b/games/default/files/workbench/init.lua @@ -7,7 +7,6 @@ local nodes = {} for node, def in pairs(minetest.registered_nodes) do if (def.drawtype == "normal" or def.drawtype:sub(1,5) == "glass" or def.drawtype:sub(1,8) == "allfaces") and (def.tiles and type(def.tiles[1]) == "string") and - not def.on_construct and not def.on_rightclick and not def.on_blast and not def.allow_metadata_inventory_take and @@ -335,34 +334,36 @@ for _, d in pairs(workbench.defs) do end -- Aliases. A lot of aliases... - local stairs_aliases = { {"corner", "outerstair"}, {"invcorner", "outerstair"}, {"stair_outer", "innerstair"}, - {"stair_inner", "innerstair"} + {"stair_inner", "innerstair"}, + {"nanoslab", "microslab"} } for i=1, #nodes do local node = nodes[i] for _, d in pairs(workbench.defs) do minetest.register_alias("stairs:"..d[1].."_"..node:match(":(.*)"), "stairs:"..d[1].."_"..node:gsub(":", "_")) - minetest.register_alias(node.."_"..d[1], "stairs:"..d[1].."_"..node:gsub(":", "_")) + minetest.register_alias(node.."_"..d[1], "stairs:"..d[1].."_"..node:gsub(":", "_")) end for _, e in pairs(stairs_aliases) do minetest.register_alias("stairs:"..e[1].."_"..node:match(":(.*)"), "stairs:"..e[2].."_"..node:gsub(":", "_")) minetest.register_alias("stairs:"..e[1].."_"..node:gsub(":", "_"), "stairs:"..e[2].."_"..node:gsub(":", "_")) + minetest.register_alias(node.."_"..e[1], "stairs:"..e[2].."_"..node:gsub(":", "_")) end end for _, d in pairs(workbench.defs) do - minetest.register_alias("stairs:"..d[1].."_coal", "stairs:"..d[1].."_default_coalblock") + minetest.register_alias("stairs:"..d[1].."_coal", "stairs:"..d[1].."_default_coalblock") + minetest.register_alias("stairs:"..d[1].."_straw", "stairs:"..d[1].."_farming_straw") end for _, e in pairs(stairs_aliases) do - minetest.register_alias("stairs:"..e[1].."_coal", "stairs:"..e[2].."_default_coalblock") - + minetest.register_alias("stairs:"..e[1].."_coal", "stairs:"..e[2].."_default_coalblock") + minetest.register_alias("stairs:"..e[1].."_straw", "stairs:"..e[2].."_farming_straw") end minetest.register_alias("stairs:stair_steel", "stairs:stair_default_steelblock") diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index cf87719e7..88ff6fa49 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -326,7 +326,7 @@ void ScriptApiBase::objectrefGetOrCreate(lua_State *L, } else { push_objectRef(L, cobj->getId()); if (cobj->isGone()) - warningstream << "ScriptApiBase::objectrefGetOrCreate(): " + actionstream << "ScriptApiBase::objectrefGetOrCreate(): " << "Pushing ObjectRef to removed/deactivated object" << ", this is probably a bug." << std::endl; }