Skip to content
Poor man's voxel area entities for Minetest
Branch: master
Clone or download
bell07 and stujones11 Be more tolerant agains unknown items in meshnode
I disabled some mods and a ship produces crash with error 
```
2018-01-10 16:55:16: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'meshnode' in callback luaentity_Activate(): /usr/share/minetest/builtin/common/misc_helpers.lua:590: table index is nil
2018-01-10 16:55:16: ERROR[Main]: stack traceback:
2018-01-10 16:55:16: ERROR[Main]: 	/usr/share/minetest/builtin/common/misc_helpers.lua:590: in function 'copy'
2018-01-10 16:55:16: ERROR[Main]: 	.../games/whynot/mods/tools/meshnode/api.lua:40: in function 'get_tile_textures'
2018-01-10 16:55:16: ERROR[Main]: 	.../games/whynot/mods/tools/meshnode/api.lua:205: in function 'add_entity'
2018-01-10 16:55:16: ERROR[Main]: 	.../games/whynot/mods/tools/meshnode/init.lua:192: in function <.../games/whynot/mods/tools/meshnode/init.lua:160>
```
So this is a quick fix to get the world working again
Latest commit d88094f Jan 10, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
models Fix node highlight z-fighting Feb 26, 2017
textures Bump version to 0.3.0 Dec 31, 2016
.gitignore
LICENSE.txt Bump version to 0.3.0 Dec 31, 2016
README.md Make the meshnode privilege configurable. Nov 4, 2017
api.lua Be more tolerant agains unknown items in meshnode Jan 10, 2018
depends.txt
description.txt
init.lua Fix typo. Nov 4, 2017
mod.conf
screenshot.png Bump version to 0.3.0 Dec 31, 2016

README.md

Meshnodes for Minetest [meshnode]

Mod Version: 0.3.0

Minetest Version: 0.4.14 or later

Depends: default

Description

Meshnodes is a mod that transforms ordinary minetest nodes into a connected array of replica entities to which players can attach to and manoeuvre.

To use, simply build or place a model using nodes with a supported drawtype then place a meshnode controller in an appropriate position. Now use the special 'glue' that you will find in the controller node's inventory to connect your structure. Alternatively, if you are using worldedit, you can use the position markers to define the extents of your model.

When everything is connected you should return the 'glue' to the controller to enable activation. Once activated, players can then attach themselves to the controller or restore the model back to nodes. Restored models can be easily reconnected using the 'Connect from meta positions' option.

Please note that the 'glue' bottles are unique to a controller's position and are only useable within a limited range.

Supported Drawtypes

I have done my best to include support for most of the common nodes that are useful for building ships etc, like fences, xpanes and walls including support for all default stairs and slabs in full 6d rotation. It may or may not work with other decorative nodeboxes/meshnodes, the best way to find out is to simply try it.

Exceptions include flowing liquids, wallmounted nodes, rails or any node with non-generated wield or inventory images. Some drawtypes have only partial support, like 'plantlike' for example.

Construction Advice

Place the controller node in the direction you wish to face when you attach to it and always try to make your models hollow wherever possible.

Controls

[Up]	Forward
[Down]	Reverse
[Left]	Turn Left
[Right]	Turn Right
[Jump]	Up
[Sneak]	Down
[RMB]	Interact

Crafting

By default crafting is enabled in singleplayer mode only.

Meshnode Controller [meshnode:controller]

[default:bronzeblock] [default:diamondblock] [default:bronzeblock]
[default:obsidian_block] [default:steelblock] [default:goldblock]
[default:bronzeblock] [default:steelblock] [default:bronzeblock]

Multiplayer

Take care if you use this mod on a public server, while I have done my best to support basic protection, I am sure this mod could still provide serious potential for grief in the hands of the wrong people.

By default the controller node will only be available via /give[me] and requires the 'meshnode' privilege to be effective, however, non-privileged players will still be able to attach to and operate pre-activated models.

Note that you will probably need to increase max_objects_per_block to something a little higher than the default 64 to avoid server warnings and broken models. You can set meshnode_autoconf = true to automatically increase that limit to 4096 which, in theory, equates to one solid map-block full of meshnodes, though I would not advise testing that on live server.

Blacklist

A global blacklist table is stored is in meshnode.blacklist keyed by item name, in multiplayer mode the following nodes are blacklisted by default.

meshnode.blacklist["default:chest_locked"] = true
meshnode.blacklist["default:water_source"] = true
meshnode.blacklist["default:river_water_source"] = true
meshnode.blacklist["default:lava_source"] = true

Configuration

The global config table is stored meshnode.config and can overridden by adding the config name prefixed with 'meshnode_' to your minetest.conf file.

Example: (multiplayer defaults)

meshnode_max_speed = 2
meshnode_max_lift = 1
meshnode_yaw_amount = 0.017
meshnode_max_radius = 8
meshnode_show_in_creative = false
meshnode_enable_crafting = false
meshnode_disable_privilege = false
meshnode_fake_shading = false
meshnode_autoconf = false

Note that speed, lift, yaw and radius may still be altered by other mods after the initial start-up via the global meshnode.config table.

API

I would like to think that this mod could be used as the base for other mods like airships or sailing ships or perhaps even some fancy construction tool.

For this reason I have exposed everything that I thought might be potentially useful under the meshnode namespace. I would hope that the source code is reasonably self-explanatory.

Known Issues

Active objects sometimes disappear following a re-start/connect. This could be for a number or reasons including /clearobjects or a minetest bug. For this reason you are advised to always 'restore' your model to 'real' nodes before logging out or moving any significant distance away from it.

The player controlling the entity may appear to be connected to the wrong part of the model when viewed by a player that was not present during the initial attachment. Currently the only solution is for the operator to detach then re-attach to the model in the presence of said player.

You can’t perform that action at this time.