New additional torch style and more

Just read the changelog
master
BlockMen 2015-03-29 07:03:17 +02:00
parent e77b69900c
commit b9fb31f13d
8 changed files with 482 additions and 372 deletions

View File

@ -1,52 +1,56 @@
Minetest mod "Torches" Minetest mod "Torches"
====================== ======================
version: 2.1 Version: 3.0
License of source code and textures: WTFPL
------------------------------------------
(c) Copyright BlockMen (2013-2015) (c) Copyright BlockMen (2013-2015)
About this mod:
~~~~~~~~~~~~~~~
This mod adds two different styles of 3D torches to Minetest, by default in Minetest style (flames are animated textures).
The second style is Minecraft like, so flames are "animated" by using particles
Minetest styled:
Those torches use the same textures as the 2D torch, so its fully compatible with Texture Packs. By default ceiling torches
are removed and cannot be placed aswell. You can change this behavior by adding "torches_enable_ceiling = true" to your minetest.conf
Furthermore this style is more server traffic friendly, so it is enabled by default
Minecraft styled:
Those torches have a non-animated texture and needs to be supported by Texture Packs (currently most don't support this mod).
"Animation" is done like in Minecraft with particles, which cause (in the current implementation in the Minetest engine)
some amount of traffic and can cause lags at slow connections. The rate and distance when particles are send is configurable
in the first lines of "mc_style.lua". Enable this style by adding "torches_style = minecraft" to your minetest.conf. Note that
the ceiling setting is ignored with this style.
More informations:
Both styles convert existing torches to the new style. Keep in mind that by default ceiling torches get removed!
License:
~~~~~~~~
(c) Copyright BlockMen (2013-2015)
Code:
WTFPL
This program is free software. It comes without any warranty, to This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the Do What The Fuck You Want and/or modify it under the terms of the Do What The Fuck You Want
To Public License, Version 2, as published by Sam Hocevar. See To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details. http://sam.zoy.org/wtfpl/COPYING for more details.
Textures and Meshes/Models:
Using the mod: CC-BY 3.0 BlockMen
--------------
This mod adds 3D torches to Minetest. They also have "real" flames and look much more realistic.
Notice: Already placed old torches will be converted to new, ceiling placed will be removed
!! Warning: Extensive use (like a few dozen per mapblock [16x16x16 nodes]) can slowdown servers. Github:
~~~~~~~
https://github.com/BlockMen/torches
Forum:
~~~~~~
https://forum.minetest.net/viewtopic.php?id=6099
Changelog: Changelog:
---------- ~~~~~~~~~~
- Torches on wall dont fall when node under it is dug see changelog.txt
- Torches fall directly when not placed on floor or wall
- fixed different placing bugs
1.3:
- Torches only show flames when player is near (13 blocks)
- Old torches are converted to new, ceiling torches are dropped
1.3.1:
- fix dropping torches when digging a block next to it
- all torches attached to a block get droped when dug
1.3.2:
- fix crashes by unknown nodes
2.0:
- Use new mesh drawtype to improve wallmounted torches
- Update particle usage
- New textures; flame texture fix by Yepoleb
- Fix for doors, chests, etc (rightclick support)
2.1
- Fix wallmounted torch mesh
- Clean up code, use wallmounted paramtype2
- Fix torches being placeable on ceilings (reported by kilbith)

34
changelog.txt Normal file
View File

@ -0,0 +1,34 @@
Changelog:
----------
1.1 - 1.2.x:
- Torches on wall dont fall when node under it is dug
- Torches fall directly when not placed on floor or wall
- fixed different placing bugs
1.3:
- Torches only show flames when player is near (13 blocks)
- Old torches are converted to new, ceiling torches are dropped
1.3.1:
- fix dropping torches when digging a block next to it
- all torches attached to a block get droped when dug
1.3.2:
- fix crashes by unknown nodes
2.0:
- Use new mesh drawtype to improve wallmounted torches
- Update particle usage
- New textures; flame texture fix by Yepoleb
- Fix for doors, chests, etc (rightclick support)
2.1
- Fix wallmounted torch mesh
- Clean up code, use wallmounted paramtype2
- Fix torches being placeable on ceilings (reported by kilbith)
3.0
- Minetest style added and used by default
- style can be changed via settings
- using Minetest style allows ceiling torches via settings
- Minetest style supports all texturepacks (as long torch shaped)

211
init.lua
View File

@ -1,201 +1,12 @@
-- Reduce particles send to client if on Server torches = {}
local SERVER = minetest.is_singleplayer() or false torches.enable_ceiling = minetest.setting_getbool("torches_enable_ceiling") or false
SERVER = not SERVER local style = minetest.setting_get("torches_style")
local dur = 2
if SERVER then local modpath = minetest.get_modpath("torches")
dur = 9 -- lowering sends more pakets to clients and let flames faster disappear (not recommended)
-- load torch definition depending on stlye
if style == "minecraft" then
dofile(modpath.."/mc_style.lua")
else
dofile(modpath.."/mt_style.lua")
end end
local VIEW_DISTANCE = 13 -- from what distance (in nodes) flames are send to player/client
-- constants
local rotat = {"I", "FX"}
local particle_def = {
pos = {x = 0, y = 0, z = 0},
velocity = { x= 0, y = 0, z = 0},
acceleration = {x = 0, y = 0, z = 0},
expirationtime = 1,
size = 3.0,
collisiondetection = true,
vertical = false,
texture = "torches_fire_1.png",
}
-- fire particles (flames)
local function add_fire(pos, duration, offset)
if offset then
pos.x = pos.x + offset.x
pos.z = pos.z + offset.z
end
pos.y = pos.y + 0.19
particle_def.pos = pos
particle_def.expirationtime = duration
particle_def.texture = "torches_fire"..tostring(math.random(1, 2)) ..".png^[transform"..rotat[math.random(1,2)]
minetest.add_particle(particle_def)
pos.y = pos.y + 0.01
particle_def.pos = pos
particle_def.texture = "torches_fire"..tostring(math.random(1, 2)) ..".png^[transform"..rotat[math.random(1,2)]
minetest.add_particle(particle_def)
end
-- helper functions
local function player_near(pos)
for _,object in ipairs(minetest.get_objects_inside_radius(pos, VIEW_DISTANCE)) do
if object:is_player() then
return true
end
end
return false
end
local function get_offset(wdir)
local z = 0
local x = 0
if wdir == 4 then
z = 0.15
elseif wdir == 2 then
x = 0.15
elseif wdir == 5 then
z = -0.15
elseif wdir == 3 then
x = -0.15
end
return {x = x, y = -0.06, z = z}
end
-- abms for flames
minetest.register_abm({
nodenames = {"torches:wand"},
interval = dur - 1,
chance = 1,
action = function(pos)
if player_near(pos) then
local n = minetest.get_node_or_nil(pos)
local dir = {x = 0, y = 0, z = 0}
if n and n.param2 then
dir = get_offset(n.param2)
end
add_fire(pos, dur - .9, dir)
end
end
})
minetest.register_abm({
nodenames = {"torches:floor"},
interval = dur - 1,
chance = 1,
action = function(pos)
if player_near(pos) then
add_fire(pos, dur - .9)
end
end
})
-- convert old torches and remove ceiling placed
minetest.register_abm({
nodenames = {"default:torch"},
interval = 1,
chance = 1,
action = function(pos)
local n = minetest.get_node(pos)
local def = minetest.registered_nodes[n.name]
if n and def then
local wdir = n.param2
if wdir == 0 then
minetest.remove_node(pos)
elseif wdir == 1 then
minetest.set_node(pos, {name = "torches:floor", param2 = wdir})
else
minetest.set_node(pos, {name = "torches:wall", param2 = wdir})
end
end
end
})
-- Item definitions
minetest.register_craftitem(":default:torch", {
description = "Torch",
inventory_image = "torches_torch.png^[transformR90",
wield_image = "torches_torch.png^[transformR90",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
liquids_pointable = false,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
local above = pointed_thing.above
local under = pointed_thing.under
local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z})
local fakestack = itemstack
local retval = false
if wdir < 1 then
return itemstack
elseif wdir == 1 then
retval = fakestack:set_name("torches:floor")
else
retval = fakestack:set_name("torches:wall")
end
if not retval then
return itemstack
end
itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, wdir)
itemstack:set_name("default:torch")
-- add flame if placing was sucessfull
if retval then
-- expect node switch one sever step (default 0.1) delayed
minetest.after(0.1, add_fire, above, dur, get_offset(wdir))
end
return itemstack
end
})
minetest.register_node("torches:floor", {
inventory_image = "default_torch.png",
wield_image = "torches_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 2/16},
drawtype = "mesh",
mesh = "torch_floor.obj",
tiles = {"torches_torch.png"},
paramtype = "light",
paramtype2 = "none",
sunlight_propagates = true,
drop = "default:torch",
walkable = false,
light_source = 13,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
legacy_wallmounted = true,
selection_box = {
type = "fixed",
fixed = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16},
},
})
minetest.register_node("torches:wall", {
inventory_image = "default_torch.png",
wield_image = "torches_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
drawtype = "mesh",
mesh = "torch_wall.obj",
tiles = {"torches_torch.png"},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 13,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1},
wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1},
wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1},
},
})
minetest.register_alias("torches:wand", "torches:wall")

