A few small clean ups and removed a lot of the readme until I think of what to put there
This commit is contained in:
parent
b8a9f8fc88
commit
ed3bf29600
114
README.md
114
README.md
|
@ -2,116 +2,4 @@
|
|||
A Modding API For Stardew Valley
|
||||
See: https://github.com/Zoryn4163/SMAPI-Mods
|
||||
|
||||
NOTICE: THIS PROJECT IS STILL IN ALPHA
|
||||
|
||||
Mod directories: %appdata%\StardewValley\Mods\ and .\Mods\ <- That means next to StardewModdingApi.exe in the Mods folder!
|
||||
|
||||
To install a mod, put a DLL in one of those directories. If you are not on the latest version, do not post any errors, issues, etc.
|
||||
|
||||
|
||||
|
||||
NOTICE: THIS PART AND ONWARD REQUIRE VISUAL STUDIOS AND KNOWLEDGE OF C# PROGRAMMING
|
||||
|
||||
You can create a mod by making a direct reference to the ModdingApi.exe
|
||||
|
||||
From there, you need to inherit from StardewModdingAPI.Mod
|
||||
|
||||
The first class that inherits from that class will be loaded into the game at runtime, and once the game fully initializes the mod, the method Entry() will be called once.
|
||||
|
||||
It is recommended to subscribe to an event (from Events.cs) to be able to interface with the game rather than directly make changes from the Entry() method.
|
||||
|
||||
|
||||
TestMod.cs:
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using StardewModdingAPI;
|
||||
|
||||
namespace StardewTestMod
|
||||
{
|
||||
public class TestMod : Mod
|
||||
{
|
||||
public override string Name
|
||||
{
|
||||
get { return "Test Mod"; }
|
||||
}
|
||||
|
||||
public override string Authour
|
||||
{
|
||||
get { return "Zoryn Aaron"; }
|
||||
}
|
||||
|
||||
public override string Version
|
||||
{
|
||||
get { return "0.0.1Test"; }
|
||||
}
|
||||
|
||||
public override string Description
|
||||
{
|
||||
get { return "A Test Mod"; }
|
||||
}
|
||||
|
||||
public override void Entry()
|
||||
{
|
||||
Console.WriteLine("Test Mod Has Loaded");
|
||||
Program.LogError("Test Mod can call to Program.cs in the API");
|
||||
Program.LogColour(ConsoleColor.Magenta, "Test Mod is just a tiny DLL file in AppData/Roaming/StardewValley/Mods");
|
||||
|
||||
//Subscribe to an event from the modding API
|
||||
Events.KeyPressed += Events_KeyPressed;
|
||||
}
|
||||
|
||||
void Events_KeyPressed(Keys key)
|
||||
{
|
||||
Console.WriteLine("TestMod sees that the following key was pressed: " + key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Break Fishing (WARNING: SOFTLOCKS YOUR GAME):
|
||||
|
||||
public override void Entry()
|
||||
{
|
||||
Events.UpdateTick += Events_UpdateTick;
|
||||
Events.Initialize += Events_Initialize;
|
||||
}
|
||||
|
||||
private FieldInfo cmg;
|
||||
private bool gotGame;
|
||||
private SBobberBar sb;
|
||||
void Events_Initialize()
|
||||
{
|
||||
cmg = SGame.StaticFields.First(x => x.Name == "activeClickableMenu");
|
||||
}
|
||||
|
||||
void Events_UpdateTick()
|
||||
{
|
||||
if (cmg != null && cmg.GetValue(null) != null)
|
||||
{
|
||||
if (cmg.GetValue(null).GetType() == typeof(BobberBar))
|
||||
{
|
||||
if (!gotGame)
|
||||
{
|
||||
gotGame = true;
|
||||
BobberBar b = (BobberBar)cmg.GetValue(null);
|
||||
sb = SBobberBar.ConstructFromBaseClass(b);
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.bobberPosition = Extensions.Random.Next(0, 750);
|
||||
sb.treasure = true;
|
||||
sb.distanceFromCatching = 0.5f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gotGame = false;
|
||||
sb = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
## NOTICE: THIS PROJECT IS STILL IN ALPHA
|
||||
|
|
|
@ -66,8 +66,15 @@ namespace StardewModdingAPI.Inheritance
|
|||
|
||||
public Farmer PreviousFarmer { get; private set; }
|
||||
|
||||
private static SGame instance;
|
||||
public static SGame Instance { get { return instance; } }
|
||||
|
||||
public Farmer CurrentFarmer { get { return player; } }
|
||||
|
||||
public SGame()
|
||||
{
|
||||
instance = this;
|
||||
|
||||
if (Program.debug)
|
||||
{
|
||||
SaveGame.serializer = new XmlSerializer(typeof (SaveGame), new Type[28]
|
||||
|
@ -195,11 +202,7 @@ namespace StardewModdingAPI.Inheritance
|
|||
|
||||
public static SGameLocation GetLocationFromName(String name)
|
||||
{
|
||||
if (ModLocations.Any(x => x.name == name))
|
||||
{
|
||||
return ModLocations[ModLocations.IndexOf(ModLocations.First(x => x.name == name))];
|
||||
}
|
||||
return null;
|
||||
return ModLocations.FirstOrDefault(n => n.name == name);
|
||||
}
|
||||
|
||||
public static SGameLocation LoadOrCreateSGameLocationFromName(String name)
|
||||
|
|
|
@ -19,9 +19,24 @@
|
|||
</SccAuxPath>
|
||||
<SccProvider>
|
||||
</SccProvider>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
|
@ -57,9 +72,9 @@
|
|||
<Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86" />
|
||||
<Reference Include="Stardew Valley, Version=1.0.5900.38427, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>D:\Games\steamapps\common\Stardew Valley\Stardew Valley.exe</HintPath>
|
||||
<HintPath>..\..\..\..\Games\SteamLibrary\steamapps\common\Stardew Valley\Stardew Valley.exe</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Private>False</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
@ -72,8 +87,8 @@
|
|||
<Reference Include="System.Xml" />
|
||||
<Reference Include="xTile, Version=2.0.4.0, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>D:\Games\steamapps\common\Stardew Valley\xTile.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
<HintPath>..\..\..\..\Games\SteamLibrary\steamapps\common\Stardew Valley\xTile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -108,6 +123,18 @@
|
|||
<Content Include="icon.ico" />
|
||||
<Content Include="steam_appid.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
|
|
Loading…
Reference in New Issue