Merge branch 'lever'

Wuzzy 2018-01-08 21:00:36 +01:00
commit 71e663efe6
19 changed files with 308 additions and 593 deletions

@ -50,6 +50,7 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
* `destroys_items=1`: If an item happens to be *inside* this node, the item will be destroyed * `destroys_items=1`: If an item happens to be *inside* this node, the item will be destroyed
* `no_eat_delay=1`: Only for foodstuffs. When eating this, all eating delays are ignored. * `no_eat_delay=1`: Only for foodstuffs. When eating this, all eating delays are ignored.
* `can_eat_when_full=1`: Only for foodstuffs. This item can be eaten when the user has a full hunger bar * `can_eat_when_full=1`: Only for foodstuffs. This item can be eaten when the user has a full hunger bar
* `attached_node_facedir=1`: Like `attached_node`, but for facedir nodes
* `cauldron`: Cauldron. 1: Empty. 2-4: Water height * `cauldron`: Cauldron. 1: Empty. 2-4: Water height
#### Footnotes #### Footnotes

@ -0,0 +1 @@
Adds additional ways for nodes to be attached.

@ -0,0 +1,24 @@
local original_function = minetest.check_single_for_falling
minetest.check_single_for_falling = function(pos)
local ret_o = original_function(pos)
local ret = false
local node = minetest.get_node(pos)
if minetest.get_item_group(node.name, "attached_node_facedir") ~= 0 then
local dir = minetest.facedir_to_dir(node.param2)
local cpos = vector.add(pos, dir)
local cnode = minetest.get_node(cpos)
if minetest.get_item_group(cnode.name, "solid") == 0 then
minetest.remove_node(pos)
local drops = minetest.get_node_drops(node.name, "")
for dr=1, #drops do
minetest.add_item(pos, drops[dr])
end
ret = true
end
end
return ret_o or ret
end

