Skip to content

LittleTiles ​

78 merged pull requests.

New Features ​

  • #157 Enhances BlockOverlayRenderer to render selected shape meshes with texture mapping. Adds shape preview generation in Mesh3d and simplifies ShapeSelectorWidget. - @S4mpsa
    • Added: textured shape preview on chisel
  • #156 Extends OrientationMapper with 24 additional mirrored orientation matrices (48 total). Updates ItemBlockTiles, ItemRecipe, ItemLittleChisel, and LittleToolHandler to handle flip transformations. Adds flip support to Triangle3d. - @S4mpsa
    • Added: mesh flip support, 24 mirrored orientation matrices
  • #148 Introduces ShapeSelectorWidget with mesh-based previews. Extends BlockDisplayWidget and updates Mesh3dUtil with preview generation utilities. Modifies ItemLittleChisel GUI initialization. - @S4mpsa
    • Added: ShapeSelectorWidget, shape preview rendering, scrollbar support
  • #138 Extends LittleTilePlacementPlan and ItemRecipe to handle mesh geometry alongside box tiles. Adds mesh rendering support in PreviewRenderer and tool handling in LittleToolHandler. Updates ItemHammer interaction logic. - @S4mpsa
    • Added: mesh recipe support, mesh placement plans
    • Fixed: overwrite mode changing slopes unintentionally, hammer converting slopes to boxes
    • Closes #109, #110
  • #131 Introduces slope_triangle_alternate.obj model and extends LittleTileShapeMode enum with new shape option. Adds utility function in Mesh3dUtil for handling the new shape. - @S4mpsa
    • Added: alternate triangle shape, slope_triangle_alternate model
  • #130 Implements ItemCollisionTool with a new CollisionHighlightRenderer to visualize collision state. Extends packet handling in LittleBlockPacket and tile data in LittleTile to track passthrough state. - @DarkShadow44
    • Added: ItemCollisionTool, collision passthrough feature, CollisionHighlightRenderer
  • #129 Adds DumpMeshCommand client command registered in LittleTilesClient that serializes Mesh3d objects to disk for debugging purposes. - @DarkShadow44
    • Added: mesh dump command
  • #127 Added culling logic to LittleTilesFaceCuller and LittleTilesBlockRenderHelper using 3D geometry utilities (Tuple3d, Triangle3d) to detect and skip rendering occluded mesh faces. - @DarkShadow44
    • Added: mesh-mesh culling, mesh-box culling
  • #122 Added LittleTilesFaceCuller and FaceClipper rendering systems with face culling logic to ExtendedRenderBlocks and LittleTilesBlockRenderHelper; includes partial face overlap support across block boundaries. - @DarkShadow44
    • Added: LittleTilesFaceCuller face culling system, FaceClipper face clipping utility, IFaceClipper interface, FacePiece data class, Translucent tile face culling
    • Fixed: Glass tile visual connections
    • Closes #73
  • #112 Added TriangleRayIntersect for precise ray-to-geometry collision testing and integrated into TileEntityLittleTiles selection logic. - @DarkShadow44
    • Added: TriangleRayIntersect raycasting
    • Fixed: Slope selection precision
  • #105 Added 3D intersection geometry utilities (TriangleBoundingBoxIntersect, TriangleTriangleIntersect) and integrated shape-aware collision detection into LittleTilePlacementPlan and TileEntityLittleTiles. - @DarkShadow44
    • Added: Mesh3d 3D geometry class, TriangleBoundingBoxIntersect collision detection, TriangleTriangleIntersect collision detection, Shape-aware placement logic
  • #65 Added round slope geometry and rendering support across LittleTilesBlockRenderHelper, PreviewRenderer, Mesh3dUtil, ItemLittleChisel, and LittleTileShapeMode. Includes new OBJ model file and language localization. - @DarkShadow44
    • Added: round slope shape, slope_concave.obj model, localized slope description
  • #56 Added LittleTilePlaceMode enum and LittleTilePlacementPlan to handle different placement strategies with configurable behavior per mode. - @DarkShadow44
    • Added: LittleTilePlaceMode, placement mode configuration, placement mode UI strings
  • #53 Added pillar shape support with mesh generation, packet handling, and tool configuration in LittleTileCutoutInfo and LittleToolHandler. - @DarkShadow44
    • Added: pillar shape mode, pillar mesh generation, pillar language strings
  • #50 Added Mesh3dObjLoader and supporting classes to load mesh models from OBJ files at runtime instead of hardcoding them. - @DarkShadow44
    • Added: Mesh3dObjLoader, Mesh3dUtil improvements, slope.obj asset
  • #46 Added LittleItemUpdatePacket and modified MixinForgeHooks_PickBlock to support picking little tiles in survival mode. - @DarkShadow44
    • Added: LittleItemUpdatePacket, survival mode block picking
  • #38 Added OrientationMapper (24-orientation lookup system), updated Triangle3d and Mesh3dUtil with rotation matrices, enhanced LittleToolHandler with cutout rotation logic to handle block-picked slope fragments. - @DarkShadow44
    • Added: slope rotation, OrientationMapper
  • #37 Enhanced PreviewRenderer and LittleTilesBlockRenderHelper to render slope preview geometry, updated LittleToolHandler with slope preview data. - @DarkShadow44
    • Added: slope preview rendering
  • #35 Added 3D mesh utilities (Mesh3d, Mesh3dUtil, Plane3d, Edge3d, Triangle3d) for slope geometry, extended ItemLittleChisel and LittlePlacePacket with slope support, modified rendering pipeline for mesh-based tiles. - @DarkShadow44
    • Added: slope cutting, 3D mesh utilities, mesh-based tile system
  • #33 Enhanced PreviewRenderer, ItemLittleChisel, LittleTileBlockPos, and LittleToolHandler to support grid alignment and variable block sizes. Added TextButtonWidget for UI controls. - @DarkShadow44
    • Added: grid alignment, block size configuration, TextButtonWidget
  • #31 Added BlockOverlayRenderer client-side to display cutting previews. - @DarkShadow44
    • Added: block overlay renderer
  • #30 Added Mixin (MixinForgeHooks_PickBlock) to hook into Forge's pick block logic and allow chisel to capture block state. - @DarkShadow44
    • Added: block pick mixin, block sampling for chisel
  • #29 Added GuiToolConfig, BlockDisplayWidget, BlockStateSyncValue, and updated ItemLittleChisel and LittleToolHandler with configuration support. Added ModularUI2 dependency. - @DarkShadow44
    • Added: block selection GUI, BlockDisplayWidget
  • #27 Implemented ItemLittleChisel with core placement logic, updated PlacementHelper and LittleTileBlockPos, removed old SubGuiChisel/SubContainerChisel, added PreviewRenderer enhancements. - @DarkShadow44
    • Added: Chisel tool for stone 1x1 tiles
    • Removed: old chisel GUI
  • #21 Added Waila handler integration (WailaLittleTileHandler) to register tile data providers and custom block name display, with dependency added to dependencies.gradle. - @DarkShadow44
    • Added: Waila integration, tile material details in tooltips
    • Fixed: Waila displaying tiles as unknown blocks

