Page 1 of 2
[Mod] Hatches [hatches] (missing license)

Posted:
Wed Dec 21, 2011 22:57
by ironzorg
Hello everyone.
Not much to be said, the title is pretty much self explanatory: I implemented hatches as a LUA mod.



When it's open, a trapdoor is climbable, and you can't go through it when it's closed (the upcoming version of minetest will allow me not to use the whole node as boundary box).
Sorry for the poor textures, feel free to make your own (I'm a terrible artist, although I felt like I had to release that mod with at least one texture).
Download

Posted:
Wed Dec 21, 2011 23:31
by sapier
Great mod! Thanks!
There's a small bug in it, when digging a placed hatch there seem to be two different types of hatch.
At least I've gotten two stacks that havent been combinable.

Posted:
Wed Dec 21, 2011 23:34
by MrThebuilder3
amazing!

Posted:
Wed Dec 21, 2011 23:57
by maddogg
yes Fair play it will be good

Posted:
Thu Dec 22, 2011 09:52
by ironzorg
sapier wrote:Great mod! Thanks!
There's a small bug in it, when digging a placed hatch there seem to be two different types of hatch.
At least I've gotten two stacks that havent been combinable.
Indeed, I'll look into it.
EDIT: It's fixed, I uploaded the new version of the mod.
What's changed:
- Fixed the boundary detection bug when placed an open hatch
- Fixed the compatibilty issue when harvesting an open/closed hatch
- Enhanced the boundary box of the closed hatch

Posted:
Tue Dec 27, 2011 06:58
by jordan4ibanez

Posted:
Tue Dec 27, 2011 14:06
by ironzorg
I don't want to sound harsh, but all you did was disabling the climbable attribute of open hatches, which was there on purpose..

Posted:
Tue Dec 27, 2011 15:03
by Jeija
Nice mod! May I use it for my mesecon mod, so that hatches can be controlled by mesecons?

Posted:
Tue Dec 27, 2011 15:12
by hurufu
Great!
Could you put the texture to the upper side of block? So when you are walking on it, there were no empty space between you and visible texture.

Posted:
Wed Dec 28, 2011 10:47
by ironzorg
Jeija wrote:Nice mod! May I use it for my mesecon mod, so that hatches can be controlled by mesecons?
Absolutely.
hurufu wrote:Great!
Could you put the texture to the upper side of block? So when you are walking on it, there were no empty space between you and visible texture.
In fact this is due to a limitation of minetest's engine, actually I can't set the boundary box to be exactly the outline of the hatch.
We have to wait for the next release (with the stairs code if I'm not mistaken) so that I can be able to fix that. Also hence the climbable attribute.

Posted:
Mon Jan 02, 2012 00:57
by Calinou
Small request: When hatch is open, it has no collision (not walkable). When closed, it is climbable. It feels much better IMO :)

Posted:
Mon Jan 02, 2012 12:46
by ironzorg
Calinou wrote:Small request: When hatch is open, it has no collision (not walkable). When closed, it is climbable. It feels much better IMO :)
If it was climbable when open, you would be able to go through it. Moreover, it's climbable when it's open because of that boundary box problem (it makes much more sense).

