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)
|
return ss:gsub("^%l", string.upper)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- tilecache API
|
||||||
|
nodes = {}
|
||||||
|
|
||||||
local tilecache = {}
|
local tilecache = {}
|
||||||
local get_tiles = function(name)
|
|
||||||
|
function nodes.get_tiles(name)
|
||||||
if tilecache[name] then
|
if tilecache[name] then
|
||||||
return tilecache[name]
|
return tilecache[name]
|
||||||
else
|
else
|
||||||
@ -154,18 +158,18 @@ local function placeholder_particles(pos)
|
|||||||
if placeable == "" then
|
if placeable == "" then
|
||||||
return false
|
return false
|
||||||
end
|
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
|
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 3)) do
|
||||||
if obj:is_player() then
|
if obj:is_player() then
|
||||||
local pname = obj:get_player_name()
|
local pname = obj:get_player_name()
|
||||||
local itemstack = obj:get_wielded_item()
|
local itemstack = obj:get_wielded_item()
|
||||||
local name = itemstack:get_name()
|
local name = itemstack:get_name()
|
||||||
if itemstack and nodes[name] then
|
if itemstack and nodelist[name] then
|
||||||
minetest.add_particle({
|
minetest.add_particle({
|
||||||
pos = pos,
|
pos = pos,
|
||||||
expirationtime = 0.55,
|
expirationtime = 0.55,
|
||||||
size = 5,
|
size = 5,
|
||||||
texture = get_tiles(name),
|
texture = nodes.get_tiles(name),
|
||||||
glow = 14,
|
glow = 14,
|
||||||
playername = pname,
|
playername = pname,
|
||||||
})
|
})
|
||||||
@ -208,7 +212,7 @@ minetest.register_node("nodes:placeholder", {
|
|||||||
-- [4] sounds
|
-- [4] sounds
|
||||||
-- [5] falling node
|
-- [5] falling node
|
||||||
|
|
||||||
local nodes = {
|
local nodelist = {
|
||||||
{"bricks_clay", true, "pickaxe", sounds.stone},
|
{"bricks_clay", true, "pickaxe", sounds.stone},
|
||||||
{"bricks_limestone", true, "pickaxe", sounds.stone},
|
{"bricks_limestone", true, "pickaxe", sounds.stone},
|
||||||
{"bricks_marble", 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
|
end
|
||||||
|
|
||||||
for _, v in pairs(nodes) do
|
for _, v in pairs(nodelist) do
|
||||||
local groups = {node = 1}
|
local groups = {node = 1}
|
||||||
if v[5] then
|
if v[5] then
|
||||||
groups.falling_node = 1
|
groups.falling_node = 1
|
||||||
|
@ -1 +1,2 @@
|
|||||||
frame
|
frame
|
||||||
|
nodes
|
||||||
|
@ -455,7 +455,7 @@ minetest.register_tool("tools:grow", {
|
|||||||
frame.register("tools:grow")
|
frame.register("tools:grow")
|
||||||
|
|
||||||
minetest.register_tool("tools:reveal", {
|
minetest.register_tool("tools:reveal", {
|
||||||
description = "Reveal breakable nodes",
|
description = "Reveal breakable nodes and Placeholder nodes",
|
||||||
inventory_image = "reveal_tool.png",
|
inventory_image = "reveal_tool.png",
|
||||||
on_use = function(itemstack, digger, pointed_thing)
|
on_use = function(itemstack, digger, pointed_thing)
|
||||||
if not digger then
|
if not digger then
|
||||||
@ -477,13 +477,6 @@ minetest.register_tool("tools:reveal", {
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
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
|
|
||||||
for y = math.max(ppos.y - 8, box.minp.y + 1),
|
|
||||||
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 = {
|
local off = {
|
||||||
{ x = 0, y = 0, z = -9/16},
|
{ x = 0, y = 0, z = -9/16},
|
||||||
{ x = 0, y = 0, z = 9/16},
|
{ x = 0, y = 0, z = 9/16},
|
||||||
@ -492,6 +485,14 @@ minetest.register_tool("tools:reveal", {
|
|||||||
{ x = -9/16, y = 0, z = 0},
|
{ x = -9/16, y = 0, 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
|
||||||
|
for y = math.max(ppos.y - 8, box.minp.y + 1),
|
||||||
|
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 pos = vector.new(x, y, z)
|
local pos = vector.new(x, y, z)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
local groups = minetest.registered_nodes[node.name] and
|
local groups = minetest.registered_nodes[node.name] and
|
||||||
@ -520,6 +521,24 @@ minetest.register_tool("tools:reveal", {
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user