Changes

Jump to navigation Jump to search
Line 7: Line 7:  
Testing is pretty straightforward for most mods:
 
Testing is pretty straightforward for most mods:
 
# Click ''Build > Rebuild Solution'' (Visual Studio) or ''Build > Rebuild All'' (MonoDevelop).
 
# Click ''Build > Rebuild Solution'' (Visual Studio) or ''Build > Rebuild All'' (MonoDevelop).
# Make sure there are no build errors and the mod gets copied to your <tt>Mods</tt> folder.
+
# Make sure there are no build errors and the mod gets copied to your <samp>Mods</samp> folder.
 
# Try the mod in-game.
 
# Try the mod in-game.
 
# Make sure there are no errors or warnings for your mod in the SMAPI console.
 
# Make sure there are no errors or warnings for your mod in the SMAPI console.
Line 29: Line 29:     
<dl>
 
<dl>
<dt>If your main computer is Windows 11:</dt>
+
<dt>If your main computer is Windows 10 or 11:</dt>
 
<dd>
 
<dd>
 
<ol>
 
<ol>
Line 36: Line 36:  
<ol>
 
<ol>
 
<li>[https://linuxconfig.org/how-to-install-steam-on-ubuntu-20-04-focal-fossa-linux Install Steam].</li>
 
<li>[https://linuxconfig.org/how-to-install-steam-on-ubuntu-20-04-focal-fossa-linux Install Steam].</li>
<li>Launch <code>export TERM=xterm && steam</code> and install Stardew Valley through its UI.</li>
+
<li>Launch <code>export TERM=xterm && steam</code>, then install & launch Stardew Valley through its UI. This will also install its dependencies.</li>
 
<li>''(optional)'' Download and install your preferred IDE, if you plan to compile the code on Linux. For the [https://www.jetbrains.com/help/rider/Installation_guide.html#prerequisites latest standalone Rider version] (not free):
 
<li>''(optional)'' Download and install your preferred IDE, if you plan to compile the code on Linux. For the [https://www.jetbrains.com/help/rider/Installation_guide.html#prerequisites latest standalone Rider version] (not free):
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Line 46: Line 46:  
<li>[[Modding:Installing SMAPI on Linux|Install SMAPI]].</li>
 
<li>[[Modding:Installing SMAPI on Linux|Install SMAPI]].</li>
 
</ol></li>
 
</ol></li>
<li>To launch the game, launch <code>steam</code> and run the game through its UI. This will also install its dependencies.</li>
+
<li>To launch the game, launch <code>steam</code> and run the game through its UI.</li>
 
</ol></li>
 
</ol></li>
 
</ul>
 
</ul>
Line 52: Line 52:  
</dl>
 
</dl>
   −
; If your main computer is Windows 10 or earlier&#x3A;
+
; If your main computer is Windows 8 or earlier&#x3A;
 
:# Install [https://www.virtualbox.org/ VirtualBox].
 
:# Install [https://www.virtualbox.org/ VirtualBox].
 
:# Create a [https://zorinos.com/ ZorinOS Core] VM in VirtualBox.
 
:# Create a [https://zorinos.com/ ZorinOS Core] VM in VirtualBox.
Line 62: Line 62:  
:# Install Stardew Valley through Steam.
 
:# Install Stardew Valley through Steam.
 
:# [[Modding:Player Guide/Getting Started#Install SMAPI|Install SMAPI]].
 
:# [[Modding:Player Guide/Getting Started#Install SMAPI|Install SMAPI]].
:# ''(optional)'' Install [https://www.mono-project.com/ <tt>mono-complete</tt>] and [http://www.monodevelop.com/download/ MonoDevelop] in your VM. This is only needed if you want to compile separately for Linux/Mac. When installing <tt>.deb</tt> files, use the instructions for [https://zorinos.com/help/install-apps/#deb-files the Ubuntu version shown here]. If you run into errors, may Linux have mercy on your soul.
+
:# ''(optional)'' Install [https://www.mono-project.com/ <samp>mono-complete</samp>] and [http://www.monodevelop.com/download/ MonoDevelop] in your VM. This is only needed if you want to compile separately for Linux/Mac. When installing <samp>.deb</samp> files, use the instructions for [https://zorinos.com/help/install-apps/#deb-files the Ubuntu version shown here]. If you run into errors, may Linux have mercy on your soul.
 
:# ''(optional)'' For unlocking Mac OS only: [https://www.insanelymac.com/forum/files/file/838-unlocker/ Virtual Machine Unlocker 2.1.1] for VmWare Workstation 11/12/14, VmWare Player 7/12/14, or Fusion 7/8/10.  '''This is needed to boot Mac OS on a virtual Machine'''
 
:# ''(optional)'' For unlocking Mac OS only: [https://www.insanelymac.com/forum/files/file/838-unlocker/ Virtual Machine Unlocker 2.1.1] for VmWare Workstation 11/12/14, VmWare Player 7/12/14, or Fusion 7/8/10.  '''This is needed to boot Mac OS on a virtual Machine'''
   Line 78: Line 78:  
Sample warning: "''This implicitly converts '{0}' from Net{1} to {2}, but Net{1} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/buildmsg/avoid-implicit-net-field-cast for details.''"
 
Sample warning: "''This implicitly converts '{0}' from Net{1} to {2}, but Net{1} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/buildmsg/avoid-implicit-net-field-cast for details.''"
   −
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. This field has an equivalent non-net property, like <tt>monster.Health</tt> (<tt>int</tt>) instead of <tt>monster.health</tt> (<tt>NetBool</tt>). Change your code to use the suggested property instead.
+
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. This field has an equivalent non-net property, like <samp>monster.Health</samp> (<samp>int</samp>) instead of <samp>monster.health</samp> (<samp>NetBool</samp>). Change your code to use the suggested property instead.
    
===FieldName is a Net* field...===
 
===FieldName is a Net* field...===
Line 85: Line 85:  
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. You should access the underlying value instead:
 
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. You should access the underlying value instead:
 
<ul>
 
<ul>
<li>For a reference type (i.e. one that can contain <tt>null</tt>), you can use the <tt>.Value</tt> property (or <tt>.FieldDict</tt> for a <tt>NetDictionary</tt>):
+
<li>For a reference type (''i.e.,'' one that can contain <samp>null</samp>), you can use the <samp>.Value</samp> property (or <samp>.FieldDict</samp> for a <samp>NetDictionary</samp>):
 
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
if (building.indoors.Value == null)
 
if (building.indoors.Value == null)
Line 96: Line 96:  
   // ...
 
   // ...
 
</syntaxhighlight></li>
 
</syntaxhighlight></li>
<li>For a value type (i.e. one that can't contain <tt>null</tt>), check if the parent is null (if needed) and compare with <tt>.Value</tt>:
+
<li>For a value type (''i.e.,'' one that can't contain <samp>null</samp>), check if the parent is null (if needed) and compare with <samp>.Value</samp>:
 
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
if (item != null && item.category.Value == 0)
 
if (item != null && item.category.Value == 0)
Line 109: Line 109:  
===An instance of analyzer ... cannot be created===
 
===An instance of analyzer ... cannot be created===
 
Update to the latest [https://visualstudio.microsoft.com/vs/community/ Visual Studio]; the NuGet package uses a recent feature that isn't available in older versions.
 
Update to the latest [https://visualstudio.microsoft.com/vs/community/ Visual Studio]; the NuGet package uses a recent feature that isn't available in older versions.
 +
 +
===Feature 'global using directive' is not available in C# 9.0===
 +
Go to your solution's project file (the .csproj file) and change the <ImplicitUsings> property from "enable" to "disable".
    
==Other issues==
 
==Other issues==
===Can't target .NET Framework 4.5===
+
===Can't target .NET 5===
 
If the target framework list has options starting with...
 
If the target framework list has options starting with...
* ".NET Core" or ".NET Standard": you created the wrong type of project. Make sure you create a .NET '''Framework''' project for your mod. (It's a bit confusing.)
+
* ''.NET Framework'': you created the wrong type of project. Make sure you create a .NET 5 project for your mod instead. (The naming is a bit confusing.)
* ".NET Framework" (but none for 4.5): you can use .NET Framework 4.5, 4.5.1, or 4.5.2. If you don't have any of those, you can install the [https://docs.microsoft.com/en-us/dotnet/framework/install/guide-for-developers .NET Framework 4.5.2 Developer Pack] to add it.
+
* ''.NET Core'', ''.NET Standard'', or ''.NET 5+'': use .NET 5 for compatibility with the game. If you don't have that option, you can install the [https://dotnet.microsoft.com/en-us/download/dotnet/5.0 .NET 5 SDK] to add it.
   −
===Visual Studio can't find the game/SMAPI/XNA DLLs===
+
===Visual Studio can't find the game/SMAPI/MonoGame DLLs===
 +
<span id="Visual_Studio_can.27t_find_the_game.2FSMAPI.2FXNA_DLLs"><!--old section name--></span>
 
Common solutions:
 
Common solutions:
 
* Restart Visual Studio.
 
* Restart Visual Studio.
 
* Make sure the game and SMAPI are correctly installed and work fine.
 
* Make sure the game and SMAPI are correctly installed and work fine.
 
* Check for an error like "''Failed to find game install path''". If it's present, you need to [https://smapi.io/package/custom-game-path specify your game path].
 
* Check for an error like "''Failed to find game install path''". If it's present, you need to [https://smapi.io/package/custom-game-path specify your game path].
* Make sure you created a .NET Framework project, '''not''' .NET Core or .NET Standard. (See [[Modding:IDE reference#Set the target framework|how to set the target framework]]; if you see options like .NET Standard or .NET Core, delete the project and create a .NET Framework project instead.)
+
* Make sure you created a .NET 5 project, '''not''' .NET Framework. (See [[Modding:IDE reference#Set the target framework|how to set the target framework]]; if you see options starting with .NET Framework, delete the project and create a .NET 5 project instead.)
* Make sure you target .NET Framework 4.5, 4.5.1, or 4.5.2 (see [[Modding:IDE reference#Set the target framework|how to]]).
+
* Make sure you target .NET 5 (see [[Modding:IDE reference#Set the target framework|how to]]).
    
If those didn't fix it:
 
If those didn't fix it:
Line 131: Line 135:  
==Ask for help==
 
==Ask for help==
 
See [[Modding:Help]] for how to get help!
 
See [[Modding:Help]] for how to get help!
 +
 +
[[es:Modding:Guía del Modder/Prueba y solución de problemas]]
 +
[[pt:Modificações:Guia do Modder/Teste e Solução de Problemas]]
528

edits

Navigation menu