Giter VIP home page Giter VIP logo

valheim-webmap's Introduction

Valheim WebMap

This server side mod creates a web based map that shows live players and allows shared exploration. After port forwarding the correct port, you can share http://your_ip:port to anyone else and they can see the map too. Clients do not need to have any mods installed!

For players to show up on the map, they must set visible to other players in the in-game map screen. Press m to bring up the map settings.

Currently only works with Valheim dedicated server.

Features

  • A explorable map of your Valheim world in your browser that you can zoom with the mousewheel or pinch zoom on mobile.
  • Players can place their own pins with chat commands (see below for more info)
  • Map pings from in game players will show up on the web map as well.
  • Connected players list.
  • Auto follow player feature.
  • Connect and chat messages.
  • Discord server status and player join/leave notifications.

screenshot

Installation

  1. Assuming you have BepInEx installed and working, place the WebMap directory in:

    Steam\steamapps\common\Valheim dedicated server\BepInEx\plugins\WebMap
    
  2. After starting the server for the first time a default configuration file will be created in:

    Steam\steamapps\common\Valheim dedicated server\BepInEx\config
    
  3. Stop the server, edit the configuration, start the server. Always stop the server before making configuration changes, otherwise they will be lost on shutdown.

Updating

If you are updating, one additional thing you and anyone else using the web map might need to do is clear your browser cache.

You may also be able to hold down the shift key and click the reload button in your browser.

Chat Commands

This mod supports placing pins with chat commands. Press Enter to start chatting in game. The commands are as follows:

  • !pin - Place a "dot" pin with no text on the map where you are currently standing.
  • !pin my pin name - Place a "dot" pin with "my pin name" under it on the map where you are currently standing.
  • !pin [pin-type] [text] - Place a pin of a certain type with optional text under it on the map where you are currently standing.
    • Pin types are: dot, fire, mine, house and cave. Example command: /pin house my awesome base
  • !undoPin - Delete your most recent pin.
  • !deletePin [text] - Delete the most recent pin that matches the text exactly.

If a player creates too many pins, their oldest pin will be removed. There is a setting to control how many pins a player can create.

Licence

Where applicable, assume stuff is under the MIT licence.

Credit

valheim-webmap's People

Contributors

florian-s-dev avatar h0tw1r3 avatar kylepaulsen avatar rysson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

valheim-webmap's Issues

Not working

Is there a real chance that you can get the mod running again? Or is the project dead?
It would be great as it is the only map I have found.

[Info : BepInEx] Loading [WebMap 2.5.2]
[Warning: HarmonyX] AccessTools.DeclaredMethod: Could not find method for type ZDO and name Print and parameters
ArgumentException: Undefined target method for patch method static bool WebMap.Patches.ZDO_Patch::Print(ZDO& __instance)
at HarmonyLib.PatchClassProcessor.PatchWithAttributes (System.Reflection.MethodBase& lastOriginal) [0x00047] in <474744d65d8e460fa08cd5fd82b5d65f>:0
at HarmonyLib.PatchClassProcessor.Patch () [0x0006a] in <474744d65d8e460fa08cd5fd82b5d65f>:0
Rethrow as HarmonyException: Patching exception in method null
at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x0006c] in <474744d65d8e460fa08cd5fd82b5d65f>:0
at HarmonyLib.PatchClassProcessor.Patch () [0x00095] in <474744d65d8e460fa08cd5fd82b5d65f>:0
at HarmonyLib.Harmony.b__11_0 (System.Type type) [0x00007] in <474744d65d8e460fa08cd5fd82b5d65f>:0
at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable1[T] sequence, System.Action1[T] action) [0x00014] in <474744d65d8e460fa08cd5fd82b5d65f>:0
at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <474744d65d8e460fa08cd5fd82b5d65f>:0
at WebMap.WebMap.Awake () [0x00015] in C:\Users\h0tw1r3\source\repos\valheim-webmap\WebMap\WebMap.cs:56
UnityEngine.GameObject:Internal_AddComponentWithType(GameObject, Type)
UnityEngine.GameObject:AddComponent(Type)
BepInEx.Bootstrap.Chainloader:Start()
UnityEngine.GameObject:.cctor()
UnityEngine.UI.Graphic:CacheCanvas()
UnityEngine.UI.Graphic:get_canvas()
TMPro.TextMeshProUGUI:OnCanvasHierarchyChanged()

(Filename: C:/Users/h0tw1r3/source/repos/valheim-webmap/WebMap/WebMap.cs Line: 56)

Wrong position on webmap, y=0