@ -1,90 +1,153 @@
-- WALL LEVER local lever_get_output_rules = function(node)
-- Basically a switch that can be attached to a wall local rules = {
-- Powers the block 2 nodes behind (using a receiver) {x = -1, y = 0, z = 0},
{x = 1, y = 0, z = 0},
{x = 0, y = 0, z = -1},
{x = 0, y = 0, z = 1},
{x = 0, y = -1, z = 0},
{x = 0, y = 1, z = 0},
}
local dir = minetest.facedir_to_dir(node.param2)
dir = vector.multiply(dir, 2)
table.insert(rules, dir)
return rules
end
-- LEVER
minetest.register_node("mesecons_walllever:wall_lever_off", { minetest.register_node("mesecons_walllever:wall_lever_off", {
drawtype = "nodebox", drawtype = "mesh",
tiles = { tiles = {
"jeija_wall_lever_tb.png", "jeija_wall_lever_lever_light_on.png",
"jeija_wall_lever_bottom.png",
"jeija_wall_lever_sides.png",
"jeija_wall_lever_sides.png",
"jeija_wall_lever_back.png",
"jeija_wall_lever_off.png",
}, },
inventory_image = "jeija_wall_lever.png", inventory_image = "jeija_wall_lever.png",
wield_image = "jeija_wall_lever.png", wield_image = "jeija_wall_lever.png",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
drawtype = "mesh",
mesh = "jeija_wall_lever_off.obj",
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {{ -2/16, -3/16, 8/16, 2/16, 3/16, 4/16 }, fixed = { -3/16, -4/16, 2/16, 3/16, 4/16, 8/16 },
{ -1/16, -8/16, 7/16, 1/16, 0/16, 5/16 }},
}, },
node_box = { groups = {handy=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1},
type = "fixed",
fixed = {{ -2/16, -3/16, 8/16, 2/16, 3/16, 4/16 }, -- the base
{ -1/16, -8/16, 7/16, 1/16, 0/16, 5/16 }} -- the lever itself.
},
groups = {handy=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1},
is_ground_content = false, is_ground_content = false,
description="Lever", description="Lever",
_doc_items_longdesc = "A lever is a redstone component which can be flipped on and off. It supplies redstone power to the blocks behind while it is in the “on” state.", _doc_items_longdesc = "A lever is a redstone component which can be flipped on and off. It supplies redstone power to the blocks behind while it is in the “on” state.",
_doc_items_usagehelp = "Right-click the lever to flip it on or off.", _doc_items_usagehelp = "Right-click the lever to flip it on or off.",
on_rightclick = function (pos, node) on_rightclick = function (pos, node)
minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_on", param2=node.param2}) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_on", param2=node.param2})
mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node)) mesecon.receptor_on(pos, lever_get_output_rules(node))
minetest.sound_play("mesecons_lever", {pos=pos}) minetest.sound_play("mesecons_lever", {pos=pos})
end, end,
sounds = mcl_sounds.node_sound_wood_defaults(), node_placement_prediction = "",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
-- no interaction possible with entities
return itemstack
end
local under = pointed_thing.under
local node = minetest.get_node(under)
local def = minetest.registered_nodes[node.name]
if not def then return end
local groups = def.groups
-- Check special rightclick action of pointed node
if def and def.on_rightclick then
if not placer:get_player_control().sneak then
return def.on_rightclick(under, node, placer, itemstack,
pointed_thing) or itemstack, false
end
end
-- If the pointed node is buildable, let's look at the node *behind* that node
if def.buildable_to then
local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
local actual = vector.subtract(under, dir)
local actualnode = minetest.get_node(actual)
def = minetest.registered_nodes[actualnode.name]
groups = def.groups
end
-- Only allow placement on full-cube solid opaque nodes
if (not groups) or (not groups.solid) or (not groups.opaque) or (def.node_box and def.node_box.type ~= "regular") then
return itemstack
end
local above = pointed_thing.above
local dir = vector.subtract(under, above)
local tau = math.pi*2
local wdir = minetest.dir_to_facedir(dir, true)
if dir.y ~= 0 then
local yaw = placer:get_look_horizontal()
if (yaw > tau/8 and yaw < (tau/8)*3) or (yaw < (tau/8)*7 and yaw > (tau/8)*5) then
if dir.y == -1 then
wdir = 13
else
wdir = 15
end
else
if dir.y == -1 then
wdir = 10
else
wdir = 8
end
end
end
local idef = itemstack:get_definition()
local itemstack, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir)
if success then
if idef.sounds and idef.sounds.place then
minetest.sound_play(idef.sounds.place, {pos=above, gain=1})
end
end
return itemstack
end,
sounds = mcl_sounds.node_sound_stone_defaults(),
mesecons = {receptor = { mesecons = {receptor = {
rules = mesecon.rules.buttonlike_get, rules = lever_get_output_rules,
state = mesecon.state.off state = mesecon.state.off
}}, }},
on_rotate = false,
_mcl_blast_resistance = 2.5, _mcl_blast_resistance = 2.5,
_mcl_hardness = 0.5, _mcl_hardness = 0.5,
}) })
minetest.register_node("mesecons_walllever:wall_lever_on", { minetest.register_node("mesecons_walllever:wall_lever_on", {
drawtype = "nodebox", drawtype = "mesh",
tiles = { tiles = {
"jeija_wall_lever_top.png", "jeija_wall_lever_lever_light_on.png",
"jeija_wall_lever_tb.png",
"jeija_wall_lever_sides.png",
"jeija_wall_lever_sides.png",
"jeija_wall_lever_back.png",
"jeija_wall_lever_on.png",
}, },
inventory_image = "jeija_wall_lever.png", inventory_image = "jeija_wall_lever.png",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
mesh = "jeija_wall_lever_on.obj",
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {{ -2/16, -3/16, 8/16, 2/16, 3/16, 4/16 }, fixed = { -3/16, -4/16, 2/16, 3/16, 4/16, 8/16 },
{ -1/16, 0, 7/16, 1/16, 8/16, 5/16 }},
}, },
node_box = { groups = {handy=1, not_in_creative_inventory = 1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1},
type = "fixed",
fixed = {{ -2/16, -3/16, 8/16, 2/16, 3/16, 4/16 }, -- the base
{ -1/16, 0/16, 7/16, 1/16, 8/16, 5/16 }} -- the lever itself.
},
groups = {handy=1, not_in_creative_inventory = 1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1},
is_ground_content = false, is_ground_content = false,
drop = '"mesecons_walllever:wall_lever_off" 1', drop = '"mesecons_walllever:wall_lever_off" 1',
description="Lever", description="Lever",
_doc_items_create_entry = false, _doc_items_create_entry = false,
on_rightclick = function (pos, node) on_rightclick = function (pos, node)
minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_off", param2=node.param2}) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_off", param2=node.param2})
mesecon.receptor_off(pos, mesecon.rules.buttonlike_get(node)) mesecon.receptor_off(pos, lever_get_output_rules(node))
minetest.sound_play("mesecons_lever", {pos=pos}) minetest.sound_play("mesecons_lever", {pos=pos})
end, end,
sounds = mcl_sounds.node_sound_wood_defaults(), sounds = mcl_sounds.node_sound_stone_defaults(),
mesecons = {receptor = { mesecons = {receptor = {
rules = mesecon.rules.buttonlike_get, rules = lever_get_output_rules,
state = mesecon.state.on state = mesecon.state.on
}}, }},
on_rotate = false,
_mcl_blast_resistance = 2.5, _mcl_blast_resistance = 2.5,
_mcl_hardness = 0.5, _mcl_hardness = 0.5,
}) })

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

