Use minetest.is_creative_enabled everywhere

This commit is contained in:
Wuzzy 2022-05-04 12:51:06 +02:00
parent 1971ec1573
commit 5525c5e52a
20 changed files with 54 additions and 62 deletions

View File

@ -1389,7 +1389,7 @@ function mobs:register_mob(name, def)
local weapon = hitter:get_wielded_item() local weapon = hitter:get_wielded_item()
if weapon:get_definition().tool_capabilities ~= nil then if weapon:get_definition().tool_capabilities ~= nil then
local wear = ( (weapon:get_definition().tool_capabilities.full_punch_interval or 1.4) / 75 ) * 9000 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) weapon:add_wear(wear)
end end
hitter:set_wielded_item(weapon) hitter:set_wielded_item(weapon)
@ -1636,7 +1636,7 @@ function mobs:register_egg(mob, desc, background)
ent.owner = placer:get_player_name() ent.owner = placer:get_player_name()
ent.tamed = true ent.tamed = true
end end
if not minetest.settings:get_bool("creative_mode") then if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item() itemstack:take_item()
end end
end end
@ -1692,7 +1692,7 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso,
pos = clicker:get_pos(), pos = clicker:get_pos(),
gain = 0.2, max_hear_distance = 16, pitch=1.25}, true) gain = 0.2, max_hear_distance = 16, pitch=1.25}, true)
chance = chance_net 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 tool:add_wear(4000) -- 17 uses
end end
clicker:set_wielded_item(tool) 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(), pos = clicker:get_pos(),
gain = 0.2, max_hear_distance = 16, pitch=1}, true) gain = 0.2, max_hear_distance = 16, pitch=1}, true)
chance = chance_lasso 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 tool:add_wear(1500) -- 43 uses
end end
clicker:set_wielded_item(tool) clicker:set_wielded_item(tool)
@ -1757,7 +1757,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, effect)
if name ~= nil then if name ~= nil then
-- Take item -- Take item
if not minetest.settings:get_bool("creative_mode") then if not minetest.is_creative_enabled(name) then
item:take_item() item:take_item()
clicker:set_wielded_item(item) clicker:set_wielded_item(item)

View File

@ -127,7 +127,7 @@ mobs:register_mob(
z = math.random(-1,1) z = math.random(-1,1)
}) })
end 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 def = item:get_definition()
local cuts = minetest.get_item_group(itemname, "sheep_cuts") local cuts = minetest.get_item_group(itemname, "sheep_cuts")
if cuts > 0 then if cuts > 0 then

View File

