cataclysm magic compat

Quick rating

Community listing page, reviews here may not be monitored by the author.

cataclysm magic compat

No reviews yet

itis a pure compatibility patch that fixes `NoClassDefFoundError` crashes between T.O Magic 'n Extras 6.3.0 and Cataclysm 3.31 via coremod class transformation, a particle stub-bridge system, and corrected entity tags, adding no new content.

Mod Loaders
Minecraft

About

Description

This is a pure compatibility patch mod. It adds no new content, only enabling T.O Magic 'n Extras (traveloptics) 6.3.0 to launch and run properly alongside Cataclysm 3.31.

What it fixes

  1. T.O Magic 'n Extras 6.3.0 ↔ Cataclysm 3.31 traveloptics_cataclysm_compat Crash: NoClassDefFoundError: com/github/L_Ender/cataclysm/client/particle/LightningParticle$OrbData when loading Traveloptics. These classes were removed in Cataclysm 3.31. Rewrote outdated references inside Traveloptics classes: Dungeon_Eye / DungeonEyeItem → real 3.31 classes; Boltstrike_Entity → Bolt_strike_Entity; CMConfig and 9 particle option data classes → stubs within this compat mod. Fixed tag data under data/traveloptics/tags/entity_types/ referencing removed entities.
  2. SomakeSpells 1.0.8 ↔ Cataclysm 3.31 somakespells_cataclysm_compat Crash: SomakeSpells’ mixin @Redirect targets a getGlowingEffect glow-layer invocation present in Cataclysm 2.65. This code path was deleted in 3.31, causing mixin injection failure (0/1 succeeded) and hard client crash during sided_setup. Reinserted the 2.65 glow layer inside RendererAltar_of_Fire#render, after the base model pass and before renderFlamePart, restoring the target call site so the mixin injects successfully. The inserted block is wrapped with SomakeGlowCompat.active(): the glow layer only renders if SomakeSpells is present in the pack; all other packs retain native Cataclysm 3.31 visuals.
  3. Legendary Spellbooks 0.4.1 ↔ Iron's Spells 'n Spellbooks 3.16.3 legendary_spellbooks_null_owner_compat Crash: NullPointerException: Cannot invoke "Entity.m_9236_()" because "entity" is null. Eight spell projectiles (Soul Trident, Annihilation Beam, Poison Wave, Annihilation Arrow, Spell Bomb, Spell Cloud, Annihilation Bomb, Fire Pillar) pass a potentially-null getOwner() directly into AbstractSpell.getDamageSource(...). This occurs when projectiles remain alive for 400 ticks after their caster dies. Inserted bytecode DUP;IFNONNULL;POP;ALOAD 0 before each getDamageSource(...) call, equivalent to Objects.requireNonNullElse(owner, this). Behavior remains unchanged when the owner exists.
  4. Cataclysm: Spellbooks 1.2.5 ↔ Cataclysm 3.31 cataclysm_spellbooks_cataclysm_compat 1.2.5 was compiled against older Cataclysm versions and references members removed or renamed in 3.31. Four fixes applied:
  • Four deleted particle option data classes (LightTrailParticle$OrbData, StormParticle$OrbData, TrackLightningParticle$OrbData, RingParticle$RingData) → stubs in this compat mod. Client-side CompatParticleBridge resolves them back to real 3.31 Options.* records.
  • config/CMConfig → stub CMConfig within this mod (includes Armor_Infinity_Durability field), used by all armor sets and Murasama blade for setDamage reads.
  • Renderer rename: Ancient_Remnant_Rework_Renderer → Ancient_Remnant_Renderer (prevents client NoClassDefFoundError when PhantomAncientRemnantRenderer inherits).
  • Constructor signature fix: old 6-double velocity constructor for Wither_Missile_Entity inside AerialAssaultSpell replaced with CompatWitherMissile.create(...) factory, packaging velocity into the Vec3 required by 3.31.
  1. Cataclysm: Spellbooks 1.2.5 ↔ AzureLib 3.1 cataclysm_spellbooks_azurelib_compat Crash: NoClassDefFoundError: mod/azure/azurelib/rewrite/animation/play_behavior/AzPlayBehaviors. 1.2.5 compiled against AzureLib 3.0.x (classes under mod.azure.azurelib.rewrite.*), while Cataclysm 3.31 / Legendary Monsters packs ship AzureLib 3.1.x: the entire rewrite package was deleted and classes moved directly to the top-level mod.azure.azurelib.*. Updated all rewrite.* references across 38 AzureLib-referencing classes, including member descriptors, stack frames, invokedynamic / bootstrap handles, to point to the new 3.1 top-level package. Two additional breaking changes handled:
  • AzArmorRenderer constructor parameter narrowed from AzRendererConfig to AzArmorRendererConfig.
  • util.RenderUtils moved to util.client.RenderUtils; CoreGeoBone → AzBone for matchModelPartRot.