202
mc_style.lua Normal file
View File

@ -0,0 +1,202 @@
-- Reduce particles send to client if on Server
local SERVER = minetest.is_singleplayer() or false
SERVER = not SERVER
local dur = 2
if SERVER then
dur = 9 -- lowering sends more pakets to clients and let flames faster disappear (not recommended)
end
local VIEW_DISTANCE = 13 -- from what distance (in nodes) flames are send to player/client
-- constants
local rotat = {"I", "FX"}
local particle_def = {
pos = {x = 0, y = 0, z = 0},
velocity = { x= 0, y = 0, z = 0},
acceleration = {x = 0, y = 0, z = 0},
expirationtime = 1,
size = 3.0,
collisiondetection = true,
vertical = false,
texture = "torches_fire_1.png",
}
-- fire particles (flames)
local function add_fire(pos, duration, offset)
if offset then
pos.x = pos.x + offset.x
pos.z = pos.z + offset.z
pos.y = pos.y + offset.y
end
pos.y = pos.y + 0.19
particle_def.pos = pos
particle_def.expirationtime = duration
particle_def.texture = "torches_fire"..tostring(math.random(1, 2)) ..".png^[transform"..rotat[math.random(1,2)]
minetest.add_particle(particle_def)
pos.y = pos.y + 0.01
particle_def.pos = pos
particle_def.texture = "torches_fire"..tostring(math.random(1, 2)) ..".png^[transform"..rotat[math.random(1,2)]
minetest.add_particle(particle_def)
end
-- helper functions
local function player_near(pos)
for _,object in ipairs(minetest.get_objects_inside_radius(pos, VIEW_DISTANCE)) do
if object:is_player() then
return true
end
end
return false
end
local function get_offset(wdir)
local z = 0
local x = 0
if wdir == 4 then
z = 0.25
elseif wdir == 2 then
x = 0.25
elseif wdir == 5 then
z = -0.25
elseif wdir == 3 then
x = -0.25
end
return {x = x, y = 0.08, z = z}
end
-- abms for flames
minetest.register_abm({
nodenames = {"torches:wand"},
interval = dur - 1,
chance = 1,
action = function(pos)
if player_near(pos) then
local n = minetest.get_node_or_nil(pos)
local dir = {x = 0, y = 0, z = 0}
if n and n.param2 then
dir = get_offset(n.param2)
end
add_fire(pos, dur - .9, dir)
end
end
})
minetest.register_abm({
nodenames = {"torches:floor"},
interval = dur - 1,
chance = 1,
action = function(pos)
if player_near(pos) then
add_fire(pos, dur - .9)
end
end
})
-- convert old torches and remove ceiling placed
minetest.register_abm({
nodenames = {"default:torch"},
interval = 1,
chance = 1,
action = function(pos)
local n = minetest.get_node(pos)
local def = minetest.registered_nodes[n.name]
if n and def then
local wdir = n.param2
if wdir == 0 then
minetest.remove_node(pos)
elseif wdir == 1 then
minetest.set_node(pos, {name = "torches:floor", param2 = wdir})
else
minetest.set_node(pos, {name = "torches:wall", param2 = wdir})
end
end
end
})
-- Item definitions
minetest.register_craftitem(":default:torch", {
description = "Torch",
inventory_image = "torches_torch.png",
wield_image = "torches_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
liquids_pointable = false,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
local above = pointed_thing.above
local under = pointed_thing.under
local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z})
local fakestack = itemstack
local retval = false
if wdir < 1 then
return itemstack
elseif wdir == 1 then
retval = fakestack:set_name("torches:floor")
else
retval = fakestack:set_name("torches:wall")
end
if not retval then
return itemstack
end
itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, wdir)
itemstack:set_name("default:torch")
-- add flame if placing was sucessfull
if retval then
-- expect node switch one sever step (default 0.1) delayed
minetest.after(0.1, add_fire, above, dur, get_offset(wdir))
end
return itemstack
end
})
minetest.register_node("torches:floor", {
inventory_image = "default_torch.png",
wield_image = "torches_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 2/16},
drawtype = "mesh",
mesh = "torch_floor.obj",
tiles = {"torches_torch.png"},
paramtype = "light",
paramtype2 = "none",
sunlight_propagates = true,
drop = "default:torch",
walkable = false,
light_source = 13,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
legacy_wallmounted = true,
selection_box = {
type = "fixed",
fixed = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16},
},
})
minetest.register_node("torches:wall", {
inventory_image = "default_torch.png",
wield_image = "torches_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
drawtype = "mesh",
mesh = "torch_wall.obj",
tiles = {"torches_torch.png"},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 13,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1},
wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1},
wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1},
},
})
minetest.register_alias("torches:wand", "torches:wall")

