Giter Club home page Giter Club logo

stardewmods's Introduction

This repository contains my SMAPI mods for Stardew Valley. See the individual mods for documentation and release notes.

Mods

Active mods:

  • Automate (ModDrop | Nexus | source)
    Place a chest next to a machine (like a furnace or crystalarium), and the machine will automatically pull raw items from the chest and push processed items into it. Connect multiple machines with a chest to create factories.

  • Chests Anywhere (ModDrop | Nexus | source)
    Access your chests from anywhere and organize them your way. Transfer items without having to run around, from the comfort of your bed to the deepest mine level.

  • Content Patcher (ModDrop | Nexus | source)
    Load content packs that change the game's images and data without replacing XNB files. Unlike XNB mods, these content packs get automatic update checks and compatibility checks, are easy to install and uninstall, and are less likely to break due to game updates.

  • Crops Anytime Anywhere (ModDrop | Nexus | source)
    Grow crops in any season and location, including on grass/dirt tiles you normally couldn't till.

  • Data Layers (ModDrop | Nexus | source)
    Overlays the world with visual data like accessibility, bee/Junimo/scarecrow/sprinkler coverage, etc. It automatically includes data from other mods if applicable.

  • Debug Mode (ModDrop | Nexus | source)
    Press a button to view debug information and unlock the game's built-in debug commands (including teleportation and time manipulation).

  • Fast Animations (ModDrop | Nexus | source)
    Speed up many animations in the game (currently eating, drinking, milking, shearing, and breaking geodes). Optionally configure the speed for each animation.

  • Horse Flute Anywhere (Nexus | source)
    Use the horse flute to summon your horse anywhere, even indoors or in caves/dungeons.

  • Lookup Anything (ModDrop | Nexus | source)
    See live info about whatever's under your cursor when you press F1. Learn a villager's favorite gifts, when a crop will be ready to harvest, how long a fence will last, why your farm animals are unhappy, and more.

  • Noclip Mode (ModDrop | Nexus | source)
    Toggle noclip mode at the press of a button, letting you walk through anything (even map boundaries).

  • Skip Intro (ModDrop | Nexus | source)
    Skip straight to the title screen or load screen (configurable) when you start the game. It also skips the screen transitions, so starting the game is much faster.

  • Small Beach Farm (ModDrop | Nexus | source)
    Replaces the riverlands farm with a fertile pocket beach, suitable for slower or challenge runs.

  • Tractor Mod (ModDrop Nexus | source)
    Lets you buy a tractor to more efficiently till/fertilize/seed/water/harvest crops, clear rocks, etc.

Inactive mods:

  • No Debug Mode
    (deleted) Disables SMAPI's F2 debug mode, which can cause unintended effects like skipping an entire season or teleporting into walls. No longer needed after SMAPI 1.0.

  • The Long Night (Nexus | source)
    Disables collapsing. You just stay awake forever and the night never ends (until you go to bed). Broke permanently in Stardew Valley 1.3.20.

  • Rotate Toolbar (Nexus | source)
    Rotate the top inventory row for the toolbar by pressing Tab (configurable). Added to the game in Stardew Valley 1.4.0.

Translating the mods

The mods can be translated into any language supported by the game, and SMAPI will automatically use the right translations.

Contributions are welcome! See Modding:Translations on the wiki for help contributing translations.

(❑ = untranslated, ↻ = partly translated, ✓ = fully translated)

  Automate Chests Anywhere Crops Anytime Anywhere Data Layers Debug Mode Fast Animations Horse Flute Anywhere Lookup Anything Noclip Mode Skip Intro Small Beach Farm Tractor Mod
Chinese
French
German
Hungarian
Italian
Japanese
Korean
Polish
Portuguese
Russian
Spanish
Thai
Turkish
Ukrainian
Vietnamese

Compiling the mods

Installing stable releases from Nexus Mods is recommended for most users. If you really want to compile the mod yourself, read on.

