Commit graph

2364 commits

Author SHA1 Message Date
teknomunk
79b3b3b26b Make trains containing a player in a minecart function, minor cleanup in mcl_playerinfo 2024-06-15 14:08:29 +02:00
teknomunk
475d6f3e93 Fix crashes in train logic, allow breaking apart trains 2024-06-15 14:08:29 +02:00
teknomunk
e59a89eb2a Implement train reversing 2024-06-15 14:08:29 +02:00
teknomunk
a48c58a244 Repair vectors in cart data, mostly fix train movement bugs (still possible to have a furnace minecart flip, without the train also flipping) 2024-06-15 14:08:29 +02:00
teknomunk
52904ef5e0 Add cart entity respawn/destroy to match cart data (partially working) 2024-06-15 14:08:29 +02:00
teknomunk
095ad465e5 Give furnace minecart minimum velocity when lit, add train separation code, update logging code, add sequence number to entity staticdata to allow respawn/despawn when carts move when the entity is unloaded 2024-06-15 14:08:29 +02:00
teknomunk
db96e86d57 Fix rail detach crash, make tnt minecarts explode if they hit something hard (off rails) 2024-06-15 14:08:29 +02:00
teknomunk
dcf833907e Make sure carts get detatch if the rail under them is removed 2024-06-15 14:08:29 +02:00
teknomunk
24bf99df44 Fixish reorganizing, initial train implementation 2024-06-15 14:08:29 +02:00
teknomunk
386bde698d Major reorganization, start setup for trains 2024-06-15 14:08:29 +02:00
teknomunk
3ca5bd0dff Make sure carts that collide move in the same direction the colliding cart was 2024-06-15 14:08:29 +02:00
teknomunk
bacc8bdf64 Add utilities to convert between an ObjectRef, it's active object id and a 128bit uuid, move minecart data from entity staticdata to mod storage to eventually allow updating carts when out of range of players and also track what carts are alive, implement on-rail cart collisions 2024-06-15 14:08:29 +02:00
teknomunk
ce9e3481af Harden against unknown nodes 2024-06-15 14:08:29 +02:00
teknomunk
659a387256 Allow players to push minecarts that are not on track 2024-06-15 14:08:29 +02:00
teknomunk
b6e51a3c40 Fix rails in creative inventory, make minecart with tnt not crash server when exploding, make minecart with tnt slightly more powerful than regular tnt 2024-06-15 14:08:29 +02:00
teknomunk
6d9cae1034 Fix rail movement regressions 2024-06-15 14:08:29 +02:00
teknomunk
e6664de6e7 Move cart code to its own file, more code cleanup, add aliases for old track items 2024-06-15 14:08:29 +02:00
teknomunk
fd03fc0027 Cleanup code, restore uphill/downhill cart movement, completely remove old rail 2024-06-15 14:08:29 +02:00
teknomunk
c9883cc6cc Get rail reattachment (especially after jumps) working correctly 2024-06-15 14:08:29 +02:00
teknomunk
5bd06f5c03 Make legacy rail update apply to all old rail types, add basic detached railcart physics with a stub to use mcl_physics when it gets merged 2024-06-15 14:08:29 +02:00
teknomunk
284c366136 Silence unmaskable print statements 2024-06-15 14:08:29 +02:00
teknomunk
c1a7001c31 Add immortal item entity support, add legacy rail conversion that uses immortal item drops for corners/tees/crosses that are no longer possible 2024-06-15 14:08:29 +02:00
teknomunk
8cd9ee9b32 Fix more rail connection bugs 2024-06-15 14:08:29 +02:00
teknomunk
3391a28fa9 Get sloped connections working correctly 2024-06-15 14:08:29 +02:00
teknomunk
ad11fc22ec Re-enable rule for powering rail from underneath, have stairs block minecart movement, fix crash when lightning strikes a minecart 2024-06-15 14:08:29 +02:00
teknomunk
4589206985 Fix mcl_util.table_merge where a standard value overwrites a table, fix base definition usage, implement behavior difference when there is a solid block after a straight piece of track (this will eventually allow minecarts to fly off the end of the track) 2024-06-15 14:08:29 +02:00
teknomunk
19e2dc58eb Update all rail types to new version 2024-06-15 14:08:29 +02:00
teknomunk
4b8cb85319 Reorganize 2024-06-15 14:08:29 +02:00
teknomunk
7b7dfd1da3 Finish reverting 08b41a3b39 2024-06-15 14:08:29 +02:00
teknomunk
603577e7a6 Enable new track with get_next_dir handlers 2024-06-15 14:08:29 +02:00
teknomunk
34f394d8dc Change connection rules again to allow building parallel track, tees and crosses), start implementing rail rules callbacks 2024-06-15 14:08:29 +02:00
teknomunk
75f394e5ab Add sloped rail 2024-06-15 14:08:29 +02:00
teknomunk
478c488c85 Fix rail visuals, add switch operation 2024-06-15 14:08:29 +02:00
teknomunk
4265f0b428 Implement initial rail connection logic (no vertical track yet), experiment with texture modifiers and gravel underlay for display (not working) 2024-06-15 14:08:29 +02:00
teknomunk
57ad709bdd Start implementing new rail nodes 2024-06-15 14:08:29 +02:00
teknomunk
296c301669 Implement minecart with command block 2024-06-15 14:08:29 +02:00
teknomunk
4db70fd729 Disable punch to move minecarts, implement punch to drop minecart, enable basic cart keyboard controls (accelerate and brake) 2024-06-15 14:08:29 +02:00
teknomunk
6f7e1df002 Remove cart oscillation when pushed 2024-06-15 14:08:29 +02:00
teknomunk
c18976c0ca Limit top speed of furnace minecarts to 4 blocks/second, limit total fuel time to 27 minutes 2024-06-15 14:08:29 +02:00
teknomunk
ff5e185629 Fix bug with furnace minecart at max velocity (stopped until fuel ran out), move _fueltime into staticdata 2024-06-15 14:08:29 +02:00
teknomunk
64b930ac3e Fix call signature of mcl_util.hopper_pull_to_inventory, move cart-specific behaviors to _mcl_minecarts_on_step handlers, fix typo, change distance used in rail reattach code, move cart_id generation 2024-06-15 14:08:29 +02:00
teknomunk
f9e8f60a1c Add groups to minecart entities (for containers), fix cart node watch handling, relocate hopper_push_to_mc in mcl_hopper/init.lua, implement hopper-to-minecart push using enter/leave hooks for both straight and bent hoppers 2024-06-15 14:08:29 +02:00
teknomunk
ec2d08524e Add API function to remove node watch 2024-06-15 14:08:29 +02:00
teknomunk
6c6bfcfcb2 Refactor enter/leave hook processing, add node watches for implementing hopper-to-minecart functionality (should properly handle heavy server lag without missing any time), temporarily disable hopper push/pull to minecart in mcl_hoppers, prepare to move minecart-specific on_step behavior out of main on_step function and to a minecart-specific handler 2024-06-15 14:08:29 +02:00
teknomunk
b0c075714f Start adding hooks for implpementing minecart with command block 2024-06-15 14:08:29 +02:00
teknomunk
44f9a3e619 Make minecarts solid and add players pushing 2024-06-15 14:08:29 +02:00
teknomunk
1618693726 Fix forwards/backwars tilt in all directions 2024-06-15 14:08:29 +02:00
teknomunk
fd6f4ee80e Prevent players from entering minecarts when sneaking, prevents players from causing https://git.minetest.land/MineClone2/MineClone2/issues/3188 2024-06-15 14:08:29 +02:00
teknomunk
d479bfb711 Increase default track friction, disable right-click to exit minecarts 2024-06-15 14:08:29 +02:00
teknomunk
c2be93e0d5 Initial tuning of acceleration/gravity, fix crash when entering an activator rail, detach mobs from cart on active activator rail, remove commented out code no longer needed 2024-06-15 14:08:29 +02:00
teknomunk
0ef0ae6bee Move code that handles below-rail hoppers to handle_cart_enter, implement timestep-independent cart physics (will need tuning punch, power rail and gravityaccelerations to make game fun) 2024-06-15 14:08:29 +02:00
teknomunk
0fa067d3ee Mostly fix carts stopping between powered rails (there is still some strangeness with acceleration physics) 2024-06-15 14:08:29 +02:00
teknomunk
e4eb38db9c Fix diagonal movement 2024-06-15 14:08:29 +02:00
teknomunk
b4a0ae9c56 Add diagonal track movement on zig-zag track, rewrite mcl_minecarts:get_rail_direction 2024-06-15 14:08:29 +02:00
teknomunk
37d07b6201 Make TNT minecarts available in creative menu 2024-06-15 14:08:29 +02:00
teknomunk
52bca90ae2 Implement custom item dropper handlers, implement droppers placing minecarts 2024-06-15 14:08:29 +02:00
teknomunk
af9409c69f Hopper minecarts pull from containers above rail 2024-06-15 14:08:29 +02:00
teknomunk
0951acd06c Rework in preparation to add code to pull from containers into the hopper minecart 2024-06-15 14:08:29 +02:00
teknomunk
f57d202a9d Move fiction constant to top of file, suppress cart flips when direction reverses due to gravity or end of track 2024-06-15 14:08:29 +02:00
teknomunk
b51496ad8e Add code to reattach carts to rail when data corruption occurs, fix bug in last commit that caused carts to bury into the ground 2024-06-15 14:08:29 +02:00
teknomunk
adddaec69a Remove dip into the ground that occured when gravity caused the cart to reverse directions 2024-06-15 14:08:29 +02:00
teknomunk
a0463b564a Implement gravity, move orientation update to own function, fix cart stopping in process_acceleration 2024-06-15 14:08:29 +02:00
teknomunk
8c6b011c91 Change connected railcar behavior to fix unreliable end of track stopping, set maximum acceleration of powered rails to 8 blocks per second (per https://minecraft.fandom.com/wiki/Powered_Rail), stop powered rails from powering the block underneath it (allows below rail hopper to work while the rail is powered like in https://www.youtube.com/watch?v=szjO0-duTAk), modify mcl_hoppers to allow triggering a hopper pull once the minecart is stopped on top of the hopper and wait before allowing the cart to move to allow redstone circuits time to process 2024-06-15 14:08:29 +02:00
teknomunk
f2c6f069d0 Make minecart always stop at correct location at end of track, fix crash when placing chest minecart after changing how staticdata is handled 2024-06-15 14:08:29 +02:00
teknomunk
15000be8ec Modify do_movement_step to move to always move to the edge of the current rail segment before updating the direction to prevent oscillations at corners, fix end of track stop location with new movement behavior, disable experimental controls, swap code to detach the driver on float with a call to detach_driver() 2024-06-15 14:08:29 +02:00
teknomunk
f3fac3586f Add DEBUG flag, stop small do_movement_step's from occuring (this improves but doesn't eliminate the bug I with the a6be179ed commit), add recovery when staticdata field gets lost 2024-06-15 14:08:29 +02:00
teknomunk
9be0d27dd8 Fix initial_properties for minecarts 2024-06-15 14:08:29 +02:00
teknomunk
bee32418c4 Change left,right and back vectors to matrix math results with no branching 2024-06-15 14:08:29 +02:00
teknomunk
5d14d43ec4 Remove now unused properties from minecart definition, convert more vectors to use vector.new syntax 2024-06-15 14:08:29 +02:00
teknomunk
8a91f04cf0 Complete rewrite of minecart movement that resolves https://git.minetest.land/MineClone2/MineClone2/issues/2446 and https://git.minetest.land/MineClone2/MineClone2/issues/247#issuecomment-50960 but has a bug where carts will synchronize movements that I am still investigating 2024-06-15 14:08:29 +02:00
teknomunk
2a9aaa02af Change staticdata serialization (with migration from old data), disable debugging code used to investigate https://git.minetest.land/MineClone2/MineClone2/issues/2446 2024-06-15 14:08:29 +02:00
teknomunk
44514e0fad Change to vector.new from {x=...}, relocate movement code to own function for future changes 2024-06-15 14:08:29 +02:00
the-real-herowl
72435933e4 Add defensive check (#4437)
This fixes #4436 and possible other unnoticed crashes by adding a defensive check.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4437
Reviewed-by: Mikita Wiśniewski <rudzik8@protonmail.com>
Co-authored-by: the-real-herowl <wiktor_t-i@proton.me>
Co-committed-by: the-real-herowl <wiktor_t-i@proton.me>
2024-06-15 03:51:03 +02:00
teknomunk
beccbacc73 Fix Stalker texture generation (#4343)
This fixes stalker texture generation when the stalker is standing on a node that uses a texture using a texture modifier.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4343
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: teknomunk <teknomunk@protonmail.com>
Co-committed-by: teknomunk <teknomunk@protonmail.com>
2024-06-01 20:23:38 +00:00
teknomunk
ecf12b85cc Fix undefined global warning for variable distance in spawning code (#4348)
Fixes the warning about an undeclared global that occurs the first time a mob attempts to spawn.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4348
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: teknomunk <teknomunk@protonmail.com>
Co-committed-by: teknomunk <teknomunk@protonmail.com>
2024-05-31 09:54:59 +00:00
teknomunk
add9cbe3bc Fix mob spawner crash (#4337)
This fixes #4336 crash at login about mcl_mobspawners. Also adds an API call, `mcl_mobs.register_conversion` for converting one mob into another and updates rovers and stalkers to use this API call.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4337
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: teknomunk <teknomunk@protonmail.com>
Co-committed-by: teknomunk <teknomunk@protonmail.com>
2024-05-30 08:29:12 +00:00
the-real-herowl
2bd24120e9 Stalker texture building fix (#4322)
Added a defensive check for stalker texture building.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4322
2024-05-25 11:57:05 +00:00
teknomunk
0a14a74860 Fix crash when converting endermen to rovers (#4318)
Fixes a crash that occurs when automatically converting endermen to rovers.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4318
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: teknomunk <teknomunk@protonmail.com>
Co-committed-by: teknomunk <teknomunk@protonmail.com>
2024-05-24 10:32:19 +00:00
the-real-herowl
a499d292f8 Finish renames (#4314)
Fix crash caused by unfinished renaming in #4282

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4314
Co-authored-by: the-real-herowl <wiktor_t-i@proton.me>
Co-committed-by: the-real-herowl <wiktor_t-i@proton.me>
2024-05-22 19:18:10 +00:00
the-real-herowl
018814c362 Added a few mobitems
* one droppable from strays
* the rest will get their mobs in a later update
* added alternative ways to get the items
* added recipes for potions that use these items
2024-05-22 21:03:43 +02:00
the-real-herowl
651fb74be1 Fix a crash 2024-05-22 21:03:43 +02:00
the-real-herowl
664993ca75 Fixed mob drops not having proper description 2024-05-22 21:03:43 +02:00
the-real-herowl
d306260c7e Guardian fixes 2024-05-22 21:03:43 +02:00
the-real-herowl
747bf16a94 Migrated mobs to the new effects API 2024-05-22 21:03:43 +02:00
the-real-herowl
e36b7f413b Strays now use frost arrows 2024-05-22 21:03:43 +02:00
the-real-herowl
dc7b1869b7 Move most of the game to the new API 2024-05-22 21:03:43 +02:00
the-real-herowl
63b2da7aa0 Added on_save_effect support for mobs 2024-05-22 21:03:43 +02:00
the-real-herowl
914e3c6c2a Effects persist on loads for mobs too 2024-05-22 21:03:43 +02:00
the-real-herowl
7cd0cfede8 Further (mcl_)luck functionality
* XP from mob breeding impacted by luck
* eye of ender explosion chance impacted by luck
* fishing loot impacted by luck
* melee critical damage impacted by luck
* also fixed 2 scripts marked as "executable"
2024-05-22 21:02:25 +02:00
the-real-herowl
0c4094596e Improved haste and fatigue effects
* fixed a few crashes related to unusual effect levels
* added haste and fatigue combat functionality
* added some cleanup to avoid hangover unstackable items
* capped the slowdown from fatigue at 5 minutes digging time
* (despite the above, if a tool has a longer time set in definition,
	that still works)
* removed an unused "global" variable
2024-05-22 21:02:25 +02:00
the-real-herowl
456d205161 Added strength and weakness effects
* also highest effect level displayed in HUD set to 3000
* also improved indicating effects with strange factors in HUD
2024-05-22 21:02:25 +02:00
the-real-herowl
753545d714 Merge pull request 'Rover and Stalker' (#4282) from rover_stalker into master
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4282
2024-05-22 19:01:14 +00:00
the-real-herowl
48e6ffa935 Improved tool tooltips (#4306)
Co-authored-by: Araca <araca.prod@gmail.com>
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4306
2024-05-22 18:55:07 +00:00
teknomunk
0279dde3d0 Limit check to +/- 16 nodes from goal position (maximum 33 nodes, 3 map blocks) 2024-05-22 15:25:38 +00:00
teknomunk
2a014ca79c Change y range calculation to use outer zone distance and not middle to let mobs spawn far away from the player 2024-05-22 15:25:38 +00:00
teknomunk
1bc0a0b411 Implement a continuous distribution function using a piecewise linear function for selecting the distance from the player to spawn mobs with, fix crash when no nodes are found under air at the goal position 2024-05-22 15:25:38 +00:00
teknomunk
bd6c8d35c3 Change y_min/y_max calculations 2024-05-22 15:25:38 +00:00
teknomunk
3850fc1a9f Limit y range to the same hemisphere (top/bottom) 2024-05-22 15:25:38 +00:00
teknomunk
74cf14ef0f Close if statement 2024-05-22 15:25:38 +00:00
teknomunk
3a4a8799ea Change mob spawning randomization from polar coordinates to spherical coordinates, move position validation code from find_spawning_position to get_next_mob_spawn_pos, minimize code remaining in find_spawning_position 2024-05-22 15:25:38 +00:00