feat: make ClaimLinkVisualizer client-only, draw buffers as full cuboids

This commit is contained in:
2026-07-31 07:13:43 +02:00
parent b70b9b7e7d
commit 6e85fa4011
6 changed files with 11 additions and 81 deletions
@@ -16,10 +16,6 @@
<HintPath>$(VINTAGE_STORY)/Lib/protobuf-net.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ClaimLink">
<HintPath>$(CLAIMLINK)/ClaimLink.dll</HintPath>
<Private>false</Private>
</Reference>
</ItemGroup>
<ItemGroup>
@@ -15,8 +15,7 @@ internal static class ClaimLinkVisualizerClient
{
capi = api;
api.Network
.RegisterChannel(ClaimLinkVisualizerModSystem.ChannelName)
api.Network.RegisterChannel(ClaimLinkVisualizerModSystem.ChannelName)
.RegisterMessageType<ClaimLinkBufferRequest>()
.RegisterMessageType<ClaimLinkBufferResponse>()
.SetMessageHandler<ClaimLinkBufferResponse>(OnBufferResponse);
@@ -24,7 +23,7 @@ internal static class ClaimLinkVisualizerClient
api.Input.RegisterHotKey(
"claimlinkvisualizertoggle",
"Toggle ClaimLink buffer visualization",
GlKeys.J,
GlKeys.R,
HotkeyType.CharacterControls,
ctrlPressed: true
);
@@ -35,8 +34,7 @@ internal static class ClaimLinkVisualizerClient
{
visible = !visible;
if (visible)
capi.Network
.GetChannel(ClaimLinkVisualizerModSystem.ChannelName)
capi.Network.GetChannel(ClaimLinkVisualizerModSystem.ChannelName)
.SendPacket(new ClaimLinkBufferRequest());
else
Clear();
@@ -55,11 +53,11 @@ internal static class ClaimLinkVisualizerClient
{
int color = HashToColor(entry.GroupId);
foreach (BufferCuboidDto cuboid in entry.Cuboids)
foreach (BlockPos corner in Corners(cuboid))
{
positions.Add(corner);
colors.Add(color);
}
{
positions.Add(new BlockPos(cuboid.MinX, cuboid.MinY, cuboid.MinZ));
positions.Add(new BlockPos(cuboid.MaxX, cuboid.MaxY, cuboid.MaxZ));
colors.Add(color);
}
}
capi.World.HighlightBlocks(
@@ -68,7 +66,7 @@ internal static class ClaimLinkVisualizerClient
positions,
colors,
EnumHighlightBlocksMode.Absolute,
EnumHighlightShape.Arbitrary
EnumHighlightShape.Cubes
);
}
@@ -80,18 +78,6 @@ internal static class ClaimLinkVisualizerClient
new List<int>()
);
private static IEnumerable<BlockPos> Corners(BufferCuboidDto c)
{
yield return new BlockPos(c.MinX, c.MinY, c.MinZ);
yield return new BlockPos(c.MaxX, c.MinY, c.MinZ);
yield return new BlockPos(c.MinX, c.MaxY, c.MinZ);
yield return new BlockPos(c.MinX, c.MinY, c.MaxZ);
yield return new BlockPos(c.MaxX, c.MaxY, c.MinZ);
yield return new BlockPos(c.MaxX, c.MinY, c.MaxZ);
yield return new BlockPos(c.MinX, c.MaxY, c.MaxZ);
yield return new BlockPos(c.MaxX, c.MaxY, c.MaxZ);
}
private static int HashToColor(int groupId)
{
unchecked
@@ -1,6 +1,5 @@
using Vintagestory.API.Client;
using Vintagestory.API.Common;
using Vintagestory.API.Server;
namespace ClaimLinkVisualizer;
@@ -8,9 +7,6 @@ public class ClaimLinkVisualizerModSystem : ModSystem
{
internal const string ChannelName = "claimlinkvisualizer";
public override void StartServerSide(ICoreServerAPI api) =>
ClaimLinkVisualizerServer.Start(api);
public override void StartClientSide(ICoreClientAPI api) =>
ClaimLinkVisualizerClient.Start(api);
}
@@ -1,47 +0,0 @@
using System.Collections.Generic;
using ClaimLink;
using Vintagestory.API.MathTools;
using Vintagestory.API.Server;
namespace ClaimLinkVisualizer;
internal static class ClaimLinkVisualizerServer
{
internal static void Start(ICoreServerAPI api)
{
api.Network
.RegisterChannel(ClaimLinkVisualizerModSystem.ChannelName)
.RegisterMessageType<ClaimLinkBufferRequest>()
.RegisterMessageType<ClaimLinkBufferResponse>()
.SetMessageHandler<ClaimLinkBufferRequest>((fromPlayer, _) =>
SendBuffers(api, fromPlayer)
);
}
private static void SendBuffers(ICoreServerAPI api, IServerPlayer toPlayer)
{
ClaimLinkBufferResponse response = new();
foreach (var (groupId, cuboids) in ClaimLinkAPI.BufferMap)
{
ClaimLinkBufferEntryDto entry = new() { GroupId = groupId };
foreach (Cuboidi cuboid in cuboids)
entry.Cuboids.Add(
new BufferCuboidDto
{
MinX = cuboid.MinX,
MinY = cuboid.MinY,
MinZ = cuboid.MinZ,
MaxX = cuboid.MaxX,
MaxY = cuboid.MaxY,
MaxZ = cuboid.MaxZ,
}
);
response.Entries.Add(entry);
}
api.Network
.GetChannel(ClaimLinkVisualizerModSystem.ChannelName)
.SendPacket(response, toPlayer);
}
}
+2 -3
View File
@@ -3,14 +3,13 @@
"type": "Code",
"modid": "claimlinkvisualizer",
"name": "ClaimLinkVisualizer",
"side": "Universal",
"side": "Client",
"authors": [
"anth64"
],
"description": "Visualizes ClaimLink buffer zones client-side.",
"version": "0.0.1",
"dependencies": {
"game": "1.22.5",
"claimlink": "0.1.0"
"game": "1.22.5"
}
}
Regular → Executable
View File