Reveal tool: also reveal places where blocks can be placed.
This commit is contained in:
parent
5450041080
commit
ede4e1ec56
@ -14,8 +14,12 @@ local function nm(s)
|
||||
return ss:gsub("^%l", string.upper)
|
||||
end
|
||||
|
||||
-- tilecache API
|
||||
nodes = {}
|
||||
|
||||
local tilecache = {}
|
||||
local get_tiles = function(name)
|
||||
|
||||
function nodes.get_tiles(name)
|
||||
if tilecache[name] then
|
||||
return tilecache[name]
|
||||
else
|
||||
@ -154,18 +158,18 @@ local function placeholder_particles(pos)
|
||||
if placeable == "" then
|
||||
return false
|
||||
end
|
||||
local nodes = minetest.parse_json(placeable)
|
||||
local nodelist = minetest.parse_json(placeable)
|
||||
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 3)) do
|
||||
if obj:is_player() then
|
||||
local pname = obj:get_player_name()
|
||||
local itemstack = obj:get_wielded_item()
|
||||
local name = itemstack:get_name()
|
||||
if itemstack and nodes[name] then
|
||||
if itemstack and nodelist[name] then
|
||||
minetest.add_particle({
|
||||
pos = pos,
|
||||
expirationtime = 0.55,
|
||||
size = 5,
|
||||
texture = get_tiles(name),
|
||||
texture = nodes.get_tiles(name),
|
||||
glow = 14,
|
||||
playername = pname,
|
||||
})
|
||||
@ -208,7 +212,7 @@ minetest.register_node("nodes:placeholder", {
|
||||
-- [4] sounds
|
||||
-- [5] falling node
|
||||
|
||||
local nodes = {
|
||||
local nodelist = {
|
||||
{"bricks_clay", true, "pickaxe", sounds.stone},
|
||||
{"bricks_limestone", true, "pickaxe", sounds.stone},
|
||||
{"bricks_marble", true, "pickaxe", sounds.stone},
|
||||
@ -292,7 +296,7 @@ local function make_stair_slab(name, groups, b1, b2, snd, tex)
|
||||
})
|
||||
end
|
||||
|
||||
for _, v in pairs(nodes) do
|
||||
for _, v in pairs(nodelist) do
|
||||
local groups = {node = 1}
|
||||
if v[5] then
|
||||
groups.falling_node = 1
|
||||
|
@ -1 +1,2 @@
|
||||
frame
|
||||
nodes
|
||||
|
@ -455,7 +455,7 @@ minetest.register_tool("tools:grow", {
|
||||
frame.register("tools:grow")
|
||||
|
||||
minetest.register_tool("tools:reveal", {
|
||||
description = "Reveal breakable nodes",
|
||||
description = "Reveal breakable nodes and Placeholder nodes",
|
||||
inventory_image = "reveal_tool.png",
|
||||
on_use = function(itemstack, digger, pointed_thing)
|
||||
if not digger then
|
||||
@ -477,6 +477,15 @@ minetest.register_tool("tools:reveal", {
|
||||
}
|
||||
end
|
||||
|
||||
local off = {
|
||||
{ x = 0, y = 0, z = -9/16},
|
||||
{ x = 0, y = 0, z = 9/16},
|
||||
{ x = 0, y = -9/16, z = 0},
|
||||
{ x = 0, y = 9/16, z = 0},
|
||||
{ x = -9/16, y = 0, z = 0},
|
||||
{ x = 9/16, y = 0, z = 0},
|
||||
}
|
||||
|
||||
local ppos = vector.floor(digger:get_pos())
|
||||
for x = math.max(ppos.x - 8, box.minp.x + 1),
|
||||
math.min(ppos.x + 8, box.maxp.x - 1) do
|
||||
@ -484,14 +493,6 @@ minetest.register_tool("tools:reveal", {
|
||||
math.min(ppos.y + 8, box.maxp.y - 1) do
|
||||
for z = math.max(ppos.z - 8, box.minp.z + 1),
|
||||
math.min(ppos.z + 8, box.maxp.z - 1) do
|
||||
local off = {
|
||||
{ x = 0, y = 0, z = -9/16},
|
||||
{ x = 0, y = 0, z = 9/16},
|
||||
{ x = 0, y = -9/16, z = 0},
|
||||
{ x = 0, y = 9/16, z = 0},
|
||||
{ x = -9/16, y = 0, z = 0},
|
||||
{ x = 9/16, y = 0, z = 0},
|
||||
}
|
||||
local pos = vector.new(x, y, z)
|
||||
local node = minetest.get_node(pos)
|
||||
local groups = minetest.registered_nodes[node.name] and
|
||||
@ -520,6 +521,24 @@ minetest.register_tool("tools:reveal", {
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
if node.name == "nodes:placeholder" then
|
||||
local meta = minetest.get_meta(pos)
|
||||
local placeable = meta:get_string("placeable")
|
||||
if placeable ~= "" then
|
||||
local nodelist = minetest.parse_json(placeable)
|
||||
--FIXME just do the first placeholder, only
|
||||
local n, _ = next(nodelist)
|
||||
minetest.add_particle({
|
||||
pos = pos,
|
||||
expirationtime = 8,
|
||||
size = 3,
|
||||
texture = nodes.get_tiles(n),
|
||||
glow = 14,
|
||||
playername = name,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user