These mods use the crossplatform build config so they can be built on Linux, Mac, and Windows without changes. See the build config documentation for troubleshooting.

Compiling a mod for testing

To compile a mod and add it to your game's Mods directory:

  1. Rebuild the project in Visual Studio or MonoDevelop.
    This will compile the code and package it into the mod directory.
  2. Launch the project with debugging.
    This will start the game through SMAPI and attach the Visual Studio debugger.

Compiling a mod for release

To package a mod for release:

  1. Switch to Release build configuration.
  2. Recompile the mod per the previous section.
  3. Upload the generated bin/Release/<mod name>-<version>.zip file from the project folder.

stardewmods's People

Contributors

angel4killer avatar atravita-mods avatar b3nk3lly avatar burunduk avatar cofiem avatar danielletlumach avatar ellipszist avatar emwhykay avatar f4ith avatar fadeddexofan avatar lambui avatar makinday avatar martin66789 avatar mattfeldman avatar mezen avatar mitekano23 avatar mysti57155 avatar nanogamer7 avatar pathoschild avatar pomepome avatar s2sky avatar scartiana avatar sinz163 avatar spacechase0 avatar taelfayre avatar wally232 avatar watchakorn-18k avatar weizinai avatar zangorr avatar zombifier 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stardewmods's Issues

[Lookup Anything] crash on some smaller resolutions

If the screen resolution is smaller than expected (≈≤1280×768), the lookup UI crashes with the following error:

[ERROR] An error occured in the overridden draw loop: System.ArgumentException: The scissor rectangle is invalid. The scissor rectangle cannot be larger than or outside of the current render target bounds.
Parameter name: value
   at Microsoft.Xna.Framework.Graphics.GraphicsDevice.set_ScissorRectangle(Rectangle value)
   at Pathoschild.LookupAnything.Components.LookupMenu.draw(SpriteBatch spriteBatch)
   at StardewModdingAPI.Inheritance.SGame.Draw(GameTime gameTime)
[03:42:31.174 PM] [ERROR] An error occured in the overridden draw loop: System.InvalidOperationException: Begin cannot be called again until End has been successfully called.
   at Microsoft.Xna.Framework.Graphics.SpriteBatch.Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState, Effect effect, Matrix transformMatrix)
   at Microsoft.Xna.Framework.Graphics.SpriteBatch.Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState)
   at StardewModdingAPI.Inheritance.SGame.Draw(GameTime gameTime)

