Cataclysm Traveloptics Compat Fix
This is a pure compatibility patch mod. It adds no new gameplay content, items, mobs, weapons, spells, or mechanics.
Its purpose is to keep T.O Magic 'n Extras (Traveloptics) and several related spell mods working correctly with newer versions of Cataclysm and AzureLib by restoring removed classes, adapting changed APIs, repairing broken Mixin targets, and providing runtime compatibility bridges.
What it fixes
1. T.O Magic 'n Extras 6.3.0 ↔ Cataclysm 3.31
Fixes traveloptics_cataclysm_compat crashes caused by Cataclysm 3.31 removing or renaming classes and particle data types.
-
Fixes
NoClassDefFoundErrorfor removed particle data classes such as:-
LightningParticle$OrbData -
CircleLightningParticle$CircleData -
Custom_Poof_Particle$PoofData -
LightTrailParticle$OrbData -
Lightning_Zap_Particle$ZapData -
Not_Spin_TrailParticle$NSTData -
RingParticle$RingData -
RoarParticle$RoarData -
StormParticle$OrbData
-
-
Provides compatibility implementations for the removed particle option data classes and converts them to the real Cataclysm 3.31
Options.*particle records at runtime. -
Supports synchronization of particle parameters from server to client.
-
Fixes renamed classes:
-
Dungeon_Eye/DungeonEyeItem→DungeonEyeItem -
Boltstrike_Entity→Bolt_strike_Entity
-
-
Provides compatibility for removed
CMConfigvalues:-
HarbingerLightFire -
HarbingerHealingMultiplier
-
-
Fixes the
ModParticle.SANDSTORM→ModParticle.STORMfield rename. -
Fixes the
DeadKingAnimatedWarlockAttackGoalpackage relocation in Iron's Spells 'n Spellbooks 3.16+. -
Removes obsolete Traveloptics entity type references from its entity tags:
-
spectral_blink_blacklist -
aerial_collapse_dr -
element_fire
-
These fixes allow Traveloptics features such as its spell effects, particles, entities, and Cataclysm integrations to continue functioning with Cataclysm 3.31+.
2. SomakeSpells 1.0.8 ↔ Cataclysm 3.31
Fixes a client-side Mixin injection failure in SomakeSpells.
SomakeSpells' RendererAltarOfFireMixin redirects a CMRenderTypes.getGlowingEffect(...) call that existed in older Cataclysm versions. The corresponding glow-layer call was removed in Cataclysm 3.31, causing the Mixin to fail during client initialization.
-
Restores the required glow-layer call inside
RendererAltar_of_Fire#render. -
Places the compatibility call after the base model pass and before
renderFlamePart. -
Restores the target invocation required by SomakeSpells'
@Redirect. -
The compatibility glow layer is only enabled when SomakeSpells is installed.
-
Without SomakeSpells, Cataclysm 3.31 retains its native altar rendering.
3. Legendary Spellbooks 0.4.1 ↔ Iron's Spells 'n Spellbooks 3.16.x
Fixes server crashes caused by spell projectiles whose original caster has already disappeared.
Several Legendary Spellbooks projectiles can remain alive after their caster dies or unloads. Their getOwner() call may then return null, which was passed directly to AbstractSpell.getDamageSource(...).
Affected projectiles include:
-
Soul Trident
-
Annihilation Beam
-
Poison Wave
-
Annihilation Arrow
-
Spell Bomb
-
Spell Cloud
-
Annihilation Bomb
-
Fire Pillar
The compatibility patch changes the behavior to:
Owner exists → use the original owner
Owner is null → use the projectile itself as the damage source
Normal behavior is unchanged whenever the original owner still exists.
This prevents NullPointerException crashes during projectile ticking after the caster has disappeared.
4. Cataclysm: Spellbooks 1.2.5 ↔ Cataclysm 3.31
Cataclysm: Spellbooks 1.2.5 was compiled against older Cataclysm APIs and references several classes, fields, and constructors that were removed or changed in Cataclysm 3.31.
Particle compatibility
Provides compatibility for the removed:
-
LightTrailParticle$OrbData -
StormParticle$OrbData -
TrackLightningParticle$OrbData -
RingParticle$RingData
The client-side compatibility bridge converts the legacy particle data into the corresponding Cataclysm 3.31 Options.* records.
This covers particle effects used by features including:
-
Freezing / Molten Bullets
-
Parting Shot
-
Gravitation Pull
-
Thoth's Witness
-
King's Wrath
-
Cursed Frenzy
-
Mechanical Flight Armor
CMConfig compatibility
Restores the removed:
CMConfig.Armor_Infinity_Durability
field for armor and Murasama durability handling.
Renderer compatibility
Redirects the removed:
Ancient_Remnant_Rework_Renderer
reference to the Cataclysm 3.31 renderer:
Ancient_Remnant_Renderer
This prevents client-side renderer registration crashes involving the Phantom Ancient Remnant.
Wither Missile constructor compatibility
Cataclysm 3.31 changed the Wither_Missile_Entity velocity constructor.
The old velocity parameters used by AerialAssaultSpell are converted into the new Vec3 format through a compatibility factory.
5. Cataclysm: Spellbooks 1.2.5 ↔ AzureLib 3.1.x
Fixes compatibility problems caused by the AzureLib 3.1 package and API migration.
Cataclysm: Spellbooks 1.2.5 references AzureLib 3.0.x classes under:
mod.azure.azurelib.rewrite.*
AzureLib 3.1.x removed the rewrite package and moved these classes to:
mod.azure.azurelib.*
The compatibility layer updates AzureLib references across 38 classes, including:
-
Armor renderers
-
Item renderers
-
Animation classes
-
Registration classes
-
Method descriptors
-
Field references
-
Stack frames
-
Generic signatures
-
Inner classes
-
invokedynamic/ bootstrap method handles
Additional API changes are also handled:
-
AzArmorRendererconstructor:-
AzRendererConfig -
→
AzArmorRendererConfig
-
-
RenderUtils:-
util.RenderUtils -
→
util.client.RenderUtils
-
-
CoreGeoBone-
→
AzBone -
for
matchModelPartRot
-
This prevents both startup crashes and delayed client crashes that would otherwise occur when affected armor, items, or animations are first rendered.
Compatibility Design
This mod does not modify the original mod JAR files.
Instead, it uses runtime bytecode transformations and dedicated compatibility classes to adapt older mods to newer APIs.
-
No new gameplay content
-
No new items or blocks
-
No new mobs
-
No new spells
-
No balance changes
-
No changes to the original mod JARs
-
Optional compatibility targets are only activated when the corresponding mod/classes are present
-
Client-only particle logic is isolated from dedicated-server code
-
Particle data can be synchronized between server and client
-
Compatibility classes are kept in this mod's own package to avoid package conflicts and JPMS
split-packageissues
Supported Environment
Minecraft: 1.20.1
Forge: 47.4.x
Cataclysm: 3.31+
T.O Magic 'n Extras / Traveloptics: 6.3.0+
Iron's Spells 'n Spellbooks: 3.16+
AzureLib: 3.1.x

