diff --git a/.gitmodules b/.gitmodules
index 4ac68e07..0bc08a36 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "LLib"]
path = LLib
url = https://git.carvel.li/liza/LLib.git
+[submodule "vendor/ECommons"]
+ path = vendor/ECommons
+ url = https://github.com/NightmareXIV/ECommons.git
diff --git a/GatheringPathRenderer/GatheringPathRenderer.csproj b/GatheringPathRenderer/GatheringPathRenderer.csproj
index 5d22cd3f..1d3aeae5 100644
--- a/GatheringPathRenderer/GatheringPathRenderer.csproj
+++ b/GatheringPathRenderer/GatheringPathRenderer.csproj
@@ -1,3 +1,8 @@
+
+
+
+
+
diff --git a/GatheringPathRenderer/GatheringPathRenderer.json b/GatheringPathRenderer/GatheringPathRenderer.json
new file mode 100644
index 00000000..8d68d1d8
--- /dev/null
+++ b/GatheringPathRenderer/GatheringPathRenderer.json
@@ -0,0 +1,6 @@
+{
+ "Name": "GatheringPathRenderer",
+ "Author": "Liza Carvelli",
+ "Punchline": "dev only plugin: Renders gathering location.",
+ "Description": "dev only plugin: Renders gathering location (without ECommons polluting the entire normal project)."
+}
diff --git a/GatheringPathRenderer/RendererPlugin.cs b/GatheringPathRenderer/RendererPlugin.cs
index d33eae96..9c9a50d2 100644
--- a/GatheringPathRenderer/RendererPlugin.cs
+++ b/GatheringPathRenderer/RendererPlugin.cs
@@ -1,11 +1,189 @@
-using Dalamud.Plugin;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text.Json;
+using System.Text.Json.Nodes;
+using Dalamud.Plugin;
+using Dalamud.Plugin.Services;
+using ECommons;
+using ECommons.Schedulers;
+using ECommons.SplatoonAPI;
+using Questionable.Model.Gathering;
namespace GatheringPathRenderer;
public sealed class RendererPlugin : IDalamudPlugin
{
+ private const long OnTerritoryChange = -2;
+ private readonly IDalamudPluginInterface _pluginInterface;
+ private readonly IClientState _clientState;
+ private readonly IPluginLog _pluginLog;
+ private readonly List<(ushort Id, GatheringRoot Root)> _gatheringLocations = [];
+
+ public RendererPlugin(IDalamudPluginInterface pluginInterface, IClientState clientState, IPluginLog pluginLog)
+ {
+ _pluginInterface = pluginInterface;
+ _clientState = clientState;
+ _pluginLog = pluginLog;
+
+ _pluginInterface.GetIpcSubscriber