Add ship's wheel

This commit is contained in:
Wuzzy 2024-10-22 20:56:12 +02:00
parent 17d17a5a05
commit ec26ae3b2a
8 changed files with 388 additions and 0 deletions

View File

@ -62,6 +62,7 @@ Group rating 1 is for the inactive state, group rating 2 is for the active state
* `bomb`: Bomb
* `mixer`: Mixer
* `cabinet_half`: Half cabinet
* `ships_wheel`: Ships wheel
* `palm_leaves`: Palm leaves
* `laser_element_*`: Generic default group name assigned to less important laser blocks, like slabs. (The asterisk is a placeholder)
* `barrier`: Invisible barrier preventing player from passing through.

View File

@ -272,6 +272,36 @@ minetest.register_node("lzr_decor:chair", {
}),
})
lzr_laser.register_element("lzr_decor:ships_wheel", {
description = S("Ships Wheel"),
paramtype2 = "4dir",
drawtype = "mesh",
__mesh_off = "lzr_decor_ships_wheel.obj",
__mesh_on = "lzr_decor_ships_wheel.obj",
paramtype = "light",
__light_source_on = lzr_globals.LASER_GLOW,
__tiles_off = {"lzr_decor_ships_wheel_front.png", "lzr_decor_ships_wheel_side.png", "lzr_decor_ships_wheel_stick.png", "blank.png"},
__tiles_on = {"lzr_decor_ships_wheel_front.png", "lzr_decor_ships_wheel_side.png", "lzr_decor_ships_wheel_stick.png", lzr_laser.LASER_TILE},
sounds = lzr_sounds.node_sound_wood_defaults(),
groups = { laser_block = 1, breakable = 1, rotatable = 3, furniture = 1 },
is_ground_content = false,
collision_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -1/16, 0.5, 0.5, 1/16 },
},
},
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -1/16, 0.5, 0.5, 1/16 },
},
},
__use_texture_alpha_off = "clip",
__use_texture_alpha_on = lzr_laser.ALPHA_LASER,
}, { group = "ships_wheel" })
--[[ Cobwebs restrict player movement by slowing them
down and disallowing jumps. Their full-cube selection
box also prevents pointing through.

View File

@ -0,0 +1,342 @@
# Blender 3.6.7 Release Candidate
# www.blender.org
mtllib lzr_decor_ships_wheel.mtl
g wheel_cube.010
v 0.062500 0.500000 0.062500
v 0.062500 0.500000 -0.062500
v 0.062500 0.437500 0.062500
v 0.062500 0.437500 -0.062500
v -0.062500 0.500000 -0.062500
v -0.062500 0.500000 0.062500
v -0.062500 0.437500 -0.062500
v -0.062500 0.437500 0.062500
v 0.437500 0.437500 0.062500
v 0.437500 0.437500 -0.062500
v 0.437500 0.312500 0.062500
v 0.437500 0.312500 -0.062500
v -0.437500 0.437500 -0.062500
v -0.437500 0.437500 0.062500
v -0.437500 0.312500 -0.062500
v -0.437500 0.312500 0.062500
v 0.437500 -0.312500 0.062500
v 0.437500 -0.312500 -0.062500
v 0.437500 -0.437500 0.062500
v 0.437500 -0.437500 -0.062500
v -0.437500 -0.312500 -0.062500
v -0.437500 -0.312500 0.062500
v -0.437500 -0.437500 -0.062500
v -0.437500 -0.437500 0.062500
v 0.437500 0.312500 0.062500
v 0.437500 0.312500 -0.062500
v 0.437500 -0.312500 0.062500
v 0.312500 0.312500 -0.062500
v 0.312500 0.312500 0.062500
v 0.312500 -0.312500 -0.062500
v 0.312500 -0.312500 0.062500
v -0.312500 0.312500 0.062500
v -0.312500 0.312500 -0.062500
v -0.312500 -0.312500 0.062500
v -0.312500 -0.312500 -0.062500
v -0.437500 0.312500 -0.062500
v -0.437500 0.312500 0.062500
v -0.437500 -0.312500 -0.062500
v -0.437500 -0.312500 0.062500
v 0.125000 0.125000 0.062500
v 0.125000 0.125000 -0.062500
v 0.125000 -0.125000 0.062500
v 0.125000 -0.125000 -0.062500
v -0.125000 0.125000 -0.062500
v -0.125000 0.125000 0.062500
v -0.125000 -0.125000 -0.062500
v -0.125000 -0.125000 0.062500
v -0.125000 0.062500 0.062500
v -0.125000 0.062500 -0.062500
v -0.125000 -0.062500 0.062500
v -0.125000 -0.062500 -0.062500
v -0.312500 0.062500 -0.062500
v -0.312500 0.062500 0.062500
v -0.312500 -0.062500 -0.062500
v -0.312500 -0.062500 0.062500
v 0.062500 -0.125000 0.062500
v 0.062500 -0.125000 -0.062500
v 0.062500 -0.312500 0.062500
v 0.062500 -0.312500 -0.062500
v -0.062500 -0.125000 -0.062500
v -0.062500 -0.125000 0.062500
v -0.062500 -0.312500 -0.062500
v -0.062500 -0.312500 0.062500
v 0.500000 0.062500 0.062500
v 0.500000 0.062500 -0.062500
v 0.500000 -0.062500 0.062500
v 0.500000 -0.062500 -0.062500
v 0.437500 0.062500 -0.062500
v 0.437500 0.062500 0.062500
v 0.437500 -0.062500 -0.062500
v 0.437500 -0.062500 0.062500
v -0.437500 0.062500 0.062500
v -0.437500 0.062500 -0.062500
v -0.437500 -0.062500 0.062500
v -0.437500 -0.062500 -0.062500
v -0.500000 0.062500 -0.062500
v -0.500000 0.062500 0.062500
v -0.500000 -0.062500 -0.062500
v -0.500000 -0.062500 0.062500
v 0.062500 -0.437500 0.062500
v 0.062500 -0.437500 -0.062500
v 0.062500 -0.500000 0.062500
v 0.062500 -0.500000 -0.062500
v -0.062500 -0.437500 -0.062500
v -0.062500 -0.437500 0.062500
v -0.062500 -0.500000 -0.062500
v -0.062500 -0.500000 0.062500
v 0.312500 0.062500 0.062500
v 0.312500 0.062500 -0.062500
v 0.312500 -0.062500 0.062500
v 0.312500 -0.062500 -0.062500
v 0.125000 0.062500 -0.062500
v 0.125000 0.062500 0.062500
v 0.125000 -0.062500 -0.062500
v 0.125000 -0.062500 0.062500
v 0.062500 0.312500 0.062500
v 0.062500 0.312500 -0.062500
v 0.062500 0.125000 0.062500
v 0.062500 0.125000 -0.062500
v -0.062500 0.312500 -0.062500
v -0.062500 0.312500 0.062500
v -0.062500 0.125000 -0.062500
v -0.062500 0.125000 0.062500
v 0.062500 0.062500 0.500000
v 0.062500 0.062500 0.062500
v 0.062500 -0.062500 0.500000
v 0.062500 -0.062500 0.062500
v -0.062500 0.062500 0.062500
v -0.062500 0.062500 0.500000
v -0.062500 -0.062500 0.062500
v -0.062500 -0.062500 0.500000
v 0.062500 0.062500 -0.062500
v 0.062500 0.062500 -0.125000
v 0.062500 -0.062500 -0.062500
v 0.062500 -0.062500 -0.125000
v -0.062500 0.062500 -0.125000
v -0.062500 0.062500 -0.062500
v -0.062500 -0.062500 -0.125000
v -0.062500 -0.062500 -0.062500
v 0.062500 0.062500 -0.125000
v 0.062500 -0.062500 -0.125000
v -0.062500 0.062500 -0.125000
v -0.062500 -0.062500 -0.125000
v 0.062500 0.062500 -0.500000
v 0.062500 -0.062500 -0.500000
v -0.062500 0.062500 -0.500000
v -0.062500 -0.062500 -0.500000
vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -1.0000 -0.0000
vt 0.437500 0.937500
vt 0.562500 0.937500
vt 0.562500 1.000000
vt 0.437500 1.000000
vt 0.437500 0.937500
vt 0.437500 1.000000
vt 0.437500 0.562500
vt 0.562500 0.562500
vt 0.562500 0.437500
vt 0.437500 0.437500
vt 0.437500 0.812500
vt 0.562500 0.812500
vt 0.437500 0.062500
vt 0.562500 0.062500
vt 0.562500 0.187500
vt 0.437500 0.187500
vt 0.562500 0.062500
vt 0.437500 0.625000
vt 0.375000 0.625000
vt 0.375000 0.562500
vt 0.187500 0.437500
vt 0.187500 0.562500
vt 0.062500 0.562500
vt 0.062500 0.437500
vt 0.562500 0.625000
vt 0.062500 0.187500
vt 0.187500 0.187500
vt 0.625000 0.437500
vt 0.812500 0.437500
vt 0.812500 0.562500
vt 0.625000 0.562500
vt 0.375000 0.437500
vt 0.437500 0.187500
vt 0.562500 0.187500
vt 0.562500 0.375000
vt 0.437500 0.375000
vt 0.187500 0.812500
vt 0.062500 0.812500
vt 0.000000 0.437500
vt 0.000000 0.562500
vt 0.937500 0.437500
vt 1.000000 0.437500
vt 1.000000 0.562500
vt 0.937500 0.562500
vt 0.437500 0.000000
vt 0.562500 0.000000
vt 0.562500 0.062500
vt 0.437500 0.062500
vt 0.562500 0.000000
vt 0.937500 0.062500
vt 0.812500 0.187500
vt 0.937500 0.187500
vt 0.062500 0.062500
vt 0.625000 0.625000
vt 0.625000 0.375000
vt 0.375000 0.375000
vt 0.812500 0.812500
vt 0.937500 0.812500
vt 0.937500 0.937500
vt 0.062500 0.937500
vt 0.937500 0.187500
vt 0.812500 0.187500
vt 0.062500 0.187500
vt 0.187500 0.187500
vt 0.062500 0.062500
vt 0.937500 0.062500
s 0
g wheel_wheelFrontBack
usemtl wheelFrontBack
f 4/1/1 7/2/1 5/3/1 2/4/1
f 8/1/3 3/2/3 1/3/3 6/4/3
f 112/7/1 99/18/1 41/19/1 92/20/1
f 91/21/1 89/22/1 68/23/1 70/24/1
f 112/7/1 117/8/1 102/25/1 99/18/1
f 72/23/3 74/24/3 55/21/3 53/22/3
f 39/26/3 34/27/3 55/21/3 74/24/3
f 51/28/1 54/29/1 52/30/1 49/31/1
f 55/21/3 50/32/3 48/20/3 53/22/3
f 59/33/1 62/34/1 60/35/1 57/36/1
f 63/16/3 58/15/3 56/35/3 61/36/3
f 32/37/3 37/38/3 72/23/3 53/22/3
f 67/39/1 70/24/1 68/23/1 65/40/1
f 71/41/3 66/42/3 64/43/3 69/44/3
f 75/41/1 78/42/1 76/43/1 73/44/1
f 79/39/3 74/24/3 72/23/3 77/40/3
f 83/45/1 86/46/1 84/47/1 81/48/1
f 87/45/3 82/46/3 80/17/3 85/13/3
f 91/21/1 94/32/1 92/20/1 89/22/1
f 95/28/3 90/29/3 88/30/3 93/31/3
f 99/18/1 102/25/1 100/12/1 97/11/1
f 103/18/3 98/25/3 96/12/3 101/11/3
f 111/10/3 106/9/3 104/8/3 109/7/3
f 58/15/3 80/17/3 19/50/3 31/51/3
f 31/51/3 19/50/3 27/52/3
f 24/53/3 34/27/3 39/26/3
f 34/27/3 24/53/3 85/13/3 63/16/3
f 63/16/3 85/13/3 80/17/3 58/15/3
f 27/52/3 71/41/3 90/29/3 31/51/3
f 71/41/3 69/44/3 88/30/3 90/29/3
f 45/19/3 48/20/3 108/7/3 103/18/3
f 105/8/3 98/25/3 103/18/3 108/7/3
f 98/25/3 105/8/3 93/31/3 40/54/3
f 93/31/3 105/8/3 107/9/3 95/28/3
f 95/28/3 107/9/3 56/35/3 42/55/3
f 56/35/3 107/9/3 110/10/3 61/36/3
f 61/36/3 110/10/3 50/32/3 47/56/3
f 108/7/3 48/20/3 50/32/3 110/10/3
f 28/37/1 26/38/1 68/23/1 89/22/1
f 29/57/3 88/30/3 69/44/3 25/58/3
f 7/2/1 100/12/1 33/57/1 13/59/1
f 33/57/1 36/58/1 13/59/1
f 37/38/3 32/37/3 14/60/3
f 32/37/3 101/11/3 8/1/3 14/60/3
f 8/1/3 101/11/3 96/12/3 3/2/3
f 29/57/3 25/58/3 9/59/3
f 29/57/3 9/59/3 3/2/3 96/12/3
f 26/38/1 28/37/1 10/60/1
f 28/37/1 97/11/1 4/1/1 10/60/1
f 7/2/1 4/1/1 97/11/1 100/12/1
f 52/30/1 73/44/1 36/58/1 33/57/1
f 54/29/1 75/41/1 73/44/1 52/30/1
f 38/61/1 75/41/1 54/29/1 35/62/1
f 49/31/1 44/54/1 102/25/1 117/8/1
f 51/28/1 49/31/1 117/8/1 119/9/1
f 112/7/1 92/20/1 94/32/1 114/10/1
f 94/32/1 43/56/1 57/36/1 114/10/1
f 60/35/1 119/9/1 114/10/1 57/36/1
f 60/35/1 46/55/1 51/28/1 119/9/1
f 91/21/1 70/24/1 18/63/1 30/64/1
f 20/65/1 30/64/1 18/63/1
f 59/33/1 30/64/1 20/65/1 81/48/1
f 62/34/1 59/33/1 81/48/1 84/47/1
f 62/34/1 84/47/1 23/66/1 35/62/1
f 38/61/1 35/62/1 23/66/1
f 121/10/3 120/7/3 122/8/3 123/9/3
g wheel_wheelSides
usemtl wheelSides
f 3/5/2 4/2/2 2/3/2 1/6/2
f 7/1/4 8/2/4 6/3/4 5/4/4
f 6/7/5 1/8/5 2/9/5 5/10/5
f 11/11/2 12/12/2 10/2/2 9/5/2
f 15/11/4 16/12/4 14/2/4 13/1/4
f 19/13/2 20/14/2 18/15/2 17/16/2
f 23/13/4 24/17/4 22/15/4 21/16/4
f 28/11/4 89/7/4 88/8/4 29/12/4
f 34/22/5 63/7/5 62/10/5 35/21/5
f 53/22/5 48/20/5 49/32/5 52/21/5
f 54/21/6 51/32/6 50/20/6 55/22/6
f 58/16/2 59/15/2 57/35/2 56/36/2
f 62/16/4 63/15/4 61/35/4 60/36/4
f 66/10/2 67/9/2 65/8/2 64/7/2
f 69/44/5 64/43/5 65/42/5 68/41/5
f 70/41/6 67/42/6 66/43/6 71/44/6
f 78/10/4 79/9/4 77/8/4 76/7/4
f 77/40/5 72/23/5 73/24/5 76/39/5
f 78/39/6 75/24/6 74/23/6 79/40/6
f 82/45/2 83/49/2 81/14/2 80/13/2
f 86/45/4 87/46/4 85/17/4 84/13/4
f 86/10/6 83/9/6 82/8/6 87/7/6
f 93/31/5 88/30/5 89/29/5 92/28/5
f 94/28/6 91/29/6 90/30/6 95/31/6
f 98/18/2 99/25/2 97/12/2 96/11/2
f 102/18/4 103/25/4 101/12/4 100/11/4
f 45/8/4 44/7/4 49/18/4 48/25/4
f 44/32/5 45/20/5 103/7/5 102/10/5
f 41/28/5 99/9/5 98/8/5 40/31/5
f 41/25/2 40/18/2 93/7/2 92/8/2
f 42/36/2 43/35/2 94/9/2 95/10/2
f 43/28/6 42/31/6 56/8/6 57/9/6
f 46/32/6 60/10/6 61/7/6 47/20/6
f 47/35/4 50/9/4 51/10/4 46/36/4
f 30/29/5 59/9/5 58/8/5 31/30/5
f 20/41/6 19/44/6 80/8/6 81/9/6
f 55/10/2 34/16/2 35/15/2 54/9/2
f 32/22/6 33/21/6 100/10/6 101/7/6
f 28/29/6 29/30/6 96/8/6 97/9/6
f 25/11/2 69/7/2 68/8/2 26/12/2
f 32/11/2 53/7/2 52/8/2 33/12/2
f 4/9/5 3/8/5 9/44/5 10/41/5
f 8/7/5 7/10/5 13/24/5 14/23/5
f 36/11/4 73/7/4 72/8/4 37/12/4
f 71/10/2 27/16/2 18/15/2 70/9/2
f 30/16/4 31/15/4 90/9/4 91/10/4
f 24/23/6 23/24/6 84/10/6 85/7/6
f 74/9/4 75/10/4 38/16/4 39/15/4
g wheel_wheelStick
usemtl wheelStick
f 106/4/2 107/7/2 105/8/2 104/3/2
f 110/9/4 111/42/4 109/43/4 108/8/4
f 109/3/5 104/4/5 105/7/5 108/8/5
f 110/7/6 107/8/6 106/3/6 111/4/6
f 114/10/2 115/36/2 113/35/2 112/9/2
f 118/32/4 119/10/4 117/7/4 116/20/4
f 117/10/5 112/9/5 113/35/5 116/36/5
f 118/36/6 115/35/6 114/9/6 119/10/6
g wheel_laser
usemtl laser
f 121/35/6 123/36/6 127/45/6 125/46/6
f 120/35/2 121/36/2 125/45/2 124/46/2
f 123/35/4 122/36/4 126/45/4 127/46/4
f 122/36/5 120/35/5 124/46/5 126/45/5
l 12 15
l 11 16
l 18 21
l 17 22

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

View File

@ -472,6 +472,21 @@ function lzr_laser.add_laser(pos, dir, colorcode, varea, vdata, vdata_p2, emit_s
-- Laser ends here
return false
-- Ship's wheel
elseif minetest.get_item_group(nodename, "ships_wheel") > 0 then
local front_dir = lzr_laser.get_front_dir(param2)
-- Laser can go into it from the front
if vector.equals(front_dir, vector.multiply(dir, -1)) then
local def = minetest.registered_nodes[nodename]
local active = def._lzr_active
if active then
-- Laser beam from the front
vdata[vi] = minetest.get_content_id(active.."_"..colorcode)
end
end
-- Laser ends here
return false
-- Anything else terminates the laser
else
return false