Giter VIP home page Giter VIP logo

stardewvalleymp's Introduction

Makeshift Multiplayer is an open-source Stardew Valley mod which adds multiplayer to the game while we wait for official multiplayer.

Install

  1. Install the latest version of SMAPI.
  2. Install this mod from Nexus mods.
  3. Run the game using SMAPI.

Here's how to set up a multiplayer game using Hamachi (but feel free to use port forwarding or another VPN if you want). All players should follow these instructions.

  1. Run the game once to generate a config.json in the mod folder.
  2. Install Hamachi.
  3. main player only: Click 'create new network' in Hamachi, and note down the exact "Network ID Name" and "password".
  4. main player only: Find the "IP" on the right side of the power button in the Hamachi menu.
  5. Open Stardew Valley/Mods/StardewValleyMP/config.json in a text editor, find "DefaultIP": "YOUR IP HERE", and change YOUR IP HERE to the host's IP from step 4.
  6. clients only: In Hamachi, connect to the host using the "Network ID Name" and "password" from step 3.
  7. Make sure Hamachi is running, and then launch the game with SMAPI.
  8. main player only: After pressing 'Listen', wait for all of your players to connect, and press 'Start'.

Compatibility

Makeshift Multiplayer is compatible with Stardew Valley 1.2 on Linux/Mac/Windows. If any of the players are on Linux/Mac, make sure everyone opens the config.json file in a text editor and sets Compress to false.

FAQs

Is this official multiplayer?

Nope. That's expected in Stardew Valley 1.3, sometime in 2018.

What platforms is this mod compatible with?

It's compatible with Linux + Mac + Windows, and you can play crossplatform.

Can I use other mods in multiplayer?

Visual mods should be fine (including Lookup Anything, portrait mods, etc), though only you will see them. Mods which change the game data can cause problems (e.g. Automate, Chests Anywhere, CJB Cheats Menu, etc).

What's shared?

The following is shared (based on the host):

  • most places (including outside, town, inside shops, and the library);
  • money;
  • time / pausing;
  • carpenter (Robin can only build one thing at a time; she may not actually appear, but it'll still be built);
  • community center bundles.

Each player has a separate version of...

  • mine & skull cavern levels;
  • player stats;
  • blacksmith;
  • backpack upgrade level;
  • inventory;
  • inside house;
  • relationships;
  • events (e.g. each farmer plays the egg hunt minigame separately);
  • stardrops;
  • quests from Pierre's noticeboard;
  • cutscenes & heart events.

Some story quests are shared and some aren't.

See also

stardewvalleymp's People

Contributors

aphadeon avatar blommers avatar pathoschild avatar spacechase0 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stardewvalleymp's Issues

Community Center desync

We've encountered multiple desyncs using the community center path. Thought I'd share :)

I'll have to do some more specific testing, but I believe these are caused when one of two things happens:
1.) A client completes a community center room, instead of the host.
2.) Two rooms are completed on the same day.