@ -61,7 +61,7 @@ minetest.register_craftitem(
rp_player.player_attached[player:get_player_name()] = true 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() itemstack:take_item()
end end

View File

@ -330,7 +330,7 @@ minetest.register_node(
minetest.set_node(pos, {name = "rp_bed:bed_foot", param2 = dir}) minetest.set_node(pos, {name = "rp_bed:bed_foot", param2 = dir})
minetest.set_node(botpos, {name = "rp_bed:bed_head", 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() itemstack:take_item()
end end
return itemstack return itemstack

View File

@ -24,7 +24,7 @@ local function create_creative_inventory(player)
local inv = minetest.create_detached_inventory("creative_"..player_name, { local inv = minetest.create_detached_inventory("creative_"..player_name, {
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
local name = player:get_player_name() 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 return count
else else
return 0 return 0
@ -34,7 +34,7 @@ local function create_creative_inventory(player)
return 0 return 0
end, end,
allow_take = function(inv, listname, index, stack, player) 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 return -1
else else
return 0 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() -- Allow the stack to be placed and remove it in on_put()
-- This allows the creative inventory to restore the stack -- This allows the creative inventory to restore the stack
allow_put = function(inv, listname, index, stack, player) 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() return stack:get_count()
else else
return 0 return 0
@ -123,7 +123,7 @@ local get_page_and_start_i = function(playername)
end end
creative.get_formspec = function(playername) creative.get_formspec = function(playername)
if not minetest.settings:get_bool("creative_mode") then if not minetest.is_creative_enabled(playername) then
return "" return ""
end end
local player = minetest.get_player_by_name(playername) local player = minetest.get_player_by_name(playername)
@ -137,7 +137,7 @@ end
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
-- If in creative mode, modify player's inventory forms -- 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 return
end end
init_playerdata(player:get_player_name()) init_playerdata(player:get_player_name())
@ -151,7 +151,7 @@ minetest.register_on_leaveplayer(function(player)
end) end)
minetest.register_on_player_receive_fields(function(player, formname, fields) 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 return
end end
local playername = player:get_player_name() local playername = player:get_player_name()
@ -195,17 +195,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end end
end) end)
-- Dummy implementation
-- TODO: Implement per-player creative mode
creative.is_enabled_for = function(player) creative.is_enabled_for = function(player)
if minetest.settings:get_bool("creative_mode") then return minetest.is_creative_enabled(player:get_player_name())
return true
else
return false
end
end 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) minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
-- Place infinite nodes, except for shulker boxes -- Place infinite nodes, except for shulker boxes
local group = minetest.get_item_group(itemstack:get_name(), "shulker_box") local group = minetest.get_item_group(itemstack:get_name(), "shulker_box")

View File

@ -39,7 +39,7 @@ for b=1, #water_buckets do
end end
if not above_nodedef.walkable then 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 if itemstack:get_count() == 1 then
itemstack:set_name("rp_default:bucket") itemstack:set_name("rp_default:bucket")
elseif inv:room_for_item("main", {name="rp_default:bucket"}) then 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 nodename=minetest.get_node(pointed_thing.under).name
local replace_bucket = function(itemstack, new_bucket) 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 -- no-op
elseif itemstack:get_count() == 1 then elseif itemstack:get_count() == 1 then
itemstack:set_name(new_bucket) itemstack:set_name(new_bucket)

View File

@ -133,7 +133,7 @@ minetest.register_craftitem(
end end
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() itemstack:take_item()
end end

View File

@ -54,7 +54,7 @@ function default.place_sapling(itemstack, placer, pointed_thing)
minetest.set_node(pointed_thing.above, {name = itemstack:get_name()}) 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() itemstack:take_item()
end end

View File

@ -951,7 +951,7 @@ minetest.register_node(
item_drop.drop_item(pos, "rp_default:grass") item_drop.drop_item(pos, "rp_default:grass")
-- Add wear -- 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() local def = itemstack:get_definition()
itemstack:add_wear(math.ceil(65536 / def.tool_capabilities.groupcaps.snappy.uses)) itemstack:add_wear(math.ceil(65536 / def.tool_capabilities.groupcaps.snappy.uses))
end end

View File

@ -37,7 +37,7 @@ local creative_digtable = {
} }
-- Creative mode/hand defs -- Creative mode/hand defs
if minetest.settings:get_bool("creative_mode") == true then if minetest.is_creative_enabled("") then
tool_levels = { tool_levels = {
wood = creative_digtable, wood = creative_digtable,
stone = 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) minetest.sound_play({name="rp_default_ignite_torch", gain=0.4}, {pos=pos}, true)
end 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) itemstack:add_wear(800)
end end

View File

@ -88,7 +88,7 @@ function door.register_door(name, def)
minetest.sound_play(def.sounds.place, {pos=pt}, true) minetest.sound_play(def.sounds.place, {pos=pt}, true)
end end
if not minetest.settings:get_bool("creative_mode") then if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item() itemstack:take_item()
end end

View File

@ -223,7 +223,7 @@ local trim_cotton = function(pos, node, player, tool)
end end
-- Add wear -- 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() local def = tool:get_definition()
tool:add_wear(math.ceil(65536 / def.tool_capabilities.groupcaps.snappy.uses)) tool:add_wear(math.ceil(65536 / def.tool_capabilities.groupcaps.snappy.uses))
end end

View File

@ -317,7 +317,7 @@ end
if minetest.get_modpath("rp_player_skins") ~= nil then 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")) 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 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")) form_default_default = form_default_default .. rp_formspec.tab(-0.9, 3.64, "tab_creative", "ui_icon_creative.png", S("Creative Inventory"))
end end
form_default_default = form_default_default .. "background[0,0;8.5,9;ui_formspec_bg_tall.png]" 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 elseif minetest.get_modpath("rp_player_skins") ~= nil and fields.tab_player_skins then
formname = "player_skins:player_skins" formname = "player_skins:player_skins"
form = player_skins.get_formspec(name) 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" formname = "rp_creative:creative"
form = creative.get_formspec(name) form = creative.get_formspec(name)
end end
@ -375,7 +375,7 @@ minetest.register_on_joinplayer(
function(player) function(player)
player:set_formspec_prepend(formspec_prepend) player:set_formspec_prepend(formspec_prepend)
local name = player:get_player_name() 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)) player:set_inventory_formspec(creative.get_formspec(name))
rp_formspec.current_page[name] = "rp_creative:creative" rp_formspec.current_page[name] = "rp_creative:creative"
else else

View File

@ -224,7 +224,7 @@ local function on_item_eat(hpdata, replace_with_item, itemstack,
hunger.update_bar(player) hunger.update_bar(player)
delayed_save() delayed_save()
if not minetest.settings:get_bool("creative_mode") then if not minetest.is_creative_enabled(name) then
itemstack:take_item(1) itemstack:take_item(1)
end end
@ -339,7 +339,7 @@ local function fake_on_item_eat(hpdata, replace_with_item, itemstack,
object = player, object = player,
}, true) }, 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) itemstack:take_item(1)
end end

View File

@ -89,7 +89,7 @@ minetest.register_globalstep(
end end
if inv:room_for_item("main", ItemStack(lua.itemstring)) then 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 if not inv:contains_item("main", ItemStack(lua.itemstring), true) then
inv:add_item("main", ItemStack(lua.itemstring)) inv:add_item("main", ItemStack(lua.itemstring))
end end
@ -127,19 +127,18 @@ minetest.register_globalstep(
end) end)
function minetest.handle_node_drops(pos, drops, digger) function minetest.handle_node_drops(pos, drops, digger)
if minetest.settings:get_bool("creative_mode") then do
if not digger or not digger:is_player() then if digger and digger:is_player() and minetest.is_creative_enabled(digger:get_player_name()) then
return 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 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 end
for _,item in ipairs(drops) do for _,item in ipairs(drops) do
local obj = minetest.add_item(pos, item) local obj = minetest.add_item(pos, item)

View File

@ -336,7 +336,7 @@ minetest.register_node(
-- Success -- Success
inv:set_stack("main", 1, ItemStack(jewels.get_jeweled(itemname))) 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:take_item()
itemstack_changed = true itemstack_changed = true
end end

View File

@ -132,7 +132,7 @@ minetest.register_tool(
minetest.sound_play({name="locks_pick",gain=0.5},{pos=pos, max_hear_distance=16}, true) minetest.sound_play({name="locks_pick",gain=0.5},{pos=pos, max_hear_distance=16}, true)
end 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 itemstack:add_wear(8200) -- about 8 uses
end end
return itemstack return itemstack
@ -165,7 +165,13 @@ local put_lock = function(itemstack, putter, pointed_thing)
else else
meta:set_string("infotext", S(INFOTEXT_PUBLIC)) meta:set_string("infotext", S(INFOTEXT_PUBLIC))
end 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() itemstack:take_item()
end end
end end

View File

@ -9,18 +9,11 @@ local S = minetest.get_translator("rp_nav")
nav.map = {} nav.map = {}
-- Cache creative mode setting
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
-- Update HUD flags -- Update HUD flags
-- Global to allow overriding -- Global to allow overriding
function nav.map.update_hud_flags(player) function nav.map.update_hud_flags(player)
local creative_enabled = local creative_enabled = minetest.is_creative_enabled(player:get_player_name())
(minetest.global_exists("creative") and creative.is_enabled_for(player:get_player_name())) or
creative_mode_cache
local minimap_enabled = creative_enabled or local minimap_enabled = creative_enabled or
player:get_inventory():contains_item("main", "rp_nav:map") player:get_inventory():contains_item("main", "rp_nav:map")

View File

@ -65,7 +65,7 @@ function partialblocks.register_material(name, desc_slab, desc_stair, node, grou
and itemstack:get_count() >= 1 then and itemstack:get_count() >= 1 then
minetest.set_node(pos, {name = node}) 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() itemstack:take_item()
end end

View File

@ -283,7 +283,7 @@ minetest.register_node(
minetest.record_protection_violation(pos, puncher:get_player_name()) minetest.record_protection_violation(pos, puncher:get_player_name())
return return
end 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) item:add_wear(800)
puncher:set_wielded_item(item) puncher:set_wielded_item(item)
end end