Changelog DynamX 4.2.0 :
The modifications followed by a (*) were made by our contributors, MK, frh, Ertinox45, JarException and gameusefly. Thanks for your contributions ;)
4.1.0 Main features and fixes:
- Added .gltf model support. The support of animations will come in a future update.
- Add engine, sound, steering wheel and propeller blades support on boats.
- Add seats support on blocks and props.
- Add storage support on blocks and props.
- Add reverse, handbrake and door sounds options.
- Add parts inheritance system: lights and license plates can be placed on moving parts like doors.
- Add automatic part positioning from 3D model.
- Transparency is now supported for blocks, items and armors.
- Add
BreakHardness
, ExplosionResistance
, SoundType
, HarvestTool
and HarvestLevel
properties on blocks.
- Fix broken
UseUdp
config option (it couldn't be disabled).
- Fix some issues with BungeeCoord servers.
4.2.0 Main features and fixes:
- Fix pack sync feature (can be enabled in server's dynamxmod config file)
- There were many issues, all of them should have been fixed and the system should be stable now
- Fix missing
RenderDistanceSquared
implementation for entities
- Fix player sometimes rendered with the wrong 3D model
The wrong player model was used when rendering "default" (steve) and "slim" (alex) players at the same time
Packs:
Some fixes and new useful config options.
We also added the .gltf model support to DynamX. Animations aren't yet implemented, but it's coming ;)
New features:
Add engine and sound support on boats (working like car engines with the same config options (except engine braking and steering properties))
Add doors support on boats
Add rotating propeller blade on boats (same as the "Rotor" config of helicopters)
Add seats support on blocks and props
Add storage support on blocks and props
Add reverse, handbrake and door sounds options (ReversingSound
, HandbrakeSoundOn
and HandbrakeSoundOff
in vehicles (wheeled ones only, not boats or helicopters), AttachSound
in trailer config, DoorOpenSound
, DoorCloseSound
in door config)
Add InWater damping properties on vehicles and props (InWaterLinearDamping
and InWaterAngularDamping
properties)
Add RenderDistanceSquared
property on vehicles
Added .gltf model support
Add parts inheritance system: lights and license plates can be placed on moving parts like doors. This system can be used by addons (see the API changes section).
Add DependsOnNode
property on lights: the value should be the name of the part this light is attached to (for example, DependsOnNode: Door_trunkdoor
). We advise addon makers to use the same property name in their parts.
Add DependsOnNode
property on seats: the value should be the name of the part this light is attached to (for example, DependsOnNode: Door_trunkdoor
). With that, seats can be placed on other (moving) parts. We advise addon makers to use the same property name in their parts.
Add automatic part positioning from 3D model
- Part positions can now be extracted from the 3D models
- Wheels can now be in the same 3D model as the vehicle itself (added "Rim" and "Tire" (or "Tyre") config properties in PartWheel)
The automatic part positioning reads the position of the object (wheel, steering wheel...) in the 3D model so you don't have to manually write it in the config file. And you don't need to place the object manually in 0 0 0 when exporting the model !
-> Fully supported for GLTF models.
-> Partially supported for obj models (mudguards and doors not supported).
Added the speed limiter icon from the BasicsAddon, and remove the "Speed limit: xx" text from the vehicle hud.
Added EngineStartupTime
property to helicopters: this is the time to (automatically) reach 100% when starting a helicopter.
Transparency is now supported for blocks, items and armors.
Add DisableItemTooltips
config option and translate tooltips
Add auto translation on storage parts
Changes:
Now, if the light source uses the owner's (vehicle or block) variants for the "off" state (a yellow off state and a red off state for example), they should be added as a sub property of the light (so if the light has "off" state variants, they should be configured in the vehicle, and in the vehicle lights, and DynamX will automatically match them).
Example: ==TODO==.
Physics:
A lot of fixes and performance improvements.
4.1.0 Fixes:
- Fix entities respawn position when loading a world.
There should no longer be props in the ground, or vehicles with broken suspensions.
- Fixed the terrain generation performance: useless debug functions were eating a lot of cpu time
- Fixed lag spikes when spawning vehicles with doors (because of the same debug functions)
- Optimize and fix joint spawning and synchronization.
Debug triangles generation was taking way too much time, and not actually needed.
Fixed desync problems when coming from far away or connecting to the server.
Reduced joint spawn cooldown when spawning vehicles: it's now instantaneous.
- Use static render for closed doors. The doors will now stay attached to your car when you're driving.
- Fixed collisions and walking player position on vehicles (you're not able to fly above vehicles anymore)
- Fix part float drag force formula
- Fix engine started sound not played for other players
- Optimize player collision with large blocks by a lot
- Inversed boat steer direction when reversing to be more realistic
- Fix big entities rendering when using shaders (sometimes they were disappearing from the view)
- Fix broken /dynamx refresh_chunks command
4.2.0 Fixes:
- Improve parts of the terrain code and improve stability
- Fix a terrain crash when Mc was unloading a chunk that was currently loading in DynamX terrain system
- Fix potential memory leak on server with physics chunks. The chunks requested by the clients where sometimes loaded and never unloaded, even if not used. Clean MessageQueryChunks code for better readability.
- Fix chunks can be stuck in LOADING state with outdated async loading
- Improve chunk terrain debug
- Optimize and fix pool object creation. Optimize memory usage. Use hash map pool on client.
Api changes:
There was a lot of refactoring, including code consistency improvements, javadoc improvements and an update of the ACsGuis dependency to 1.4.2.
New features:
- Add builtin props support (props added in addons)
- Add
canInteract
method on InteractivePart
Add
ITerrainUpdateBehavior
interface.
This allows to ignore certain world changes and optimize the terrain generation performance. Also added more information on chunk updates in ChunkGraph.
- Add
PhysicsEvent.PhysicsCollision.Pre
event (fired at each bullet collision event, which can happen several times, for each collision points). The original PhysicsEvent.PhysicsCollision
stays fired once at each collision between two objects.
- Add client only
RegisteredSubInfoTypes
support
- Support modules on blocks (on the same model as for entities)
- Support all types of
InteractiveParts
on blocks, using the same methods as for entities
- Add
IgnoreCollisionEntities
config option to dynamx config file. It allows to ignore collisions between certain types of entities and DynamX entities (allowing performance improvements) (*)
- Enable modules to sync spawn data using Minecraft
IEntityAdditionalSpawnData
interface
Rewrote the parts rendering code:
This new render system, based on a SceneNode
graph allows to attach parts to others (for example, have lights on an openable trunk).
This render system applies to entities (vehicles, props), blocks, items and armors.
This render system uses JOML transform matrixes instead of the classic GL11 transformation methods, improving the performance and preparing the support of BetterLights.
/!\ This will break all addons that are rendering parts.
Changes:
- Replaced the drawParts method of IDrawable parts by a graph nodes system (the parts a nodes of the entity rendering graph (you can see it as a tree where the root is the entity and the leafs, the parts)). Check the DynamX or the BasicsAddon code to see how it works.
- Rework events for the new render system: removed
PhysicsEntityEvent.Render
, VehicleEntityEvent.Render
, DynamXArmorEvent
, DynamXItemEvent
and EventStage
.
- Updated
DynamXBlockEvent.RenderTileEntity
and DynamXModelRenderEvent
.
- Add
DynamXRenderItemEvent
, DynamXEntityRenderEvent
and DynamXArmorRenderEvent
events.
- Added
CreatePartSceneEvent
, BuildSceneGraphEvent.BuildEntityScene
, BuildSceneGraphEvent.BuildBlockScene
, BuildSceneGraphEvent.BuildArmorScene
and BuildSceneGraphEvent.BuildItemScene
events.
- Moved the debug rendered to the new SceneNode render system. Deprecated
DebugRenderer
interface and PhysicsEntityEvent.InitRenderer
event.
- Added
DynamXBlockEvent.BuildSceneGraph
event.
- Deprecated
DynamXRenderUtils.renderCar
.
They allow to customize the item transforms depending on the view (left/right first/third person, gui, ground, ...), like in json model format.
Example:
ItemTransforms{
View_TPLH{
Translate: 0.05 0 0
Rotate: 0 0 70
Scale: 1 1 1
}
View_TPRH{
Translate: 0.05 0 0
Rotate: 0 0 70
}
View_FPLH{
Translate: 0 0.2 0.2
Rotate: -15 0 95
}
View_FPRH{
Translate: 0 0.2 0.2
Rotate: -15 0 80
}
View_Gui{
Translate: -0.1 0.15 0
Rotate: -40 0 0
}
}
This is supported by vehicles, blocks, items and armors.The old ItemTranslate
, ItemRotate
and ItemScale
will still be supported, but can't be mixed with the new system in the same property file.
Terrain fixes and optimisations
- New terrain file version (7): with performance/size optimization. No more empty CompoundBoxTerrainElement are allowed, and a new EmptyTerrainElement was created to "mark" chunks as generated and loaded, but empty. Old terrain files will be automatically converted progressively (when loaded).
- Remove console error spam with invalid tile entities (of removed DynamX blocks) and correctly re-generate the chunk collisions
- Fix terrain wasn't saved when loaded immediately, resulting in multiple (useless) computations (performance optimization)
- Fix
TEDynamXBlock
forcing chunk terrain reload when loaded from nbt (performance optimization)
- Fix terrain crash when unloading a chunk that hadn't the time to load yet
Immediately remove unloaded loading chunk and completely discard loaded data in receiveAsyncLoadedChunks method
Add somme doc to WorldTerrainState
- Improve global code quality
- Add code to prevent stuck loading chunk
- Fix chunks can be stuck in LOADING state with outdated async loadingAlso clean some code
- Affine chunk debug error/warning messages
Library changes
- ACsGuis was updated to 1.4.2, with a lot of breaking changes. If you want help about migration, ask directly to Aym'.
- Updated MPS to version 1.5.3, fixing bugs and supporting future protected pack formats
Other structure changes:
- Rename
IInfoOwner
into IDynamXItem
- Modified events in
VehicleEntityEvent
: interact and mount/dismount events now handle props
- Split PartSeat in BasePartSeat, PartBlockSeat and PartEntitySeat
- Split BLOCK_AND_PROPS sub info type registries into BLOCKS and PROPS
- BoatPropellerModule, SeatsModule and WheelsModule are now added by their respective part, like any other module (they were hardcoded in entity classes)
- Renamed all obj related classes (generally using
DxModel
instead of ObjModel
in class names)
- Moved
Engine
modules into fr.dynamx.common.entities.modules.engines
package
- Rename
ICollidableObject
into DynamXObject
- Rename
sortModules()
in getListernerModules()
in ModularPhysicsEntity
Renamed PhysicsEntityEvent.Phase
into EventPhase
Add parentTransform
param to SceneNode
render method, so transform flow is more clear
- Fixes helicopter rotor rotates on the item in inventory but not on the helicopter in world
- PhysicsHandler : rename
removePhysicsEntity
into removeFromWorld
4.1.0 Other fixes:
- Fix terrain error spam with DynamX tile entities
- Fix suspensions length rendering when the rest length is dynamic
- Updated MPS to 1.5.0 for better security and fixed the auxiliary url. This update fixes potential issues with other mods using custom ssl certificates.
- Fix jme3 being used before being loaded with some addons (and leading to crashes)
- Fix a duplication bug with storages
- Fix a crash with ragdolls and another with the camera
- Fix controls not always being reset when dismounting from a vehicle
- Fix network being loaded before dynamx config (fixes the "UseUdp" config option that wasn't working)
- Optimizations of the client (moved some debug calculus to the right places)
- Fix player duplication with the wrench
- Fix scaling with doors
- Fix crashes related to the debug code of
ClientDebugSystem
(*)
- Reduce debug amount (*)
- Fix blocks collision scale
- Fix a crash with
TEDynamXBlock
- Fix some deprecation/error messages
- Fix some issues with BungeeCoord servers
- Prevent mass prop spawning in creative
- Fix lights support on blocks (fix texture variants and lightmap)
- Fix lib bullet download (was broken due to new github ssl certificates)
- Fix player look vector when in vehicles. This can solve problems with other mods using the player look.
- Fixed built-in (from addons) prop loading
- Fix
PartDoor
always loading the 3D model even if not needed, leading into model loading errors
- Added gui error messages when failing to download lib bullet jme (instead of crashing the game), and when failing to connect to mps so the users can know what's happening.
- Ignore bad/corrupted udp packet (reduces server console spam)
- Storages now drop their content when destroyed
- Light sources now use the current object (entity/block) texture variant when off
- Fix blocks debug rendering
- Fix/prevent various network issues and crashes (synchronizable variables registry sync, pos variable init, seat sync...)
- Fix a possible crash when failing to load the bullet library
- Fix player spawn in car: correctly respawn the player in his seat when he left the world sitting in a vehicle
- Improve "bad connection" warning: make it more discreet
- Fix "Unable to parse jar file" startup error
- Add separated check for ACsGuis version, and update it
- Prevent crashes with badly configured lights, and lights overriding
- Fix: custom processPlayer in
MixinNetHandlerPlayServer
causing crash (*)
- Fix change terrain debug value while in-game and better handle chunk graph modes
- Fix unable to break entities a bit close/in the ground
4.2.0 Other fixes:
- Link boat rotor speed to boat throttle and improve brake/sound handling
- Clean commands code and improve parameters/error handling
- Add new client command for debug:
/client_dynamx <debug_gui|chunk_control|terrain_debug|udp_test|network_debug|vehicle_debug>
- Add
/[client_]dynamx pool_states
command
- Fix crashes with wheels and joint re-attach
- Fix bullet warning when killing ragdolls
- Now automatically disconnect errored udp clients from server
- Fix helicopter particles spawn (was checking for air blocks at the wrong place)
- Fix crashes with blocks from removed packs
- Fix some entity properties not correctly synchronized in single player if not changing after entity spawn
- Fix wheel sync crash when pack are currently reloading. Improve WheelsModule code robustness.
- Fix lighting on some models (like the ball from the BasicsAddon)
- Test lock on mtl loaders list to avoid crash with unexpected null values
- Fix block customization gui sync in multiplayer
- Fix rotor rotation axis (was hardcoded)
Mod compatibility:
The MalisisDoors version compatible with DynamX has been updated, download it on the DynamX discord server.
Known problems :
All issues are listed here : Issues · DynamXInc/DynamX · GitHub.
There is a list of mods incompatible with DynamX on our discord: Incompatible mods.
Thanks for your support to DynamX.