Skip to content

Botania ​

28 merged pull requests.

New Features ​

  • #146 Modified BlockModFlower.java and BlockModMushroom.java to implement IFlowerPottable interface, and adjusted RenderSpecialFlower.java rendering methods to support scale tweaking and optional random offset disabling. Updated dependencies.gradle. - @FourIsTheNumber
    • Added: IFlowerPottable support for Botania flowers, IFlowerPottable support for Botania mushrooms
  • #144 Extended brew API (Brew.java, IBrewContainer.java, IBrewItem.java) with new methods, added BrewUtilities.java and BrewHelper.java for recipe introspection, and significantly expanded RecipeHandlerBrewery.java logic. Modified TileBrewery.java and PageBrew.java to support the new handler features. - @Nikolay-Sitnikov
    • Added: BrewUtilities utility class, BrewHelper client helper, Brew container/item API methods
    • Removed: Duplicate IMC registration logic
  • #131 Refactored NEI handlers (RecipeHandlerBrewery, RecipeHandlerElvenTrade, RecipeHandlerFloatingFlowers, RecipeHandlerLexicaBotania, RecipeHandlerManaPool, RecipeHandlerPetalApothecary, RecipeHandlerPureDaisy, RecipeHandlerRunicAltar) to show lexicon entries for both uses and recipes, fix transfer rectangles, and render machine backgrounds instead of adding them to bookmarked recipes. Added IMCForNEI and NEIHelper enhancements, plus seed/livingrock support with custom tooltips. - @koolkrafter5
    • Added: IMC for NEI integration, NEI helper methods, Seed/livingrock recipe handlers
    • Fixed: Transfer rect handling, Recipe bookmarking logic
  • #124 Updated GuiFlowerBag.java and GuiShroomBag.java to use localized strings, with new lang keys added across all supported languages (en_US, es_ES, fr_FR, ja_JP, ko_KR, nl_NL, pt_BR, ru_RU, zh_CN, zh_TW). - @Ranzuu
    • Added: GUI title localization strings
  • #117 Modified SubTileEntropinnyum to listen to explosion events from TNT minecarts and End Crystals, and added separate IC2 event listener for Industrial TNT compatibility. - @ALongStringOfNumbers
    • Added: TNT minecart explosion support, End Crystal explosion support, IC2 Industrial TNT support
  • #109 Updated SubTileArcaneRose to detect and absorb nearby XP orbs and implement disenchanting mechanics that drop XP orbs for consumption. Updated language files to reflect new capabilities. - @koolkrafter5
    • Added: XP orb pickup, Item disenchanting, Disenchant-to-XP conversion

Changes ​

  • #143 Added LibColorUtils with GTNHLib ColorResource entries for the NEI Lexica handler title, knowledge, tagline and extra info, all defaulting to 0x404040. PageText.renderText gained a color parameter overload, and GTNHLib was bumped to 0.11.30. - @Ranzuu
    • Added: configurable colors for the Lexica Botania NEI handler
  • #105 Modified ItemRegenIvy logic, merging PR #104 changes to master. - @koolkrafter5

Bug Fixes ​

  • #157 ItemReachRing.onPlayerLoad on the client now calls a new proxy method setClientExtraReach with 3.5 times the number of worn reach rings, instead of adding to the controller's extension. ClientProxy's controller replacement code moved into a shared getReachController helper; CommonProxy gets a no-op setClientExtraReach. - @micvog
    • Fixed: Ring of Far Reach stacking reach on every dimension change, ghost blocks from client-only extra reach
    • Closes GTNH#26274
  • #155 TileSpreader.readCustomNBT assigned the new UUID to a local variable. It now assigns this.identity. - @AlexSocol
    • Fixed: Mana spreaders losing identity on chunk reload
  • #151 LightningHandler.onRenderWorldLast and SkyblockSkyRenderer.render now use Minecraft.renderViewEntity instead of thePlayer for interpolated position and the void height check. - @Caedis
    • Fixed: Lightning and skyblock sky rendering from the player instead of the view entity
  • #150 Added a null check for the explosion source in SubTileEntropinnyum.processExplosion, which previously called setDead on a null entity. - @MLGfruitshoot
    • Fixed: NullPointerException when ghast fireballs exploded near an Entropinnyum
  • #136 Tile entity renderers for the Corporea Crystal Cube and Enchanter created their EntityItem lazily from the tile's world, pinning that world; it is now created once with a null world. Removed unused RenderItem and ItemRenderer fields from RenderLens, RenderTileAltar, RenderTilePool and others, and cleared the brewery reference after rendering in RenderTileBrewery. - @Alexdoru
    • Fixed: world memory leaks in Botania tile renderers
  • #120 Renamed lang key botaniamisc.clickToRecipe to clickToSeeRecipe in PageRecipe, PageShedding and all lang files, plus typo fixes in en_US.lang and other translations. - @Yoshy2002
    • Fixed: typos in en_US text, typos in translated lang files
  • #119 Added @Optional.Method(modid = "IC2") to SubTileEntropinnyum.consumeExplosionIC2 so the IC2 explosion event handler is stripped when IC2 is absent. - @ALongStringOfNumbers
    • Fixed: Crash without IC2 when using the Entropinnyum
    • Closes #118
  • #95 Removed the per-UUID tracking maps and ItemBaubleHandler from ItemBauble, made onWornTick a no-op and added onPlayerLoad to apply the effect. ClientProxy.setExtraReach now compares player UUIDs and checks the world is remote, since the player object can change. - @DarkShadow44
    • Removed: ItemBaubleHandler
    • Fixed: Ring of Far Reach reach length stacking when re-equipped
    • Closes GTNH#20484

