mt-mods / jumpdrive

Minetest jumpdrive mod
Other
9 stars 10 forks source link
jumpdrive minetest mod space teleport traveling

Minetest jumpdrive

A simple Jumpdrive for minetest

Take your buildings with you on your journey

Operation

Example setup with technic:

Compatibility

Optional dependencies:

Fuel

The engine can be connected to a technic HV network or fuelled with power items. Power items are one of the following

Energy requirements

The energy requirements formula looks like this: 10 x radius x distance

For example:

Upgrades

If the technic mod is installed the following items can be used in the upgrade slot:

Protection

The source and destination areas are checked for protection so you can't remove and jump into someone else's buildings.

Screenshots

Interface:

Example:

Advanced operation

Coordinate bookmarking

You can place empty books into the drive inventory and write the coordinates to them with the "Write to book" button. The "Read from bookmark" button reads the coordinates from the next valid bookmark item in the inventory. From right to left. A used bookmark item is placed in the first free slot from the left. Bookmark items are:

Diglines

Settings

Settings in minetest.conf:

Lua api

Preflight check

The preflight check can be overriden to execute additional checks:

jumpdrive.preflight_check = function(source, destination, radius, player)
    -- check for height limit, only space travel allowed
    if destination.y < 1000 then
        return { success=false, message="Atmospheric travel not allowed!" }
    end

    -- everything ok
    return { success=true }
end

Fuel calc

The default fuel calc can be overwritten by a depending mod:

-- calculates the power requirements for a jump
jumpdrive.calculate_power = function(radius, distance, sourcePos, targetPos)
    return 10 * distance * radius
end

Movenode compatibility

Nodes can be made aware of a changing position if they implement a on_movenode function on the node-definition:

-- example with an override
minetest.override_item("travelnet:travelnet", {
  on_movenode = function(from_pos, to_pos, additional_info)
    -- additional_info = { edge = { x=0, y=0, z=0 } }
    -- magic!
  end
})

Hooks

-- register a callback that is called upon jump completion
-- can also be used if the `on_movenode` above needs a kind of "commit" to write the changed state to files
jumpdrive.register_after_jump(function(from_area, to_area)
    -- from_area/to_area = { pos1, pos2 }
end)

Sources

Contributors

License

Attributions