View File

@ -1,71 +1,48 @@
# Blender v2.73 (sub 0) OBJ File: '' # Blender v2.73 (sub 0) OBJ File: 'mt_torch_full_vertices3.blend'
# www.blender.org # www.blender.org
mtllib torch_floor.mtl mtllib mt_torch_full_vertices3.mtl
o torch_floor o Cube_Cube.001
v -0.060303 -0.491509 0.061268 v 0.061653 -0.496733 0.061674
v -0.060303 -0.491509 -0.063732 v 0.061653 -0.496733 -0.062460
v 0.064697 -0.491509 -0.063732 v -0.059258 -0.496733 0.061674
v 0.064697 -0.491509 0.061268 v -0.059258 -0.496733 -0.062460
v 0.064697 0.133491 0.061268 v -0.059994 -0.497234 0.497315
v -0.060303 0.133491 0.061268 v -0.059994 -0.497234 -0.498102
v 0.064697 0.133491 -0.063732 v -0.059994 0.507706 -0.498102
v -0.060303 0.133491 -0.063732 v -0.059994 0.507706 0.497315
v -0.060303 0.133491 0.061268 v -0.494900 0.507706 0.061709
v -0.060303 -0.491509 0.061268 v -0.494900 -0.497234 0.061709
v -0.060303 -0.491509 -0.063732 v 0.497295 0.507706 0.061709
v -0.060303 0.133491 -0.063732 v 0.497295 -0.497234 0.061709
v 0.064697 -0.491509 -0.063732 v 0.062686 0.507706 -0.498102
v 0.064697 0.133491 -0.063732 v 0.062686 -0.497234 -0.498102
v 0.064697 -0.491509 0.061268 v 0.062686 0.507706 0.497315
v 0.064697 0.133491 0.061268 v 0.062686 -0.497234 0.497315
vt 0.622957 0.249888 v -0.494900 0.507706 -0.063149
vt 0.622957 0.125460 v -0.494900 -0.497234 -0.063149
vt 0.747385 0.125460 v 0.497295 0.507706 -0.063149
vt 0.747385 0.249888 v 0.497295 -0.497234 -0.063149
vt 0.001430 0.562335 v -0.058217 0.134520 0.060216
vt 0.001430 0.437907 v -0.058217 0.135872 -0.061813
vt 0.623570 0.437907 v 0.061944 0.135872 -0.061813
vt 0.623570 0.562335 v 0.061944 0.134520 0.060216
vt 0.622412 0.125460 vt 0.000000 1.000000
vt 0.622412 0.249888 vt 1.000000 1.000000
vt 0.000273 0.249889 vt 1.000000 0.000000
vt 0.000272 0.125460 vt 0.000000 0.000000
vt 0.001430 0.562228 vt 0.437500 0.500000
vt 0.001430 0.437799 vt 0.562500 0.500000
vt 0.623570 0.437799 vt 0.562500 0.625000
vt 0.623570 0.562228 vt 0.437541 0.625000
vt 0.623570 0.562361 vt 0.437541 0.000000
vt 0.001430 0.562362 vt 0.562500 0.000000
vt 0.623548 0.562415 vt 0.562500 0.125000
vt 0.001452 0.437772 vt 0.437500 0.125000
vt 0.623591 0.437987 usemtl None
vt 0.622412 0.874755
vt 0.000272 0.874755
vt 0.000272 0.750327
vt 0.622412 0.750326
vt 0.747385 0.499835
vt 0.622957 0.499835
vt 0.622957 0.375407
vt 0.747385 0.375407
vt 0.624714 0.562308
vt 0.500286 0.562308
vt 0.500286 0.437880
vt 0.624714 0.437880
vt 0.747385 0.374861
vt 0.622957 0.374861
vt 0.622957 0.250433
vt 0.747385 0.250433
usemtl None.001
s off s off
f 1/1 2/2 3/3 4/4 f 11/1 9/2 10/3 12/4
f 1/5 4/6 5/7 6/8 f 22/5 21/6 24/7 23/8
f 7/9 5/10 4/11 3/12 f 17/2 19/1 20/4 18/3
f 2/13 1/14 6/15 8/16 f 13/2 15/1 16/4 14/3
f 8/7 7/17 3/18 2/6 f 3/9 4/10 2/11 1/12
f 9/19 10/13 11/20 12/21 f 8/1 7/2 6/3 5/4
f 12/22 11/23 13/24 14/25
f 14/8 13/5 15/6 16/7
f 16/8 15/5 10/6 9/7
f 10/26 15/27 13/28 11/29
f 16/30 9/31 12/32 14/33
f 5/34 7/35 8/36 6/37