Performance ​

  • #152 ItemBlockModSlab computes the unlocalized name once in the constructor and returns it from getUnlocalizedName, replacing a per-call replaceAll. - @boubou19
    • Fixed: slow slab name lookups with NEI
  • #149 Reduced object allocations in BossBarHandler, HUDHandler, ItemsRemainingRenderHandler, LightningHandler, FXSparkle, ParticleRenderDispatcher, SkyblockSkyRenderer, CorporeaIndex, EntityDoppleganger, and ItemMonocle by caching temporary objects, reusing collections, and reducing array creation. - @boubou19
  • #147 Added ReflectionUtils that resolves Field objects once and gets or sets values on them. Replaced per-call ReflectionHelper getPrivateValue and setPrivateValue uses in client handlers, RenderBow, SkyblockSkyRenderer, SubTilePollidisiac, SubTileTigerseye, TileSpawnerClaw, EntityDoppleganger, PageCraftingRecipe and ObfuscationHelper with cached fields. - @boubou19
  • #133 Modified ItemMiningRing.java to check if the player already has Haste with amplifier >= 1 before applying, preventing redundant effect application each tick. - @guneykabel
    • Fixed: Ring of Mantle excessive effect reapplication
    • Closes GTNH#23501

Internal / Refactor ​

  • #110 Renamed obfuscated parameters in RenderHelper, FXSparkle, lexicon GUIs, buttons and similar, with some small logic cleanup. - @Nikolay-Sitnikov
  • #107 Renamed obfuscated parameters across item classes and applied pattern-matching instanceof and similar modern Java patterns. - @Nikolay-Sitnikov
  • #106 Renamed deobfuscated p_xxx/par params to readable names across blocks and client GUI classes. - @Nikolay-Sitnikov
  • #103 New API interface ITieredManaTooltipDisplay (left/right labels, rainbow effect, mana tiers). ItemTerraPick implements it, TooltipAdditionDisplayHandler drops its Terra Pick special case, and ItemTerraPick.getLevel became an instance method while the static getMana_ was removed. - @combusterf
    • Added: ITieredManaTooltipDisplay API
    • Removed: static ItemTerraPick.getMana_
  • #100 Enabled enableGenericInjection in gradle.properties and fixed the resulting compile issues: typed List<ItemStack> in getSubBlocks, pattern-matching instanceof, final fields, JavaDoc fixes. BlockLightLauncher now uses selectEntitiesWithinAABB, and SparkHelper.getEntitiesAround changed its signature from Class<? extends T> to Class<T>. - @Nikolay-Sitnikov

Documentation ​

  • #140 Removed contributing.md, an 11 year old upstream contributing guide. - @UltraProdigy
    • Removed: contributing.md

Chores ​

  • #156 Re-adds the deprecated CachedPetalApothecaryRecipe(RecipePetals, boolean) constructor in RecipeHandlerPetalApothecary, delegating to the single-arg one. getOverlayIdentifier() now returns getRecipeID() so an override in Alfheim takes effect. - @mitchej123
  • #126 Updated Baubles-Expanded, GTNHLib, BuildCraft, NEI, Railcraft, StorageDrawers and StructureLib dev dependencies, the settings convention plugin to 2.0.23 and the Gradle wrapper. - @UltraProdigy

Contributors ​

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

@Nikolay-Sitnikov (11), @combusterf (9), @Dream-Master (7), @boubou19 (4), @Caedis (3), @glowredman (3), @koolkrafter5 (3), @ALongStringOfNumbers (2), @Ranzuu (2), @Ruling-0 (2), @UltraProdigy (2), @ah-OOG-ah (1), @Alexdoru (1), @AlexSocol (1), @cubefury (1), @danyadev (1), @DarkShadow44 (1), @FourIsTheNumber (1), @GDCloudstrike (1), @guneykabel (1), @micvog (1), @mitchej123 (1), @MLGfruitshoot (1), @Pxx500 (1), @sisyphussy (1), @Worive (1), @Yoshy2002 (1)