Additionally, if a player joins your game who has completed a community center bundle the host has not, it will disable all the rewards (because it adds the 'seen cutscene' ids for them, preventing them from triggering, while they've never been triggered so the repairs/etc are not done).

The temporary workaround for these:
If you are absolutely sure that you have completed a room in the current game, and waited at least 2 in-game days, and don't have its reward, use a debug build of the mod and press F8, type one of the following corresponding with the missing reward, and push enter. You should get the reward the following morning.
mft ccCraftsRoom
mft ccVault
mft ccFishTank
mft ccBoilerRoom
mft ccPantry
mft ccBulletin

Dark Talisman

Dark Talisman has only shared one, which means second person cannot get it.

"Hard" objects not synchronized

Tree felling, grass cutting, and the like are all synchronized beautifully.

So it's a bit jarring that boulders, stumps, hard logs, meteorites, etc, are not synced at all.
Led to quite a bit of confusion in our group, haha.
This desync also creates (typically minor) gameplay struggles, for example, a client cleared part of the farm and planted fruit trees. Next day, boulders were back for them because the host hadn't cleared it yet, and the fruit trees were bugged.

There is an exploit here as well-
if the host doesn't break the meteorite, it is re-harvestable daily to everyone else.

Client sleeping before host can lead to crash

I've been unable to isolate the reasoning, but this is a post-1.1 issue.

If the client goes to bed before the host, there's a chance (not every time) that the host will crash.

The indicator is always the same, the bottom half of your character goes transparent (as if mid-animation and there's no sprite for it), and it's only happened when the host picks up an item (like an item on the beach, or quartz on the ground in the mines).

Versions:
StardewValleyMP : 0.2.7
SMAPI : 0.0.0 1.1-3

Last errors seen on the host (you have to kill the process, as the game and SMAPI console become unresponsive):

[10:40:01.852 ] (Me) Marius moved to Beach (StardewValley.Locations.Beach)
[10:40:23.836 ] Skippy moved to Mine (StardewValley.GameLocation)
[10:40:28.735 ] Skippy moved to BusStop (StardewValley.Locations.BusStop)
[10:40:37.052 ] Skippy moved to Farm (StardewValley.Farm)
[10:42:37.591 ] Skippy moved to FarmHouse_Skippy (StardewValley.Locations.FarmHouse)
[10:42:44.491 ] [] Skippy is in bed.
[10:42:45.059 ] Got farmer data for client 1
[10:42:45.208 ] Adding: FarmHouse -> FarmHouse_Skippy (StardewValley.Locations.FarmHouse)
[10:42:45.208 ] Adding: Cellar -> Cellar_Skippy (StardewValley.Locations.Cellar)
[10:42:45.238 ] An error occured in the base update loop: System.NullReferenceException: Object reference not set to an instance of an object.
   at StardewValley.FarmerSprite.getAnimationFromIndex(Int32 index, FarmerSprite requester, Int32 interval, Int32 numberOfFrames, Boolean flip, Boolean secondaryArm)
   at StardewValley.FarmerSprite.setCurrentFrame(Int32 which, Int32 offset, Int32 interval, Int32 numFrames, Boolean flip, Boolean secondaryArm)
   at StardewValley.FarmerSprite.setCurrentFrame(Int32 which)
   at StardewValley.Tools.FishingRod.tickUpdate(GameTime time, Farmer who)
   at StardewValley.Farmer.Update(GameTime time, GameLocation location)
   at StardewValley.Game1.UpdateCharacters(GameTime time)
   at StardewValley.Game1.Update(GameTime gameTime)
   at StardewModdingAPI.Inheritance.SGame.Update(GameTime gameTime) in Z:\Projects\SMAPI\src\StardewModdingAPI\Inheritance\SGame.cs:line 790
[10:43:05.240 ] Exception while receiving: System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.IO.Stream.ReadByte()
   at System.IO.BinaryReader.ReadByte()
   at StardewValleyMP.Packets.Packet.readFrom(Stream s) in C:\Users\space\Desktop\SDV-Mods\StardewValleyMP\StardewValleyMP\Packets\Packet.cs:line 76
   at StardewValleyMP.Server.Client.receiveAndQueue() in C:\Users\space\Desktop\SDV-Mods\StardewValleyMP\StardewValleyMP\Server.cs:line 314

I made sure to include the last logged normal events that happened before this as well, hopefully that helps identify the root cause.

Pet duplication

Client pet duplication is fixed, but the host still does it (and so propogates to clients anyways the next day).

I know the fix, just need to do it.

Compare mod lists

There should be a requirement of having the same mods. Just check mod IDs and version numbers.

Bash support

currently, client and host will see each other wearing cloth and walking on the water

Earning multiplier

Earnings are multiplied by (up to) amount of clients, probably from the shipping earnings menu screen.

No automaticly day change

In MP if it's 2:00 AM (red colored clock) the auto day change does not work.
Char is freezing and can't no longer be moved.

This must be fixed with a force day switch or with an cancel on the event so that it's possible to torn back to farm.

Saves not showing on Linux and Mac

Relevant areas:

Primarily: Why is stealing the already-running _initTask (the task that gets the list of saves) from the vanilla menu suddenly not good enough?

I previously just used my own _initTask (see here), but it caused some files to not show up. Presumably because the original task locked some of those files while loading them? I guess I could kill the original task, but I don't know how safe that is. Waiting for it to finish isn't very practical once you get more than a save file or two (trust me, I have 10ish from MP testing alone and that menu takes quite a while to load).

Relevant but surprisingly unhelpful log file

Connection bug while stop listening

Hi, I encountered a bug while trying to migrate the mod to Mac OSX.

When the server starts host, the program will create a new thread to wait clients' connections.
After the client has connected to the server, I clicked the "Start" button to stop listening.
Then the server won't enter game and the terminal will throw out error information as follows:

Stopping listener, beginning loading
Exception while listening:
Exception while listening for clients:
interrupted

That really confused me because after stopping listener there shouldn't be exception of listening. But I finally figure it out.

Part of codes in Function startHost() of Multiplayer.cs is like this:

try
{
    int port = Int32.Parse(portStr);
    listener = new TcpListener(IPAddress.IPv6Any, port);
    listener.Server.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false);
    listener.Start();

    client = null;
    server = new Server();

    while (true)
    {
        Log.Async("Waiting for connection...");
        Socket socket = listener.AcceptSocket();
        NetworkStream stream = new NetworkStream(socket);
        server.addClient(socket, stream);
    }

}
catch (Exception e)
{
    if (e is SocketException && ( ( ( SocketException ) e ).Message.IndexOf( "A blocking operation was interrupted" ) != -1 || ( ( SocketException ) e ).Message.IndexOf( "WSACancelBlockingCall" ) != -1 ) )
        return;

    Log.Async("Exception while listening: " + e);
    ChatMenu.chat.Add(new ChatEntry(null, "Exception while listening for clients: "));
    ChatMenu.chat.Add(new ChatEntry(null, e.Message));
    ChatMenu.chat.Add(new ChatEntry(null, "Check your log file for more details."));
    problemStarting = true;
}
finally
{
    if ( listener != null )
    {
        listener.Stop();
        listener = null;
    }
}

I noticed that the while-cycle will continue forever in this minor thread, which means the codes in finally will never be executed except catching errors.

At the same time, some codes in Function receiveLeftClick() in NewLoadMenu.cs is like this:

if (r.Contains(x, y))
{
    StardewModdingAPI.Log.Async("Stopping listener, beginning loading");
    Multiplayer.listener.Server.Close();
    readyToLoad = true;
}

Multiplayer.listener.Server.Close(); this statement will close the listener outside the minor thread. Thus, the minor thread will catch errors then the server can't start game.

To solve the problem, I checked the last version of Multiplayer.cs and made some little modifications.

In while-cycle of startHost() of Multiplayer.cs:

// outside the Function
public static bool stopListening = false;

// unrelated codes
... 
// while-cycle in startHost()
while (true)
{
    Log.Async("Waiting for connection...");
    Socket socket = listener.AcceptSocket();
    NetworkStream stream = new NetworkStream(socket);
    server.addClient(socket, stream);
    if (stopListening)
        break;
}

And in receiveLeftClick() in NewLoadMenu.cs:

if (r.Contains(x, y))
{
    StardewModdingAPI.Log.Async("Stopping listener, beginning loading");
    // Multiplayer.listener.Server.Close();
    Multiplayer.stopListening = true;
    readyToLoad = true;
}

Then I can play multiplayer mode in Mac! (Although I don't know whether there are other run-time errors due to Mac OSX system)

I'm not sure if this bug happens only on Mac and I saw the related codes in 0.2.6 version remained unchanged. So I submit this issue to check whether the problem is only on Mac.

Thank you! : )

(Suggestion) Dedicated/Separate server

Something to consider:
Perhaps a dedicated server would be better?
Would allow the use of external servers, and additionally would prevent network performance from directly affecting the host player's FPS.
LAN parties could still play just as they do now, only difference is that one would open a background process.

As the server didn't exist in vanilla code and was written inside/on top of the client, I like to imagine that this wouldn't be "hella" difficult. Not yet settled in with the code enough to be completely sure of that.

Wanted to propose it for consideration/discussion.

"Ghost" footsteps

Sometimes you hear other player's footsteps.

I need to check if this is something I can fix.

Cannot connect Mac to Mac

Getting several of the following error every time I attempt to connect as Mac client to a Mac host using EnderHDMC's PR which allows the mod to work on Linux:

22:59:14 DEBUG Makeshift Multiplayer] Exception loading world: System.DllNotFoundException: libMonoPosixHelper.dylib at (wrapper managed-to-native) System.IO.Compression.DeflateStreamNative:CreateZStream (System.IO.Compression.CompressionMode,bool,System.IO.Compression.DeflateStreamNative/UnmanagedReadOrWrite,intptr) at System.IO.Compression.DeflateStreamNative.Create (System.IO.Stream compressedStream, CompressionMode mode, Boolean gzip) <0x15ae5f1b0 + 0x00189> in <filename unknown>:0 at System.IO.Compression.DeflateStream..ctor (System.IO.Stream compressedStream, CompressionMode mode, Boolean leaveOpen, Boolean gzip) <0x15ae5efb0 + 0x00091> in <filename unknown>:0 at System.IO.Compression.DeflateStream..ctor (System.IO.Stream stream, CompressionLevel compressionLevel, Boolean leaveOpen, Boolean gzip) <0x15ae5ef60 + 0x00033> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.IO.Compression.DeflateStream:.ctor (System.IO.Stream,System.IO.Compression.CompressionLevel,bool,bool) at System.IO.Compression.GZipStream..ctor (System.IO.Stream stream, CompressionLevel compressionLevel, Boolean leaveOpen) <0x15ae5edd0 + 0x0006a> in <filename unknown>:0 at System.IO.Compression.GZipStream..ctor (System.IO.Stream stream, CompressionLevel compressionLevel) <0x15ae5ed90 + 0x00020> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.IO.Compression.GZipStream:.ctor (System.IO.Stream,System.IO.Compression.CompressionLevel) at StardewValleyMP.Util.Compress (System.Byte[] raw) <0x15ae5eba0 + 0x00090> in <filename unknown>:0 at StardewValleyMP.Packets.ClientFarmerDataPacket.write (System.IO.BinaryWriter writer) <0x15ae5eb10 + 0x00041> in <filename unknown>:0 at StardewValleyMP.Packets.Packet.writeTo (System.IO.Stream s) <0x156fd6820 + 0x000be> in <filename unknown>:0 at StardewValleyMP.Client.send (StardewValleyMP.Packets.Packet packet) <0x15ae5ead0 + 0x0002a> in <filename unknown>:0 at StardewValleyMP.Vanilla.NewSaveGame+<getLoadEnumerator>c__Iterator0.MoveNext () <0x156fd9430 + 0x00a5f> in <filename unknown>:0