On the first image, in-game i'm on (3000,-1300), but on the webmap image, everybody stay at y=0 and I appear at (3000,0).

ingame

webmap

Only tracks first player to connect

The map only seems to show the first player to connect to the server. Subsequent players do not appear on the map, the player list, and their map reveal progress is not tracked. After the first player disconnects, the next player takes over the map behavior.

Pin commands not working

Player chat messages don't seem to be detected, and as a result the pin commands aren't working.

OS: Windows
Version:

  • Server: 0.214.300
  • BepInEx: 5.4.2101

WebMap log excerpt:

[11:47:48.211] WebMap: MAP ALREADY BUILT!
[11:47:52.896] WebMap: starting point (-194.3, 80.4, 1.4)
[11:47:53.542] WebMap: HTTP Server Listening on port 3000
[11:47:55.155] WebMap: new visitor connected from 10.144.43.1:50583
[11:47:55.165] 3/29/2023 11:47:55 AM|Fatal|<>c__DisplayClass174_0.b__2:0|WebSocketSharp.WebSocketException: The header part of a frame could not be read.
[11:47:55.165] at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x0001f] in :0
[11:47:55.166] at WebSocketSharp.WebSocketFrame+<>c__DisplayClass73_0.b__0 (System.Byte[] bytes) [0x00000] in :0
[11:47:55.166] at WebSocketSharp.Ext+<>c__DisplayClass57_0.b__0 (System.IAsyncResult ar) [0x0008e] in :0
[11:47:55.872] WebMap: new visitor connected from 10.144.43.1:50587
[11:49:53.847] WebMap: (chat) (-7025.5, 68.2, 3555.6) | 2 | Whopp |
[11:51:34.278] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp |
[11:51:49.407] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp |
[11:53:48.599] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp |
[11:54:19.888] WebMap: (say) (-7028.8, 66.1, 3555.4) | 1 | Whopp |

Screenshot 2023-03-29 115507

Not working in docker

BepInEx v5.4.2105

I'm hosting a dedicated server using ich777's docker container on unraid (steamcmd). I've placed the contents in the BepInEx\plugins\WebMap directory but can't seem to get anything to load at port 3000. I don't see a configuration file in \config either. I've tested other mods and BepInEx does appear to be installed and working.

Sorry I'm a bit new to this but any help would be appreciated.

Seems to be causing world loading to fail

using lloesche/valheim-server-docker
ValheimPlus/PlantEverything as additional mods

I have tried the other forks and they have worked fine in regard to getting the server started, but don't work for other reasons, but with this fork I can't get the server started due to the world loading failing. I think anyways.

Server can't start and gets stuck in an infinite loop retrying to start the server.
Provided logs happen roughly before the server starts over with the whole process:

7:05:32: WebMap: starting point (61.86, 35.14, -387.54)
valheim-1 | May 18 17:05:32 supervisord: valheim-server 05/18/2024 17:05:32: WebMap: starting point (61.86, 35.14, -387.54)
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Console: [Info : Unity Log] 05/18/2024 17:05:33: WebMap::DiscordWebHook::SendMessage: System.Collections.Specialized.NameValueCollection
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: WebMap::DiscordWebHook::SendMessage: System.Collections.Specialized.NameValueCollection
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Console: [Error : Unity Log] 05/18/2024 17:05:33: Exception while loading world /home/valheim/.config/unity3d/IronGate/Valheim/worlds_local/Asslands.db:System.NullReferenceException: Object reference not set to an instance of an object
valheim-1 | May 18 17:05:33 supervisord: valheim-server at WebMap.WebMap+ZoneSystemLoadPatch.Postfix () [0x00058] in C:\Users\h0tw1r3\source\repos\valheim-webmap\WebMap\WebMap.cs:472
valheim-1 | May 18 17:05:33 supervisord: valheim-server at (wrapper dynamic-method) ZoneSystem.DMDZoneSystem::Load(ZoneSystem,System.IO.BinaryReader,int)
valheim-1 | May 18 17:05:33 supervisord: valheim-server at ZNet.LoadWorld () [0x000f8] in <4efa3faf7157456487d70c5f7277dba7>:0
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Exception while loading world /home/valheim/.config/unity3d/IronGate/Valheim/worlds_local/Asslands.db:System.NullReferenceException: Object reference not set to an instance of an object
valheim-1 | May 18 17:05:33 supervisord: valheim-server at WebMap.WebMap+ZoneSystemLoadPatch.Postfix () [0x00058] in C:\Users\h0tw1r3\source\repos\valheim-webmap\WebMap\WebMap.cs:472
valheim-1 | May 18 17:05:33 supervisord: valheim-server at (wrapper dynamic-method) ZoneSystem.DMDZoneSystem::Load(ZoneSystem,System.IO.BinaryReader,int)
valheim-1 | May 18 17:05:33 supervisord: valheim-server at ZNet.LoadWorld () [0x000f8] in <4efa3faf7157456487d70c5f7277dba7>:0
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Console: [Error : Unity Log] 05/18/2024 17:05:33: World load failed mid-file. Exiting without save. Check backups!
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: World load failed mid-file. Exiting without save. Check backups!
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Console: [Info : Unity Log] 05/18/2024 17:05:33: Unloading unused assets
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Unloading unused assets
valheim-1 | May 18 17:05:33 supervisord: valheim-server 05/18/2024 17:05:33: Console: [Error : Unity Log] 05/18/2024 17:05:33: World db couldn't load correctly, saving has been disabled to prevent .old file from being overwritten.

