Commit Graph

224 Commits

Author SHA1 Message Date
Jason Penilla
f1eb61cc51 0.1.0-beta.5 v0.1.0-beta.5 2024-10-14 19:17:38 -07:00
Jason Penilla
58c933938f fabric: Call ServerChunkEvents.CHUNK_LOAD/CHUNK_UNLOAD, add and call FabricHooks.ON_EXPLOSION event (#52)
fixes #16
related to #45
2024-10-14 19:06:58 -07:00
Jason Penilla
1dc3cb5f14 Improve LeafProfiler output formatting (#28)
make it readable
2024-10-14 18:03:04 -07:00
Jason Penilla
2acfc6a68e Add missing require = 3 to util_threading_detector PalettedContainer constructor injection, and simplify fast_palette PalettedContainer constructor injection. 2024-10-02 10:54:52 -07:00
Jason Penilla
c22538c364 Back to 0.1.0-SNAPSHOT 2024-09-30 19:22:12 -07:00
Jason Penilla
e244c60375 0.1.0-beta.4 v0.1.0-beta.4 2024-09-30 19:10:12 -07:00
Jason Penilla
65253d5199 Re-fix dev-time conflict with lithium height overrides
See cfa80c44 and 2acd5cc2
2024-09-30 19:00:00 -07:00
Jason Penilla
6e82b034b7 Fix typo in previous commit
Also for some reason the issue resolved by cfa80c44 seems to be back...
2024-09-30 18:52:01 -07:00
Jason Penilla
a7cd78e63b Disable lithium mixin.util.entity_movement_tracking mixins, see #33 2024-09-30 18:43:25 -07:00
Jason Penilla
05ba7066d9 Add NeoForge/Mojang names for redirects in NaturalSpawnerMixin 2024-09-30 10:17:28 -07:00
Spottedleaf
340ac4e8f5 Fix incorrect fluid pushing velocity
Forgot to re-assign the flow vector variable with the scaled
flow.
2024-09-30 04:39:05 -07:00
Spottedleaf
a4770aca2b Fix performance regression in Entity#updateFluidHeightAndDoFluidPushing
The upper bounds from Vanilla are exclusive, but we were treating
them as inclusive which changes behavior and increases the number
of blocks read.
2024-09-30 04:39:05 -07:00
Spottedleaf
a8d4ce526b Optimise block/chunk reading in Entity#updateFluidHeightAndDoFluidPushing
Like other block reading code, a lot of time gets spent retrieving
the chunk and retrieving the section which we can avoid.
2024-09-30 04:39:05 -07:00
Spottedleaf
2acd5cc213 Optimise Level#isOutsideBuildHeight
We can cache the min/max build height to avoid the indirection
required to compute them.
2024-09-30 04:39:05 -07:00
Spottedleaf
07dce0ffe6 Change ShapesMixin#or to perform unoptimised intermediate joins
We can delay the shape optimisation to the final operation, which
should provide a perform boost for merging many shapes.
2024-09-30 04:39:05 -07:00
Spottedleaf
c2e2f0b9f2 Optimise countEntries for low size SimpleBitStorage
We can use a simple array lookup table by palette id when the
number of palette entries is low. This eliminates the need for
the map lookup on each entry.
2024-09-30 04:39:05 -07:00
Spottedleaf
1374ea34ee Replace ticking block coordinate set with ShortList
We can store a position (ranging from 0-4095) into a short,
so we can use ShortList to cut the memory usage in half.
2024-09-30 04:39:05 -07:00
Spottedleaf
fef4872a3a Do not calculate block counts on the client
It appears that this call is very expensive. We instead substitute
an exact check with setting the special colliding blocks to whether
the palette initially contains a special colliding block, and after
on block updating by whether any special colliding block was set.
2024-09-30 04:39:04 -07:00
Spottedleaf
a9678c76eb Fix missing range scale for passenger entities in entity tracker 2024-09-30 04:39:04 -07:00
Spottedleaf
bafa195546 Ensure relative block position methods return an immutable instance
If the relative distance is 0, then we would return the current
instance - which may be a mutable instance. However, Vanilla overrides
the relative function to return an immutable instance even when
the distance is zero. To ensure that this behavior is kept, we return
an immutable instance when the distance is zero.
2024-09-30 04:39:04 -07:00
Spottedleaf
04c6e6c01a Track broadcast chunks separately from player ticking chunks
Not all broadcast chunks are ticking in the new chunk system,
so we need to track them separately to ensure updates take place
in non-simulation range chunks.
2024-09-30 04:39:04 -07:00
Spottedleaf
7351872730 Avoid performing biome lookup for mob cost when entity has no cost
Most mob types do not have a cost with any biomes, so there is
no point in performing the lookup.
2024-09-30 04:39:04 -07:00
Spottedleaf
77b977ac17 Reduce chunk tick iteration count
By only iterating over chunks that are both ticking AND near players
or marked for ticking, we can reduce the number of chunks to iterate
over in higher SD settings.
2024-09-30 04:39:04 -07:00
Spottedleaf
f0d122f358 Optimise MobCounts implementation
Use of a map for category->count is inefficient as the key
is an enum. We can use a simple int array, which reduces
the get() and compute() calls to an array access.
2024-09-30 02:29:22 -07:00
Spottedleaf
aa240eb16d Modify isInWall to use same block retrieval as CollisionUtil 2024-09-30 02:25:24 -07:00
Spottedleaf
f9c99d1e32 Avoid streams for block retrieval in Entity#move
Profiling shows that the streams alone account for half of the time
for this specific check (inside fire/lava).
2024-09-30 02:25:24 -07:00
Spottedleaf
3fa0ff67a7 Optimise checkInsideBlocks
Use the same block retrieving algorithm as CollisionUtil
2024-09-30 02:25:24 -07:00
Spottedleaf
f7d9e5b422 Optimise findSupportingBlock to be like CollisionUtil
CollisionUtil's block iteration supports using the special
colliding blocks, as well as a superior (but more verbose)
chunk iteration.
2024-09-30 02:25:24 -07:00
Spottedleaf
5d1975154b Add dev override for max view distance 2024-09-30 02:25:24 -07:00
Spottedleaf
d21fa9f48c Use SimpleRandom for chunk tick shuffling 2024-09-30 02:25:24 -07:00
Spottedleaf
1c150afe83 Add and use reference counted ChunkData
ChunkData is stored directly on chunk holders, entity slices,
and on entities. Currently, this allows access to
NearbyPlayers$TrackedChunk without performing a map lookup.
2024-09-30 02:25:24 -07:00
Spottedleaf
d9988c86f4 Add direct lookup by chunk for NearbyPlayers
This simplifies the lookup code by reducing the number of "random"
accesses to 1 (get() call) assuming that the directByChunk array
is cached.
2024-09-30 02:25:24 -07:00
Jason Penilla
0958439e54 Improve mod compat for ShapesMixin (#36)
Use an inject instead of overwrite to avoid mixin conflicts - obviously this will still disregard any changes made by other
mixins, but at least it won't conflict immediately. This is useful because some library mods mixin here when only the content
mod actually needs the change.

Fixes incompatibility with CreativeCore but not LittleTiles
2024-09-29 18:32:04 -07:00
Jason Penilla
8d9d6488e8 Improve mod compat for EntityTickListMixin (#35)
Replaces an overwrite with a cancellable inject at head.

Fixes compat with mod AllTheLeaks
2024-09-29 18:23:17 -07:00
Jason Penilla
8ba83bc9c2 Adjust fluid state cache init for better compatibility (#31)
Some mods rely on data initialized in their fluid subclass constructor for the methods we call, which won't be available at the superclass constructor return.

Injecting into the registry add is a little ugly, but should be fine.

Fixes compat with Immersive Engineering.
2024-09-29 18:18:02 -07:00
Jason Penilla
0c60a6ac08 Update dependencies
Newer NeoForge has moved their coremods from JS to Java, which should slightly improve startup times (as the JS engine won't load without another mod that uses it), making this update relevant for development
2024-09-28 12:20:46 -07:00
Jason Penilla
d404dbc6c5 Fix entity cramming (#32)
We want to count non-passengers, not passengers
2024-09-24 15:29:11 -07:00
Jason Penilla
8d456890f1 Back to 0.1.0-SNAPSHOT 2024-09-17 16:58:55 -07:00
Jason Penilla
23eddfe918 0.1.0-beta.3 v0.1.0-beta.3 2024-09-15 13:53:16 -07:00
Jason Penilla
55ff406372 Update readme and mod metadata for Radium changes (#18) 2024-09-15 13:47:10 -07:00
Jason Penilla
3e25a2f4aa Update publishing metadata 2024-09-15 13:40:43 -07:00
Jason Penilla
cfa80c4488 Raise priority of collisions LevelMixin to apply after Lithium
Lithium replaces some of the height-related methods used by WorldUtil to return fields initialized in their constructor hook. We need to apply afterward to have them return valid data.

Given the application-order sensitive nature of the issue, it only presented in-dev.
2024-09-15 13:36:29 -07:00
Jason Penilla
453b635ef2 Fix explosion conflict with lithium 2024-09-15 12:43:13 -07:00
Jason Penilla
e07e4fdcc4 Reorder lithium overrides 2024-09-15 12:42:44 -07:00
Jason Penilla
81bb9701da Reformat FMJ to match editorconfig settings 2024-09-15 12:41:20 -07:00
Jason Penilla
d0a7f9af62 Add readme badges (#23) 2024-09-14 18:58:52 -07:00
Jason Penilla
fe7bcfc56a Back to 0.1.0-SNAPSHOT 2024-09-07 18:01:51 -07:00
Jason Penilla
44f8058b09 0.1.0-beta.2 v0.1.0-beta.2 2024-09-07 17:53:22 -07:00
Jason Penilla
d1f8e81913 Update gradle plugins and dependencies 2024-09-07 10:26:08 -07:00
Jason Penilla
dcef1320b2 Switch version back to 0.1.0-SNAPSHOT
We are still in the 0.1.0 beta cycle, bumping to 0.1.1-SNAPSHOT previously was an error
2024-09-07 10:25:17 -07:00