@ -0,0 +1,88 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib jeija_wall_lever_off.mtl
o nodebox1.009
v -0.070437 0.138562 0.459573
v -0.070383 0.058650 0.407149
v -0.070618 0.289563 0.117785
v -0.070672 0.369475 0.170211
v 0.054549 0.139792 0.459559
v 0.054604 0.059883 0.407135
v 0.054369 0.290797 0.117772
v 0.054313 0.370707 0.170196
vt 0.062500 0.562500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.125000 0.562500
vt 0.187500 0.562500
vt 0.250000 0.562500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.125000 0.562500
vt 0.062500 0.562500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.250000 0.562500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.187500 0.562500
vt 0.625000 0.875000
vt 0.562500 0.875000
vt 0.562500 0.937500
vt 0.625000 0.937500
vn -1.0000 -0.0008 0.0002
vn 1.0000 0.0008 -0.0002
vn -0.0076 0.7816 0.6237
vn 0.0076 -0.7816 -0.6237
vn -0.0055 0.5485 -0.8361
usemtl none.009
s off
f 1/1/1 4/2/1 3/3/1 2/4/1
f 5/5/2 6/6/2 7/7/2 8/8/2
f 1/9/3 5/10/3 8/11/3 4/12/3
f 2/13/4 3/14/4 7/15/4 6/16/4
f 4/17/5 8/18/5 7/19/5 3/20/5
o nodebox1.008
v -0.170183 0.248882 0.492124
v -0.161792 -0.249536 0.496140
v -0.161781 -0.250523 0.373114
v -0.170172 0.247894 0.369098
v 0.161753 0.245254 0.492135
v 0.170145 -0.253163 0.496151
v 0.170155 -0.254151 0.373125
v 0.161764 0.244266 0.369109
vt 0.500000 0.203100
vt 0.500000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.203100
vt 0.500000 0.203100
vt 0.000000 0.203100
vt 0.000000 0.000000
vt 0.500000 0.000000
vt 0.000000 0.203100
vt 0.000100 0.000100
vt 0.500000 0.000000
vt 0.500000 0.203100
vt 0.000000 0.203100
vt 0.000000 -0.000000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 0.500000 -0.000000
vt 0.500000 0.500000
vt -0.000000 0.500000
vt 0.500000 0.500000
vt 0.500000 -0.000000
vn -0.9999 -0.0168 0.0000
vn 0.9999 0.0168 -0.0000
vn 0.0109 0.9999 -0.0080
vn -0.0109 -0.9999 0.0080
vn 0.0001 0.0081 1.0000
vn -0.0001 -0.0081 -1.0000
usemtl none.008
s off
f 9/21/6 12/22/6 11/23/6 10/24/6
f 13/25/7 14/26/7 15/27/7 16/28/7
f 9/29/8 13/25/8 16/28/8 12/30/8
f 10/31/9 11/32/9 15/33/9 14/34/9
f 9/35/10 10/36/10 14/37/10 13/38/10
f 12/39/11 16/40/11 15/41/11 11/23/11

