Skip to content

ThaumicHorizons ​

21 merged pull requests.

New Features ​

  • #94 Added dispenser behaviors for Alchemite block and custom boat/projectile entities via new BehaviorDispenseBoat class and modifications to entity classes to support dispensing. - @koolkrafter5
    • Added: Dispenser support for Alchemite blocks, Dispenser support for Blast Phials, Injections, Incubated Eggs, Dispenser support for Greatwood/Thaumium boats, BehaviorDispenseBoat handler class

Changes ​

  • #134 Removed async generation thread (PocketPlaneThread), integrated generation logic back into PocketPlaneData on main thread, removed 'generating' boolean flag. - @tiffit
    • Removed: async PocketPlaneThread
    • Fixed: pocket dimension generation crash, async generation race conditions
    • Closes GTNH#25182, GTNH#25794
  • #102 Modified TileSyntheticNode to consume full stack of essense per activation. - @Caedis
    • Fixed: repeated key binding requirement for essense consumption

Bug Fixes ​

  • #137 Set damage=2 for Warded Syringe in NEI display. - @Ableytner
    • Fixed: Warded Syringe recipe visibility in NEI
    • Closes GTNH#26104
  • #126 Updated Thaumcraft dependency version and added null safety in ThaumicHorizons main class. - @koolkrafter5
    • Fixed: NullPointerException with wand components on Arcane Workbench
    • Closes GTNH#24871
  • #125 Fixed sidedness handling in EventHandlerEntity for block placement. - @thehoblit
  • #121 Added check in TileVortexStabilizer for other active stabilizers before unconditionally calling setNodeType on deactivation. - @Eldrinn-Elantey
    • Fixed: node type restoration with multiple active stabilizers
  • #119 Converted colon-syntax switch cases to arrow syntax in getIcon, fixed case 0/1 swap in case 10, and ensured all sides are handled explicitly to prevent fall-through. - @Eldrinn-Elantey
    • Fixed: gateway portal texture display on outer faces, lapis showing instead of stone on top corner
  • #116 Fixed beam count overflow (count += 6 → Math.max(0, 6 - beams)), added S35PacketUpdateTileEntity sync with full NBT, clientSynced flag, lastSyncedBeams batching, separate if for target swaps, and rewrote vortex rotation to use screen-plane basis vectors with continuous nanosecond animation. - @Eldrinn-Elantey
    • Fixed: vortex sprite flickering, beam desync on chunk reload, stabilizer target synchronization, vortex rotation jitter
    • Closes GTNH#24380
  • #115 Modified portal exit rotation to use TileSlot.xAligned: xAligned portals face south (yaw=0), Z-aligned portals face east (yaw=270). Replaced instanceof casts with pattern matching. - @Eldrinn-Elantey
    • Fixed: random exit rotation on pocket plane portals
  • #114 Fixed BlockSlot.onBlockActivated return value, ItemKeystone instanceof logic, coordinate binding formula using dimensionID, wormhole cooldown (10→200 ticks), generation thread execution (.run()→.start()), chunk marking in wrong dimension, and added null checks and portal state guards. - @Eldrinn-Elantey
    • Fixed: keystone binding, pocket dimension portal interaction, wormhole teleport loop, world save corruption, portal destruction race condition
    • Migration: Re-bind keystones to pocket planes if they became unbound; avoid fast repeated wormhole teleports to prevent ping-pong effects.
  • #111 Added null check and manual TileEntity instantiation in PocketPlaneData.generatePocketPlane to handle asynchronous vortex block placement. - @ROBERT-PARKOURCIVILIZATIONGOD
    • Fixed: NullPointerException during async pocket dimension generation
    • Closes GTNH#24306
  • #109 Adjusted GUI bounds in GuiCase, GuiInspiratron, and GuiSoulExtractor. - @Ranzuu
    • Fixed: GUI clipping on right and bottom edges
  • #100 Added null pointer check in ExplosionAlchemite to prevent crash during explosion logic. - @DarkShadow44
    • Fixed: NullPointerException on Alchemite explosion
  • #99 Refactored potion initialization to respect config values during syncConfig(), with fallback handling for occupied IDs and consistent initialization order (preInit → syncConfig → initPotions). - @Aerindor-of-Arcane
    • Fixed: Potion IDs being overridden despite config settings, Inconsistent initialization order
  • #93 Enabled Generic Injection, fixed world reference in flux explosion logic, refactored damage event handler to work with all Baubles slots instead of hardcoded 4. - @koolkrafter5
    • Fixed: Soul Beacon flux spawning in wrong world
    • Closes GTNH#20562

Performance ​

  • #110 Cleaned up world references in ClientProxy and EventHandlerEntity to prevent memory leaks. - @Alexdoru
    • Fixed: world memory leaks

Internal / Refactor ​

  • #124 Replaced nested if/return patterns with ternary operators, removed labeled breaks with explicit defaults, cleaned up redundant braces, removed decompiler header. - @Eldrinn-Elantey
  • #120 Replaced ~30 magic numbers (timers, heal amounts, thresholds, radii) with static final constants in TileVat and TileSoulforge. Replaced catch blocks with explicit null/instanceof checks. Fixed soul bit overflow in TileSoulforge and redundant else-if in ItemLensOrderEntropy. - @Eldrinn-Elantey
    • Fixed: soul bit overflow, redundant else-if branch
  • #117 Removed dead assignments, inlined pointless conditions, dropped redundant casts, made MAX_COUNT private static final, renamed var3-6 to dx/dy/dz/dist, fixed potential nextInt(0) crash, extracted repeated casts, deduplicated getTileEntity calls, and made sonicFX private. - @Eldrinn-Elantey
    • Fixed: potential nextInt(0) crash when beams == 0

Chores ​

  • #105 Corrected spelling errors in en_US.lang. - @Yoshy2002
    • Fixed: typos in language file

Contributors ​

Everyone who authored, reviewed or co-authored a change on this page, with how many of them:

@Eldrinn-Elantey (8), @thehoblit (8), @koolkrafter5 (4), @Nikolay-Sitnikov (4), @Dream-Master (2), @RecursivePineapple (2), @Ruling-0 (2), @Ableytner (1), @Aerindor-of-Arcane (1), @Alexdoru (1), @Caedis (1), @danyadev (1), @DarkShadow44 (1), @LazyFlesh (1), @MalTeeez (1), @Ranzuu (1), @ROBERT-PARKOURCIVILIZATIONGOD (1), @sisyphussy (1), @tiffit (1), @UltraProdigy (1), @wlhlm (1), @Yoshy2002 (1)