Posted:
Sun Jan 29, 2012 17:27
by Temperest
I've changed it to work with the newest version of MineTest:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
-- Local constants
-- This _has_ to be set to 2
local HATCH_OPENED = 2
-- This has to be != from HATCH_OPENED and is coded on 4 bits
local HATCH_CLOSED = 1
-- Local Functions
local on_hatch_punched = function(pos, node, puncher)
if (node.name ~= 'hatches:hatch_closed')
and (node.name ~= 'hatches:hatch_opened') then
return
end
local state = node.param2
-- Switch the hatch state when hit
if state == HATCH_OPENED then
node.name = 'hatches:hatch_closed'
node.param2 = HATCH_CLOSED
elseif state == HATCH_CLOSED then
node.name = 'hatches:hatch_opened'
node.param2 = HATCH_OPENED
else
print('Uninitialized node: ' .. state)
end
minetest.env:add_node(pos, {
name = node.name,
param2 = node.param2,
})
end
local on_hatch_placed = function(pos, node, placer)
if node.name ~= 'hatches:hatch_opened' then
return
end
minetest.env:add_node(pos, {
name = node.name,
param2 = HATCH_OPENED,
})
end
-- Nodes
-- As long as param2 is set to 1 for open hatches, it doesn't matter to
-- use drawtype = 'signlike'
minetest.register_node('hatches:hatch_opened', {
drawtype = 'signlike',
tile_images = {'hatch.png'},
inventory_image = 'hatch.png',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "wallmounted",
legacy_wallmounted = true,
walkable = false,
climbable = true,
selection_box = {
type = "wallmounted",
},
material = minetest.digprop_constanttime(1.0),
drop = 'hatches:hatch_closed',
})
minetest.register_node('hatches:hatch_closed', {
description = "Hatch",
drawtype = 'raillike',
tile_images = {'hatch.png'},
inventory_image = 'hatch.png',
wield_image = "hatch.png",
paramtype = 'light',
walkable = true,
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -2/5, 1/2},
},
material = minetest.digprop_constanttime(1.0),
})
-- Crafts
minetest.register_craft({
output = '"hatches:hatch_closed" 2',
recipe = {
{'"default:wood" 1', '"default:wood" 1', '"default:wood" 1'},
{'"default:wood" 1', '"default:wood" 1', '"default:wood" 1'},
},
})
-- Change the hatch state
minetest.register_on_punchnode(on_hatch_punched)
-- Reset param2 for open hatches
minetest.register_on_placenode(on_hatch_placed)
-- Mesecon Stuff:
mesecon:register_on_signal_on(on_hatch_punched)
mesecon:register_on_signal_off(on_hatch_punched)
This is based off of Jeija's modification allowing mesecons to control hatches.

Posted:
Sun Jan 29, 2012 19:42
by Temperest
cisoun wrote:Just a question: how can I remove then?
They can be dug in exactly 1 second, with any tool.

Posted:
Sun Jan 29, 2012 19:56
by cisoun
I just noticed that. \o/
Another bug: the hatch doesn't rotate like in the first picture. It just goes up and down. Is that normal?

Posted:
Sun Jan 29, 2012 20:07
by Temperest
Well with the way it is now hatches always open to the positive X axis, I'm not sure how to store the orientation properly in the node after the hatch is closed.

Posted:
Sun Jan 29, 2012 20:59
by neko259
cisoun wrote:I just noticed that. \o/
Another bug: the hatch doesn't rotate like in the first picture. It just goes up and down. Is that normal?
++
And if I try to dig it (and it's really hard), I can get opened hatch instead of normal (they don't stack together).

Posted:
Sun Jan 29, 2012 21:49
by Temperest
neko259 wrote:cisoun wrote:I just noticed that. \o/
Another bug: the hatch doesn't rotate like in the first picture. It just goes up and down. Is that normal?
++
And if I try to dig it (and it's really hard), I can get opened hatch instead of normal (they don't stack together).
@cisoun: I may have misunderstood you at first... I had the same issue, but fixed it in my version, which you can find posted above. It requires MineTest 20120122 at minimum. I've tested my version, it fixes the issue.
@neko259: The opened hatch issue is also fixed in my version, but as I mentioned, it requires the latest version.

Posted:
Sun Jan 29, 2012 21:55
by neko259
@Temperest: Can you pack the whole mod to .tar.gz or .zip and post it to omploader? I'd be grateful :)

Posted:
Mon Jan 30, 2012 03:02
by Temperest

Posted:
Sun Feb 12, 2012 00:14
by evildrummer
Can you make a Zip version?

Posted:
Sun Feb 12, 2012 00:44
by Temperest
evildrummer wrote:Can you make a Zip version?

