use mesh node for plasma screen
also, add an "off" variant, accessible by punching.
@ -3,5 +3,14 @@ PLASMASCREEN
|
|||||||
|
|
||||||
Mod adding a plasma screen TV for Minetest.
|
Mod adding a plasma screen TV for Minetest.
|
||||||
|
|
||||||
This mod adds a 2x3 plasma screen TV consisting of 6 nodeboxes.
|
This mod adds a 2x3 plasma screen TV using a single large mesh node.
|
||||||
Code and textures are WTFPL.
|
|
||||||
|
Point at the bottom center position where you want the TV to go, when placing.
|
||||||
|
|
||||||
|
Note: If you're at a really steep view angle when trying to place a screen,
|
||||||
|
the mod may occasionally refuse to place it (or it just appears for a moment).
|
||||||
|
Just move over a bit, so that your target position is more directly in front
|
||||||
|
of you.
|
||||||
|
|
||||||
|
Code, textures and model are WTFPL.
|
||||||
|
|
||||||
|
@ -16,177 +16,96 @@ minetest.register_node("plasmascreen:stand", {
|
|||||||
{-0.3750,-0.1875,-0.3750,0.3750,0.3125,-0.2500}, --NodeBox 4
|
{-0.3750,-0.1875,-0.3750,0.3750,0.3125,-0.2500}, --NodeBox 4
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-0.5000, -0.5000, -0.5000, 0.5000, 0.5000, 0.0000},
|
{-0.5000, -0.5000, -0.5000, 0.5000, 0.5000, 0.0000},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
|
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("plasmascreen:screen1", {
|
minetest.register_alias("plasmascreen:screen1", "air")
|
||||||
description = "Plasma Screen 1",
|
minetest.register_alias("plasmascreen:screen2", "air")
|
||||||
tiles = {
|
minetest.register_alias("plasmascreen:screen3", "air")
|
||||||
"plasmascreen_back.png",
|
minetest.register_alias("plasmascreen:screen4", "air")
|
||||||
"plasmascreen_screen.png",
|
minetest.register_alias("plasmascreen:screen5", "plasmascreen:tv")
|
||||||
"plasmascreen_screen.png",
|
minetest.register_alias("plasmascreen:screen6", "air")
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
{ name="plasmascreen_screen1.png",
|
|
||||||
animation={
|
|
||||||
type="vertical_frames",
|
|
||||||
aspect_w=16,
|
|
||||||
aspect_h=16,
|
|
||||||
length=44
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
local fdir_to_left = {
|
||||||
paramtype = "light",
|
{ -1, 0 },
|
||||||
paramtype2 = "facedir",
|
{ 0, 1 },
|
||||||
drop = "",
|
{ 1, 0 },
|
||||||
light_source = 10,
|
{ 0, -1 },
|
||||||
drawtype = "nodebox",
|
}
|
||||||
node_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.5000},
|
|
||||||
{-0.5000, 0.5000, 0.3750, 0.5000, 0.3125, 0.4375},
|
|
||||||
{-0.5000, -0.5000, 0.5000, -0.3125, 0.5000, 0.3750},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500}
|
|
||||||
},
|
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
|
||||||
})
|
|
||||||
minetest.register_node("plasmascreen:screen2", {
|
|
||||||
description = "Plasma Screen 2",
|
|
||||||
tiles = {
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
{ name="plasmascreen_screen2.png",
|
|
||||||
animation={
|
|
||||||
type="vertical_frames",
|
|
||||||
aspect_w=16,
|
|
||||||
aspect_h=16,
|
|
||||||
length=44
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
local fdir_to_right = {
|
||||||
paramtype = "light",
|
{ 1, 0 },
|
||||||
paramtype2 = "facedir",
|
{ 0, -1 },
|
||||||
drop = "",
|
{ -1, 0 },
|
||||||
light_source = 10,
|
{ 0, 1 },
|
||||||
drawtype = "nodebox",
|
}
|
||||||
node_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.5000},
|
|
||||||
{-0.5000, 0.5000, 0.3750, 0.5000, 0.3125, 0.4375},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500}
|
|
||||||
},
|
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
|
||||||
})
|
|
||||||
minetest.register_node("plasmascreen:screen3", {
|
|
||||||
description = "Plasma Screen 3",
|
|
||||||
tiles = {
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
{ name="plasmascreen_screen3.png",
|
|
||||||
animation={
|
|
||||||
type="vertical_frames",
|
|
||||||
aspect_w=16,
|
|
||||||
aspect_h=16,
|
|
||||||
length=44
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
local tv_cbox = {
|
||||||
paramtype = "light",
|
type = "fixed",
|
||||||
paramtype2 = "facedir",
|
fixed = {-1.5050, -0.3125, 0.3700, 1.5050, 1.5050, 0.5050}
|
||||||
drop = "",
|
}
|
||||||
light_source = 10,
|
|
||||||
drawtype = "nodebox",
|
|
||||||
node_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.5000},
|
|
||||||
{-0.5000, 0.5000, 0.3750, 0.5000, 0.3125, 0.4375},
|
|
||||||
{0.3125, -0.5000, 0.5000, 0.5000, 0.5000, 0.3750},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500}
|
|
||||||
},
|
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
|
||||||
})
|
|
||||||
minetest.register_node("plasmascreen:screen4", {
|
|
||||||
description = "Plasma Screen 4",
|
|
||||||
tiles = {
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
{ name="plasmascreen_screen4.png",
|
|
||||||
animation={
|
|
||||||
type="vertical_frames",
|
|
||||||
aspect_w=16,
|
|
||||||
aspect_h=16,
|
|
||||||
length=44
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
local function checkwall(pos)
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "facedir",
|
|
||||||
drop = "",
|
|
||||||
light_source = 10,
|
|
||||||
drawtype = "nodebox",
|
|
||||||
node_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.5000, -0.3125, 0.4375, 0.5000, 0.5000, 0.5000},
|
|
||||||
{-0.5000, -0.3125, 0.3750, 0.5000, -0.1250, 0.4375},
|
|
||||||
{-0.5000, -0.3125, 0.5000, -0.3125, 0.5000, 0.3750},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500}
|
|
||||||
},
|
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node("plasmascreen:screen5", {
|
local fdir = minetest.get_node(pos).param2
|
||||||
|
|
||||||
|
local dxl = fdir_to_left[fdir + 1][1] -- dxl = "[D]elta [X] [L]eft"
|
||||||
|
local dzl = fdir_to_left[fdir + 1][2] -- Z left
|
||||||
|
|
||||||
|
local dxr = fdir_to_right[fdir + 1][1] -- X right
|
||||||
|
local dzr = fdir_to_right[fdir + 1][2] -- Z right
|
||||||
|
|
||||||
|
local node1 = minetest.get_node({x=pos.x+dxl, y=pos.y, z=pos.z+dzl})
|
||||||
|
if not node1 or not minetest.registered_nodes[node1.name]
|
||||||
|
or not minetest.registered_nodes[node1.name].buildable_to then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local node2 = minetest.get_node({x=pos.x+dxr, y=pos.y, z=pos.z+dzr})
|
||||||
|
if not node2 or not minetest.registered_nodes[node2.name]
|
||||||
|
or not minetest.registered_nodes[node2.name].buildable_to then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local node3 = minetest.get_node({x=pos.x+dxl, y=pos.y+1, z=pos.z+dzl})
|
||||||
|
if not node3 or not minetest.registered_nodes[node3.name]
|
||||||
|
or not minetest.registered_nodes[node3.name].buildable_to then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local node4 = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||||
|
if not node4 or not minetest.registered_nodes[node4.name]
|
||||||
|
or not minetest.registered_nodes[node4.name].buildable_to then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local node5 = minetest.get_node({x=pos.x+dxr, y=pos.y+1, z=pos.z+dzr})
|
||||||
|
if not node5 or not minetest.registered_nodes[node5.name]
|
||||||
|
or not minetest.registered_nodes[node5.name].buildable_to then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node("plasmascreen:tv", {
|
||||||
description = "Plasma TV",
|
description = "Plasma TV",
|
||||||
|
drawtype = "mesh",
|
||||||
|
mesh = "plasmascreen_tv.obj",
|
||||||
tiles = {
|
tiles = {
|
||||||
"plasmascreen_back.png",
|
"plasmascreen_case.png",
|
||||||
"plasmascreen_screen.png",
|
{ name="plasmascreen_video.png",
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
{ name="plasmascreen_screen5.png",
|
|
||||||
animation={
|
animation={
|
||||||
type="vertical_frames",
|
type="vertical_frames",
|
||||||
aspect_w=16,
|
aspect_w = 42,
|
||||||
aspect_h=16,
|
aspect_h = 23,
|
||||||
length=44
|
length = 44
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,260 +114,53 @@ minetest.register_node("plasmascreen:screen5", {
|
|||||||
wield_image = "plasmascreen_tv_inv.png",
|
wield_image = "plasmascreen_tv_inv.png",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
drawtype = "nodebox",
|
selection_box = tv_cbox,
|
||||||
node_box = {
|
collision_box = tv_cbox,
|
||||||
type = "fixed",
|
groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2},
|
||||||
fixed = {
|
after_place_node = function(pos, placer, itemstack)
|
||||||
{-0.5000, -0.3125, 0.4375, 0.5000, 0.5000, 0.5000},
|
if not checkwall(pos) then
|
||||||
{-0.5000, -0.3125, 0.3750, 0.5000, -0.1250, 0.4375},
|
minetest.set_node(pos, {name = "air"})
|
||||||
}
|
return true -- "API: If return true no item is taken from itemstack"
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-1.5050, -0.3125, 0.3700, 1.5050, 1.5050, 0.5050}
|
|
||||||
},
|
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
|
|
||||||
|
|
||||||
after_place_node = function(pos,placer,itemstack)
|
|
||||||
local param2 = minetest.get_node(pos).param2
|
|
||||||
local p = {x=pos.x, y=pos.y, z=pos.z}
|
|
||||||
if param2 == 0 then
|
|
||||||
pos.x = pos.x-1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.x = pos.x+2
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.y = pos.y+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.x = pos.x-1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.x = pos.x-1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
elseif param2 == 1 then
|
|
||||||
pos.z = pos.z+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.z = pos.z-2
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.y = pos.y+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.z = pos.z+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.z = pos.z+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
elseif param2 == 2 then
|
|
||||||
pos.x = pos.x+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.x = pos.x-2
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.y = pos.y+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.x = pos.x+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.x = pos.x+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
elseif param2 == 3 then
|
|
||||||
pos.z = pos.z-1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.z = pos.z+2
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.y = pos.y+1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.z = pos.z-1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
pos.z = pos.z-1
|
|
||||||
if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
|
|
||||||
minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())})
|
|
||||||
else
|
|
||||||
minetest.remove_node(p)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
on_punch = function(pos, node, puncher, pointed_thing)
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
minetest.set_node(pos, {name = "plasmascreen:tv_off", param2 = node.fdir})
|
||||||
if oldnode.param2 == 0 then
|
|
||||||
pos.x = pos.x-1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.x = pos.x+2
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.y = pos.y+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.x = pos.x-1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.x = pos.x-1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
elseif oldnode.param2 == 1 then
|
|
||||||
pos.z = pos.z+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.z = pos.z-2
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.y = pos.y+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.z = pos.z+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.z = pos.z+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
elseif oldnode.param2 == 2 then
|
|
||||||
pos.x = pos.x+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.x = pos.x-2
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.y = pos.y+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.x = pos.x+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.x = pos.x+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
elseif oldnode.param2 == 3 then
|
|
||||||
pos.z = pos.z-1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.z = pos.z+2
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.y = pos.y+1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.z = pos.z-1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
pos.z = pos.z-1
|
|
||||||
minetest.remove_node(pos)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("plasmascreen:screen6", {
|
minetest.register_node("plasmascreen:tv_off", {
|
||||||
description = "Plasma Screen 6",
|
description = "Plasma TV (off)",
|
||||||
|
drawtype = "mesh",
|
||||||
|
mesh = "plasmascreen_tv.obj",
|
||||||
tiles = {
|
tiles = {
|
||||||
"plasmascreen_back.png",
|
"plasmascreen_case_off.png",
|
||||||
"plasmascreen_screen.png",
|
"plasmascreen_screen_off.png",
|
||||||
"plasmascreen_screen.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
"plasmascreen_back.png",
|
|
||||||
{ name="plasmascreen_screen6.png",
|
|
||||||
animation={
|
|
||||||
type="vertical_frames",
|
|
||||||
aspect_w=16,
|
|
||||||
aspect_h=16,
|
|
||||||
length=44
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
inventory_image = "plasmascreen_tv_inv.png",
|
||||||
|
wield_image = "plasmascreen_tv_inv.png",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
drop = "",
|
light_source = 10,
|
||||||
light_source = 10,
|
selection_box = tv_cbox,
|
||||||
drawtype = "nodebox",
|
collision_box = tv_cbox,
|
||||||
node_box = {
|
groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
|
||||||
type = "fixed",
|
after_place_node = function(pos, placer, itemstack)
|
||||||
fixed = {
|
if not checkwall(pos) then
|
||||||
{-0.5000, -0.3125, 0.4375, 0.5000, 0.5000, 0.5000},
|
minetest.set_node(pos, {name = "air"})
|
||||||
{-0.5000, -0.3125, 0.3750, 0.5000, -0.1250, 0.4375},
|
return true -- "API: If return true no item is taken from itemstack"
|
||||||
{0.3125, -0.3125, 0.5000, 0.5000, 0.5000, 0.3750},
|
end
|
||||||
}
|
end,
|
||||||
},
|
on_punch = function(pos, node, puncher, pointed_thing)
|
||||||
selection_box = {
|
minetest.set_node(pos, {name = "plasmascreen:tv", param2 = node.fdir})
|
||||||
type = "fixed",
|
end,
|
||||||
fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500}
|
drop = "plasmascreen:tv"
|
||||||
},
|
|
||||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- crafting recipes
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "plasmascreen:screen5",
|
output = "plasmascreen:tv",
|
||||||
recipe = {
|
recipe = {
|
||||||
{'default:glass', 'default:coal_lump', 'default:glass'},
|
{'default:glass', 'default:coal_lump', 'default:glass'},
|
||||||
{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
|
{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
|
||||||
@ -458,7 +170,7 @@ minetest.register_craft({
|
|||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type = "shapeless",
|
type = "shapeless",
|
||||||
output = "plasmascreen:screen5",
|
output = "plasmascreen:tv",
|
||||||
recipe = {'homedecor:television', 'homedecor:television'},
|
recipe = {'homedecor:television', 'homedecor:television'},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
135
plasmascreen/models/plasmascreen_tv.obj
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
# Blender v2.73 (sub 0) OBJ File: 'plasmascreen.blend'
|
||||||
|
# www.blender.org
|
||||||
|
o Cylinder
|
||||||
|
v -1.500000 -0.312500 0.500000
|
||||||
|
v -1.500000 -0.312500 0.375000
|
||||||
|
v 1.500000 -0.312500 0.375000
|
||||||
|
v 1.500000 -0.312500 0.500000
|
||||||
|
v -1.500000 1.500000 0.500000
|
||||||
|
v -1.500000 1.500000 0.375000
|
||||||
|
v 1.500000 1.500000 0.375000
|
||||||
|
v 1.500000 1.500000 0.500000
|
||||||
|
v -1.312500 -0.125000 0.437500
|
||||||
|
v 1.375000 1.375000 0.375000
|
||||||
|
v -1.312500 1.312500 0.437500
|
||||||
|
v 1.375000 -0.187500 0.375000
|
||||||
|
v -1.375000 1.375000 0.375000
|
||||||
|
v 1.312500 -0.125000 0.437500
|
||||||
|
v -1.375000 -0.187500 0.375000
|
||||||
|
v 1.312500 1.312500 0.437500
|
||||||
|
v 1.500000 1.375000 0.375000
|
||||||
|
v 1.500000 -0.187500 0.375000
|
||||||
|
v -1.500000 1.375000 0.375000
|
||||||
|
v -1.500000 -0.187500 0.375000
|
||||||
|
v -1.312500 -0.187500 0.375000
|
||||||
|
v -1.312500 1.375000 0.375000
|
||||||
|
v 1.312500 -0.187500 0.375000
|
||||||
|
v 1.312500 1.375000 0.375000
|
||||||
|
v -1.375000 -0.125000 0.375000
|
||||||
|
v -1.375000 1.312500 0.375000
|
||||||
|
v 1.375000 -0.125000 0.375000
|
||||||
|
v 1.375000 1.312500 0.375000
|
||||||
|
v -1.312811 -0.125310 0.437500
|
||||||
|
v -1.312811 1.312810 0.437500
|
||||||
|
v 1.312811 -0.125310 0.437500
|
||||||
|
v 1.312811 1.312810 0.437500
|
||||||
|
vt 0.953125 0.984375
|
||||||
|
vt 0.921875 0.984375
|
||||||
|
vt 0.921875 0.531250
|
||||||
|
vt 0.953125 0.531250
|
||||||
|
vt 0.906250 0.984375
|
||||||
|
vt 0.875000 0.984375
|
||||||
|
vt 0.875000 0.531250
|
||||||
|
vt 0.906250 0.531250
|
||||||
|
vt 0.812500 0.984375
|
||||||
|
vt 0.781250 0.984375
|
||||||
|
vt 0.781250 0.593750
|
||||||
|
vt 0.812500 0.593750
|
||||||
|
vt 0.015625 0.953125
|
||||||
|
vt 0.765625 0.953125
|
||||||
|
vt 0.765625 0.984375
|
||||||
|
vt 0.015625 0.984375
|
||||||
|
vt 0.015625 0.812500
|
||||||
|
vt 0.765625 0.812500
|
||||||
|
vt 0.765625 0.843750
|
||||||
|
vt 0.015625 0.843750
|
||||||
|
vt 0.765625 0.796875
|
||||||
|
vt 0.015625 0.796875
|
||||||
|
vt 0.015625 0.343750
|
||||||
|
vt 0.765625 0.343750
|
||||||
|
vt 0.828125 0.593750
|
||||||
|
vt 0.859375 0.593750
|
||||||
|
vt 0.859375 0.984375
|
||||||
|
vt 0.828125 0.984375
|
||||||
|
vt 0.015625 0.890625
|
||||||
|
vt 0.015625 0.859375
|
||||||
|
vt 0.765625 0.859375
|
||||||
|
vt 0.765625 0.890625
|
||||||
|
vt 0.015625 0.937500
|
||||||
|
vt 0.015625 0.906250
|
||||||
|
vt 0.765625 0.906250
|
||||||
|
vt 0.765625 0.937500
|
||||||
|
vt 0.031250 0.296875
|
||||||
|
vt 0.031250 0.281250
|
||||||
|
vt 0.687500 0.281250
|
||||||
|
vt 0.687500 0.296875
|
||||||
|
vt 0.687500 0.312500
|
||||||
|
vt 0.687500 0.328125
|
||||||
|
vt 0.031250 0.328125
|
||||||
|
vt 0.031250 0.312500
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.375000 0.265625
|
||||||
|
vt 0.015625 0.265625
|
||||||
|
vt 0.015625 0.250000
|
||||||
|
vt 0.703125 0.296875
|
||||||
|
vt 0.703125 0.281250
|
||||||
|
vt 0.015625 0.234375
|
||||||
|
vt 0.015625 0.218750
|
||||||
|
vt 0.375000 0.218750
|
||||||
|
vt 0.375000 0.234375
|
||||||
|
vt 0.703125 0.328125
|
||||||
|
vt 0.703125 0.312500
|
||||||
|
vt 0.015625 0.328125
|
||||||
|
vt 0.015625 0.312500
|
||||||
|
vt 0.015625 0.281250
|
||||||
|
vt 0.015625 0.296875
|
||||||
|
vt 1.000000 1.000000
|
||||||
|
vt -0.000000 1.000000
|
||||||
|
vt -0.000000 -0.000000
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn 1.000000 0.000000 0.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 0.000000 1.000000
|
||||||
|
vn 0.000000 0.707100 -0.707100
|
||||||
|
vn 0.000000 -0.707100 -0.707100
|
||||||
|
vn -0.707100 0.000000 -0.707100
|
||||||
|
vn 0.707100 0.000000 -0.707100
|
||||||
|
vn 0.000000 -0.707100 0.707100
|
||||||
|
g Cylinder_Cylinder_case
|
||||||
|
s off
|
||||||
|
f 5/1/1 6/2/1 2/3/1 1/4/1
|
||||||
|
f 7/5/2 8/6/2 4/7/2 3/8/2
|
||||||
|
f 10/9/3 17/10/3 18/11/3 12/12/3
|
||||||
|
f 5/13/4 8/14/4 7/15/4 6/16/4
|
||||||
|
f 2/17/5 3/18/5 4/19/5 1/20/5
|
||||||
|
f 8/21/6 5/22/6 1/23/6 4/24/6
|
||||||
|
f 15/25/3 20/26/3 19/27/3 13/28/3
|
||||||
|
f 18/29/3 3/30/3 2/31/3 20/32/3
|
||||||
|
f 7/33/3 17/34/3 19/35/3 6/36/3
|
||||||
|
f 14/37/7 23/38/7 21/39/7 9/40/7
|
||||||
|
f 11/41/8 22/42/8 24/43/8 16/44/8
|
||||||
|
f 16/45/9 28/46/9 27/47/9 14/48/9
|
||||||
|
f 25/49/10 9/40/10 15/50/10
|
||||||
|
f 15/50/7 9/40/7 21/39/7
|
||||||
|
f 9/51/10 25/52/10 26/53/10 11/54/10
|
||||||
|
f 13/55/10 11/41/10 26/56/10
|
||||||
|
f 22/42/8 11/41/8 13/55/8
|
||||||
|
f 10/57/8 16/44/8 24/43/8
|
||||||
|
f 28/58/9 16/44/9 10/57/9
|
||||||
|
f 12/59/9 14/37/9 27/60/9
|
||||||
|
f 23/38/11 12/59/11 14/37/11
|
||||||
|
g Cylinder_Cylinder_screen
|
||||||
|
f 30/61/3 32/62/3 31/63/3 29/64/3
|
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 81 B |
BIN
plasmascreen/textures/plasmascreen_case.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
plasmascreen/textures/plasmascreen_case_off.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 82 B |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.4 KiB |
BIN
plasmascreen/textures/plasmascreen_screen_off.png
Normal file
After Width: | Height: | Size: 613 B |
BIN
plasmascreen/textures/plasmascreen_video.png
Normal file
After Width: | Height: | Size: 21 KiB |