Reported in the forums (see 2016-10-06 #1 and 2016-10-06 #2).

[Lookup Anything] crash looking up NPCs player hasn't met yet

Before the player has met an NPC (reproduced by running on a new save) you can go to the calendar in town and lookup NPCs you haven't met. The failing reference is in the player's friendship's here: https://github.com/Pathoschild/LookupAnything/blob/master/LookupAnything/Framework/Subjects/CharacterSubject.cs#L69-L72

I suggest that we render a You haven't met this NPC yet field now for this case. An alternative I suppose is to suggest schedules #4 / where you can meet the NPC.

[Lookup Anything] add search view

Create a way to search for a subject from anywhere.

For example, hold F1 to bring up a search box with a dropdown of matches. Click one of the matches to pop up the normal lookup UI:

        ┌────────────┐
Search: │ A          │
        └────────────┘─┐
          │ Abigail    │
          │ Apple      │
          │ Apple Tree │
          │ Apricot    │
          │ ...        │
          └────────────┘

Mentioned in the forums.

[Chests Anywhere] add tooltip when pointing at a chest

Imported from Pathoschild/ChestsAnywhere#2. Original date: 2016-10-05 22:07 UTC.


You can edit a chest's name to organise your storage since 1.4: ![edit chest UI](https://cloud.githubusercontent.com/assets/230581/22623988/44d5818c-eb3b-11e6-89cc-5e2a334c5550.png)

...but you can't identify which physical chest has which name (without using separate mods):
view chest

Show a tooltip when you point the cursor at a chest which shows the chest name.
Discussed in the forums.

[Lookup Anything] ignore duplicate NPCs

In rare cases, Stardew Valley's Utility.getAllCharacters() will return the same NPC instance twice, because the game thinks they're in two places at once. It's not clear why this happens, and only one of them is actually visible in the game.

When iterating NPCs, ignore duplicate references to the same instance.

[Lookup Anything] suppress SMAPI debug mode by default

SMAPI enables the game's built-in debug mode when you press F2. This activates several hotkeys, including m to end the current season and immediately save the game. Since SMAPI's debug hotkey is so close to Lookup Anything's F1 key, a few players have lost an entire season that way. Add an option to suppress debug mode by default.

Issue reported via reddit and Nexus private message.

See related: Pathoschild/SMAPI#120.

[Lookup Anything] add support for Linux and Mac

Add support for Linux and Mac. This involves the following changes:

  • Preparation:
    • Add the default Linux/Mac paths to the game path detection.
    • Document the compile steps automated by the Windows-only build script.
  • Adjust build process:
    • Detect the platform during the build process.
    • On Linux/Mac, swap the XNA references for MonoGame.
    • On Linux/Mac, disable the mod deploy script.

Thanks to @kriana and @vizv for doing the initial research and creating a Mac fork and Linux fork respectively!

[Lookup Anything] add data.json validation

When the data.json file is outdated, the mod can fail at runtime with null reference exceptions deep in the code which are difficult to troubleshoot. Add validation on startup that checks (a) a version number in the file to ensure it's updated, and (b) that no properties are missing.

[Lookup Anything] look up events in the calendar

Let players lookup events in the calendar. This should show a brief summary of each event. For the Luau, it should show a list of items they can bring grouped by how much the villagers will like them, colour-coded to indicate which ones the player ows.

[Lookup Anything] crash if used during Stardew Valley Fair

If you look something up during the Stardew Valley Fair (and possibly some other events), the game crashes with the following error:

System.InvalidOperationException: Nesting more than one SpriteBatch.Begin when using a SpriteBatch with SpriteSortMode.Immediate is not allowed.
   at Microsoft.Xna.Framework.Graphics.SpriteBatch.Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState, Effect effect, Matrix transformMatrix)
   at Microsoft.Xna.Framework.Graphics.SpriteBatch.Begin(SpriteSortMode sortMode, BlendState blendState, SamplerState samplerState, DepthStencilState depthStencilState, RasterizerState rasterizerState)
   at Pathoschild.LookupAnything.Components.LookupMenu.draw(SpriteBatch spriteBatch)
   at StardewModdingAPI.Inheritance.SGame.Draw(GameTime gameTime) in Z:\Projects\SMAPI\src\StardewModdingAPI\Inheritance\SGame.cs:line 1302

This happens because Lookup Anything uses a separate sprite batch for the pagination clipping, which always works except if the game uses SpriteSortMode.Immediate (which it apparently does during certain events).

Reported via Nexus mod bug and Nexus private message.

[Lookup Anything] simplify gift taste lists

The gift tastes list for an NPC can be pretty overwhelming:

image
image
image

Use the following rules to simplify it:

  • For an item:
    • If everyone likes an item (with up to 2 exceptions), say "everyone" or "everyone (except A and B)" instead of listing them. For example: everyone (except Abigail and Harvey).
  • For an NPC:
    • If an NPC likes an entire category (with up to 3 exceptions), say "all " or "all (except A and B)" instead of listing the items. For example: all crops (except parsnips).

[Chests Anywhere] chest list scrolling is strange

Imported from Pathoschild/ChestsAnywhere#11. Original date: 2016-10-22 01:59 UTC.


When you have a large number of chests, the chest list scrolls inconsistently and strangely.

Reported via 2016-10-20 Nexus Mods bug:

