Commit Graph

85 Commits

Author SHA1 Message Date
Treer
fe17efea92 blasts extinguish portals 2020-02-15 16:04:01 +11:00
Treer
4297b312c9 Avoid storing the playerRef
See https://rubenwardy.com/minetest_modding_book/en/quality/common_mistakes.html#never-store-objectrefs-ie-players-or-entities
Related: https://github.com/minetest-mods/nether/pull/12
2020-02-15 16:04:01 +11:00
Treer
1ffd88f7e1 text changes
Also a minor change to prevent surface portals from appearing in a grid pattern in MT 0.4
2020-02-15 16:04:01 +11:00
Treer
2f7614b41c text/docs/formatting changes 2020-02-15 16:04:01 +11:00
Treer
1312bf6dc5 Trim trailing spaces
This eliminates most luacheck formatting warnings
2020-02-15 16:04:01 +11:00
Treer
44e68d809d Update .luacheckrc and fix warnings
Changes to reduce formatting warnings will be committed separately
2020-02-15 16:04:00 +11:00
Treer
7b72364d15 Update copyrights & require Minetest v0.4.16 or greater
Also adds nether.register_wormhole_node(), moving the wormhole node template into portal_api.lua, and allowing wormhole nodes with custom post_effect_color to be more easily created.
2020-02-15 16:04:00 +11:00
Treer
79ed3f17e1 Add more mesecon support
wormholes now emit mesecon energy, allowing mesecons to know the state of the portal.
(mesecons could previously only set the state of the portal)
2020-02-15 16:04:00 +11:00
Treer
b74b92bb2d Add Minetest 0.4 support 2020-02-15 16:04:00 +11:00
Treer
55e4e9d78e Handle edge-case when player quits the game while teleporting
Issue was raised as a pull request against the original code - https://github.com/minetest-mods/nether/pull/12
Also replaces deprecated getpos/setpos with get_pos/set_pos - https://github.com/minetest-mods/nether/pull/11
2020-02-15 16:03:59 +11:00
Treer
2bddf340c5 check for portal frames on the surface
When a surface level was known, only the volume_is_natural check was being performed, this fixes that.
Also fixes bug where LBM didn't start the timer of example portals that had been disabled.
Allows portal ignite to repair a stopped timer.
Other misc cleanup - paramat's new Floatlands won't have lakes so I removed that from the flavortext.
2020-02-15 16:03:59 +11:00
Treer
10d8925220 Move wormhole_node_is_horizontal into the shape definition
out of the portal defintion
2020-02-15 16:03:59 +11:00
Treer
1ddf1bee76 Add settingtypes.txt settings 2020-02-15 16:03:59 +11:00
Treer
7c11ee9017 Finish example portals
give nether_portal_circular.mts a flat floor - the new nether_portal_circular.mts allows its bottom nodes to be sunk into the ground.
Example portal basic behavior and book_of_portals_pagetext implemented.
Other changes are allowing portals corrupted by ABMs to be repaired, finding better ground level of surface portals.
2020-02-15 16:03:58 +11:00
Treer
672069d798 Add PortalShape_Platform
and other work on the portal examples
also documentation and fixing issue where apples prevented volume_is_natural() from returning true
2020-02-15 16:03:58 +11:00
Treer
c15fd3643d Add Surface-following portal using Moore curves 2020-02-15 16:03:58 +11:00
Treer
f9692faaa7 Standardize files as LF without CR, and UTF-8 without BOM
UTF-8 with BOM crashes some systems according to 6551f5c120 comment, and there are several cases where Minetest is buggy with files that use CRLF line endings (though none I'm aware that affect these files), so strip CRs and BOM
2020-02-15 16:03:58 +11:00
Treer
f11669f388 documentation 2020-02-15 16:03:57 +11:00
Treer
ceb7148ce8 Check no other mod is already using a portal definition 2020-02-15 16:03:57 +11:00
Treer
d5bfb142fa Add portal_examples.lua
Currently the example portals just take you to the nether, like nether portals. In theory they could take players anywhere.
2020-02-15 16:03:57 +11:00
Treer
c934cfa481 Add animated particle support
Also implements an ignition failure sound.
2020-02-15 16:03:56 +11:00
Treer
98ca59b580 Add portal sounds 2020-02-15 16:03:56 +11:00
Treer
a679d2ca81 Add example alternative shape PortalShape_Circular
Also fixes up a few bugs that only became apparent when not using the traditional portal shape
2020-02-15 16:03:56 +11:00
Treer
97aa8da305 Place_Schematic uses correct frame and wormhole nodes
This requires a cache-invalidation hack borrowed from cloudlands mod.
Also, null reference fixes in ensure_remote_portal_then_teleport and locate_or_build_portal, and minor improvements
2020-02-15 16:03:55 +11:00
Treer
e82d9e3f16 Add portal ignition sparks 2020-02-15 16:03:55 +11:00
Treer
21e312fefc Unroll 32affba6 (stairs) (#9)
32affba6 re-registered stairs which have already been registered 20 lines earlier in the code, and registered them as "brick" causing the netherbrick stairs to replace Minetest's default:brick stairs. The rest of 32affba6 was already unrolled in 7a0e52da, but the stairs bug remained.
2020-02-15 16:03:55 +11:00
Treer
84def1709c Keep portal type in metadata for non-traditional portals
Makes the portal system more flexible - new portal shapes don't have to ensure there's a frame node at the timerPos
2020-02-15 16:03:55 +11:00
Treer
d2a18ad130 rearrange code
eliminate need to assign extinguish_portal() to a local var, and group the helper functions together in the API section
2020-02-15 16:03:54 +11:00
Treer
fc90d79396 Implement sound and events in API 2020-02-15 16:03:54 +11:00
Treer
a4f78c654f Fix edge case
Fix bug where ensure_remote_portal_then_teleport() converted its destination_wormholePos to an anchorPos to pass to locate_or_build_portal() which converted it back to an wormholePos. Bug occurred when local_orientation was assumed for the target orientation, which could lead to locate_or_build_portal() ending up with a reconstituted wormholePos rotated outside the portal frame, not find a portal frame, so build a new portal there, griefing the old one.

locate_or_build_portal() has been refactored to take a wormholePos instead of an anchorPos, removing the need to know the orientation of the target portal (which can't be obtained from the param2 when the target portal is unlit)
2020-02-15 16:03:54 +11:00
Treer
d4d3af2cdf Unlinks target portal if it's linked to a different portal
This is effectively a missing part to the change that made locate_or_build_portal() enforce that portals only link together in mutual pairs. As target portals that didn't need to be located or built we not being updated to link back to where the player travelled from.

Also
* implements events: on_run_wormhole, on_extinguish
* adds a lot of debug info
2020-02-15 16:03:54 +11:00
Treer
711c930697 fix bugs
fixes nullreference in find_surface_target_y, and ensure_remote_portal_then_teleport assuming a traditional portal shape.
minor documentation work.
2020-02-15 16:03:54 +11:00
Treer
1f5cc9c94e only perform remote_portal_checkup if portal schematic was placed 2020-02-15 16:03:53 +11:00
Treer
44f4f5ed91 Portals connect to nearby targets
Records portal positions. More testing required
2020-02-15 16:03:53 +11:00
Treer
b04b4cb820 Add Book of Portals
Squashed commit of the following:

commit e80030750df91f75745c7d52729a0d4942eb32f8
Author: Treer <treer.git+github@the-bordello.com>
Date:   Sat Jul 13 13:52:02 2019 +1000

    Finish book of portals

commit 82ad3d6af683b6bb4cc107e8c76f44c0b791a28d
Author: Treer <treer.git@gmail.com>
Date:   Thu Jul 11 22:43:02 2019 +1000

    Book of Portals art

commit fac6ff1da89a1b06b78deb0b5b4e3bebe4166860
Author: Treer <treer.git@gmail.com>
Date:   Thu Jul 11 00:39:50 2019 +1000

    starting book of portals
2020-02-15 16:03:53 +11:00
Treer
5fe2c86866 provide Portal API 2020-02-15 16:03:52 +11:00
Treer
67bf24e02e Dynamic/hardware portal colouring
Currently proof of concept: Removes wormhole colour from .png texture and specifies it through MT API instead. The post_effect_color may call for registering a separate node per portal colour.
Palette 0 will have to be the traditional portal magenta (instead of 0 being black) for map compatibility with mod when colour was in the texture and not param2.
2020-02-15 15:57:58 +11:00
Treer
b3d1339a76 Allow two or more portal types to be made with the same frame material
(provided they are different sized portals)
Removes direct references to the registered_portals table
2020-02-15 15:57:57 +11:00
Treer
d45908e90f Prevent portals from sharing frame nodes with other portals
While it's rather cute having portals that share parts of their frame with other portals, the way the nether mod implemented portals means a node being part of more than one portal enables a family of bugs.

Igniting a portal now extinguishes any portal that was using nodes now taken by the newly ignited portal.
2020-02-15 15:57:57 +11:00
Treer
e221cf1d99 Spawn portals on the surface, when possible 2020-02-15 15:57:57 +11:00
Treer
71244a7949 Fix call to node timer stop()
Part of e5a5db907, fixes an issue where node timers weren't stopped by extinguish_portal().
And tweaks some comments
2020-02-15 15:57:57 +11:00
Treer
74b25acdc8 tidy up some code 2020-02-15 15:57:56 +11:00
Treer
1a222d45e8 Prevent concurrent mapgen from removing freshly placed portals 2020-02-15 15:57:56 +11:00
Treer
dd761b4c0d Allow reignition of portals in player-built areas
e.g. allow remote ignition to a portal in a "portal room"
2020-02-15 15:57:56 +11:00
Treer
df4b40fe15 Issue #6 Replace ABM with single node timer
https://github.com/minetest-mods/nether/issues/6
2020-02-15 15:57:56 +11:00
Treer
a9cdc36a7d Add mesecons support
Portals can be switched on and off with mesecons
(from a tech-tree perspective, mese is still required for portal ignition)
2020-02-15 15:57:55 +11:00
Treer
d9911e65ee Separate portal shape code from portal behavior code, and refactor
Allows dev and testing/debugging to focus on one (shape or behavior) without getting mixed up in the other, will also enable different portal shapes later on. Other adjustments:
* Reuse/reignite an existing portal or portal frame if there is one at the remote destination, rather than the area being overwritten by a slightly offset portal schematic.
* Create remote portals in a matching orientation to the local portal.
* Preserve player position & facing relative to portal when traveling through wormhole (even if portals are at 90°)
* Players no longer bounce several times after teleporting
* Player is not teleported until after the portal at the other end is confirmed/built
2020-02-15 15:57:55 +11:00
ㄗㄠˋ ㄑㄧˊ
b49f4ce73d Fix error caused by teleporting offline players (#12) 2020-01-08 18:56:49 +01:00
SmallJoker
6551f5c120 Convert UTF-8 + BOM to UTF-8. Fixes crash on some systems 2019-08-01 18:25:25 +02:00
Treer
b8dab52e41 Unroll 32affba6 (stairs) (#9)
32affba6 re-registered stairs which have already been registered 20 lines earlier in the code, and registered them as "brick" causing the netherbrick stairs to replace Minetest's default:brick stairs. The rest of 32affba6 was already unrolled in 7a0e52da, but the stairs bug remained.
2019-07-20 08:56:32 +02:00