Skip to content

VisualProspecting ​

31 merged pull requests.

New Features ​

  • #104 Adds OreVeinMapMarker and UndergroundFluidImageOverlay classes for JM6 support. Updates layer managers to handle JM6 rendering separately. Adds JM6-specific configuration for minimap labels. Improves zoom and scaling handling in render steps. Updates dependencies and adds new repository for JM6. - @Algent
    • Added: JourneyMap 6 native ore marker support, JourneyMap 6 underground fluid overlay, JM6 configuration option for minimap labels, Improved zoom and label/icon scaling
  • #94 Extended VeinType and VeinTypeCaching to support multiple search mode strategies. Updated OreVeinLayerManager to apply search filtering to displayed veins. - @Algent
    • Added: NEI-style search modes for ore veins, atomic composition prefix search
    • Closes GTNH#25434
  • #88 New TeamUploadCommand sends RequestTeamUploadMessage to the target client, which queues a SnapshotUploadTask with routeToTeam set. ProspectionSharing gains a routeToTeam byte and TeamProspectionDispatcher.deliverProspectingResults takes a notifySelf flag. - @Algent
    • Added: /vp_team_upload command
  • #85 Introduced TeamProspectionData storage system using gzipped base64 encoding, TeamCatchupHandler for offline player synchronization, and network messages (TeamCatchupNotification, VeinDepletionMessage) to broadcast findings across team members in real-time. - @Algent
    • Added: team prospecting data sharing, TeamCatchupHandler, TeamCatchupNotification, VeinDepletionMessage, team data storage in gtnhteams files
    • Removed: Shared Prospecting (broken system)
  • #82 Implemented WorldDeletionEvent handler in HooksEventBus that extracts worldId from visualprospecting.dat and removes corresponding player and server cache directories when a world is deleted. - @Algent
    • Added: VPSaveCleanupUtils, HooksEventBus WorldDeletionEvent handler
  • #75 Added server-side event handler in ServerCache to intercept OreInteractEvents dispatched on block harvest (in addition to existing client-side right-click prospecting). Moved time throttle logic from packet handler to request class. - @RecursivePineapple
    • Added: server-side ore prospecting on mine
    • Fixed: Journeymap veins not detected when mining
    • Closes GTNH#22016

New Content ​

  • #105 Updates the undergroundfluid.png texture asset with an improved icon design. - @Algent

Changes ​

  • #106 Config defaults minZoomLevelForOreLabel changed from 2 to 1 and minZoomLevelForUndergroundFluidDetails from 3 to 2. New OreLabelLayout adds a label offset for odd 48-block ore columns at zoom step 1 or lower, and OreVeinRenderStep uses it in culling and drawing. UndergroundFluidRenderStep right-shifts displayed amounts by one. - @DylanTaylor1
    • Added: Staggered ore vein labels at low zoom
    • Fixed: Fluid L/Op on the map showing double the actual output without overclocks
  • #103 Relaxes cache fallback matching criteria in DetailedChunkAnalysis and VeinType. Changes matching to accept ore mixes if one ore is missing (instead of requiring all ores to be present) when no cache data exists. Updates debug command help in VPAdminDebugCommand. - @Algent
    • Fixed: Ore vein detection failures
    • Closes GTNH#26059
  • #96 Modified UndergroundFluidRenderStep to adjust fluid amount display calculations for better readability. - @Algent
    • Fixed: unclear fluid amount indicators on overlay
  • #92 Improved EndlessIds support, optimized scanning with row-by-row region file processing, added vein source trust hierarchy for overwrite logic, fixed dimension name resolution to enable dimension-specific filtering, changed scan strategy from fast/slow to uniform row-based approach, and updated VeinSource to use explicit names instead of ordinals. - @Algent
    • Added: trust hierarchy for VeinSource, improved EndlessIds support, row-by-row scan strategy, dimension name filtering
    • Fixed: vein matching retry logic, empty dimension names breaking matches, slow dimension scanning
  • #91 Adds VPCommand and VPAdminCommand registered through BrigadierApi, with CommandHelpers and the team, cache and debug subcommand classes. RedoServerCacheCommand and RedoServerSpawnCacheCommand are removed, ResetClientCacheCommand moves to the commands package, and VP.debug/info/warn/error are replaced with direct LOG calls. - @Algent
    • Added: /vp team info command, /vp_admin command tree
    • Removed: old /vp_team_* and /vp_recache command names
  • #90 Added UndergroundFluidLocation to cache fluid color and production values, updated UndergroundFluidRenderStep to use cached values and added color source documentation, and improved visual bug fixes. - @Algent
    • Added: UndergroundFluidLocation color/production caching
    • Fixed: incorrect fluid colors, minor visual bugs in fluid overlay
  • #87 DimensionCache writes a version 3 NBT layout with a string palette for vein and fluid names and a per-vein VeinSource byte. LegacyDimensionCacheLoader reads the v0, v1 and v2 formats, and OreVeinPosition and ServerCache.notifyOreVeinGeneration now take a VeinSource. - @Algent
    • Added: version 3 cache format with name palette, VeinSource field on veins

