{"id":19681208,"url":"https://github.com/gtmega/visualprospecting","last_synced_at":"2025-07-24T06:03:16.543Z","repository":{"id":115183457,"uuid":"582676372","full_name":"GTMEGA/VisualProspecting","owner":"GTMEGA","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-21T14:23:01.000Z","size":2848,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-21T16:36:41.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GTMEGA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-27T14:52:13.000Z","updated_at":"2025-07-21T14:23:06.000Z","dependencies_parsed_at":"2024-05-22T23:43:18.608Z","dependency_job_id":"c7e042f0-8ca7-4c72-bf4c-baf0fd2f3c21","html_url":"https://github.com/GTMEGA/VisualProspecting","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/GTMEGA/VisualProspecting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GTMEGA%2FVisualProspecting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GTMEGA%2FVisualProspecting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GTMEGA%2FVisualProspecting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GTMEGA%2FVisualProspecting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GTMEGA","download_url":"https://codeload.github.com/GTMEGA/VisualProspecting/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GTMEGA%2FVisualProspecting/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266801329,"owners_count":23986370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T18:07:13.943Z","updated_at":"2025-07-24T06:03:16.484Z","avatar_url":"https://github.com/GTMEGA.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GregTech5U Add-On: VisualProspecting\n\n[![](https://jitpack.io/v/SinTh0r4s/VisualProspecting.svg)](https://jitpack.io/#SinTh0r4s/VisualProspecting)\n[![Build and test](https://github.com/SinTh0r4s/VisualProspecting/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/SinTh0r4s/VisualProspecting/actions/workflows/build-and-test.yml)\n\n### For Minecraft 1.7.10\n\nThis mod is intended for player convenience, but may also be used as API, since it provides the location of all GT ore veins in a cache. VisualProspecting tracks all GT Ore Veins a player has found and visualizes them in JourneyMap and/or XaeroWorldMap (optional, if installed). It also visualizes tracked Thaumcraft aura nodes if TCNodeTracker if installed. VoxelMap will add waypoints for prospected ore veins and fluids.\n\nVisualProspecting tracks all ores that a player interacted with, by right or by left click. It also integrates prospecting data from GTs _Advanced Seismic Prospector_, although only books that are created after this mod was added will provide integration.\nYou may share your findings with other players by crafting a _Prospector's Log_.\n\nThis mod is tailored to _GregTech: New Horizons 2_, but feel free to use it however you like. Even though this mod is build against the custom GT5U from GT:NH, it should still work fine with other GT5U versions.\n\n![Underground fluids in JourneyMap overlay](https://i.ibb.co/crPhR1X/2021-10-12-15-45-25.png) \\\n_Underground fluids in JourneyMap overlay._\n\n\u003cdetails\u003e\n \u003csummary\u003eOther Maps\u003c/summary\u003e\n\n![Underground fluids in XaeroWorldMap overlay](https://i.ibb.co/d5Fw1px/2021-11-15-20-48-04.png) \\\n_Underground fluids in XaeroWorldMap overlay_\n\u003c/details\u003e\n\n\n![GregTech ore veins in XaeroWorldMap overlay](https://i.ibb.co/DGqQZ8g/2021-11-15-20-47-47.png) \\\n_GregTech ore veins in XaeroWorldMap overlay. You may double-click an ore vein to toggle it as waypoint._\n\n\u003cdetails\u003e\n \u003csummary\u003eOther Maps\u003c/summary\u003e\n\n![GregTech ore veins in JourneyMap overlay](https://i.ibb.co/G5KLGjQ/2021-10-20-01-16-57.png) \\\n_GregTech ore veins in JourneyMap overlay_\n\u003c/details\u003e\n\n\n![Thaumcraft aura nodes in JourneyMap overlay](https://i.ibb.co/WDk41qd/2021-10-25-15-01-11.png) \\\n_Thaumcraft aura nodes in JourneyMap overlay. You may double-click an aura node to toggle it as waypoint._\n\n\u003cdetails\u003e\n \u003csummary\u003eOther Maps\u003c/summary\u003e\n\n![Thaumcraft aura nodes in XaeroWorldMap overlay](https://i.ibb.co/njQ14RK/2021-11-15-20-48-12.png) \\\n_Thaumcraft aura nodes in XaeroWorldMap overlay_\n\u003c/details\u003e\n\n### Reset Progress\n\nYou may use JourneyMap's Actions Menu to achieve this or type `/visualprospectingresetprogress` in chat. Beware, there are no backups! Please use at your own risk.\n\n### Other Maps\n\nDoes VisualProspecting run with other maps? - I runs just fine, but it has no visualization or GUI integration. If you like to add integration into other maps yourself, feel free to contact me or open a Pull Request.\n - [TheLastKumquat](https://github.com/kumquat-ir) integrated XaeroWorldMap and XaeroMiniMap\n - [glowredman](https://github.com/glowredman) integrated VoxelMap\n\n### Developer overlays\n\nVisualProspecting comes with developer overlays for debugging chunk saving issues, to activate it change the following config setting in `config/visualprospecting.cfg` to true:\n\n```\nB:enableDeveloperOverlays=true\n```\n\nThe dirty chunk overlay works only in singleplayer mode in JourneyMap, and displays which chunks are marked as \"dirty\" in the game engine.\nThis can be used to debug mods that don't set this flag properly and therefore lose data or duplicate items on world load/unload.\n\n![Dirty chunks in JourneyMap developer overlay](https://i.ibb.co/XX1hqS5/2022-03-30-18-06-56.png) \\\n_Dirty chunks in JourneyMap developer overlay_\n\n### Dependencies\n\n#### Required Mods:\n - Minecraft Forge\n    - Injected class: [_ItemEditableBook_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/minecraft/ItemEditableBookMixin.java)\n - [GregTech5-Unofficial](https://github.com/GTNewHorizons/GT5-Unofficial)\n    - Injected classes: [_GT_Block_Ores_Abstract_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/gregtech/GT_Block_Ores_AbstractMixin.java), [_GT_MetaTileEntity_AdvSeismicProspector_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/gregtech/GT_MetaTileEntity_AdvSeismicProspectorMixin.java), [_GT_MetaTileEntity_Scanner_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/gregtech/GT_MetaTileEntity_ScannerMixin.java), [_GT_Worldgenerator.WorldGenContainer_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/gregtech/WorldGenContainerMixin.java)\n - [SpongeMixins](https://github.com/GTNewHorizons/SpongeMixins)\n - [Enklumne](https://github.com/Hugobros3/Enklume) _by Hugobros3_\n    - Automatically shipped. No manual handling is required.\n#### Optional Mods:\n - [JourneyMap](https://www.curseforge.com/minecraft/mc-mods/journeymap/files/2367915): Visualizes prospected ore veins, oil fields and thaumcraft nodes on custom overlay, that can be toggled on and off. Visualizes active ore veins and thaumcraft nodes as waypoints.\n    - Injected classes: [_Fullscreen_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/journeymap/FullscreenMixin.java), [_FullscreenActions_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/journeymap/FullscreenActionsMixin.java), [_RenderWaypointBeacon_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/journeymap/RenderWaypointBeaconMixin.java), [_WaypointManager_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/journeymap/WaypointManagerMixin.java), [_MiniMap_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/journeymap/MiniMapMixin.java)\n - [XaeroWorldMap](https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map): Visualizes prospected ore veins, oil fields and thaumcraft nodes on custom overlay, that can be toggled on and off.\n    - Injected class: [_GuiMap_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/xaerosworldmap/GuiMapMixin.java)\n - [XaeroMiniMap](https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap): Visualizes active ore veins and thaumcraft nodes as waypoints.\n    - Injected class: [_WaypointsIngameRenderer_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/xaerosminimap/WaypointsIngameRendererMixin.java)\n - [TCNodeTracker](https://github.com/GTNewHorizons/TCNodeTracker): Provides tracked aura nodes to maps for visualization.\n    - Injected class: [_GuiMain_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/journeymap/tcnodetracker/GuiMainMixin.java)\n - [NEI](https://github.com/GTNewHorizons/NotEnoughItems): Ores on JourneyMap are highlighted according to NEI search if active (double click on search field).\n - [GalacticGreg](https://github.com/GTNewHorizons/GalacticGregGT5): Injects a notification call into ore vein generation.\n    - Injected class: [_GT_Worldgenerator_Space_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/galacticgreg/GT_Worldgenerator_SpaceMixin.java)\n - [Bartworks](https://github.com/GTNewHorizons/bartworks): Injects a notification call into ore vein generation.\n    - Injected class: [_BW_WordGenerator.WorldGenContainer_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/bartworks/WorldGenContainerMixin.java)\n - [IFU](https://github.com/GTNewHorizons/IFU): Injects a notification call to add found ore veins by the ore finder wand.\n    - Injected class: [_ItemOreFinderTool_](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/mixins/ifu/ItemOreFinderToolMixin.java)\n - [VoxelMap](https://www.curseforge.com/minecraft/mc-mods/voxelmap/files/2462146): Automatically adds waypoints for prospected ore veins and fluids.\n\n### Add Visual Prospecting as API\n\nYou would have a great idea for a new prospecting feature? You may use VPs database as a starting point to save yourself a ton of work. Just add these following changes to your `build.gradle` and you are ready to develop.\n\nAdd jitpack to your repositories:\n```\nrepositories {\n    maven {\n        url = \"https://jitpack.io\"\n    }\n}\n```\n\nAdd Visual Prospecting in your dependencies:\n```\ndependencies {\n    compile(\"com.github.SinTh0r4s:VisualProspecting:1.0.10b\")  // Adapt 1.0.10b to targeted release\n}\n```\n\nIn case you do not require any Thaumcraft integration it is recommended to disable it. This will increase your start time of Minecraft in dev:\n```\ndependencies {\n    compile(\"com.github.SinTh0r4s:VisualProspecting:1.0.10b\") {  // Adapt 1.0.10b to targeted release\n        exclude module: \"TCNodeTracker\"\n    }\n}\n```\n\nGregTech, JourneyMap and their respective dependencies will be loaded automatically. You are ready to start now.\n\n\n### Usage as API\n\n#### GT Ore Database\n\nAll database access is channeled through the classes [`ServerCache`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/database/ServerCache.java) and [`ClientCache`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/database/ClientCache.java). Database use is split up into logical sides.\nYou need to determine whether your code is executed on the logical client or logical server. Dependent on your answer you need to use the according database: The client database only knows about ore veins the player has already prospected, while the server database will know about all veins. [`VisualProspecting_API`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/VisualProspecting_API.java) helps you to clarify which side you are working on. You may add or request the ore vein for a chunk:\n```\nVisualProspecting_API.LogicalServer.getOreVein(int dimensionId, int chunkX, int chunkZ);\nVisualProspecting_API.LogicalServer.getUndergroundFluid(World world, int blockX, int blockZ);\n\n\nVisualProspecting_API.LogicalClient.getOreVein(int dimensionId, int chunkX, int chunkZ);\nVisualProspecting_API.LogicalClient.getUndergroundFluid(int dimensionId, int blockX, int blockZ);\nVisualProspecting_API.LogicalClient.setOreVeinDepleted(int dimensionId, int blockX, int blockZ);\nVisualProspecting_API.LogicalClient.putProspectionResults(List\u003cOreVeinPosition\u003e oreVeins, List\u003cUndergroundFluidPosition\u003e undergroundFluids);\n```\nThe logical server does not store underground fluid information, because GregTech has its own database for it. Instead, it provides a wrapper to access said GT database. You may also use more sophisticated methods to prospect whole areas at once. Take a look at exposed methods in [`VisualProspecting_API`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/VisualProspecting_API.java) or directly in [`ServerCache`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/database/ServerCache.java) and [`ClientCache`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/database/ClientCache.java).\n\nPlease keep in mind that chunk coordinates are block coordinates divided by 16! When in doubt you may fall back on:\n```\nint chunkX = Utils.coordBlockToChunk(blockX);\n```\n```\n// blockZ is the lowest block coordinate in a chunk. If you want \n// to iterate over all blocks in that particular chunk you need\n// to add [0, ... 15] to it\nint blockZ = Utils.coordChunkToBlock(chunkZ);\n```\n\nWhenever you detect a new ore vein you need to add custom network payloads and request the information from the logical server yourself. Please do your best to disallow a logical client from querying the complete server database as it would lead to potential abuse. So, please check if the player is allowed to prospect a dimension and location.\n\nIf you simply want to notify a logical client from the logical server you may send a [`ProspectingNotification`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/network/ProspectingNotification.java) to the logical client. It will be handled from the client. For example:\n```\nfinal World world;\nfinal int blockX;\nfinal int blockZ;\nfinal int blockRadius;\nfinal EntityPlayerMP entityPlayer;\n\nif(world.isRemote == false) {\n    final List\u003cOreVeinPosition\u003e foundOreVeins = VisualProspecting_API.LogicalServer.prospectOreVeinsWithinRadius(world.provider.dimensionId, blockX, blockZ, blockRadius);\n    final List\u003cUndergroundFluidPosition\u003e foundUndergroundFluids = VisualProspecting_API.LogicalServer.prospectUndergroundFluidsWithingRadius(world, blockX, blockZ, VP.undergroundFluidChunkProspectingBlockRadius);\n\n    VisualProspecting_API.LogicalServer.sendProspectionResultsToClient(entityPlayer, foundOreVeins, foundUndergroundFluids);\n}\n```\n\n#### JourneyMap Custom Layer\n\nVisualProspecting provides a light-weight API for custom and interactive layers. This API will keep all maps as optional mod at runtime and not crash you game if it is missing. You may instantiate [`ButtonManager`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/model/buttons/ButtonManager.java) to create your own logical button. Follow it up with an instance of [`LayerButton`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/journeymap/buttons/LayerButton.java) and register both in the [`VisualProspecting_API`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/VisualProspecting_API.java):\n\n```\nButtonManager buttonManager = new ButtonManager(\"translation.key\", \"iconName\");\nLayerButton layerButton = new LayerButton(buttonManager);\n\nVisualProspecting_API.LogicalClient.registerCustomButtonManager(buttonManager);\nVisualProspecting_API.LogicalClient.registerJourneyMapButton(layerButton);\n```\n\nIf you start the game now, you will see a new button in the menu!\n\nFirst, you will implement [`ILocationProvider`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/model/locations/ILocationProvider.java). This class is a container and will provide all information required to display your item on screen. It won't do any rendering.\n\n```\nclass MyLocation implements ILocationProvider {\n\n    public int getDimensionId() {\n        return 0; // overworld\n    }\n    \n    public int getBlockX() {\n        return 0;\n    }\n    \n    public int getBlockY() {\n        return 65;\n    }\n    \n    public int getBlockZ() {\n        return 0;\n    }\n    \n    public String getLabel() {\n        return \"Hello Minecraft\";\n    }\n}\n```\n\nNext up, you'll extend [`LayerManager`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/model/layers/LayerManager.java) and implement the abstract function to generate cached List of your [`ILocationProvider`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/model/locations/ILocationProvider.java) implementation. You should only add whatever items are visible to this list. There are more methods to override, that will assist you with that. Take a look!\n\n```\nclass MyLayerManager extends LayerManager {\n\n    public static final MyLayerManager instance = new MyLayerManager();\n\n    public MyLayerManager() {\n        super(buttonManager);\n    }\n    \n    protected List\u003c? extends ILocationProvider\u003e generateVisibleElements(int minBlockX, int minBlockZ, int maxBlockX, int maxBlockZ) {\n        return Collections.singletonList(new MyLocation);\n    }\n}\n```\n\nYou have finished the logical implementation of your custom map layer. Congratulations! Now it is time for the visual integration into the map. This example is provided for JourneyMap, but you might as well take a look at the other possibilities. Since you already implemented the button as a first step, you will need to follow it up with an implementation of `DrawStep`, an interface from JourneyMap. This class will receive an instance of `MyLocation` and perform the actual rendering.\n\n```\nclass MyDrawStep implements DrawStep {\n\n    private final MyLocation myLocation;\n    \n    public MyDrawStep(MyLocation myLocation) {\n        this.myLocation = myLocation;\n    }\n    \n    @Override\n    public void draw(double draggedPixelX, double draggedPixelY, GridRenderer gridRenderer, float drawScale, double fontScale, double rotation) {\n        final double blockSize = Math.pow(2, gridRenderer.getZoom());\n        final Point2D.Double blockAsPixel = gridRenderer.getBlockPixelInGrid(myLocation.getBlockX(), myLocation.getBlockZ());\n        final Point2D.Double pixel = new Point2D.Double(blockAsPixel.getX() + draggedPixelX, blockAsPixel.getY() + draggedPixelY);\n        \n        DrawUtil.drawLabel(myLocation.getText(), pixel.getX(), pixel.getY(), DrawUtil.HAlign.Center, DrawUtil.VAlign.Middle, 0, 180, 0x00FFFFFF, 255, fontScale, false, rotation);\n    }\n}\n```\n\nContinue with your own implementation of [`LayerRenderer`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/journeymap/render/LayerRenderer.java). This class will cache all `DrawStep`s and provide it to JourneyMap whenever it is time to render.\n\n```\nclass MyLayerRenderer extends LayerRenderer {\n\n    public MyLayerRenderer() {\n        // You may skip MyLayerManager and use an existing ButtonManager like \"OreVeinLayerManager.instance\"\n        // Your custom layer will toggle with whatever button you specify here\n        super(MyLayerManager.instance);\n    }\n    \n    @Override\n    public List\u003c? extends ClickableDrawStep\u003e mapLocationProviderToDrawStep(List\u003c? extends ILocationProvider\u003e visibleElements) {\n        final List\u003cMyDrawStep\u003e drawSteps = new ArrayList\u003c\u003e();\n        visibleElements.stream()\n                .map(element -\u003e (MyLocation) element)\n                .forEach(location -\u003e drawSteps.add(new MyDrawStep(location)));\n        return drawSteps;\n    }\n\n}\n```\n\nThat's already it! Now you need to register some of these classes. Forge's postInit is a good place for it:\n\n```\nVisualProspecting_API.LogicalClient.registerCustomLayer(MyLayerManager.instance);\nVisualProspecting_API.LogicalClient.registerJourneyMapRenderer(new MyLayerRenderer());\n```\n\nNow you need to launch Minecraft, teleport to the right sport (`/tp 0 80 0`) and open JourneyMap.\n\nIf you want to extend support for your layer in other maps as well you already have half the work done. You just need to add implementations for the layer and element renderer. \\\nFor interactive layers you may take a look at extensions/implementations of [`WaypointProviderManager`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/model/layers/WaypointProviderManager.java) and [`ClickableDrawStep`](https://github.com/SinTh0r4s/VisualProspecting/blob/master/src/main/java/com/sinthoras/visualprospecting/gui/journeymap/drawsteps/ClickableDrawStep.java) to get a head start.\n\nThank you and happy coding,\\\nSinTh0r4s\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtmega%2Fvisualprospecting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgtmega%2Fvisualprospecting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtmega%2Fvisualprospecting/lists"}