minetest_inventory_enhanced/creative_enhanced/init.lua

60 lines
1.9 KiB
Lua

creative_enhanced = {}
-- returns true if game is creative or if player is in creative gamemode
creative_enhanced.player_gamemode_is_creative = function(name)
-- if world is creative, return true ofc
if minetest.setting_getbool("creative_mode") then
return true
-- if player's gamemode value is set in table, check it
-- else assume he is in survival
elseif gamemode and gamemode.players then
if gamemode.players[name] == 1 then
return true
end
end
return false
end
if minetest.setting_getbool("creative_mode") then
local digtime = 0.5
minetest.register_item(":", {
type = "none",
wield_image = "wieldhand.png",
wield_scale = {x=1,y=1,z=2.5},
range = 10,
tool_capabilities = {
full_punch_interval = 0.5,
max_drop_level = 3,
groupcaps = {
crumbly = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3},
cracky = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3},
snappy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3},
choppy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3},
oddly_breakable_by_hand = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3},
},
damage_groups = {fleshy = 10},
}
})
end
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
if creative_enhanced.player_gamemode_is_creative(placer:get_player_name()) then
return true -- nothing is taken from inventory
else
return false -- pass over to mods
end
end)
-- overwrite core function and use own gamemode check
old_rotate_and_place = minetest.rotate_and_place
minetest.rotate_and_place = function(itemstack, placer, pointed_thing,infinitestacks, orient_flags)
if creative_enhanced.player_gamemode_is_creative(placer:get_player_name()) then
infinitestacks = true
end
return old_rotate_and_place(itemstack, placer, pointed_thing,infinitestacks, orient_flags)
end
minetest.log("action","creative_enhanced loaded")