View File

@ -1,71 +1,48 @@
# Blender v2.73 (sub 0) OBJ File: '' # Blender v2.73 (sub 0) OBJ File: 'mt_torch_full_vertices3.blend'
# www.blender.org # www.blender.org
mtllib torch_wall.mtl mtllib torch_wall4.mtl
o torch_wall o Cube_Cube.001
v 0.061088 -0.475096 -0.371119 v 0.061653 -0.554493 -0.328908
v 0.061088 -0.571653 -0.291735 v 0.061653 -0.442208 -0.381835
v -0.063912 -0.571653 -0.291735 v -0.059258 -0.554493 -0.328908
v -0.063912 -0.475096 -0.371119 v -0.059258 -0.442208 -0.381835
v -0.063913 -0.078178 0.111667 v -0.059994 -0.948766 -0.143618
v 0.061087 -0.078178 0.111667 v -0.059994 -0.048361 -0.568031
v -0.063913 -0.174736 0.191050 v -0.059994 0.380112 0.340988
v 0.061087 -0.174736 0.191050 v -0.059994 -0.520293 0.765401
v 0.061087 -0.078178 0.111667 v -0.494900 -0.126265 0.579672
v 0.061088 -0.475096 -0.371119 v -0.494900 -0.554738 -0.329346
v 0.061088 -0.571653 -0.291735 v 0.497295 -0.126265 0.579672
v 0.061087 -0.174736 0.191050 v 0.497295 -0.554738 -0.329346
v -0.063912 -0.571653 -0.291735 v 0.062686 0.380112 0.340988
v -0.063913 -0.174736 0.191050 v 0.062686 -0.048361 -0.568031
v -0.063912 -0.475096 -0.371119 v 0.062686 -0.520293 0.765401
v -0.063913 -0.078178 0.111667 v 0.062686 -0.948766 -0.143618
vt 0.622957 0.249888 v -0.494900 -0.013324 0.526437
vt 0.622957 0.125460 v -0.494900 -0.441797 -0.382582
vt 0.747385 0.125460 v 0.497295 -0.013324 0.526437
vt 0.747385 0.249888 v 0.497295 -0.441797 -0.382582
vt 0.001430 0.562335 v -0.058217 -0.284029 0.241470
vt 0.001430 0.437907 v -0.058217 -0.173071 0.190665
vt 0.623570 0.437907 v 0.061944 -0.173071 0.190665
vt 0.623570 0.562335 v 0.061944 -0.284029 0.241470
vt 0.622412 0.125460 vt 0.000000 1.000000
vt 0.622412 0.249888 vt 1.000000 1.000000
vt 0.000273 0.249889 vt 1.000000 0.000000
vt 0.000272 0.125460 vt 0.000000 0.000000
vt 0.001430 0.562228 vt 0.437500 0.500000
vt 0.001430 0.437799 vt 0.562500 0.500000
vt 0.623570 0.437799 vt 0.562500 0.625000
vt 0.623570 0.562228 vt 0.437541 0.625000
vt 0.623570 0.562361 vt 0.437541 0.000000
vt 0.001430 0.562362 vt 0.562500 0.000000
vt 0.623548 0.562415 vt 0.562500 0.125000
vt 0.001452 0.437772 vt 0.437500 0.125000
vt 0.623591 0.437987
vt 0.622412 0.874755
vt 0.000272 0.874755
vt 0.000272 0.750327
vt 0.622412 0.750326
vt 0.747385 0.499835
vt 0.622957 0.499835
vt 0.622957 0.375407
vt 0.747385 0.375407
vt 0.624714 0.562308
vt 0.500286 0.562308
vt 0.500286 0.437880
vt 0.624714 0.437880
vt 0.747385 0.374861
vt 0.622957 0.374861
vt 0.622957 0.250433
vt 0.747385 0.250433
usemtl None usemtl None
s off s off
f 1/1 2/2 3/3 4/4 f 11/1 9/2 10/3 12/4
f 1/5 4/6 5/7 6/8 f 22/5 21/6 24/7 23/8
f 7/9 5/10 4/11 3/12 f 17/2 19/1 20/4 18/3
f 2/13 1/14 6/15 8/16 f 13/2 15/1 16/4 14/3
f 8/7 7/17 3/18 2/6 f 3/9 4/10 2/11 1/12
f 9/19 10/13 11/20 12/21 f 8/1 7/2 6/3 5/4
f 12/22 11/23 13/24 14/25
f 14/8 13/5 15/6 16/7
f 16/8 15/5 10/6 9/7
f 10/26 15/27 13/28 11/29
f 16/30 9/31 12/32 14/33
f 5/34 7/35 8/36 6/37