Client relationship appears on Host's Social tab (and vica versa).

The Client's relationship is appearing on the Host's Social tab (and vica versa).

Screenshots are from the host's game.

Host is in a relationship with Abigail. Client is in a relationship with Sebastian. The Client's relationship appears in the Host's social tab. It is also happening the other way around (Host's relationship is appearing on the Client).

I am using v0.2.8. Didn't notice it using pre-v 0.2.8.

social-pt1
social-pt2

Client purchasing animals thing

"It was a while ago but I remember I had a coop next to a barn. The next day after purchasing the goats, two chicken moved to the barn and replacing two goats. "

SDV 1.1 MegaIssue

  • Farm type saving and compatibility - It seems creating and loading, with hosting and client connections work with the new farms, but when said players do something that could not previously be done, I am sure this will corrupt the saves.
  • Previously created multiplayer farms and default farm compatibility
  • House upgrades, specifically the new basement upgrade - Loading a fully upgraded house and trying to host or client will break the game, reverting the house back to the starter and causing a crash. So, when players buy any upgrade in 1.1 it will probably break the save.
  • New items need to be taken into account and implemented
    • Buildings
      • Junimo Hut
      • Investigate others (Shed, mill, arcane stuff)
    • Objects
      • Cask
      • Maybe furniture de/serialization
    • Witch shrines
      • Memory (Dating status is technically shared)
      • Selfishness (Might be fine since children stay in farmer house?)
      • Night Terrors (mainly client -> server, since clients will get server status next day)
  • Divorce - Everyone knows who is married to who so that two people can't marry the same person. Make sure this works right.
  • Post Community Center/New wizard quest - Need to see what exactly happens when the quest starts, but this will need to be implemented to work with both the server and clients.
  • 1.11 update compatibility

Listening beyond launch.

I am trying to make it so people can log in at any time, as it is right now all players must be in the lobby before launch.

Any direction on where and how to make this happen?

Sharing house

Enough people have asked that I should probably work on this, especially since official MP will be next year.

  • House syncing (such as furniture) will need to be implemented.
  • I will probably need to find a way to save extra data to the file, to store the share-ed-ness per file. Maybe just the per-world config?
  • Something else I've forgotten.

Not sure how marriage will be affected.

Chest synchronization error

It seems that chests are not synchronized correctly when there is more than just host and a single client.

Example scenario:
Client A places a chest and puts 1 stone in it.
Client B opens the chest, they will not see the stone.
The host comes to investigate, and sure enough the chest is empty.
The chest is now empty for Client A as well. The stone has been lost.

That scenario sucks when its a chest full of valuables, instead of 1 stone.

Alternative scenario:
Client A places a chest and puts 1 stone in it.
Host opens chest. It has one stone in it.
Client B opens the chest, and sure enough, it still has one stone in it.

So what's happening?
Client A is sending the update to the host when they place the stone and close the chest.
Client B is unaware of this update and still believes the chest to be empty.
If client B opens the chest at this point, it overwrites the host's copy of the chest with an empty one.
If the host opens it before client B, it sees the update from client A and sends it to all clients.

How to fix?
When the host receives a chest update, it needs to be immediately sent out to everyone, instead of when the host closes the chest. If this is already the case, it isn't working correctly.

Host mode does not work on Linux.

Host mode does not work in the Linux version of Stardew Valley

[ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Method 'TcpListener.Create' not found.
  at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) <0x40eb72f0 + 0x00083> in <filename unknown>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, Boolean preserveSyncCtx) <0x40eb6e10 + 0x001f5> in <filename unknown>:0 
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, Boolean preserveSyncCtx) <0x40eb6c20 + 0x00023> in <filename unknown>:0 
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) <0x40eb6b60 + 0x0005b> in <filename unknown>:0 
  at System.Threading.ThreadHelper.ThreadStart () <0x40eb6a20 + 0x0002f> in <filename unknown>:0 