Crash when using v2.1.0

Been trying to make a server for Mistlands, but using old WebMap releases shows no map, and v2.1.0 seems to crash the server.
Here's the error i get:

12/07/2022 14:35:58: Load world: Mistyventure (Mistyventure)
12/07/2022 14:35:58: Loading 19324 zdos , my id 2801510339 data version:29
12/07/2022 14:35:58: Loaded 569 dead zdos
12/07/2022 14:35:58: Removed 0 OLD generated ZDOS
12/07/2022 14:35:58: Loaded 10026 locations
WebMap: starting point (1.8, 33.6, 6.1)
12/07/2022 14:35:58: Exception while loading world C:/Users/JacobMIX/AppData/LocalLow/IronGate/Valheim/worlds_local/Mistyventure.db:System.NullReferenceException: Object reference not set to an instance of an object
  at WebMap.WebMap+ZoneSystemLoadPatch.Postfix () [0x0004e] in <03c74445e2884241813e77d9224a64d5>:0
  at (wrapper dynamic-method) ZoneSystem.DMD<ZoneSystem::Load>(ZoneSystem,System.IO.BinaryReader,int)
  at (wrapper dynamic-method) ZNet.DMD<ZNet::LoadWorld>(ZNet)
12/07/2022 14:35:58: World load failed mid-file. Exiting without save. Check backups!
[Info   :ServerSideMap] World .explored save path: C:/Users/JacobMIX/AppData/LocalLow/IronGate/Valheim/worlds_local/Mistyventure
[Info   :ServerSideMap] loaded from existing explore file
12/07/2022 14:35:58: World db couldn't load correctly, saving has been disabled to prevent .old file from being overwritten.
NullReferenceException: Object reference not set to an instance of an object
  at (wrapper dynamic-method) ZNet.DMD<ZNet::Start>(ZNet)

The shader Hidden/Dof/DepthOfFieldHdr (UnityEngine.Shader) on effect Main Camera (UnityStandardAssets.ImageEffects.DepthOfField) is not supported on this platform!
The image effect Main Camera (UnityStandardAssets.ImageEffects.DepthOfField) has been disabled as it's not supported on the current platform.
The shader Hidden/SunShaftsComposite (UnityEngine.Shader) on effect Main Camera (UnityStandardAssets.ImageEffects.SunShafts) is not supported on this platform!
The shader Hidden/SimpleClear (UnityEngine.Shader) on effect Main Camera (UnityStandardAssets.ImageEffects.SunShafts) is not supported on this platform!
The image effect Main Camera (UnityStandardAssets.ImageEffects.SunShafts) has been disabled as it's not supported on the current platform.
12/07/2022 14:35:58: Game server connected
12/07/2022 14:35:58: Game - OnApplicationQuit
12/07/2022 14:35:58: Shuting down
12/07/2022 14:35:58: ZNet Shutdown
12/07/2022 14:35:58: Skipping world save
12/07/2022 14:35:59: Sending disconnect msg
NullReferenceException: Object reference not set to an instance of an object
  at WebMap.WebMap+ZNetPatchShutdown.Postfix () [0x00000] in <03c74445e2884241813e77d9224a64d5>:0
  at (wrapper dynamic-method) ZNet.DMD<ZNet::Shutdown>(ZNet)
  at (wrapper dynamic-method) Game.DMD<Game::Shutdown>(Game)
  at Game.OnApplicationQuit () [0x00013] in <f9360778bc524f1593f8ab7fec1ab127>:0

