diff --git a/mods/mobs/api.lua b/mods/mobs/api.lua index 3e6a698..ddcd5ef 100644 --- a/mods/mobs/api.lua +++ b/mods/mobs/api.lua @@ -1389,7 +1389,7 @@ function mobs:register_mob(name, def) local weapon = hitter:get_wielded_item() if weapon:get_definition().tool_capabilities ~= nil then local wear = ( (weapon:get_definition().tool_capabilities.full_punch_interval or 1.4) / 75 ) * 9000 - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(hitter:get_player_name()) then weapon:add_wear(wear) end hitter:set_wielded_item(weapon) @@ -1636,7 +1636,7 @@ function mobs:register_egg(mob, desc, background) ent.owner = placer:get_player_name() ent.tamed = true end - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() end end @@ -1692,7 +1692,7 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, pos = clicker:get_pos(), gain = 0.2, max_hear_distance = 16, pitch=1.25}, true) chance = chance_net - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(name) then tool:add_wear(4000) -- 17 uses end clicker:set_wielded_item(tool) @@ -1701,7 +1701,7 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, pos = clicker:get_pos(), gain = 0.2, max_hear_distance = 16, pitch=1}, true) chance = chance_lasso - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(name) then tool:add_wear(1500) -- 43 uses end clicker:set_wielded_item(tool) @@ -1757,7 +1757,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, effect) if name ~= nil then -- Take item - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(name) then item:take_item() clicker:set_wielded_item(item) diff --git a/mods/mobs/mob_sheep.lua b/mods/mobs/mob_sheep.lua index 255d5d4..86d518e 100644 --- a/mods/mobs/mob_sheep.lua +++ b/mods/mobs/mob_sheep.lua @@ -127,7 +127,7 @@ mobs:register_mob( z = math.random(-1,1) }) end - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(clicker:get_player_name()) then local def = item:get_definition() local cuts = minetest.get_item_group(itemname, "sheep_cuts") if cuts > 0 then diff --git a/mods/parachute/init.lua b/mods/parachute/init.lua index 74d3bf7..a9697b2 100644 --- a/mods/parachute/init.lua +++ b/mods/parachute/init.lua @@ -61,7 +61,7 @@ minetest.register_craftitem( rp_player.player_attached[player:get_player_name()] = true - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(name) then itemstack:take_item() end diff --git a/mods/rp_bed/init.lua b/mods/rp_bed/init.lua index f587099..4c3ab54 100644 --- a/mods/rp_bed/init.lua +++ b/mods/rp_bed/init.lua @@ -330,7 +330,7 @@ minetest.register_node( minetest.set_node(pos, {name = "rp_bed:bed_foot", param2 = dir}) minetest.set_node(botpos, {name = "rp_bed:bed_head", param2 = dir}) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() end return itemstack diff --git a/mods/rp_creative/init.lua b/mods/rp_creative/init.lua index 6608bec..7023823 100644 --- a/mods/rp_creative/init.lua +++ b/mods/rp_creative/init.lua @@ -24,7 +24,7 @@ local function create_creative_inventory(player) local inv = minetest.create_detached_inventory("creative_"..player_name, { allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() - if minetest.settings:get_bool("creative_mode") and to_list ~= "main" then + if minetest.is_creative_enabled(player_name) and to_list ~= "main" then return count else return 0 @@ -34,7 +34,7 @@ local function create_creative_inventory(player) return 0 end, allow_take = function(inv, listname, index, stack, player) - if minetest.settings:get_bool("creative_mode") then + if minetest.is_creative_enabled(player:get_player_name()) then return -1 else return 0 @@ -72,7 +72,7 @@ local trash = minetest.create_detached_inventory("creative!trash", { -- Allow the stack to be placed and remove it in on_put() -- This allows the creative inventory to restore the stack allow_put = function(inv, listname, index, stack, player) - if minetest.settings:get_bool("creative_mode") then + if minetest.is_creative_enabled(player:get_player_name()) then return stack:get_count() else return 0 @@ -123,7 +123,7 @@ local get_page_and_start_i = function(playername) end creative.get_formspec = function(playername) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(playername) then return "" end local player = minetest.get_player_by_name(playername) @@ -137,7 +137,7 @@ end minetest.register_on_joinplayer(function(player) -- If in creative mode, modify player's inventory forms - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then return end init_playerdata(player:get_player_name()) @@ -151,7 +151,7 @@ minetest.register_on_leaveplayer(function(player) end) minetest.register_on_player_receive_fields(function(player, formname, fields) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then return end local playername = player:get_player_name() @@ -195,17 +195,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) --- Dummy implementation --- TODO: Implement per-player creative mode creative.is_enabled_for = function(player) - if minetest.settings:get_bool("creative_mode") then - return true - else - return false - end + return minetest.is_creative_enabled(player:get_player_name()) end -if minetest.settings:get_bool("creative_mode") then +if minetest.is_creative_enabled("") then minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) -- Place infinite nodes, except for shulker boxes local group = minetest.get_item_group(itemstack:get_name(), "shulker_box") diff --git a/mods/rp_default/bucket.lua b/mods/rp_default/bucket.lua index 460eb53..f13a93c 100644 --- a/mods/rp_default/bucket.lua +++ b/mods/rp_default/bucket.lua @@ -39,7 +39,7 @@ for b=1, #water_buckets do end if not above_nodedef.walkable then - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(user:get_player_name()) then if itemstack:get_count() == 1 then itemstack:set_name("rp_default:bucket") elseif inv:room_for_item("main", {name="rp_default:bucket"}) then @@ -84,7 +84,7 @@ minetest.register_craftitem( local nodename=minetest.get_node(pointed_thing.under).name local replace_bucket = function(itemstack, new_bucket) - if minetest.settings:get_bool("creative_mode") then + if minetest.is_creative_enabled(user:get_player_name()) then -- no-op elseif itemstack:get_count() == 1 then itemstack:set_name(new_bucket) diff --git a/mods/rp_default/fertilizer.lua b/mods/rp_default/fertilizer.lua index 10a9b36..bdf870a 100644 --- a/mods/rp_default/fertilizer.lua +++ b/mods/rp_default/fertilizer.lua @@ -133,7 +133,7 @@ minetest.register_craftitem( end end - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(user:get_player_name()) then itemstack:take_item() end diff --git a/mods/rp_default/functions.lua b/mods/rp_default/functions.lua index 04fc0c5..59c89a7 100644 --- a/mods/rp_default/functions.lua +++ b/mods/rp_default/functions.lua @@ -54,7 +54,7 @@ function default.place_sapling(itemstack, placer, pointed_thing) minetest.set_node(pointed_thing.above, {name = itemstack:get_name()}) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() end diff --git a/mods/rp_default/nodes.lua b/mods/rp_default/nodes.lua index 43da1a2..b0993de 100644 --- a/mods/rp_default/nodes.lua +++ b/mods/rp_default/nodes.lua @@ -951,7 +951,7 @@ minetest.register_node( item_drop.drop_item(pos, "rp_default:grass") -- Add wear - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then local def = itemstack:get_definition() itemstack:add_wear(math.ceil(65536 / def.tool_capabilities.groupcaps.snappy.uses)) end diff --git a/mods/rp_default/tools.lua b/mods/rp_default/tools.lua index 49dea7e..539cbc3 100644 --- a/mods/rp_default/tools.lua +++ b/mods/rp_default/tools.lua @@ -37,7 +37,7 @@ local creative_digtable = { } -- Creative mode/hand defs -if minetest.settings:get_bool("creative_mode") == true then +if minetest.is_creative_enabled("") then tool_levels = { wood = creative_digtable, stone = creative_digtable, @@ -878,7 +878,7 @@ minetest.register_tool( minetest.sound_play({name="rp_default_ignite_torch", gain=0.4}, {pos=pos}, true) end - if wear and not minetest.settings:get_bool("creative_mode") then + if wear and not minetest.is_creative_enabled(user:get_player_name()) then itemstack:add_wear(800) end diff --git a/mods/rp_door/init.lua b/mods/rp_door/init.lua index 077178d..47e7a64 100644 --- a/mods/rp_door/init.lua +++ b/mods/rp_door/init.lua @@ -88,7 +88,7 @@ function door.register_door(name, def) minetest.sound_play(def.sounds.place, {pos=pt}, true) end - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() end diff --git a/mods/rp_farming/nodes.lua b/mods/rp_farming/nodes.lua index 7f6b78e..d742a9d 100644 --- a/mods/rp_farming/nodes.lua +++ b/mods/rp_farming/nodes.lua @@ -223,7 +223,7 @@ local trim_cotton = function(pos, node, player, tool) end -- Add wear - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then local def = tool:get_definition() tool:add_wear(math.ceil(65536 / def.tool_capabilities.groupcaps.snappy.uses)) end diff --git a/mods/rp_formspec/init.lua b/mods/rp_formspec/init.lua index ac98b90..6affedd 100644 --- a/mods/rp_formspec/init.lua +++ b/mods/rp_formspec/init.lua @@ -317,7 +317,7 @@ end if minetest.get_modpath("rp_player_skins") ~= nil then form_default_default = form_default_default .. rp_formspec.tab(-0.9, 2.84, "tab_player_skins", "ui_icon_player_skins.png", S("Player Skins")) end -if minetest.get_modpath("rp_creative") ~= nil and minetest.settings:get_bool("creative_mode") then +if minetest.get_modpath("rp_creative") ~= nil and minetest.is_creative_enabled("") then form_default_default = form_default_default .. rp_formspec.tab(-0.9, 3.64, "tab_creative", "ui_icon_creative.png", S("Creative Inventory")) end form_default_default = form_default_default .. "background[0,0;8.5,9;ui_formspec_bg_tall.png]" @@ -355,7 +355,7 @@ function rp_formspec.receive_fields(player, form_name, fields) elseif minetest.get_modpath("rp_player_skins") ~= nil and fields.tab_player_skins then formname = "player_skins:player_skins" form = player_skins.get_formspec(name) - elseif minetest.get_modpath("rp_creative") ~= nil and minetest.settings:get_bool("creative_mode") and fields.tab_creative then + elseif minetest.get_modpath("rp_creative") ~= nil and minetest.is_creative_enabled(name) and fields.tab_creative then formname = "rp_creative:creative" form = creative.get_formspec(name) end @@ -375,7 +375,7 @@ minetest.register_on_joinplayer( function(player) player:set_formspec_prepend(formspec_prepend) local name = player:get_player_name() - if minetest.settings:get_bool("creative_mode") then + if minetest.is_creative_enabled(name) then player:set_inventory_formspec(creative.get_formspec(name)) rp_formspec.current_page[name] = "rp_creative:creative" else diff --git a/mods/rp_hunger/init.lua b/mods/rp_hunger/init.lua index f27440a..a1ac527 100644 --- a/mods/rp_hunger/init.lua +++ b/mods/rp_hunger/init.lua @@ -224,7 +224,7 @@ local function on_item_eat(hpdata, replace_with_item, itemstack, hunger.update_bar(player) delayed_save() - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(name) then itemstack:take_item(1) end @@ -339,7 +339,7 @@ local function fake_on_item_eat(hpdata, replace_with_item, itemstack, object = player, }, true) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then itemstack:take_item(1) end diff --git a/mods/rp_item_drop/init.lua b/mods/rp_item_drop/init.lua index 861e5ce..db92bcf 100644 --- a/mods/rp_item_drop/init.lua +++ b/mods/rp_item_drop/init.lua @@ -89,7 +89,7 @@ minetest.register_globalstep( end if inv:room_for_item("main", ItemStack(lua.itemstring)) then - if minetest.settings:get_bool("creative_mode") then + if minetest.is_creative_enabled(player:get_player_name()) then if not inv:contains_item("main", ItemStack(lua.itemstring), true) then inv:add_item("main", ItemStack(lua.itemstring)) end @@ -127,19 +127,18 @@ minetest.register_globalstep( end) function minetest.handle_node_drops(pos, drops, digger) - if minetest.settings:get_bool("creative_mode") then - if not digger or not digger:is_player() then - return + do + if digger and digger:is_player() and minetest.is_creative_enabled(digger:get_player_name()) then + local inv = digger:get_inventory() + if inv then + for _,item in ipairs(drops) do + if not inv:contains_item("main", item, true) then + inv:add_item("main", item) + end + end + end + return end - local inv = digger:get_inventory() - if inv then - for _,item in ipairs(drops) do - if not inv:contains_item("main", item, true) then - inv:add_item("main", item) - end - end - end - return end for _,item in ipairs(drops) do local obj = minetest.add_item(pos, item) diff --git a/mods/rp_jewels/init.lua b/mods/rp_jewels/init.lua index 4d05859..628109d 100644 --- a/mods/rp_jewels/init.lua +++ b/mods/rp_jewels/init.lua @@ -336,7 +336,7 @@ minetest.register_node( -- Success inv:set_stack("main", 1, ItemStack(jewels.get_jeweled(itemname))) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then itemstack:take_item() itemstack_changed = true end diff --git a/mods/rp_locks/init.lua b/mods/rp_locks/init.lua index a7abe9b..f34ba01 100644 --- a/mods/rp_locks/init.lua +++ b/mods/rp_locks/init.lua @@ -132,7 +132,7 @@ minetest.register_tool( minetest.sound_play({name="locks_pick",gain=0.5},{pos=pos, max_hear_distance=16}, true) end - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(player:get_player_name()) then itemstack:add_wear(8200) -- about 8 uses end return itemstack @@ -165,7 +165,13 @@ local put_lock = function(itemstack, putter, pointed_thing) else meta:set_string("infotext", S(INFOTEXT_PUBLIC)) end - if not minetest.settings:get_bool("creative_mode") then + local creative_name + if not name or name == "" then + creative_name = "" + else + creative_name = name + end + if not minetest.is_creative_enabled(creative_name) then itemstack:take_item() end end diff --git a/mods/rp_nav/map.lua b/mods/rp_nav/map.lua index a62d81b..76e888a 100644 --- a/mods/rp_nav/map.lua +++ b/mods/rp_nav/map.lua @@ -9,18 +9,11 @@ local S = minetest.get_translator("rp_nav") nav.map = {} --- Cache creative mode setting - -local creative_mode_cache = minetest.settings:get_bool("creative_mode") - - -- Update HUD flags -- Global to allow overriding function nav.map.update_hud_flags(player) - local creative_enabled = - (minetest.global_exists("creative") and creative.is_enabled_for(player:get_player_name())) or - creative_mode_cache + local creative_enabled = minetest.is_creative_enabled(player:get_player_name()) local minimap_enabled = creative_enabled or player:get_inventory():contains_item("main", "rp_nav:map") diff --git a/mods/rp_partialblocks/init.lua b/mods/rp_partialblocks/init.lua index be98581..b3f89d6 100644 --- a/mods/rp_partialblocks/init.lua +++ b/mods/rp_partialblocks/init.lua @@ -65,7 +65,7 @@ function partialblocks.register_material(name, desc_slab, desc_stair, node, grou and itemstack:get_count() >= 1 then minetest.set_node(pos, {name = node}) - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() end diff --git a/mods/rp_tnt/init.lua b/mods/rp_tnt/init.lua index e645fd9..e02578a 100644 --- a/mods/rp_tnt/init.lua +++ b/mods/rp_tnt/init.lua @@ -283,7 +283,7 @@ minetest.register_node( minetest.record_protection_violation(pos, puncher:get_player_name()) return end - if not minetest.settings:get_bool("creative_mode") then + if not minetest.is_creative_enabled(puncher:get_player_name()) then item:add_wear(800) puncher:set_wielded_item(item) end