56 lines
1.7 KiB
Lua
56 lines
1.7 KiB
Lua
--- floating_anchor
|
|
-- @module floating_anchor
|
|
-- @release 0.1
|
|
-- @copyright 2018 Starbeamrainbowlabs
|
|
-- @license Mozilla Public License, 2.0 (MPL-2.0)
|
|
-- @author Starbeamrainbowlabs
|
|
|
|
local function log_message(level, msg)
|
|
minetest.log(level, "[floating-anchor] " .. msg)
|
|
end
|
|
|
|
local function do_anchor_place(itemstack, player, pointed_thing)
|
|
|
|
-- user.getpos() -> {x, y, z}
|
|
|
|
-- Figure out where to put the anchor
|
|
local place_position = player:getpos()
|
|
place_position.y = place_position.y - 0.8
|
|
log_message("action", string.format("(%d, %d, %d)", place_position.x, place_position.y, place_position.z))
|
|
|
|
-- Place the floating anchor in the world
|
|
local node_to_check = minetest.get_node(place_position)
|
|
if node_to_check.name == "air" then
|
|
minetest.set_node(place_position, { name = "floating_anchor:floating_anchor" })
|
|
-- Take an item from the player's stack & return the new stack with 1 fewer items in it
|
|
itemstack:take_item(1)
|
|
end
|
|
|
|
return itemstack
|
|
end
|
|
|
|
minetest.register_node("floating_anchor:floating_anchor", {
|
|
description = "Floating Anchor (node - don't use)",
|
|
tiles = {"floating-anchor.png"},
|
|
groups = { cracky = 1, not_in_creative_inventory = 1 },
|
|
drop = "floating_anchor:floating_anchor_item"
|
|
})
|
|
|
|
minetest.register_craftitem("floating_anchor:floating_anchor_item", {
|
|
description = "Floating Anchor",
|
|
inventory_image = "floating-anchor.png",
|
|
on_place = do_anchor_place,
|
|
on_secondary_use = do_anchor_place
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "floating_anchor:floating_anchor",
|
|
recipe = {
|
|
{"group:wool", "group:wool", "group:wool"},
|
|
{"group:wool", "default:steel_ingot", "group:wool"},
|
|
{"group:wool", "group:wool", "group:wool"},
|
|
}
|
|
})
|
|
|
|
log_message("info", "Loaded!")
|