Commit graph

2639 commits

Author SHA1 Message Date
teknomunk
867ad2b6f6 Implement gamerule:minecartMaxSpeed 2025-01-23 07:11:01 -06:00
teknomunk
fca0d6d7da Change from table indirection to getter/setter functions for dynamically updating local variables 2025-01-23 07:11:00 -06:00
teknomunk
2b141d0d41 Implement doMobLoot gamerule 2025-01-23 07:10:38 -06:00
teknomunk
d61e1786a6 Remove debug print(), add game rules maxEntityCramming, snowAccumulationHeight 2025-01-23 07:10:38 -06:00
teknomunk
d4355556e7 Fix default value handling during set (allows bool settings to be set to false), add game rules: doMobSpawning, disableRaids, doWeatherCycle, doFireTick 2025-01-23 07:10:36 -06:00
teknomunk
c72ff616ab Change hopper minecart delay to 0.25 seconds from 0.05 seconds 2025-01-20 18:42:40 +01:00
teknomunk
53e1546219 Fix crash when hopper minecart is off rails 2025-01-20 18:42:40 +01:00
teknomunk
e08505d24d Make hopper minecart pull items from containers when stopped 2025-01-20 18:42:40 +01:00
teknomunk
9474da5e75 Fix crash 2025-01-20 18:37:09 +01:00
teknomunk
e5279a2723 Rework fixed_timestep() to be more accurate and remove maximum spawn cycle time 2025-01-20 18:37:09 +01:00
teknomunk
ed5a08ba36 Rework build_state_for_position so that more cases will return early and avoid computations and a table allocation, replace find_spawning_position() with get_next_spawning_position(), add (commented out) notes for tracking which cases lead to mobs not spawning to help guide optimization 2025-01-20 18:37:09 +01:00
teknomunk
94da5fe813 Replace minetest. with core., fix percentage calculation 2025-01-20 18:37:09 +01:00
teknomunk
f59beb9961 Address review comments 2025-01-20 18:37:09 +01:00
teknomunk
60d6d252b1 Further optimizations: pairs() -> for i=, remove most mcl_log() calls, remove unused parameter in mob_cap_space() 2025-01-20 18:37:09 +01:00
teknomunk
85155f8cd5 Convert state hash to number from string, exclude core.add_entity() time from profiling 2025-01-20 18:37:09 +01:00
teknomunk
23c04a6735 Add per-spawn-attempt timing calculation 2025-01-20 18:37:09 +01:00
teknomunk
29717808cd Add built-in mob spawn profiling 2025-01-20 18:37:09 +01:00
teknomunk
8cabee0621 Localize minetest.get_node() 2025-01-20 18:37:09 +01:00
teknomunk
ce993654f3 Finish converting to use localized version of math.* functions 2025-01-20 18:37:09 +01:00
teknomunk
e37c8a9530 Fix rebase 2025-01-20 18:37:09 +01:00
teknomunk
8f0fdfe03a Move registered_entity[] check to spawn registration, use localized math.* functions, fix typo, add error messages to asserts in spawn registration 2025-01-20 18:37:09 +01:00
teknomunk
43321083f7 Remove redundant room check 2025-01-20 18:37:09 +01:00
teknomunk
57f3ad4fd7 Change state serialization to use table.concat() with a persistent workspace table 2025-01-20 18:37:09 +01:00
teknomunk
9a34c124c1 Only create biomes_lookup if one wasn't provided in the definition 2025-01-20 18:37:09 +01:00
teknomunk
3a54c67c4c Remove unused table.find(), add comment on fallthru, fix typo in log message, switch to using mcl_log for two log messages, set guardians to no biomes (structures only) 2025-01-20 18:37:09 +01:00
teknomunk
374db5ad24 Add seethru node list support to mcl_mobs.check_line_of_sight 2025-01-20 18:37:09 +01:00
teknomunk
299c209b60 Fix lava spawns 2025-01-20 18:37:09 +01:00
teknomunk
f4e2275ae1 Remove development logging, correct luacheck findings 2025-01-20 18:37:09 +01:00
teknomunk
5844dcfff9 Rewrite mcl_mobs:spawn_specific() in terms of mcl_mobs:spawn_setup() and mark as deprecated, cleanup mcl_mobs:spawn_setup(), compute cumulative chance once when the spawn list is created instead of every time a spawn is attempted 2025-01-20 18:37:09 +01:00
teknomunk
886098e5f4 Remove comment superceded by type annotations, give explicit values for mcl_mobs.SpawnDef.dimension 2025-01-20 18:37:09 +01:00
teknomunk
09eb6bde1e Fix crashes in generating state serialization, make adaptive spawn attempt rate actually work 2025-01-20 18:37:09 +01:00
teknomunk
2626a475ee Redo guardian spawn registration (copy biomes from glow squid) 2025-01-20 18:37:09 +01:00
teknomunk
8957bf300c Make sure all parameters to spawn_specific() get stored in the spawn definition, change select_random_mob_def() to remove possible error() call 2025-01-20 18:37:09 +01:00
teknomunk
9aade4034f Add lava conditions 2025-01-20 18:37:09 +01:00
teknomunk
b4cd5fe37c Add biome_lookup table to SpawnDef, type annotation for mcl_mobs.SpawnDef class 2025-01-20 18:37:09 +01:00
teknomunk
511434a923 Replace compute_hash with a string.format(), move spawn_names into logging block, remove argument aliasing in get_spawn_list(), add SpawnState type annotation 2025-01-20 18:37:09 +01:00
teknomunk
bc5e5f7262 Inline most spawn definition fields, remove table.insert() 2025-01-20 18:37:09 +01:00
teknomunk
0b07f449da Resolve linter warnings, replace get_item_group with groups.* lookups 2025-01-20 18:37:09 +01:00
teknomunk
e4b5673642 Resolve some review comments 2025-01-20 18:37:09 +01:00
teknomunk
35fafc9928 Resolve several lua-language-server findings, add missing get_item_group, remove spawn_def usage (didn't exist where attempted to be used) 2025-01-20 18:37:09 +01:00
teknomunk
add61ad6b2 Change main spawning look to use adaptive delay based on last run with maximum period of 2.5 seconds, put some logging behind a flag, remove unused constants 2025-01-20 18:37:09 +01:00
teknomunk
8b13b36a6a Move raycast_line_of_sight function to mcl_mobs/functions.lua, rework group spawn point selection code, add line of sight check to group origin 2025-01-20 18:37:09 +01:00
teknomunk
8c42694ac9 Change logging default and one log message 2025-01-20 18:37:09 +01:00
teknomunk
78aa99eacd Refactor spawn_group() so that each spawn point can only be used once and protection is respected 2025-01-20 18:37:09 +01:00
teknomunk
97a674e8c9 Fix passive spawning, disable some debug logging 2025-01-20 18:37:09 +01:00
teknomunk
28a058f8b7 Stop mobs that require ground from spawning in water, remove unused code and variables, some minor microoptimizations 2025-01-20 18:37:09 +01:00
teknomunk
61c9f9eade Drop biome group generation and replace with spawn state checks for much improved performance (but has regressions), change logging of failure to find spawn point, increase spawn attempts to 4 per second with no position retries and only a single mob or group per attempt 2025-01-20 18:37:09 +01:00
teknomunk
8af26e2e75 Replace biome_check() with table.find() 2025-01-20 18:37:09 +01:00
teknomunk
b636a2e831 Implement generating biome groups for spawning (not actually used yet) 2025-01-20 18:37:09 +01:00
teknomunk
0cb2ef8957 Initial changes to spawn_check() and spawn_a_mob(), add profiling for mob spawning 2025-01-20 18:37:09 +01:00