AL lib: (EE) alc_cleanup: 1 device not closed

This appears to be similar to the following bug: https://bugzilla.xamarin.com/show_bug.cgi?id=38167

Train damage hurts everyone

(Or at least the client hitting the train and the host. I haven't tested it much, but my brother and I found out the hard way.)

0.2.0 client exception after connecting to host

here's the error from 0.2.0 causing the clients to hang.

to reproduce:
[host]
start StardewModdingAPI.exe
chose savefile
chose host
listen for clients
[client]
chose savefile
connect to host

client throws exception after successful network connection

and the host does not have to start the game

stardew valley 1.07 - product 1.0.5940.30711
smapi 0.40.0 from cjsu/SMAPI
makeshift multiplayer 0.2.0

[01:26:57.101 PM] Exception receiving: System.IO.IOException: The process cannot access the file 'C:\Users\xxxxxx\AppData\Roaming\StardewValley\Saves\redspot_119326892\redspot_119326892' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
at System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost)
at System.IO.File.ReadAllText(String path)
at StardewValleyMP.Packets.YourIDPacket.process(Client client) in c:\Users\Chase\Documents\Visual Studio 2013\Projects\StardewValleyMP\StardewValleyMP\Packets\YourIDPacket.cs:line 64
at StardewValleyMP.Client.update() in c:\Users\Chase\Documents\Visual Studio 2013\Projects\StardewValleyMP\StardewValleyMP\Client.cs:line 105
[01:26:57.104 PM] Initial loading done