Bug Fixes ​

  • #108 DimensionCache, WorldCache and TeamProspectionData now check GTWorldgenerator.isOregenPatternVerified() before repairing vein coordinates or migrating legacy caches. If it is unverified, DimensionCache sets preventSaving and logs a warning, and WorldCache defers the legacy migration. Follows GT5-Unofficial#7919. - @Algent
    • Fixed: Vein coordinate repair persisting changes while the oregen pattern was unverified
  • #101 OreVeinRenderStep.draw and UndergroundFluidRenderStep.draw and renderChunks skip the screen-bounds culling when isXaero is true, reverting the Xaero behaviour from PR #89. - @Algent
    • Fixed: Xaero's World Map showing ore icons only in the lower-right area, Xaero's culling regression from #89
    • Closes GTNH#25941
  • #99 Utils.mapToCenterOreChunkCoord now calls GTWorldgenerator.getOregenPattern() instead of picking the server or client pattern by effective side. DimensionCache.loadOres normalises coordinates, resolves collisions by VeinSource trust, drops misaligned RESCAN entries and sets a flag that makes WorldCache.loadVeinCache return false to force a rescan. TeamProspectionData repairs coordinates and TeamCatchupHandler marks the team dirty when it did. GT5-Unofficial dependency bumped to 5.09.54.29. - @Algent
    • Fixed: wrong ore generation pattern used for vein positions in some cases, misaligned vein coordinates in saved client, server and team prospecting caches
  • #97 TeamProspectionDispatcher.deliverProspectingResults returns early when the player or its playerNetServerHandler is null. - @Algent
    • Fixed: Log spam from prospecting results delivered to a null or fake player
  • #93 Added DimensionStoneBackground and DimensionNameResolver to extract ore vein colors from GregTech registry and match dimension backgrounds, updated OreVeinRenderStep to use resolved colors. - @Algent
    • Added: DimensionStoneBackground, DimensionNameResolver
    • Fixed: Journeymap displaying ores in wrong color (white)
    • Closes GTNH#25315
  • #84 Extended PartiallyLoadedChunk to extract block IDs and metadata from EndlessIds registry in addition to NotEnoughIds path, allowing cache rebuild to detect ores in EndlessIds-only worlds. - @assusdan
    • Added: EndlessIds block ID extraction in PartiallyLoadedChunk
    • Fixed: Cache rebuild finding no ores in EndlessIds worlds
  • #83 Modified ServerCache to register veins directly on VeinGenerateEvent from GTWorldgen instead of relying on manual detection, improving accuracy for newly generated chunks. - @Algent
    • Fixed: Ore veins sometimes not registering with VisualProspecting
    • Closes GTNH#24692
  • #80 Utils search pattern compilation catches PatternSyntaxException and returns null. - @Algent
    • Fixed: Client crash when the ore search text is an invalid regex pattern
    • Closes GTNH#21193, GTNH#24280
  • #78 ServerCache and ClientCache no longer register on the event bus in their constructors. HooksShared and HooksClient register the instances during init, before world creation fires VeinGenerateEvent. VeinType.containsAllFoundOres now checks foundOres.containsAll(oresAsSet) instead of the reverse. - @C0bra5
    • Fixed: spawn chunk veins not being recorded, veins missed on cache rebuild after deleting the cache folder
    • Migration: The spawn-chunk problem existed only in the daily builds between 2.8.4 and this release. Rebuilding the Visual Prospecting server cache now identifies veins correctly.
  • #74 TaskManager.instance is replaced by SERVER_INSTANCE and a client-only CLIENT_INSTANCE, created in the sided proxies through initializeTaskManager. HooksFML ticks them from separate ServerTickEvent and ClientTickEvent handlers, and ProspectorsLog uses the matching instance. - @wlhlm
    • Removed: TaskManager.instance
    • Fixed: ConcurrentModificationException on TaskManager.tasks in singleplayer
  • #73 OreVeinPosition now has getBytes and getPacketBytes, which include the UTF-8 vein name length and its varint prefix, replacing the fixed MAX_BYTES. ProspectionSharing.putOreVeins and getPacketBytes and TransferCache use them. BYTES_OVERHEAD gets an extra byte. - @wlhlm
    • Removed: OreVeinPosition.getMaxBytes and MAX_BYTES
    • Fixed: IllegalArgumentException when creating a Prospector's Log from packet size overflow
    • Closes GTNH#18377