Posted:
Sat Mar 17, 2012 11:04
by sfan5
License is missing

Posted:
Sat Mar 17, 2012 12:56
by MilanFIN
Will this work on the 0.4.dev-20120122-1 version?

Posted:
Sat Mar 17, 2012 13:01
by Jordach
Should do.

Posted:
Sat Mar 17, 2012 13:47
by RabbiBob
MilanFIN wrote:Will this work on the 0.4.dev-20120122-1 version?
Does: I put it on my server this morning.

Posted:
Sat Mar 24, 2012 15:44
by SelfishCar
This is great for mines....
Good work!

Posted:
Thu Aug 23, 2012 16:29
by cornernote
updated:
-- uses nodeboxes instead of raillike to allow hatch at the top of the node, opening inwards (like doors) which means you can walk over them
-- removed global minetest.register_on_punchnode and replaced with an on_punch in the node definition
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
-- Local constants
-- This _has_ to be set to 2
local HATCH_OPENED = 2
-- This has to be != from HATCH_OPENED and is coded on 4 bits
local HATCH_CLOSED = 1
-- Local Functions
local on_hatch_punched = function(pos, node, puncher)
if (node.name ~= 'hatches:hatch_closed')
and (node.name ~= 'hatches:hatch_opened') then
return
end
local state = node.param2
-- Switch the hatch state when hit
if state == HATCH_OPENED then
node.name = 'hatches:hatch_closed'
node.param2 = HATCH_CLOSED
else
node.name = 'hatches:hatch_opened'
node.param2 = HATCH_OPENED
end
minetest.env:add_node(pos, {
name = node.name,
param2 = node.param2,
})
end
-- Nodes
-- As long as param2 is set to 1 for open hatches, it doesn't matter to
-- use drawtype = 'signlike'
minetest.register_node('hatches:hatch_opened', {
drawtype = 'signlike',
tile_images = {'hatch.png'},
inventory_image = 'hatch.png',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "wallmounted",
legacy_wallmounted = true,
walkable = false,
climbable = true,
selection_box = {
type = "wallmounted",
},
drop = 'hatches:hatch_closed',
on_punch = on_hatch_punched,
groups = { choppy=2, dig_immediate=2 },
})
minetest.register_node('hatches:hatch_closed', {
description = "Hatch",
drawtype = 'nodebox',
tile_images = {'hatch.png'},
inventory_image = 'hatch.png',
wield_image = "hatch.png",
paramtype = 'light',
is_ground_content = true,
walkable = true,
node_box = {
type = "fixed",
fixed = {-1/2, 2/5, -1/2, 1/2, 1/2, 1/2},
},
selection_box = {
type = "fixed",
fixed = {-1/2, 2/5, -1/2, 1/2, 1/2, 1/2},
},
on_punch = on_hatch_punched,
groups = { choppy=2, dig_immediate=2 },
})
-- Crafts
minetest.register_craft({
output = 'hatches:hatch_closed 2',
recipe = {
{'default:wood 1', 'default:wood 1', 'default:wood 1'},
{'default:wood 1', 'default:wood 1', 'default:wood 1'},
},
})
-- Mesecon Stuff:
mesecon:register_on_signal_on(on_hatch_punched)
mesecon:register_on_signal_off(on_hatch_punched)

Posted:
Sat Oct 20, 2012 02:20
by GloopMaster
http://ompldr.org/vZnkzeg is a general fix of some things.
Since the original mod has no liscence, I will assume it is to be treated as WTFPL and my changes are WTFPL as well.
all textures belong to the OP.
Fixes include the following:
Opened hatches have nodeboxes.
Opened hatches are climbable.
They're called trap doors for obvious reasons :P

Posted:
Sun Oct 21, 2012 14:53
by Temperest
GloopMaster: just want to mention that cornernote has a similarly updated version here:
https://github.com/cornernote/minetest-hatches :)