New Content ​

  • #118 Added shape definitions to LittleTileShapeMode, imported 3D models (OBJ files), and updated rendering configuration and language files. - @S4mpsa
    • Added: Slope (Convex) shape, Slope Inner Corner shape, Slope Outer Corner shape, Slope Triangle shape, Slope Triangle Corner shape, 3D model assets
    • Closes #104

Changes ​

  • #142 Refactors rotation logic in LittleToolHandler and adds rotation support to LittleTilePreview. Simplifies ItemRecipe rotation handling by centralizing logic. - @DarkShadow44
    • Fixed: multi-block tile rotation
  • #51 Replaced complex overlap-checking tile update logic with simple clear-and-rebuild approach in TileEntityLittleTiles. - @DarkShadow44
  • #49 Added earcut4j dependency and created Triangulator class to handle edge closing with proper triangulation for non-convex meshes. - @DarkShadow44
    • Added: earcut4j dependency, Triangulator
  • #48 Modified Mesh3d logging to output .obj file extension. - @DarkShadow44
  • #44 Removed ticking code from TileEntityLittleTiles and LittleTileTileEntity that was processing every tick without observable effect. - @DarkShadow44
    • Removed: per-tick processing logic
  • #32 Minor API adjustments in BlockDisplayWidget for ModularUI2 compatibility. - @DarkShadow44
  • #28 Updated tooltip formatting in all item classes (ColorTube, Hammer, Saw, Wrench, MultiTiles, Recipe, RubberMallet, TileContainer). - @czerwonogrodzki
  • #26 Modified LittleTileSize constants to increase selection box dimensions. - @DarkShadow44

