Skip to content

ThaumicHorizons ​

25 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
  • #99 initPotions() moved from postInit to the end of preInit and now starts from the configured potion IDs, falling back to getNextPotionId when the slot is occupied. The config is only saved when it has changed. - @Aerindor-of-Arcane
    • Added: Configurable potion IDs

Bug Fixes ​

  • #148 EventHandlerEntity.livingTick adds a getFoodStats().needFood() check to the Synthskin infusion (hasPlayerInfusion(6)) branch before addStats(1, 0). - @micvog
    • Fixed: Synthskin draining Nutrition while the hunger bar is full
  • #147 ItemFocusLiquefaction.processBlock now handles meltable blocks (meltable > 0) before the FurnaceRecipes smelting branch, which became an else-if. - @Edgaru089
    • Fixed: liquefaction focus not making lava from stone when Et Futurum smooth stone smelting exists
  • #141 BlockSyntheticNode.breakBlock now checks with instanceof that the tile entity is a TileSyntheticNode and calls super.breakBlock and returns if it is not, which removes the ClassCastException. - @Angry3vilbot
    • Fixed: ClassCastException when an Ethereal Shard is jarred
    • Closes GTNH#26513
  • #137 ItemSyringeEmpty now overrides getSubItems (client side) to list a single stack with damage 2. - @Ableytner
    • Fixed: Wrong Warded Syringe shown in NEI, recipe not found
    • Closes GTNH#26104
  • #126 ROD_CRYSTAL and CAP_CRYSTAL in ThaumicHorizons.preInit now pass new ItemStack(Blocks.bedrock) instead of null for the craft cost item. Also bumps Baubles-Expanded to 2.2.21-GTNH and GT5-Unofficial to 5.09.52.548, and adds AspectRecipeIndex as a runtime-only dev dependency. - @koolkrafter5
    • Fixed: Crash when placing or removing wand components on the Arcane Workbench
    • Closes GTNH#24871
  • #125 EventHandlerEntity.golemDies returns early when the world is remote, so EntityGolemTH.die() runs on the server side only. - @thehoblit
  • #122 ItemSyringeEmpty strips the Items, ArmorItem, SaddleItem and ChestedHorse tags from the critter NBT before storing it on the blood sample. - @Eldrinn-Elantey
  • #121 TileVortexStabilizer.reHungrifyTarget now calls isNodeTargetedByOtherStabilizer before restoring the node type. That method checks the 60 positions (6 directions, 10 blocks) around the target for another stabilizer with the same target. - @Eldrinn-Elantey
    • Fixed: Node type restored while another stabilizer still targets it
  • #119 In BlockGatewayPortal.getIcon, cases 5 and 8 were converted from colon-style switches with fall-through to arrow syntax so every side returns explicitly, and the swapped case 0/1 in case 10 was corrected. - @Eldrinn-Elantey
    • Fixed: Wrong textures on gateway portal frame faces, Lapis on top of the right upper corner block
  • #116 TileVortex: count now uses Math.max(0, 6 - beams) so it stops oscillating, getDescriptionPacket sends full NBT, a clientSynced flag gates rendering, and lastSyncedBeams batches updates into one packet per tick. TileVortexStabilizer target swap uses separate ifs. TileVortexRender rotates the quad with screen-plane basis vectors and uses continuous time for the animation angle. - @Eldrinn-Elantey
    • Fixed: Vortex flickering after chunk reload, Vortex flickering when stabilizers change target, Vortex sprite jitter on camera movement
    • 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 ItemKeystone binds with TileVortex.dimensionID instead of a coordinate formula, marks the inventory dirty, and returns false for non-vortex blocks. BlockSlot.onBlockActivated now returns true when it handled the click, and breakBlock null checks the tile. The generation thread uses start() instead of run(), destroyPortal is guarded by portalOpen, and generatePocketPlane marks the chunk at the pocket plane coordinates. - @Eldrinn-Elantey
    • Fixed: Keystone binding wrong plane, and plane 0 showing blank, Wormhole ping-pong teleport loop, Server tick blocked during pocket plane generation, Crash on breaking a slot with no tile entity, Gateway frame destroying the same portal more than once, Wrong chunk marked as modified when generating a pocket plane
  • #111 In PocketPlaneData.generatePocketPlane, the tile entity at the new vortex block is checked with instanceof, and a new TileVortex is created if it is missing. - @ROBERT-PARKOURCIVILIZATIONGOD
    • Fixed: NullPointerException in generatePocketPlane during vortex creation
    • Closes GTNH#24306
  • #110 ClientProxy now registers itself on the event bus and handles world events to clear the render handler's references. EventHandlerEntity only adds entities to thingsThatSparkle when the world is remote. - @Alexdoru
    • Fixed: world memory leak from client render handler references, server side entities added to the sparkle list
  • #109 Changed xSize/ySize in GuiCase (176x233), GuiInspiratron (width 176) and GuiSoulExtractor (176x166). - @Ranzuu
    • Fixed: Case, Inspiratron and Soul Extractor GUIs cut off on the right or bottom
  • #105 Edited 5 lines in en_US.lang. - @Yoshy2002
    • Fixed: typos in en_US.lang
  • #100 In ExplosionAlchemite.doExplosionB, Item.getItemFromBlock may return null. It now falls back to block.getItemDropped and skips the block if that is also null, before calling getAspects. - @DarkShadow44
    • Fixed: Null pointer crash when exploding Alchemite
  • #93 Fixes the wrong world reference in the flux explosion in EventHandlerEntity.onPlayerHurt and rewrites the bauble handling to use PlayerHandler/InventoryBaubles. Enables generic injection and adjusts generics in EntityAIHurtByTargetTH, TileVat, TileTransductionAmplifier and PacketNoMoreItems. - @koolkrafter5
    • Fixed: Curative vat/Soul Beacon reincarnation flux spawning only in the Overworld, Baubles Expanded extra slots ignored on player death
    • Closes GTNH#20562

Internal / Refactor ​

  • #124 BlockGatewayPortal: replaced nested if/return patterns with ternaries in switch expressions, removed the Label_0410 labeled break by adding default cases, simplified breakBlock braces and dropped the decompiler header. - @Eldrinn-Elantey
  • #120 Extracted about 30 magic numbers in TileVat and TileSoulforge into static final constants. Replaced try/catch with null and instanceof checks in EntityGolemTH and ContainerCase, changed the TileSoulforge soul overflow if to a while loop, and removed a redundant else-if in ItemLensOrderEntropy. - @Eldrinn-Elantey
    • Fixed: Soulforge soul bit overflow when progress passed 9600 more than once
  • #117 Removed dead assignments in TileVortexRender, inlined constants, made MAX_COUNT private static final, renamed locals, guarded nextInt(0) when beams == 0, deduplicated getTileEntity calls in TileVortexStabilizer, dropped redundant !hasTarget checks and made sonicFX private. - @Eldrinn-Elantey
    • Fixed: possible crash when Vortex beams is 0

Contributors ​

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

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