@ -0,0 +1,88 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib jeija_wall_lever_on.mtl
o nodebox1.011
v -0.170183 0.248540 0.492297
v -0.161792 -0.249880 0.495967
v -0.161781 -0.250782 0.372940
v -0.170172 0.247638 0.369270
v 0.161753 0.244912 0.492305
v 0.170145 -0.253508 0.495975
v 0.170155 -0.254410 0.372949
v 0.161764 0.244010 0.369279
vt 0.500000 0.203100
vt 0.500000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.203100
vt 0.500000 0.203100
vt 0.000000 0.203100
vt 0.000000 0.000000
vt 0.500000 0.000000
vt 0.000000 0.203100
vt 0.000100 0.000100
vt 0.500000 0.000000
vt 0.500000 0.203100
vt 0.000000 0.203100
vt 0.000000 -0.000000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 0.500000 -0.000000
vt 0.500000 0.500000
vt -0.000000 0.500000
vt 0.500000 0.500000
vt 0.500000 -0.000000
vn -0.9999 -0.0168 0.0000
vn 0.9999 0.0168 -0.0000
vn 0.0109 0.9999 -0.0073
vn -0.0109 -0.9999 0.0073
vn 0.0001 0.0074 1.0000
vn -0.0001 -0.0074 -1.0000
usemtl none.011
s off
f 1/1/1 4/2/1 3/3/1 2/4/1
f 5/5/2 6/6/2 7/7/2 8/8/2
f 1/9/3 5/5/3 8/8/3 4/10/3
f 2/11/4 3/12/4 7/13/4 6/14/4
f 1/15/5 2/16/5 6/17/5 5/18/5
f 4/19/6 8/20/6 7/21/6 3/3/6
o nodebox1.010
v 0.070437 -0.138656 0.459545
v 0.070383 -0.058733 0.407137
v -0.054604 -0.059966 0.407123
v -0.054549 -0.139886 0.459530
v 0.070618 -0.289587 0.117726
v 0.070672 -0.369510 0.170135
v -0.054369 -0.290821 0.117712
v -0.054313 -0.370742 0.170120
vt 0.062500 0.562500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.125000 0.562500
vt 0.187500 0.562500
vt 0.250000 0.562500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.125000 0.562500
vt 0.062500 0.562500
vt 0.062500 0.875000
vt 0.125000 0.875000
vt 0.250000 0.562500
vt 0.250000 0.875000
vt 0.187500 0.875000
vt 0.187500 0.562500
vt 0.625000 0.875000
vt 0.562500 0.875000
vt 0.562500 0.937500
vt 0.625000 0.937500
vn 1.0000 0.0008 0.0002
vn -1.0000 -0.0008 -0.0002
vn 0.0076 -0.7817 0.6236
vn -0.0076 0.7817 -0.6236
vn 0.0055 -0.5484 -0.8362
usemtl none.010
s off
f 9/22/7 14/23/7 13/24/7 10/25/7
f 12/26/8 11/27/8 15/28/8 16/29/8
f 9/30/9 12/31/9 16/32/9 14/33/9
f 10/34/10 13/35/10 15/36/10 11/37/10
f 14/38/11 16/39/11 15/40/11 13/41/11