Setting up 12 worker threads for Enlighten.
  Thread -> id: d868 -> priority: 1
  Thread -> id: e5d8 -> priority: 1
  Thread -> id: e434 -> priority: 1
  Thread -> id: e86c -> priority: 1
  Thread -> id: ebec -> priority: 1
  Thread -> id: d0d8 -> priority: 1
  Thread -> id: ae3c -> priority: 1
  Thread -> id: c994 -> priority: 1
  Thread -> id: d088 -> priority: 1
  Thread -> id: e648 -> priority: 1
  Thread -> id: 40e0 -> priority: 1
  Thread -> id: c624 -> priority: 1
12/07/2022 14:35:59: ZNet OnDestroy
12/07/2022 14:35:59: Net scene destroyed
12/07/2022 14:36:00: Steam manager on destroy
Compass Destroying plugin
ShowContainerContents Destroying plugin
SimpleSort Destroying plugin
NameYourTame UnPatched!
[Warning:  HarmonyX] UnpatchAll has been called - This will remove ALL HARMONY PATCHES.
InvalidProgramException: Invalid IL code in (wrapper dynamic-method) CreatureSpawner:DMD<CreatureSpawner::Spawn> (CreatureSpawner): IL_00ea: call      0x0000002d

  at (wrapper managed-to-native) System.RuntimeMethodHandle.GetFunctionPointer(intptr)
  at System.RuntimeMethodHandle.GetFunctionPointer () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0
  at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform.GetFunctionPointer (System.Reflection.MethodBase method, System.RuntimeMethodHandle handle) [0x00000] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at MonoMod.RuntimeDetour.Platforms.DetourRuntimeILPlatform.GetNativeStart (System.Reflection.MethodBase method) [0x0004d] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at MonoMod.RuntimeDetour.DetourHelper.GetNativeStart (System.Reflection.MethodBase method) [0x00005] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at MonoMod.RuntimeDetour.Detour._RefreshChain (System.Reflection.MethodBase method) [0x000fb] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at MonoMod.RuntimeDetour.Detour.Apply () [0x00053] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at MonoMod.RuntimeDetour.Detour..ctor (System.Reflection.MethodBase from, System.Reflection.MethodBase to, MonoMod.RuntimeDetour.DetourConfig& config) [0x002e1] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at (wrapper dynamic-method) MonoMod.RuntimeDetour.ILHook+Context.DMD<MonoMod.RuntimeDetour.ILHook+Context::Refresh>(MonoMod.RuntimeDetour.ILHook/Context)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<MonoMod.RuntimeDetour.ILHook+Context::Refresh>?1722057728(object)
  at HarmonyLib.Internal.RuntimeFixes.StackTraceFixes.OnILChainRefresh (System.Object self) [0x00000] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at MonoMod.RuntimeDetour.ILHook.Apply () [0x00059] in <4e2760c7517c4ea79c633d67e84b319f>:0
  at HarmonyLib.Public.Patching.ManagedMethodPatcher.DetourTo (System.Reflection.MethodBase replacement) [0x00047] in <474744d65d8e460fa08cd5fd82b5d65f>:0
Rethrow as HarmonyException: IL Compile Error (unknown location)
  at HarmonyLib.Public.Patching.ManagedMethodPatcher.DetourTo (System.Reflection.MethodBase replacement) [0x0005f] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, HarmonyLib.PatchInfo patchInfo) [0x00033] in <474744d65d8e460fa08cd5fd82b5d65f>:0
Rethrow as HarmonyException: IL Compile Error (unknown location)
  at HarmonyLib.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, HarmonyLib.PatchInfo patchInfo) [0x0005d] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.PatchProcessor.Unpatch (System.Reflection.MethodInfo patch) [0x0001f] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.PatchFunctions+<>c__DisplayClass5_0.<UnpatchConditional>b__0 (HarmonyLib.Patch patchInfo) [0x0000c] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.CollectionExtensions.DoIf[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Func`2[T,TResult] condition, System.Action`1[T] action) [0x00007] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.PatchFunctions.UnpatchConditional (System.Func`2[T,TResult] executionCondition) [0x00038] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.Harmony.UnpatchAll () [0x0002f] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at HarmonyLib.Harmony.UnpatchAll (System.String harmonyID) [0x00031] in <474744d65d8e460fa08cd5fd82b5d65f>:0
  at PaddlePower.PaddlePower.OnDestroy () [0x0000a] in <2051d66748e146ce89aa85f916179240>:0

I do have other mods as well, but WebMap-v2.1.0 is the only one that crashes the server.
I know mods probably aren't all that stable yet for Mistland. But here's the modspack:
https://cdn.discordapp.com/attachments/916429298158682123/1050045392013766739/Mods.r2z

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.