105
mt_style.lua Normal file
View File

@ -0,0 +1,105 @@
minetest.register_craftitem(":default:torch", {
description = "Torch",
inventory_image = "default_torch_on_floor.png",
wield_image = "default_torch_on_floor.png",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
liquids_pointable = false,
on_place = function(itemstack, placer, pointed_thing)
local above = pointed_thing.above
local under = pointed_thing.under
local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z})
if wdir < 1 and not torches.enable_ceiling then
return itemstack
end
local fakestack = itemstack
local retval = false
if wdir <= 1 then
retval = fakestack:set_name("torches:floor")
else
retval = fakestack:set_name("torches:wall")
end
if not retval then
return itemstack
end
itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, dir)
itemstack:set_name("default:torch")
return itemstack
end
})
minetest.register_node("torches:floor", {
description = "Torch",
inventory_image = "default_torch.png",
wield_image = "default_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
drawtype = "mesh",
mesh = "torch_floor.obj",
tiles = {
{
name = "default_torch_on_floor_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
}
},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 13,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_top = {-1/16, -2/16, -1/16, 1/16, 0.5, 1/16},
wall_bottom = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16},
},
})
minetest.register_node("torches:wall", {
inventory_image = "default_torch.png",
wield_image = "default_torch.png",
wield_scale = {x = 1, y = 1, z = 1 + 1/16},
drawtype = "mesh",
mesh = "torch_wall.obj",
tiles = {
{
name = "default_torch_on_floor_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
}
},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 13,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1},
wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1},
wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1},
},
})
-- convert old torches and remove ceiling placed
minetest.register_abm({
nodenames = {"default:torch"},
interval = 1,
chance = 1,
action = function(pos)
local n = minetest.get_node(pos)
local def = minetest.registered_nodes[n.name]
if n and def then
local wdir = n.param2
local node_name = "torches:wall"
if wdir < 1 and not torches.enable_ceiling then
minetest.remove_node(pos)
return
elseif wdir <= 1 then
node_name = "torches:floor"
end
minetest.set_node(pos, {name = node_name, param2 = wdir})
end
end
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 219 B