@ -1,244 +0,0 @@
xof 0302txt 0064
// File created by CINEMA 4D
template Header {
<3D82AB43-62DA-11cf-AB39-0020AF71E433>
SWORD major;
SWORD minor;
DWORD flags;
}
template Vector {
<3D82AB5E-62DA-11cf-AB39-0020AF71E433>
FLOAT x;
FLOAT y;
FLOAT z;
}
template Coords2d {
<F6F23F44-7686-11cf-8F52-0040333594A3>
FLOAT u;
FLOAT v;
}
template Matrix4x4 {
<F6F23F45-7686-11cf-8F52-0040333594A3>
array FLOAT matrix[16];
}
template ColorRGBA {
<35FF44E0-6C7C-11cf-8F52-0040333594A3>
FLOAT red;
FLOAT green;
FLOAT blue;
FLOAT alpha;
}
template ColorRGB {
<D3E16E81-7835-11cf-8F52-0040333594A3>
FLOAT red;
FLOAT green;
FLOAT blue;
}
template IndexedColor {
<1630B820-7842-11cf-8F52-0040333594A3>
DWORD index;
ColorRGBA indexColor;
}
template Boolean {
<4885AE61-78E8-11cf-8F52-0040333594A3>
SWORD truefalse;
}
template Boolean2d {
<4885AE63-78E8-11cf-8F52-0040333594A3>
Boolean u;
Boolean v;
}
template MaterialWrap {
<4885AE60-78E8-11cf-8F52-0040333594A3>
Boolean u;
Boolean v;
}
template TextureFilename {
<A42790E1-7810-11cf-8F52-0040333594A3>
STRING filename;
}
template Material {
<3D82AB4D-62DA-11cf-AB39-0020AF71E433>
ColorRGBA faceColor;
FLOAT power;
ColorRGB specularColor;
ColorRGB emissiveColor;
[...]
}
template MeshFace {
<3D82AB5F-62DA-11cf-AB39-0020AF71E433>
DWORD nFaceVertexIndices;
array DWORD faceVertexIndices[nFaceVertexIndices];
}
template MeshFaceWraps {
<4885AE62-78E8-11cf-8F52-0040333594A3>
DWORD nFaceWrapValues;
Boolean2d faceWrapValues;
}
template MeshTextureCoords {
<F6F23F40-7686-11cf-8F52-0040333594A3>
DWORD nTextureCoords;
array Coords2d textureCoords[nTextureCoords];
}
template MeshMaterialList {
<F6F23F42-7686-11cf-8F52-0040333594A3>
DWORD nMaterials;
DWORD nFaceIndexes;
array DWORD faceIndexes[nFaceIndexes];
[Material]
}
template MeshNormals {
<F6F23F43-7686-11cf-8F52-0040333594A3>
DWORD nNormals;
array Vector normals[nNormals];
DWORD nFaceNormals;
array MeshFace faceNormals[nFaceNormals];
}
template MeshVertexColors {
<1630B821-7842-11cf-8F52-0040333594A3>
DWORD nVertexColors;
array IndexedColor vertexColors[nVertexColors];
}
template Mesh {
<3D82AB44-62DA-11cf-AB39-0020AF71E433>
DWORD nVertices;
array Vector vertices[nVertices];
DWORD nFaces;
array MeshFace faces[nFaces];
[...]
}
template FrameTransformMatrix {
<F6F23F41-7686-11cf-8F52-0040333594A3>
Matrix4x4 frameMatrix;
}
template Frame {
<3D82AB46-62DA-11cf-AB39-0020AF71E433>
[...]
}
Header {
1;
0;
1;
}
Mesh CINEMA4D_Mesh {
16;
// Lever1
-4.481;-4.311;-6.25;,
-44.655;43.567;-6.25;,
5.095;3.724;-6.25;,
-35.079;51.602;-6.25;,
5.095;3.724;6.25;,
-35.079;51.602;6.25;,
-4.481;-4.311;6.25;,
-44.655;43.567;6.25;,
// Lever_Hold
-25.0;-9.375;-18.75;,
-25.0;9.375;-18.75;,
25.0;-9.375;-18.75;,
25.0;9.375;-18.75;,
25.0;-9.375;18.75;,
25.0;9.375;18.75;,
-25.0;-9.375;18.75;,
-25.0;9.375;18.75;;
12;
// Lever1
4;0,1,3,2;,
4;2,3,5,4;,
4;4,5,7,6;,
4;6,7,1,0;,
4;1,7,5,3;,
4;6,0,2,4;,
// Lever_Hold
4;8,9,11,10;,
4;10,11,13,12;,
4;12,13,15,14;,
4;14,15,9,8;,
4;9,15,13,11;,
4;14,8,10,12;;
MeshNormals {
16;
// Lever1
0.088;-0.161;-0.036;,
-0.144;0.115;-0.036;,
0.144;-0.115;-0.036;,
-0.088;0.161;-0.036;,
0.144;-0.115;0.036;,
-0.088;0.161;0.036;,
0.088;-0.161;0.036;,
-0.144;0.115;0.036;,
// Lever_Hold
-0.144;-0.054;-0.108;,
-0.144;0.054;-0.108;,
0.144;-0.054;-0.108;,
0.144;0.054;-0.108;,
0.144;-0.054;0.108;,
0.144;0.054;0.108;,
-0.144;-0.054;0.108;,
-0.144;0.054;0.108;;
12;
// Lever1
4;0,1,3,2;,
4;2,3,5,4;,
4;4,5,7,6;,
4;6,7,1,0;,
4;1,7,5,3;,
4;6,0,2,4;,
// Lever_Hold
4;8,9,11,10;,
4;10,11,13,12;,
4;12,13,15,14;,
4;14,15,9,8;,
4;9,15,13,11;,
4;14,8,10,12;;
}
MeshTextureCoords {
16;
// Lever1
0.027;0.399;,
0.027;0.437;,
0.035;0.399;,
0.035;0.437;,
0.035;0.437;,
0.035;0.399;,
0.027;0.437;,
0.027;0.399;,
// Lever_Hold
0.0;0.063;,
0.0;0.086;,
0.031;0.063;,
0.031;0.086;,
0.031;0.086;,
0.031;0.063;,
0.0;0.086;,
0.0;0.063;;
}
}