the file is not likely in use. we tried with clean installs, verified cache, new characters. let me know if you need more info.

Framerate lag

There've been a lot of reports of framerate lag, but I haven't been able to reproduce much. The one time I was able to reproduce it with a profiler it seemed related to movement and animation packets. It disappeared before I was able to pinpoint it further.

This does correspond with what one person says here.

Problem with MP and ALL

I don't know why but the Map isn't shared correctly, means, that if I am the host, other players are not having the same map as me (farm).

Mods which where installed with this mod:

!EntoaroxFramework
AdvancedLocationLoader (for StardewValleyExpansion)
SMAPIChestLableSystem

Seems that the ALL isn't a good friend for this MP mod so I hope that I can get help to get this running.

Connection memory

Last used host and port should be remembered on clients, and on hosts the last used port should be remembered.

Saves you having to change it every time as it's more likely than not that people are playing together (perhaps per-profile in case you have multiple games with multiple people?)

Stat sync

I think only the stat changes by the host end up persisting.

Support OSX

It would be great if this mod worked with OS X, in addition to the Windows support. If it is supported, can you point to instructions on how to get it to function? I've tried using the current mod, with SMAPI, and it fails to load.

Here's the stack:
[11:21:06.845 PM] Found Manifest: /Users/localuser/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS/Mods/StardewValleyMP/manifest.json [11:21:07.024 PM] Created psconfigs directory @/Users/localuser/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS/Mods/StardewValleyMP/psconfigs [11:21:07.030 PM] Failed to load mod '/Users/localuser/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS/Mods/StardewValleyMP/StardewValleyMP.dll'. Exception details: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool) at System.Reflection.Assembly.GetTypes () <0x117a52f20 + 0x00015> in <filename unknown>:0 at System.Reflection.Assembly+<>c__Iterator0.MoveNext () <0x117a52bd0 + 0x00051> in <filename unknown>:0 at System.Linq.Enumerable.Count[TSource] (IEnumerable1 source, System.Func2 predicate) <0x117a52450 + 0x000d3> in <filename unknown>:0 at StardewModdingAPI.Program.LoadMods () <0x116adfca0 + 0x00787> in <filename unknown>:0

Files are saved with other character locations

The files are saved with locations owned by other characters. This prevents the world from being loaded without the mod.

For now, you can play a day in singleplayer, and the mod will remove those locations since the other players are not online. Ideally, the locations would not be saved to begin with. This can only be the case for saving to a file though, since the host 'saves' to send data to the client.

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.