Apollo 80edfbfad1 Seperated settings
Seperated crafting into basic_craft and advanced_craft.

  (for servers who just want basic to be craftable, but advanced could
still be prohibited from being crafted)

  > Also doesn't allow just advanced (since basic is needed to craft
advanced)
2022-01-25 21:17:22 -05:00

122 lines
3.9 KiB
Lua

local climb = {}
function climb.version()
return "1.1"
end
-- Attempt to detect what gamemode/game these folks are running on
function climb.game_mode()
local reported = false -- Have we send a report
local game_mode = "???" -- let's even return that
if (minetest.get_modpath("default") or false) and not reported then
reported = true
game_mode = "MTG"
end
if (minetest.get_modpath("mcl_core") or false) and not reported then
reported = true
game_mode = "MCL"
end
return game_mode
end
-- Jumpy force
function climb.on_punchy_norm(itemstack, user, pointed_thing)
-- Normal glove is limited so it must be pointing at something (anything counts)
if not pointed_thing then return end
if pointed_thing.type == "nothing" then
return
end
local tool_definition = itemstack:get_definition()
local tool_cap = tool_definition.tool_capabilities.groupcaps.climbing.maxlevel
-- minetest API now allows to set speed of player
local jump2_speed = 3.25 + tool_cap
user:add_player_velocity({x=0, y=jump2_speed, z=0})
end -- The advanced jumpy force
function climb.on_punchy_adv(itemstack, user, pointed_thing)
-- Advanced glove doesn't need nodes, so you just punch
local tool_definition = itemstack:get_definition()
local tool_cap = tool_definition.tool_capabilities.groupcaps.climbing.maxlevel
-- minetest API now allows to set speed of player
local jump2_speed = 3.25 + tool_cap
user:add_player_velocity({x=0, y=jump2_speed, z=0})
end
-- The actually gloves
minetest.register_tool("climb_glove:basic_glove", {
short_description = "Basic Climbing Glove",
description = "Basic Climbing Glove\n(Punch nodes to use)",
inventory_image = "climb_glove_basic.png",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=3,
groupcaps={
climbing = {times={[1]=1.50, [2]=1.0, [3]=0.50}, uses=1, maxlevel=3},
},
},
groups = {climbing = 1},
on_use = function(itemstack, user, pointed_thing)
return climb.on_punchy_norm(itemstack, user, pointed_thing)
end,
})
minetest.register_tool("climb_glove:adv_glove", {
short_description = "Advanced Climbing Glove",
description = "Advanced Climbing Glove\n(Punch to use)",
inventory_image = "climb_glove_adv.png",
tool_capabilities = {
full_punch_interval = 0.8,
max_drop_level=3,
groupcaps={
climbing = {times={[1]=1.25, [2]=1.0, [3]=0.50}, uses=1, maxlevel=3},
},
},
groups = {climbing = 1},
on_use = function(itemstack, user, pointed_thing)
return climb.on_punchy_adv(itemstack, user, pointed_thing)
end,
})
-- Crafting
local basic_craft = minetest.settings.get_bool("climb_craft_basic") or false
local adv_craft = minetest.settings.get_bool("climb_craft_advanced") or false
local gm = climb.game_mode()
local empty = ""
local iron = ""
local gold = ""
local diamond = ""
local glove = "climb_glove:basic_glove" -- Used in making a advanced glove
if gm == "MTG" then
iron = "default:steel_ingot"
gold = "default:gold_ingot"
diamond = "default:diamond"
elseif gm == "MCL" then
iron = "mcl_core:iron_ingot"
gold = "mcl_core:gold_ingot"
diamond = "mcl_core:diamond"
end
if basic_craft then -- only allow if basic crafting is allowed
minetest.register_craft({
output = "climb_glove:basic_glove",
recipe = {
{empty, iron, iron},
{gold, diamond, iron},
{gold, gold, empty}
}
})
end
if basic_craft and adv_craft then -- only allow if both basic crafting an advanced crafting
minetest.register_craft({
output = "climb_glove:adv_glove",
recipe = {
{diamond, iron, iron},
{gold, glove, iron},
{gold, gold, diamond}
}
})
end
-- Indicate ready
minetest.log("action", "[climb_glove] Running version "..climb.version())
minetest.log("action", "[climb_glove] Running gamemode "..climb.game_mode())
minetest.log("action", "[climb_glove] Ready")