@ -1,274 +0,0 @@
xof 0302txt 0064
// File created by CINEMA 4D
template Header {
<3D82AB43-62DA-11cf-AB39-0020AF71E433>
SWORD major;
SWORD minor;
DWORD flags;
}
template Vector {
<3D82AB5E-62DA-11cf-AB39-0020AF71E433>
FLOAT x;
FLOAT y;
FLOAT z;
}
template Coords2d {
<F6F23F44-7686-11cf-8F52-0040333594A3>
FLOAT u;
FLOAT v;
}
template Matrix4x4 {
<F6F23F45-7686-11cf-8F52-0040333594A3>
array FLOAT matrix[16];
}
template ColorRGBA {
<35FF44E0-6C7C-11cf-8F52-0040333594A3>
FLOAT red;
FLOAT green;
FLOAT blue;
FLOAT alpha;
}
template ColorRGB {
<D3E16E81-7835-11cf-8F52-0040333594A3>
FLOAT red;
FLOAT green;
FLOAT blue;
}
template IndexedColor {
<1630B820-7842-11cf-8F52-0040333594A3>
DWORD index;
ColorRGBA indexColor;
}
template Boolean {
<4885AE61-78E8-11cf-8F52-0040333594A3>
SWORD truefalse;
}
template Boolean2d {
<4885AE63-78E8-11cf-8F52-0040333594A3>
Boolean u;
Boolean v;
}
template MaterialWrap {
<4885AE60-78E8-11cf-8F52-0040333594A3>
Boolean u;
Boolean v;
}
template TextureFilename {
<A42790E1-7810-11cf-8F52-0040333594A3>
STRING filename;
}
template Material {
<3D82AB4D-62DA-11cf-AB39-0020AF71E433>
ColorRGBA faceColor;
FLOAT power;
ColorRGB specularColor;
ColorRGB emissiveColor;
[...]
}
template MeshFace {
<3D82AB5F-62DA-11cf-AB39-0020AF71E433>
DWORD nFaceVertexIndices;
array DWORD faceVertexIndices[nFaceVertexIndices];
}
template MeshFaceWraps {
<4885AE62-78E8-11cf-8F52-0040333594A3>
DWORD nFaceWrapValues;
Boolean2d faceWrapValues;
}
template MeshTextureCoords {
<F6F23F40-7686-11cf-8F52-0040333594A3>
DWORD nTextureCoords;
array Coords2d textureCoords[nTextureCoords];
}
template MeshMaterialList {
<F6F23F42-7686-11cf-8F52-0040333594A3>
DWORD nMaterials;
DWORD nFaceIndexes;
array DWORD faceIndexes[nFaceIndexes];
[Material]
}
template MeshNormals {
<F6F23F43-7686-11cf-8F52-0040333594A3>
DWORD nNormals;
array Vector normals[nNormals];
DWORD nFaceNormals;
array MeshFace faceNormals[nFaceNormals];
}
template MeshVertexColors {
<1630B821-7842-11cf-8F52-0040333594A3>
DWORD nVertexColors;
array IndexedColor vertexColors[nVertexColors];
}
template Mesh {
<3D82AB44-62DA-11cf-AB39-0020AF71E433>
DWORD nVertices;
array Vector vertices[nVertices];
DWORD nFaces;
array MeshFace faces[nFaces];
[...]
}
template FrameTransformMatrix {
<F6F23F41-7686-11cf-8F52-0040333594A3>
Matrix4x4 frameMatrix;
}
template Frame {
<3D82AB46-62DA-11cf-AB39-0020AF71E433>
[...]
}
Header {
1;
0;
1;
}
Mesh CINEMA4D_Mesh {
16;
// Lever1
4.968;-3.861;6.175;,
44.767;43.898;-0.249;,
-4.623;4.154;6.346;,
35.177;51.913;-0.078;,
-5.577;3.277;-6.087;,
34.222;51.036;-12.511;,
4.014;-4.738;-6.258;,
43.813;43.021;-12.682;,
// Lever_Hold
-25.0;-9.375;-18.75;,
-25.0;9.375;-18.75;,
25.0;-9.375;-18.75;,
25.0;9.375;-18.75;,
25.0;-9.375;18.75;,
25.0;9.375;18.75;,
-25.0;-9.375;18.75;,
-25.0;9.375;18.75;;
12;
// Lever1
4;0,1,3,2;,
4;2,3,5,4;,
4;4,5,7,6;,
4;6,7,1,0;,
4;1,7,5,3;,
4;6,0,2,4;,
// Lever_Hold
4;8,9,11,10;,
4;10,11,13,12;,
4;12,13,15,14;,
4;14,15,9,8;,
4;9,15,13,11;,
4;14,8,10,12;;
MeshNormals {
16;
// Lever1
-0.084;-0.158;0.054;,
0.145;0.117;0.017;,
-0.14;-0.112;0.055;,
0.09;0.164;0.018;,
-0.145;-0.117;-0.017;,
0.084;0.158;-0.054;,
-0.09;-0.164;-0.018;,
0.14;0.112;-0.055;,
// Lever_Hold
-0.144;-0.054;-0.108;,
-0.144;0.054;-0.108;,
0.144;-0.054;-0.108;,
0.144;0.054;-0.108;,
0.144;-0.054;0.108;,
0.144;0.054;0.108;,
-0.144;-0.054;0.108;,
-0.144;0.054;0.108;;
12;
// Lever1
4;0,1,3,2;,
4;2,3,5,4;,
4;4,5,7,6;,
4;6,7,1,0;,
4;1,7,5,3;,
4;6,0,2,4;,
// Lever_Hold
4;8,9,11,10;,
4;10,11,13,12;,
4;12,13,15,14;,
4;14,15,9,8;,
4;9,15,13,11;,
4;14,8,10,12;;
}
MeshTextureCoords {
16;
// Lever1
0.027;0.399;,
0.027;0.437;,
0.035;0.399;,
0.035;0.437;,
0.035;0.437;,
0.035;0.399;,
0.027;0.437;,
0.027;0.399;,
// Lever_Hold
0.0;0.063;,
0.0;0.086;,
0.031;0.063;,
0.031;0.086;,
0.031;0.086;,
0.031;0.063;,
0.0;0.086;,
0.0;0.063;;
}
MeshMaterialList {
2;
12;
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1;
Material C4DMAT_NONE {
1.0;1.0;1.0;1.0;;
1.0;
0.0;0.0;0.0;;
0.0;0.0;0.0;;
}
Material C4DMAT_Terrain {
1.0;1.0;1.0;1.0;;
1.0;
0.0;0.0;0.0;;
0.0;0.0;0.0;;
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

@ -68,12 +68,7 @@ end
-- Cocoa definition -- Cocoa definition
-- 1st stage -- 1st stage
--[[ TODO (code quality): Turn the cocoa nodes into attached nodes and make use of wallmounted. This is much better --[[ TODO: Use a mesh for cocoas for perfect texture compability. ]]
than the current ugly hacky check after digging a jungle tree (in mcl_core).
Problem: If we want to use wallmounted, we MUST use a mesh, since wallmounted does not support
nodeboxes with multiple boxes. :-(
Using meshes will also clean up the texture mess.
]]
local crop_def = { local crop_def = {
description = "Premature Cocoa", description = "Premature Cocoa",
_doc_items_create_entry = true, _doc_items_create_entry = true,
@ -110,7 +105,7 @@ local crop_def = {
}, },
}, },
groups = { groups = {
handy=1,axey=1, cocoa=1, not_in_creative_inventory=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1 handy=1,axey=1, cocoa=1, not_in_creative_inventory=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1,
}, },
sounds = mcl_sounds.node_sound_wood_defaults(), sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 15, _mcl_blast_resistance = 15,

@ -1,7 +1,7 @@
-- Tree nodes: Wood, Wooden Planks, Sapling, Leaves -- Tree nodes: Wood, Wooden Planks, Sapling, Leaves
-- Register tree trunk (wood) and bark -- Register tree trunk (wood) and bark
local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark, after_dig_node) local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark)
minetest.register_node("mcl_core:"..subname, { minetest.register_node("mcl_core:"..subname, {
description = description_trunk, description = description_trunk,
_doc_items_longdesc = longdesc, _doc_items_longdesc = longdesc,
@ -14,8 +14,6 @@ local register_tree_trunk = function(subname, description_trunk, description_bar
sounds = mcl_sounds.node_sound_wood_defaults(), sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 10, _mcl_blast_resistance = 10,
_mcl_hardness = 2, _mcl_hardness = 2,
after_dig_node = after_dig_node,
}) })
minetest.register_node("mcl_core:"..subname.."_bark", { minetest.register_node("mcl_core:"..subname.."_bark", {
@ -146,37 +144,12 @@ end
--------------------- ---------------------
-- This is a bad bad workaround which is only done because cocoas are not wallmounted (but should)
-- As long cocoas only EVER stick to jungle trees, and nothing else, this is probably a lesser sin.
local jungle_tree_after_dig_node = function(pos, oldnode, oldmetadata, digger)
-- Drop attached cocoas
local posses = {
{ x = pos.x + 1, y = pos.y, z = pos.z },
{ x = pos.x - 1, y = pos.y, z = pos.z },
{ x = pos.x, y = pos.y, z = pos.z + 1 },
{ x = pos.x, y = pos.y, z = pos.z - 1 },
}
for p=1, #posses do
local node = minetest.get_node(posses[p])
local g = minetest.get_item_group(node.name, "cocoa")
if g and g >= 1 then
minetest.remove_node(posses[p])
local drops = minetest.get_node_drops(node.name, "")
for d=1, #drops do
minetest.add_item(posses[p], drops[d])
end
end
end
end
register_tree_trunk("tree", "Oak Wood", "Oak Bark", "The trunk of an oak tree.", "default_tree_top.png", "default_tree.png") register_tree_trunk("tree", "Oak Wood", "Oak Bark", "The trunk of an oak tree.", "default_tree_top.png", "default_tree.png")
register_tree_trunk("darktree", "Dark Oak Wood", "Dark Oak Bark", "The trunk of a dark oak tree.", "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png") register_tree_trunk("darktree", "Dark Oak Wood", "Dark Oak Bark", "The trunk of a dark oak tree.", "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png")
register_tree_trunk("acaciatree", "Acacia Wood", "Acacia Bark", "The trunk of an acacia.", "default_acacia_tree_top.png", "default_acacia_tree.png") register_tree_trunk("acaciatree", "Acacia Wood", "Acacia Bark", "The trunk of an acacia.", "default_acacia_tree_top.png", "default_acacia_tree.png")
register_tree_trunk("sprucetree", "Spruce Wood", "Spruce Bark", "The trunk of a spruce tree.", "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png") register_tree_trunk("sprucetree", "Spruce Wood", "Spruce Bark", "The trunk of a spruce tree.", "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png")
register_tree_trunk("birchtree", "Birch Wood", "Birch Bark", "The trunk of a birch tree.", "mcl_core_log_birch_top.png", "mcl_core_log_birch.png") register_tree_trunk("birchtree", "Birch Wood", "Birch Bark", "The trunk of a birch tree.", "mcl_core_log_birch_top.png", "mcl_core_log_birch.png")
register_tree_trunk("jungletree", "Jungle Wood", "Jungle Bark", "The trunk of a jungle tree.", "default_jungletree_top.png", "default_jungletree.png")
register_tree_trunk("jungletree", "Jungle Wood", "Jungle Bark", "The trunk of a jungle tree.", "default_jungletree_top.png", "default_jungletree.png", jungle_tree_after_dig_node)
register_wooden_planks("wood", "Oak Wood Planks", {"default_wood.png"}) register_wooden_planks("wood", "Oak Wood Planks", {"default_wood.png"})
register_wooden_planks("darkwood", "Dark Oak Wood Planks", {"mcl_core_planks_big_oak.png"}) register_wooden_planks("darkwood", "Dark Oak Wood Planks", {"mcl_core_planks_big_oak.png"})