Performance ​

  • #89 Added culling to OreVeinLocation and multi-tier culling to UndergroundFluidRenderStep, adjusted default zoom level thresholds for labels, and introduced intermediate zoom level for fluid gradient visualization without labels. - @Algent
    • Added: view culling for ore veins, extra culling for fluid cells, intermediate zoom gradient layer for fluids
    • Fixed: severe FPS drop when rendering vein/fluid labels

Internal / Refactor ​

  • #77 Replaced MTEScannerMixin with GTScannerHandler, added first in RecipeMaps.scannerHandlers from VPMod postInit. MTEAdvSeismicProspectorMixin now uses GTUtility.ItemNBT.getRawProspectionDataName() for the book title. - @C0bra5
    • Added: GTScannerHandler
    • Removed: MTEScannerMixin
  • #65 Removes mixins targeting GT5 ore system and replaces with Forge events. Removes old chunk TE loading in favor of partial chunk loading via PartiallyLoadedChunk. Removes IOreMaterialProvider abstraction and replaces with direct IOreMaterial system. Updates ChunkAnalysis to include second-most common ore in single-vein filter. Removes material provider classes. - @RecursivePineapple
    • Added: PartiallyLoadedChunk system for efficient chunk analysis, Partial chunk loading mechanism
    • Removed: BartworksOreMaterialProvider, GregTechOreMaterialProvider, IOreMaterialProvider abstraction, VeinTypeCaching, Old chunk TE loading code, Ore meta references, GT-targeting mixins
    • Fixed: Everglades and Ross biome prospecting, New world generation ore detection

Chores ​

  • #95 Utils.mapToCenterOreChunkCoord picks GTWorldgenerator.getServerOregenPattern() or getClientOregenPattern() depending on the effective side. Bumped GT5-Unofficial to 5.09.54.02. - @Kogepan229
  • #79 VeinType now reads oreMix.getLocalizedName() instead of the localizedName field. Bumped GT5-Unofficial to 5.09.52.391. - @iouter
  • #76 OreVeinLocation now calls OrePrefixes.ore.getTextureIndex() instead of reading mTextureIndex. Bumped GT5-Unofficial to 5.09.52.69 and GTNHLib to 0.7.1. - @chochem
    • Fixed: compile error against the GT5-Unofficial oreprefix change

Contributors ​

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

@Algent (23), @tiffit (7), @Dream-Master (4), @boubou19 (3), @Kogepan229 (3), @RecursivePineapple (3), @UltraProdigy (3), @C0bra5 (2), @chochem (2), @Lyfts (2), @wlhlm (2), @Worive (2), @Alexdoru (1), @AnsonYeung (1), @assusdan (1), @BlueWeabo (1), @Caedis (1), @chrombread (1), @cubefury (1), @DylanTaylor1 (1), @FourIsTheNumber (1), @glektarssza (1), @iouter (1), @Justxs (1), @sisyphussy (1), @Yoshy2002 (1)