Bug Fixes ​

  • #153 Updates ItemLittleChisel to pass the correct tile removal flag and adds suppression for MUI2 compiler warning in LittleBlockPacket. - @DarkShadow44
    • Fixed: hammer removing last tile, compiler warning
  • #147 Adjusts triangle-triangle intersection tolerance in TriangleTriangleIntersect to better detect overlapping slopes without rejecting valid adjacent configurations. - @DarkShadow44
    • Fixed: slope collision overlap detection
  • #143 Adds preview correction logic in LittleTilesBlockRenderHelper to properly handle multi-block tile placement plan visualization. - @DarkShadow44
    • Fixed: multi-block placement preview rendering
  • #135 Re-adds the previously deleted BlockRenderHelper class in creativecore.client.block package to maintain API compatibility. - @DarkShadow44
    • Added: BlockRenderHelper
    • Fixed: Online Pic Frame compatibility
    • Closes #120
  • #128 Adjusted rounding logic in OrientationMapper and Plane3d to fix precision issues affecting both culling correctness and texture coordinate calculation. - @DarkShadow44
    • Fixed: rounding issues in culling, UV coordinate precision
  • #125 Enhanced Mesh3d degenerate triangle detection and filtering logic. - @DarkShadow44
    • Fixed: Degenerate triangle generation
  • #124 Enhanced LittleTilesBlockRenderHelper to render correct preview geometry for multi-block slope cutouts. - @DarkShadow44
    • Fixed: Block-picked slope preview rendering
  • #115 Enhanced Mesh3d, Triangle3d, TriangleBoundingBoxIntersect, and TriangleTriangleIntersect to handle edge cases in geometric collision detection. - @DarkShadow44
    • Fixed: Slope-to-slope collision, Box-to-slope collision, Slope containment collision
  • #114 Refactored Edge3d edge-splitting algorithm to avoid floating-point precision issues in edge intersection detection. - @DarkShadow44
    • Fixed: Holes in complex sloped geometries
  • #101 Modified ItemBlockTiles to properly handle slope placement in marked mode. - @DarkShadow44
    • Fixed: Slope placement in marked mode
  • #97 Updated BlockStateSyncValue and ItemLittleChisel to allow sync handlers to send packets to the server. Updated ModularUI2 dependency version. - @DarkShadow44
    • Fixed: Little Chisel error when swapping blocks/modes/size (issue #25052)
    • Closes GTNH#25052
  • #66 Changed BlockLTColored material from rock to stone in LittleTiles.java, preventing Tinkers' Hammer from breaking the container while preserving correct material for individual tiles. - @DarkShadow44
    • Fixed: block duplication via Tinkers Hammer (issue #22023)
    • Closes GTNH#22023
  • #63 Modified LittleTilesBlockRenderHelper to render buggy meshes as full cubes as a fallback, preventing empty mesh rendering. - @DarkShadow44
    • Fixed: empty mesh rendering causing unremovable blocks
  • #62 Enhanced LittleTilePlacementPlan to remove empty tile entities after removal and prevent premature block destruction during overwrites. - @DarkShadow44
    • Fixed: empty tile blocks not being removed, tiles not placing during full overwrite
  • #59 Added null checks throughout tile item handling and container code to safely handle tiles without NBT tags. - @tiffit
    • Fixed: null pointer crash with tiles lacking NBT, issue #21475
    • Closes GTNH#21475
  • #58 Removed unused BlockRenderHelper, fixed world references in event bus and tick handler, and improved tile entity cleanup in block placement. - @Alexdoru
    • Removed: BlockRenderHelper, LittleTilesClient world reference
    • Fixed: world memory leaks
  • #55 Added null check in LittleToolHandler for block lookups that return null when mod is uninstalled. - @DarkShadow44
    • Fixed: null pointer crash with removed mod blocks
  • #54 Corrected inventory slot update logic in SubContainerTileContainer to use correct hand slot. - @sbancuz
    • Fixed: duplication glitch with left-hand placement, issue #23195
    • Closes GTNH#23195
  • #52 Added background color detection in SubGui to fix texture localization. - @Ranzuu
    • Fixed: texture color rendering, issue #23012
    • Closes GTNH#23012
  • #47 Modified ItemBlockTiles to prevent chisel consumption in survival mode. - @DarkShadow44
    • Fixed: chisel deletion in survival mode
  • #42 Moved getSubBlocks() call (client-only operation) from server context to client-only context in BlockDisplayWidget. - @DarkShadow44
    • Fixed: server-side crash when opening chisel GUI on dedicated server
  • #41 Fixed scrollbar behavior and block selection display state in BlockDisplayWidget and ItemLittleChisel. - @DarkShadow44
    • Fixed: scrollbar scrolling while already scrolled, selected block appearing in search results, console warning
  • #39 Single character typo correction in GuiTileViewer. - @DarkShadow44
    • Fixed: typo
  • #36 Added server-side mesh culling in ItemBlockTiles placement to skip blocks that would be completely empty after cutting. - @DarkShadow44
    • Fixed: empty slope block placement
  • #34 Added helper methods with epsilon-based equality comparison to handle double math rounding in coordinate calculations. - @DarkShadow44
    • Added: fuzzy equality methods
    • Fixed: floating-point equality checks
  • #24 Adjusted rendering logic in LittleTilesBlockRenderHelper, SpecialBlockTilesRenderer, and BlockTile to properly handle translucent block rendering. - @DarkShadow44
    • Fixed: translucent block rendering
  • #22 Modified SpecialBlockTilesRenderer and BlockTile to fix mining texture rendering and enhance particle generation for tile breaking. - @DarkShadow44
    • Fixed: rendering glitch when mining tiles

Performance ​

  • #126 Added LittleTileRenderCache system to cache unchanged mesh geometry; integrated into LittleTile and LittleTilesBlockRenderHelper. - @DarkShadow44
    • Added: LittleTileRenderCache client-side caching
  • #117 Enhanced Mesh3dUtil to skip edges that don't actually intersect the mesh. - @DarkShadow44
  • #116 Optimized Mesh3d and removed unused Plane3d methods. - @DarkShadow44
    • Removed: Unused Plane3d methods
  • #113 Refactored LittleTilePlacementPlan, PreviewTileAxis, and PreviewTile tile-splitting logic to improve performance. - @DarkShadow44
  • #43 Removed recursive neighbor block change handling from BlockTile, LittleBlockPacket, TileEntityLittleTiles, and LittleTile that was causing excessive tile loading with no benefit. - @DarkShadow44
    • Removed: neighbor block change recursion logic
    • Fixed: stack overflow when loading worlds with many adjacent tiles

Internal / Refactor ​

  • #154 Converts action parameter handling in LittleBlockPacket and tool classes (ItemColorTube, ItemLittleSaw, ItemRubberMallet, BlockTile) to use an enum type instead of raw integers. - @DarkShadow44
  • #151 IDE-based rename of class and all references throughout the codebase to clarify its purpose and avoid confusion with future actual render caching. - @DarkShadow44
  • #146 Removes dead code in LittleTilePlacementPlan and a no-op line in ItemBlockTiles that were added in PR #138 but do not affect behavior. - @DarkShadow44
    • Removed: dead collision tile handling code
  • #145 Modifies LittleTileRenderCache and LittleTilePreview to generate mesh geometry directly without intermediate tile instantiation. Removes unused mesh methods from ItemRecipe. - @DarkShadow44
  • #144 Simplifies cutoutInfo parameter passing in ItemBlockTiles, ItemLittleChisel, LittleTilePlacementPlan, LittlePlacePacket, and LittleDoor by centralizing logic. - @DarkShadow44
  • #64 Extracted a method from LittleTilePlacementPlan into Mesh3dUtil for code reuse. - @DarkShadow44
    • Added: extracted mesh utility method
  • #60 Extracted placement logic into new LittleTilePlacementPlan class to improve code clarity and reduce duplication. - @DarkShadow44
    • Added: LittleTilePlacementPlan
  • #45 Merged duplicate method logic in BlockTile. - @DarkShadow44
  • #40 Changed array-based bounding box representation to discrete min/max coordinate variables throughout BlockTile, LittleTile, and related classes. No logic or save format changes. - @DarkShadow44
  • #25 Extracted method from SubContainer* and ItemRubberMallet into new BlockValidator class. - @DarkShadow44
    • Added: BlockValidator class
  • #23 Removed dead code from LittleTilesBlockRenderHelper that may have been inherited from CreativeCore but is not used by LittleTiles. - @DarkShadow44
    • Removed: unused rendering path

Chores ​

  • #136 Deletes .github/scripts/test_no_error_reports script that was a remnant from an older build setup. - @wlhlm
    • Removed: test_no_error_reports script

Contributors ​

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

@DarkShadow44 (74), @S4mpsa (32), @Dream-Master (21), @RecursivePineapple (15), @UltraProdigy (12), @mitchej123 (5), @PLASMAchicken (4), @glektarssza (3), @koolkrafter5 (3), @Alexdoru (2), @Caedis (1), @czerwonogrodzki (1), @FrostyFire1 (1), @Ranzuu (1), @sbancuz (1), @sisyphussy (1), @tiffit (1), @wlhlm (1)