LittleTiles
78 merged pull requests.
New Features
- #157 Enhances
BlockOverlayRendererto render selected shape meshes with texture mapping. Adds shape preview generation inMesh3dand simplifiesShapeSelectorWidget. - @S4mpsa- Added: textured shape preview on chisel
- #156 Extends
OrientationMapperwith 24 additional mirrored orientation matrices (48 total). UpdatesItemBlockTiles,ItemRecipe,ItemLittleChisel, andLittleToolHandlerto handle flip transformations. Adds flip support toTriangle3d. - @S4mpsa- Added: mesh flip support, 24 mirrored orientation matrices
- #148 Introduces
ShapeSelectorWidgetwith mesh-based previews. ExtendsBlockDisplayWidgetand updatesMesh3dUtilwith preview generation utilities. ModifiesItemLittleChiselGUI initialization. - @S4mpsa- Added: ShapeSelectorWidget, shape preview rendering, scrollbar support
- #138 Extends
LittleTilePlacementPlanandItemRecipeto handle mesh geometry alongside box tiles. Adds mesh rendering support inPreviewRendererand tool handling inLittleToolHandler. UpdatesItemHammerinteraction logic. - @S4mpsa - #131 Introduces
slope_triangle_alternate.objmodel and extendsLittleTileShapeModeenum with new shape option. Adds utility function inMesh3dUtilfor handling the new shape. - @S4mpsa- Added: alternate triangle shape, slope_triangle_alternate model
- #130 Implements
ItemCollisionToolwith a newCollisionHighlightRendererto visualize collision state. Extends packet handling inLittleBlockPacketand tile data inLittleTileto track passthrough state. - @DarkShadow44- Added: ItemCollisionTool, collision passthrough feature, CollisionHighlightRenderer
- #129 Adds
DumpMeshCommandclient command registered inLittleTilesClientthat serializesMesh3dobjects to disk for debugging purposes. - @DarkShadow44- Added: mesh dump command
- #127 Added culling logic to
LittleTilesFaceCullerandLittleTilesBlockRenderHelperusing 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
LittleToolHandlerand adds rotation support toLittleTilePreview. SimplifiesItemReciperotation 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
ItemLittleChiselto pass the correct tile removal flag and adds suppression for MUI2 compiler warning inLittleBlockPacket. - @DarkShadow44- Fixed: hammer removing last tile, compiler warning
- #147 Adjusts triangle-triangle intersection tolerance in
TriangleTriangleIntersectto better detect overlapping slopes without rejecting valid adjacent configurations. - @DarkShadow44- Fixed: slope collision overlap detection
- #143 Adds preview correction logic in
LittleTilesBlockRenderHelperto properly handle multi-block tile placement plan visualization. - @DarkShadow44- Fixed: multi-block placement preview rendering
- #135 Re-adds the previously deleted
BlockRenderHelperclass increativecore.client.blockpackage to maintain API compatibility. - @DarkShadow44- Added: BlockRenderHelper
- Fixed: Online Pic Frame compatibility
- Closes #120
- #128 Adjusted rounding logic in
OrientationMapperandPlane3dto 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
LittleBlockPacketand 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
LittleTilePlacementPlanand a no-op line inItemBlockTilesthat were added in PR #138 but do not affect behavior. - @DarkShadow44- Removed: dead collision tile handling code
- #145 Modifies
LittleTileRenderCacheandLittleTilePreviewto generate mesh geometry directly without intermediate tile instantiation. Removes unused mesh methods fromItemRecipe. - @DarkShadow44 - #144 Simplifies cutoutInfo parameter passing in
ItemBlockTiles,ItemLittleChisel,LittleTilePlacementPlan,LittlePlacePacket, andLittleDoorby 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_reportsscript 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)