as in the title the scroll of the mouse its very... i don't know how to explain it very "nonsensitive" sometimes its like i just touch the scroll on the mouse and it goes all the way down (never up) many times i cant scroll until i switch to another chest ( sometimes i have to do it many times), that's when i have luck. BUT most of the time what happens is i open the scrolldown and it goes all the way down and can't scroll up.
[...]
[...] its like the dropdown/list of chests has a very long delay between me scrolling up or down and the mod receiving it. Also a problem that i realized its that when you scroll VERY slow it seems to work better but scrolling like normal or a little "fast" it doesn't respond most of the time. im thinking that its probably that i have like 61 chest in the same category because i haven't organized it yet in that farm when i organized them in the other farm it works perfectly fine with not having to scroll.

[Lookup Anything] throws an exception when looking up something in the crafting page

This only occurs when looking up something in the "standalone" crafting page, the only one I know of being the cooking interface via your kitchen. The exception is:

[17:45:29 TRACE LookupAnything] Received a lookup request... searching the open 'CraftingPage' menu... an error occurred.
[17:45:29 ERROR LookupAnything] Something went wrong looking that up:
System.ArgumentNullException: Value cannot be null.
Parameter name: value
   at System.Runtime.Caching.MemoryCacheEntry..ctor(String key, Object value, DateTimeOffset absExp, TimeSpan slidingExp, CacheItemPriority priority, Collection`1 dependencies, CacheEntryRemovedCallback removedCallback, MemoryCache cache)
   at System.Runtime.Caching.MemoryCache.AddOrGetExistingInternal(String key, Object value, CacheItemPolicy policy)
   at System.Runtime.Caching.MemoryCache.AddOrGetExisting(String key, Object value, CacheItemPolicy policy, String regionName)
   at System.Runtime.Caching.ObjectCache.Add(String key, Object value, CacheItemPolicy policy, String regionName)
   at StardewModdingAPI.Framework.Reflection.ReflectionHelper.GetCached[TMemberInfo](String key, Func`1 fetch) in D:\source\_Stardew\SMAPI\src\StardewModdingAPI\Framework\Reflection\ReflectionHelper.cs:line 235
   at StardewModdingAPI.Framework.Reflection.ReflectionHelper.GetFieldFromHierarchy[TValue](Type type, Object obj, String name, BindingFlags bindingFlags) in D:\source\_Stardew\SMAPI\src\StardewModdingAPI\Framework\Reflection\ReflectionHelper.cs:line 168
   at StardewModdingAPI.Framework.Reflection.ReflectionHelper.GetPrivateField[TValue](Object obj, String name, Boolean required) in D:\source\_Stardew\SMAPI\src\StardewModdingAPI\Framework\Reflection\ReflectionHelper.cs:line 41
   at StardewModdingAPI.Framework.Reflection.ReflectionHelper.GetPrivateValue[TValue](Object obj, String name, Boolean required) in D:\source\_Stardew\SMAPI\src\StardewModdingAPI\Framework\Reflection\ReflectionHelper.cs:line 73
   at Pathoschild.Stardew.LookupAnything.Framework.TargetFactory.GetSubjectFrom(IClickableMenu menu, Vector2 cursorPosition) in D:\source\_Stardew\LookupAnything\LookupAnything\Framework\TargetFactory.cs:line 362
   at Pathoschild.Stardew.LookupAnything.LookupAnythingMod.GetSubject(StringBuilder logMessage, LookupMode lookupMode) in D:\source\_Stardew\LookupAnything\LookupAnything\LookupAnythingMod.cs:line 341
   at Pathoschild.Stardew.LookupAnything.LookupAnythingMod.<>c__DisplayClass17_0.<ShowLookup>b__0() in D:\source\_Stardew\LookupAnything\LookupAnything\LookupAnythingMod.cs:line 322
   at Pathoschild.Stardew.LookupAnything.GameHelper.InterceptErrors(IMonitor monitor, String verb, String detailedVerb, Action action, Action`1 onError) in D:\source\_Stardew\LookupAnything\LookupAnything\GameHelper.cs:line 357

[Chests Anywhere] crash when player clicks unavailable backpack slot

Imported from Pathoschild/ChestsAnywhere#3. Original date: 2016-10-06 05:36 UTC.


If a player doesn't have the full backpack, some slots are unavailable and grayed out:
sample inventory

Clicking one of the disabled slots crashes the game:

An error occured in the base update loop: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at ChestsAnywhere.Components.ChestWithInventory.receiveLeftClick(Int32 x, Int32 y, Boolean playSound)
   at ChestsAnywhere.Components.AccessChestMenu.receiveLeftClick(Int32 x, Int32 y, Boolean playSound)
   at StardewValley.Game1.updateActiveMenu(GameTime gameTime) in C:\Users\tomc\Documents\Visual Studio 2010\Projects\Stardew.XNA\Farmer\Farmer\Game1.cs:line 1829
   at StardewValley.Game1.Update(GameTime gameTime) in C:\Users\tomc\Documents\Visual Studio 2010\Projects\Stardew.XNA\Farmer\Farmer\Game1.cs:line 1568
   at StardewModdingAPI.Inheritance.SGame.Update(GameTime gameTime)

This bug has been around since 1.0.

Reported by several users: 2016-10-05 anonymouseling via Nexus comment, 2016-10-08 Bainon via Nexus bug, and 2016-10-08 Littlegal2016 via forums.

[Lookup Anything] inconsistent scrolling while using controller

I'm a bit of a programmer myself, so I'll provide as detailed info as possible.

All other menus in the game scroll using the Right thumbstick, seemingly moving 1 "unit" (I don't know what it uses) for each time it reads the RightThumbstickUp or RightThumbstickDown "buttons". On other menus, this makes it jump up/down appropriate distances, but on your windows, it only scrolls by 1 pixel at a time. This occurs even if your mod is configured to use different controller buttons for scrolling, but the configured buttons work in the intended manner.

So, would it be at all possible to get the Right thumbstick inputs to scroll more than 1 pixel at a time? Cause I'd rather use that, since the rest of the game uses it also.

[Lookup Anything] more convenient lookups for controller users

The cursor implementation while using a controller is very clunky and often buggy and doesn't work well enough unless you're in a menu. So I have a feature suggestion to solve that.

Whenever I try to lookup something while walking around, moving the thumbstick causes the cursor to appear in seemingly random places, forcing me to use my mouse to save some frustration. Could you make an additional button to configure, that would attempt a lookup on whatever object the player is facing? This would also solve the slight problem of accidentally performing a lookup on your player, when you were trying to get the thing behind them.

[Lookup Anything] day offset calculation crashes if it extends into next year

The mod crashes when calculating a day offset that extends into the next year (e.g. +5 days on Winter 24):

System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Pathoschild.LookupAnything.GameHelper.GetDayOffset(Int32 offset, Int32 daysInSeason)
at Pathoschild.LookupAnything.Framework.Subjects.FarmAnimalSubject.<GetData>d__2.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Pathoschild.LookupAnything.Components.LookupMenu..ctor(ISubject subject, Metadata metadata)
at Pathoschild.LookupAnything.LookupAnythingMod.ShowLookup()

Reported via forums.

[Lookup Anything] progression mode

Lookup Anything tries to balance between demystifying game mechanics and spoiling the game, which means it can't show some possible spoilers. For example, players may want to learn about Abigail's relationship with her parents through her heart events, or discover gift tastes for themselves.

Consider adding a progression mode that unlocks details as the player discovers them. This might be a bit difficult, because the game doesn't keep track of enough data (e.g. whether you've grown a given crop before or seen a particular dialogue line). Lookup Anything will need a mechanism to detect and track those details itself.

Suggested or discussed several times:

[Lookup Anything] show NPC schedule

When looking up an NPC, show their schedule for today. It looks like we can get today's schedule from Dictionary<int, SchedulePathDescription> NPC::getSchedule(int dayOfMonth). Although it takes a day of month, it's only accurate for the current day since it checks the current conditions (e.g. rain).

Discussed in the forums.

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.