Runic Races

Runic Races is a fantasy-focused Origins add-on for Minecraft 1.20.1 that adds 24 distinct races across 6 families, each with unique abilities, drawbacks, and playstyle-defining traits. It's a medieval fantasy set designed for the Runecraft modpack.

File Details

Runic Races 1.0.2 (Forge 1.20.1)

  • R
  • Apr 19, 2026
  • 642.63 KB
  • 507
  • 1.20.1
  • Forge

File Name

runic_races-1.0.2.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:runic-races-1516142:7947783")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

[1.0.2] - 2026-04-17

Bug Fixes

  • Runecraft crash at startup -- Deploying 1.0.1 to the Runecraft instance crashed Forge during the overlay render phase with NoClassDefFoundError: com/otectus/spells_n_gods/compat/SpellsNGodsEvents$OfferingEvent. The sibling mod was renamed from "Spells 'n Gods" to "Runic Gods" (java package com.otectus.spells_n_godscom.otectus.runic_gods, API class SpellsNGodsAPIRunicGodsAPI, events class SpellsNGodsEventsRunicGodsEvents). Our ModList.isLoaded("runic_gods") gate still passed because the mod id was unchanged, so we instantiated the integration — but Forge's EventBus#register introspects method parameter types, which failed to resolve the stale FQCN. Ported the integration to the new namespace; API method signatures are identical so the port was a pure rename. Dependency updated: Dependencies/spells_n_gods-0.1.0.jarrunic_gods-1.0.1.jar. Integration renamed: com.otectus.runic_races.integration.spellsngods.SpellsNGodsIntegrationcom.otectus.runic_races.integration.runicgods.RunicGodsIntegration.

Hardening

  • IntegrationManager now catches Throwable, not Exception -- NoClassDefFoundError / LinkageError are Error, not Exception, so a single renamed optional-mod class would bypass the per-integration guard and crash the entire mod load. Widening the catch means one failed integration is logged and skipped while the others still load. Three other integrations (IronsSpellsIntegration, ArsNouveauIntegration, SpellsNGodsIntegration/now RunicGodsIntegration) reference optional-mod classes in their @SubscribeEvent method signatures and all had the same latent crash vector — now defended against.

[1.0.1] - 2026-04-17

New Features

  • Back to Heritage button in race picker -- Once a family/heritage is selected, the race-picker screen now shows a "← Back to Heritage" button in the top-left corner. Clicking it clears the family origin server-side and re-opens Origins' picker on the family carousel, letting players change heritage without admin commands.

Networking

  • New C2SReturnToFamilyPacket (client → server). Server resets the runic_races:family layer's origin to Origins' EMPTY sentinel via IOriginContainer.setOrigin(familyLayer, EMPTY) -- that routes through setOriginInternal, which revokes the family's Apoli powers, clears hadAllOrigins, and syncs. Server then dispatches Origins' own S2COpenOriginScreen back to the player via OriginsCommon.CHANNEL so the picker re-opens on the family carousel.

Bug Fixes

  • Back-to-Heritage click did nothing -- First cut tried to remove the family entry by iterating IOriginContainer.getOrigins() and calling Iterator.remove(). That map is ImmutableMap.copyOf(layers), so the mutation evaporated and the server-side family origin was never cleared. Switched to setOrigin(familyLayer, EMPTY).