Changes

Jump to navigation Jump to search
+ net fields from Modding:Migrate to Stardew Valley 1.3 (only author is Pathoschild)
Line 2: Line 2:     
This page explains some of the Stardew Valley fundamentals that are useful for modders. See also [[Modding:Common tasks]].
 
This page explains some of the Stardew Valley fundamentals that are useful for modders. See also [[Modding:Common tasks]].
 +
 +
==Data structures==
 +
===Net fields===
 +
A 'net type' is any of several new classes which Stardew Valley 1.3 uses to sync data between players, named for the <code>Net</code> prefix in their name. A net type can represent a simple value like <tt>NetBool</tt>, or complex values like <tt>NetFieldDictionary</tt>. Many existing fields have been converted to net types (called 'net fields'), each wrapping the underlying value:
 +
: <source lang="C#">
 +
NetString str = new NetString("bar");
 +
if (str.Value == "bar") // true
 +
</source>
 +
 +
Impact on mods:
 +
* The game will regularly collect all the net fields reachable from <tt>Game1.netWorldState</tt> and sync them with other players. That means that many mod changes will be synchronised automatically in multiplayer.
 +
* Net fields can implicitly convert to their equivalent normal values (like <code>bool x = new NetBool(true)</code>), but their conversion rules can be counterintuitive and error-prone. For example, <code>item?.category == null && item?.category != null</code> can both be true at once. '''Always avoid implicit casts to minimise bugs.'''
 +
 +
Suggested fix:
 +
* With the latest mod build package installed, rebuild your project. The package will detect net field references you need to update, and show an appropriate warning. See [[#Fix common build warnings|''fix common build warnings'']] below.
 +
    
[[Category:Modding]]
 
[[Category:Modding]]
translators
8,447

edits

Navigation menu