├── .editorconfig ├── .gitattributes ├── .gitignore ├── AdvancedLocationLoader ├── Actions.cs ├── AdvancedLocationLoader.csproj ├── AdvancedLocationLoader.csproj.DotSettings ├── ConditionalResolver.cs ├── Configs │ ├── Compound.cs │ ├── ContentPackData.cs │ ├── LoaderVersionConfig.cs │ ├── LocationConfig1_2.cs │ ├── LocationConfig_1_1.cs │ ├── ShopConfig.cs │ └── Subclasses │ │ ├── Conditional.cs │ │ ├── Location.cs │ │ ├── MapFileLink.cs │ │ ├── Override.cs │ │ ├── Property.cs │ │ ├── Redirect.cs │ │ ├── ShopItem.cs │ │ ├── TeleporterDestination.cs │ │ ├── TeleporterList.cs │ │ ├── Tile.cs │ │ ├── TileInfo.cs │ │ ├── Tilesheet.cs │ │ └── Warp.cs ├── ContentPackExtensions.cs ├── Locations │ ├── DecoratableLocation.cs │ ├── Desert.cs │ ├── Greenhouse.cs │ └── Sewer.cs ├── Menus │ └── CarpenterMenu.cs ├── ModEntry.cs ├── Processing │ ├── ConfigReader.cs │ └── Patcher.cs ├── Processors.cs ├── README.md ├── RELEASE-NOTES.md ├── StructuredBinaryFile.cs ├── TeleportationResolver.cs ├── docs │ ├── actions.md │ └── manifest.md ├── i18n │ ├── de.json │ └── default.json └── manifest.json ├── AdvancedLocationLoader2 ├── ALLModEntry.cs ├── AdvancedLocationLoader2.csproj └── Structure │ └── Version1 │ ├── ContentPack.cs │ ├── Location.cs │ ├── MapFileLink.cs │ ├── Patch.cs │ ├── Shop.cs │ ├── ShopItem.cs │ ├── TileEdit.cs │ ├── Tilesheet.cs │ └── Warp.cs ├── CustomBooks ├── Book.cs ├── Bookshelf.cs ├── CustomBooks.csproj ├── Menu │ ├── BookMenu.cs │ ├── ConfigPage.cs │ ├── ImagePage.cs │ ├── InsertPage.cs │ ├── Page.cs │ ├── SystemPage.cs │ ├── TextPage.cs │ └── TitlePage.cs ├── ModEntry.cs ├── assets │ ├── abook.png │ ├── binding.png │ ├── book.png │ ├── brush.png │ ├── delete.png │ ├── edit.png │ ├── icon.png │ ├── pages.png │ └── quil.png └── manifest.json ├── CustomPaths ├── CustomPath.cs ├── CustomPathConfig.cs ├── CustomPathInfo.cs ├── CustomPathObject.cs ├── CustomPaths.csproj ├── CustomPathsMod.cs ├── README.md ├── RELEASE-NOTES.md └── manifest.json ├── DialogueFramework ├── DialogueEventArgs.cs ├── DialogueFramework.csproj ├── DialogueFrameworkMod.cs ├── IModApi.cs ├── ModApi.cs └── Patcher.cs ├── DiffPatcherV1R0P0 ├── Properties │ └── AssemblyInfo.cs ├── TDiffPatcher.cs ├── TDiffPatcherV1R0P0.csproj └── packages.config ├── DynamicDungeons ├── ATile.cs ├── ActionInfo.cs ├── BookMenu.cs ├── DungeonBuilder.cs ├── DynamicDungeon.cs ├── DynamicDungeons.csproj ├── DynamicDungeonsAPI.cs ├── DynamicDungeonsSavefile.cs ├── ITile.cs ├── ImagePage.cs ├── LootHandler.cs ├── ModEntry.cs ├── PTile.cs ├── Page.cs ├── PathFinder.cs ├── PaymentPage.cs ├── STile.cs ├── TextPage.cs ├── Tiles │ ├── AnimatedTile.cs │ ├── PropertyTile.cs │ ├── StaticTile.cs │ └── Tile.cs ├── TitlePage.cs ├── assets │ ├── DynamicDungeonsEntrance.tbin │ ├── book.png │ ├── book │ │ ├── doodle1.png │ │ ├── doodle2.png │ │ └── doodle3.png │ ├── credits.txt │ ├── door.png │ ├── dungeon.png │ ├── entrance.png │ ├── sheet_boulder.png │ ├── sheet_cavein.png │ ├── sheet_dwarfvendor.png │ ├── sheet_info.png │ ├── sheet_stalagmite1.png │ ├── sheet_stalagmite2.png │ ├── sheet_statue.png │ ├── sheet_tracks.png │ ├── sheet_walls.png │ ├── unused │ │ ├── DoorSpriteSheet.png │ │ ├── door_anim.png │ │ ├── door_anim2.png │ │ ├── door_wall.png │ │ ├── merged.xcf │ │ ├── probably_old_robot_thingy.png │ │ ├── pufferchick.png │ │ ├── robot_head_animation.png │ │ ├── sheet_info.xcf │ │ ├── sheet_light.png │ │ └── sheet_walls2.png │ └── zDynamicDungeonsEntrance_tiles.png ├── i18n │ └── default.json └── manifest.json ├── EntoaroxUtilities ├── Assets │ ├── Boots.json │ ├── Clothing.json │ ├── Craftable.json │ ├── Floor.json │ ├── Furniture.json │ ├── Hat.json │ ├── Object.json │ ├── Ring.json │ ├── Wallpaper.json │ └── Weapon.json ├── EUGlobals.cs ├── EntoaroxUtilities.csproj ├── IEntoUtilsApi.cs ├── Internals │ ├── Api │ │ ├── Data.cs │ │ ├── EntoUtilsApi.cs │ │ ├── ICustomFarmingApi.cs │ │ ├── IJsonAssetsApi.cs │ │ ├── IPrismaticToolsApi.cs │ │ ├── TypeHandlers.cs │ │ └── TypeResolvers.cs │ ├── AssetHandlers │ │ └── HelperSheetLoader.cs │ ├── EntoUtilsMod.cs │ └── Helpers │ │ └── ModApi.cs ├── Properties │ └── AssemblyInfo.cs ├── Tools │ ├── LogBuffer.cs │ └── Timer.cs ├── UI │ ├── Abstract │ │ ├── AbstractComponent.cs │ │ ├── AbstractComponentCollection.cs │ │ ├── AbstractComponentMenu.cs │ │ ├── AbstractInteractiveComponent.cs │ │ ├── AbstractUpdatingComponent.cs │ │ └── AbstractUpdatingInteractiveComponent.cs │ └── Interfaces │ │ ├── IComponent.cs │ │ ├── IComponentCollection.cs │ │ ├── IComponentContainer.cs │ │ ├── IComponentMenu.cs │ │ ├── IInteractiveComponent.cs │ │ └── IUpdatingComponent.cs ├── changelog.txt ├── manifest.json └── packages.config ├── ExtendedMinecart ├── ExtendedMinecart.csproj ├── ModConfig.cs ├── ModEntry.cs ├── README.md ├── RELEASE-NOTES.md ├── i18n │ ├── default.json │ └── pt.json └── manifest.json ├── FasterPaths ├── FasterPaths.csproj ├── ModConfig.cs ├── ModEntry.cs ├── README.md ├── RELEASE-NOTES.md └── manifest.json ├── Framework ├── API │ └── DecorationApi.cs ├── Advanced │ ├── PolyTuple.cs │ ├── PolyTupleHelper.cs │ └── TupleSyntax.cs ├── ApiWrappers │ └── IJsonAssetsAPI.cs ├── Config │ ├── ConfigAttribute.cs │ ├── ConfigCustomAttribute.cs │ ├── ConfigDropdownAttribute.cs │ ├── ConfigMinMaxAttribute.cs │ └── ConfigSliderAttribute.cs ├── Core │ ├── AssetHandlers │ │ ├── DeferredAssetHandler.cs │ │ ├── DeferredAssetInfo.cs │ │ ├── DeferredTypeHandler.cs │ │ ├── DictionaryInjector.cs │ │ ├── TextureInjector.cs │ │ ├── TextureInjectorInfo.cs │ │ └── XnbLoader.cs │ ├── ConditionHelper.cs │ ├── ConditionsHelper.cs │ ├── EntoaroxFrameworkMod.cs │ ├── Injection │ │ ├── Crop_newDay.cs │ │ ├── HoeDirt_canPlantThisSeedHere.cs │ │ └── HookedLocationBuilder.cs │ ├── InterModHelper.cs │ ├── Message.cs │ ├── MessageHelper.cs │ ├── ModConfig.cs │ ├── PlayerHelper.cs │ ├── PlayerModifierHelper.cs │ ├── PlayerModifierList.cs │ ├── Serialization │ │ ├── CustomContractResolver.cs │ │ ├── InstanceState.cs │ │ ├── Placeholder.cs │ │ └── RectangleConverter.cs │ └── Utilities │ │ ├── DictionaryAssetInfo.cs │ │ ├── DictionaryWrapper.cs │ │ ├── Events.cs │ │ ├── Globals.cs │ │ └── TextureHelper.cs ├── CustomObject.cs ├── Delegates.cs ├── EntoaroxFramework.csproj ├── EntoaroxFramework.csproj.DotSettings ├── EntoaroxFrameworkAPI.cs ├── Events │ ├── EventArgsActionTriggered.cs │ ├── EventArgsActiveItemChanged.cs │ ├── EventArgsArguments.cs │ ├── EventArgsEditable.cs │ ├── EventArgsReturnable.cs │ ├── ItemEvents.cs │ └── MoreEvents.cs ├── Experimental │ ├── ListExtensions.cs │ ├── PathFinder.cs │ └── PathNode.cs ├── Extensions │ ├── PointExtensions.cs │ └── StringExtensions.cs ├── GameLocationExtensions.cs ├── IAugmentedLocation.cs ├── IConditionHelper.cs ├── IContentHandler.cs ├── IContentHelperExtensions.cs ├── ICustomItem.cs ├── IDeserializationHandler.cs ├── IHookedLocation.cs ├── IInterModHelper.cs ├── IMessageHelper.cs ├── IModHelperExtensions.cs ├── IMonitorExtensions.cs ├── IPlayerHelper.cs ├── IPlayerModifierHelper.cs ├── Indev │ ├── CustomAdditionAttribute.cs │ ├── IProfession.cs │ ├── ISkill.cs │ ├── ISkillHelper.cs │ ├── PlayerSkillInfo.cs │ ├── RecipeComponent.cs │ ├── SkillData.cs │ ├── SkillHelper.cs │ ├── VanillaProfession.cs │ └── VanillaSkill.cs ├── Interface │ ├── Base │ │ ├── BaseClickableComponent.cs │ │ ├── BaseComponent.cs │ │ ├── BaseComponentCollection.cs │ │ ├── BaseComponentContainer.cs │ │ ├── BaseDynamicComponent.cs │ │ ├── BaseInputComponent.cs │ │ └── BaseItemslotComponent.cs │ ├── Containers │ │ ├── GenericComponentCollection.cs │ │ └── ScrollableComponentCollection.cs │ ├── Interfaces │ │ ├── IComponent.cs │ │ ├── IComponentCollection.cs │ │ ├── IComponentContainer.cs │ │ ├── IControllerComponent.cs │ │ ├── IDynamicComponent.cs │ │ ├── IFloatComponent.cs │ │ ├── IHotkeyComponent.cs │ │ ├── IInputComponent.cs │ │ ├── IItemContainer.cs │ │ └── IVisibilityObserver.cs │ ├── Misc │ │ ├── InterfaceMenu.cs │ │ ├── KeyboardResolver.cs │ │ ├── Strings.cs │ │ └── Utilities.cs │ └── Static │ │ ├── GradientComponent.cs │ │ ├── TextComponent.cs │ │ └── TextureComponent.cs ├── PlayerModifier.cs ├── README.md ├── RELEASE-NOTES.md ├── StackableShopObject.cs ├── UI │ ├── Base │ │ ├── BaseFormComponent.cs │ │ ├── BaseInteractiveMenuComponent.cs │ │ ├── BaseKeyboardFormComponent.cs │ │ └── BaseMenuComponent.cs │ ├── Containers │ │ ├── BookComponent.cs │ │ ├── ClickableCollectionComponent.cs │ │ ├── FormCollectionComponent.cs │ │ ├── GenericCollectionComponent.cs │ │ ├── ScrollableCollectionComponent.cs │ │ └── TablistComponent.cs │ ├── Form │ │ ├── ButtonFormComponent.cs │ │ ├── CheckboxFormComponent.cs │ │ ├── DropdownFormComponent.cs │ │ ├── PlusMinusFormComponent.cs │ │ ├── SliderFormComponent.cs │ │ └── TextboxFormComponent.cs │ ├── FrameworkMenu.cs │ ├── Generic │ │ ├── AnimatedComponent.cs │ │ ├── ClickableAnimatedComponent.cs │ │ ├── ClickableHeartsComponent.cs │ │ ├── ClickableTextComponent.cs │ │ ├── ClickableTextureComponent.cs │ │ ├── ColoredRectangleComponent.cs │ │ ├── FrameComponent.cs │ │ ├── HeartsComponent.cs │ │ ├── LabelComponent.cs │ │ ├── ProgressbarComponent.cs │ │ ├── TextComponent.cs │ │ └── TextureComponent.cs │ ├── Interfaces │ │ ├── IComponentCollection.cs │ │ ├── IComponentContainer.cs │ │ ├── IIinteractiveMenuComponent.cs │ │ ├── IKeyboardComponent.cs │ │ └── IMenuComponent.cs │ ├── KeyboardInputResolver.cs │ ├── KeyboardSubscriberProxy.cs │ ├── OverlayMenu.cs │ └── Wrapper │ │ ├── ClickableCancelComponent.cs │ │ ├── ClickableConfirmComponent.cs │ │ ├── ClickableObjectComponent.cs │ │ └── ObjectComponent.cs ├── assets │ └── placeholder.png ├── docs │ ├── Changelog.txt │ └── conditions.md └── manifest.json ├── FurnitureAnywhere ├── AnywhereFurniture.cs ├── FurnitureAnywhere.csproj ├── ModEntry.cs ├── README.md ├── RELEASE-NOTES.md └── manifest.json ├── LanguagePatcher ├── App.config ├── LanguagePatcher.csproj └── Program.cs ├── MagicJunimoPet ├── Abilities │ ├── FeedAbility.cs │ ├── MagicalAbility.cs │ └── PetAbility.cs ├── Ability.cs ├── Behaviour.cs ├── Behaviours │ └── FollowBehaviour.cs ├── ColorScale.cs ├── IActiveAbility.cs ├── IRankedAbility.cs ├── IRestrictedAbility.cs ├── ISkinAbility.cs ├── ITickingAbility.cs ├── MJPModEntry.cs ├── MagicJunimo.cs ├── MagicJunimoPet.csproj ├── PetState.cs ├── Renderer.cs ├── SmartPet.cs ├── assets │ └── junimo.png ├── i18n │ ├── default.json │ └── ko.json └── manifest.json ├── MoreAnimals ├── AdoptQuestion.cs ├── Framework │ ├── AnimalSkin.cs │ └── ModApi.cs ├── ModConfig.cs ├── ModEntry.cs ├── MoreAnimals.csproj ├── README.md ├── RELEASE-NOTES.md ├── assets │ ├── box.png │ ├── credits.txt │ └── skins │ │ ├── BabyDuck.png │ │ ├── cat_1.png │ │ ├── cat_2.png │ │ ├── cat_3.png │ │ ├── cat_4.png │ │ ├── cat_5.png │ │ ├── cat_6.png │ │ ├── cat_7.png │ │ ├── cat_8.png │ │ ├── cat_9.png │ │ ├── dog_1.png │ │ ├── dog_2.png │ │ ├── dog_3.png │ │ ├── dog_4.png │ │ ├── dog_5.png │ │ ├── dog_6.png │ │ ├── dog_7.png │ │ ├── dog_8.png │ │ └── dog_9.png ├── i18n │ ├── default.json │ ├── es.json │ ├── fr.json │ ├── it.json │ ├── ko.json │ ├── pt.json │ └── zh.json └── manifest.json ├── PlayGround ├── CustomBathhouse.cs ├── DistanceCalculator.cs ├── EF 2.1 │ ├── IProfession.cs │ ├── ISkill.cs │ ├── ISkillHelper.cs │ ├── RecipeComponent.cs │ ├── SkillData.cs │ ├── SkillHelper.cs │ ├── VanillaProfession.cs │ └── VanillaSkill.cs ├── ModWrapper.cs ├── PlayGround.csproj ├── WrapperTest │ ├── IWrapper.cs │ └── WrapperBuilder.cs └── manifest.json ├── README.md ├── SeasonalImmersion ├── ContentMode.cs ├── ContentPack │ ├── fall │ │ ├── Barn.png │ │ ├── Big Barn.png │ │ ├── Big Coop.png │ │ ├── Coop.png │ │ ├── Deluxe Barn.png │ │ ├── Deluxe Coop.png │ │ ├── Earth Obelisk.png │ │ ├── Gold Clock.png │ │ ├── Mill.png │ │ ├── Shed.png │ │ ├── Silo.png │ │ ├── Slime Hutch.png │ │ ├── Stable.png │ │ ├── Water Obelisk.png │ │ ├── Well.png │ │ └── houses.png │ ├── manifest.json │ ├── spring │ │ ├── Barn.png │ │ ├── Big Barn.png │ │ ├── Big Coop.png │ │ ├── Coop.png │ │ ├── Deluxe Barn.png │ │ ├── Deluxe Coop.png │ │ ├── Earth Obelisk.png │ │ ├── Gold Clock.png │ │ ├── Mill.png │ │ ├── Shed.png │ │ ├── Silo.png │ │ ├── Slime Hutch.png │ │ ├── Stable.png │ │ ├── Water Obelisk.png │ │ ├── Well.png │ │ └── houses.png │ ├── summer │ │ ├── Barn.png │ │ ├── Big Barn.png │ │ ├── Big Coop.png │ │ ├── Coop.png │ │ ├── Deluxe Barn.png │ │ ├── Deluxe Coop.png │ │ ├── Earth Obelisk.png │ │ ├── Gold Clock.png │ │ ├── Mill.png │ │ ├── Shed.png │ │ ├── Silo.png │ │ ├── Slime Hutch.png │ │ ├── Stable.png │ │ ├── Water Obelisk.png │ │ ├── Well.png │ │ └── houses.png │ └── winter │ │ ├── Barn.png │ │ ├── Big Barn.png │ │ ├── Big Coop.png │ │ ├── Coop.png │ │ ├── Deluxe Barn.png │ │ ├── Deluxe Coop.png │ │ ├── Earth Obelisk.png │ │ ├── Gold Clock.png │ │ ├── Mill.png │ │ ├── Shed.png │ │ ├── Silo.png │ │ ├── Slime Hutch.png │ │ ├── Stable.png │ │ ├── Water Obelisk.png │ │ ├── Well.png │ │ └── houses.png ├── ContentPackManifest.cs ├── Ionic.Zip.dll ├── ModConfig.cs ├── ModEntry.cs ├── README.md ├── RELEASE-NOTES.md ├── SeasonalImmersion.csproj ├── SeasonalTextureLoader.cs └── manifest.json ├── ShopExpander ├── ModConfig.cs ├── ModEntry.cs ├── README.md ├── RELEASE-NOTES.md ├── Reference.cs ├── SObject.cs ├── ShopExpander.csproj └── manifest.json ├── SitForStaminaMod ├── Config.cs ├── Properties │ └── AssemblyInfo.cs ├── SitForStaminaMod.cs ├── SitForStaminaMod.csproj ├── manifest.json └── packages.config ├── StardewModdingAPI.psess ├── StardewModdingAPI1.psess ├── StardewModdingAPI191113(1).vspx ├── StardewModdingAPI191113(2).vspx ├── StardewModdingAPI191113.vspx ├── StardewModdingAPI191207.vspx ├── StardewModdingAPI2.psess ├── StardewModdingAPI200220.vspx ├── StardewMods.sln ├── StardewMods.sln.DotSettings ├── TDiffMaker ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── TDiffMaker.csproj └── packages.config ├── XnbLoader ├── ModConfig.cs ├── ModEntry.cs ├── README.md ├── RELEASE-NOTES.md ├── XnbLoader.csproj └── manifest.json └── common.targets /.gitattributes: -------------------------------------------------------------------------------- 1 | # always normalise line endings 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # user-specific files 2 | *.suo 3 | *.user 4 | *.userosscache 5 | *.sln.docstates 6 | 7 | # build results 8 | [Dd]ebug/ 9 | [Rr]elease/ 10 | [Bb]in/ 11 | [Oo]bj/ 12 | 13 | # Visual Studio cache/options 14 | .vs/ 15 | 16 | # ReSharper 17 | _ReSharper*/ 18 | *.[Rr]e[Ss]harper 19 | *.DotSettings.user 20 | 21 | # NuGet packages 22 | *.nupkg 23 | **/packages/* 24 | *.nuget.props 25 | *.nuget.targets 26 | 27 | # release zips 28 | _releases/ -------------------------------------------------------------------------------- /AdvancedLocationLoader/AdvancedLocationLoader.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | AdvancedLocationLoader 5 | Entoarox.AdvancedLocationLoader 6 | 1.5.0 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | false 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/AdvancedLocationLoader.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/ContentPackData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using StardewModdingAPI; 3 | 4 | namespace Entoarox.AdvancedLocationLoader.Configs 5 | { 6 | /// The loaded data for a content pack. 7 | internal class ContentPackData 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | public IContentPack ContentPack { get; set; } 13 | public IList Locations { get; set; } = new List(); 14 | public IList Overrides { get; set; } = new List(); 15 | public IList Redirects { get; set; } = new List(); 16 | public IList Tilesheets { get; set; } = new List(); 17 | public IList Tiles { get; set; } = new List(); 18 | public IList Properties { get; set; } = new List(); 19 | public IList Warps { get; set; } = new List(); 20 | public IList Conditionals { get; set; } = new List(); 21 | public IList Teleporters { get; set; } = new List(); 22 | public IList Shops { get; set; } = new List(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/LoaderVersionConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | /// A minimal config used to read the loader version. 4 | internal class LoaderVersionConfig 5 | { 6 | /********* 7 | ** Accessors 8 | *********/ 9 | /// The loader version. 10 | public string LoaderVersion { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/LocationConfig1_2.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.AdvancedLocationLoader.Configs 4 | { 5 | internal class LocationConfig 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | /// The secondary location configs to read. This is ignored on a secondary location config. 11 | public IList Includes { get; set; } = new List(); 12 | 13 | public IList Locations { get; set; } = new List(); 14 | public IList Overrides { get; set; } = new List(); 15 | public IList Redirects { get; set; } = new List(); 16 | public IList Tilesheets { get; set; } = new List(); 17 | public IList Tiles { get; set; } = new List(); 18 | public IList Properties { get; set; } = new List(); 19 | public IList Warps { get; set; } = new List(); 20 | public IList Conditionals { get; set; } = new List(); 21 | public IList Teleporters { get; set; } = new List(); 22 | public IList Shops { get; set; } = new List(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/LocationConfig_1_1.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.AdvancedLocationLoader.Configs 4 | { 5 | internal class LocationConfig_1_1 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public IList> Locations { get; set; } 11 | public IList> Overrides { get; set; } 12 | public IDictionary>> Minecarts { get; set; } 13 | public IList> Tilesheets { get; set; } 14 | public IList> Tiles { get; set; } 15 | public IList> Properties { get; set; } 16 | public IList> Warps { get; set; } 17 | public IDictionary> Conditions { get; set; } 18 | public IList Shops { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/ShopConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using Newtonsoft.Json; 4 | 5 | namespace Entoarox.AdvancedLocationLoader.Configs 6 | { 7 | internal class ShopConfig 8 | { 9 | #pragma warning disable CS0649 10 | /********* 11 | ** Accessors 12 | *********/ 13 | [JsonIgnore] 14 | public string Name; 15 | 16 | [JsonIgnore] 17 | public Texture2D PortraitTexture; 18 | 19 | public int ParserVersion; 20 | public string Portrait; 21 | public string Owner; 22 | public List Messages; 23 | public List Items; 24 | #pragma warning restore CS0649 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Conditional.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Newtonsoft.Json; 3 | 4 | namespace Entoarox.AdvancedLocationLoader.Configs 5 | { 6 | internal class Conditional 7 | { 8 | #pragma warning disable CS0649 9 | /********* 10 | ** Accessors 11 | *********/ 12 | public int Amount; 13 | public int Item; 14 | public string Name; 15 | public string Question; 16 | 17 | [DefaultValue(null)] 18 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 19 | public string Success; 20 | #pragma warning restore CS0649 21 | 22 | 23 | /********* 24 | ** Public methods 25 | *********/ 26 | public override string ToString() 27 | { 28 | return $"Conditional({this.Name}[{this.Item}{':'}{this.Amount}] = `{this.Question}`)"; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Location.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Newtonsoft.Json; 3 | 4 | namespace Entoarox.AdvancedLocationLoader.Configs 5 | { 6 | internal class Location : MapFileLink 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | [DefaultValue(false)] 12 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 13 | public bool Farmable; 14 | 15 | [DefaultValue(false)] 16 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 17 | public bool Outdoor; 18 | 19 | [DefaultValue("Default")] 20 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 21 | public string Type; 22 | 23 | 24 | /********* 25 | ** Public methods 26 | *********/ 27 | public override string ToString() 28 | { 29 | return $"Location({this.MapName},{this.FileName}){{Outdoor={this.Outdoor},Farmable={this.Farmable},Type={this.Type}}}"; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/MapFileLink.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | internal abstract class MapFileLink 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public string FileName; 9 | public string MapName; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Override.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | internal class Override : MapFileLink 4 | { 5 | /********* 6 | ** Public methods 7 | *********/ 8 | public override string ToString() 9 | { 10 | return $"Override({this.MapName},{this.FileName})"; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Property.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | internal class Property : TileInfo 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public string Key; 9 | public string LayerId; 10 | public string Value; 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | public override string ToString() 17 | { 18 | return $"Property({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} => `{this.Key}` = {this.Value}{')'}"; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Redirect.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | internal class Redirect 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | #pragma warning disable CS0649 9 | public string FromFile; 10 | public string ToFile; 11 | #pragma warning restore CS0649 12 | 13 | 14 | /********* 15 | ** Public methods 16 | *********/ 17 | public override string ToString() 18 | { 19 | return $"Redirect({this.FromFile} => {this.ToFile}{')'}"; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/ShopItem.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Newtonsoft.Json; 3 | 4 | namespace Entoarox.AdvancedLocationLoader.Configs 5 | { 6 | internal class ShopItem 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | #pragma warning disable CS0649 12 | [DefaultValue(false)] 13 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 14 | public bool BigCraftable; 15 | 16 | public string Conditions; 17 | public int Id; 18 | public int? Price; 19 | 20 | [DefaultValue(1)] 21 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 22 | public int Stack; 23 | 24 | [DefaultValue(int.MaxValue)] 25 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 26 | public int Stock; 27 | #pragma warning restore CS0649 28 | 29 | /********* 30 | ** Public methods 31 | *********/ 32 | public override string ToString() 33 | { 34 | return $"ShopItem({this.Id}:{(this.BigCraftable ? "craftable" : "object")}){{Price={this.Price},Stack={this.Stack},Stock={this.Stock},Conditions={this.Conditions}}}"; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/TeleporterDestination.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Newtonsoft.Json; 3 | 4 | namespace Entoarox.AdvancedLocationLoader.Configs 5 | { 6 | internal class TeleporterDestination 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | [DefaultValue(0)] 12 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 13 | public int Direction; 14 | 15 | public string ItemText; 16 | public string MapName; 17 | public int TileX; 18 | public int TileY; 19 | 20 | 21 | /********* 22 | ** Public methods 23 | *********/ 24 | public override bool Equals(object a) 25 | { 26 | if (a is TeleporterDestination b) 27 | return b.MapName == this.MapName && b.TileX == this.TileX && b.TileY == this.TileY; 28 | 29 | return false; 30 | } 31 | 32 | public override int GetHashCode() 33 | { 34 | return base.GetHashCode(); 35 | } 36 | 37 | public override string ToString() 38 | { 39 | return $"{this.MapName}@[{this.TileX},{this.TileY}]:{this.Direction}"; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/TeleporterList.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.AdvancedLocationLoader.Configs 4 | { 5 | internal class TeleporterList 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | #pragma warning disable CS0649 11 | public List Destinations; 12 | #pragma warning restore CS0649 13 | 14 | public string ListName; 15 | 16 | 17 | /********* 18 | ** Public methods 19 | *********/ 20 | public override string ToString() 21 | { 22 | return $"TeleporterList({this.ListName}) => {{{string.Join(",", this.Destinations)}{'}'}"; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Tile.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | internal class Tile : TileInfo 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public int? Interval; 9 | public string LayerId; 10 | public string SheetId; 11 | public int? TileIndex; 12 | public int[] TileIndexes; 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public override string ToString() 19 | { 20 | if (this.TileIndex != null) 21 | if (this.SheetId != null) 22 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{this.SheetId}:{this.TileIndex}`)"; 23 | else 24 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{this.TileIndex}`)"; 25 | if (this.SheetId != null) 26 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{this.SheetId}:{string.Join(",", this.TileIndexes)}`)"; 27 | return $"Tile({this.MapName}@[{this.TileX}{','}{this.TileY}]:{this.LayerId} = `{string.Join(",", this.TileIndexes)}`)"; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/TileInfo.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Newtonsoft.Json; 3 | 4 | namespace Entoarox.AdvancedLocationLoader.Configs 5 | { 6 | internal abstract class TileInfo 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | #pragma warning disable CS0649 12 | public string Conditions; 13 | public string MapName; 14 | 15 | [DefaultValue(false)] 16 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 17 | public bool Optional; 18 | 19 | public int TileX; 20 | public int TileY; 21 | #pragma warning restore CS0649 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Tilesheet.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | using Newtonsoft.Json; 4 | 5 | namespace Entoarox.AdvancedLocationLoader.Configs 6 | { 7 | internal class Tilesheet : MapFileLink 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | public Dictionary Properties = new Dictionary(); 13 | 14 | [DefaultValue(false)] 15 | [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] 16 | public bool Seasonal; 17 | 18 | public string SheetId; 19 | 20 | 21 | /********* 22 | ** Public methods 23 | *********/ 24 | public override string ToString() 25 | { 26 | return $"Tilesheet({this.MapName}:{this.SheetId},{this.FileName ?? "null"}){{Seasonal={this.Seasonal}}}"; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Configs/Subclasses/Warp.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.AdvancedLocationLoader.Configs 2 | { 3 | internal class Warp : TileInfo 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public string TargetName; 9 | public int TargetX; 10 | public int TargetY; 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | public override string ToString() 17 | { 18 | return $"Warp({this.MapName}@[{this.TileX}{','}{this.TileY}] => {this.TargetName}@[{this.TargetX}{','}{this.TargetY}])"; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/ContentPackExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using StardewModdingAPI; 4 | 5 | namespace Entoarox.AdvancedLocationLoader 6 | { 7 | internal static class ContentPackExtensions 8 | { 9 | /********* 10 | ** Public methods 11 | *********/ 12 | public static string GetRelativePath(this IContentPack contentPack, string fromAbsolutePath, string toLocalPath) 13 | { 14 | Uri fromUri = new Uri(fromAbsolutePath + Path.DirectorySeparatorChar); 15 | Uri toUri = new Uri(Path.Combine(contentPack.DirectoryPath, toLocalPath)); 16 | if (fromUri.Scheme != toUri.Scheme) 17 | throw new InvalidOperationException($"Unable to make path relative to the DLL: {Path.Combine(contentPack.DirectoryPath, toLocalPath)}"); 18 | return Uri.UnescapeDataString(fromUri.MakeRelativeUri(toUri).ToString()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Locations/Greenhouse.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics.CodeAnalysis; 2 | using System.Xml.Serialization; 3 | using StardewValley; 4 | 5 | namespace Entoarox.AdvancedLocationLoader.Locations 6 | { 7 | [XmlType("ALLGreenhouse")] 8 | public class Greenhouse : GameLocation 9 | { 10 | /********* 11 | ** Public methods 12 | *********/ 13 | public Greenhouse() { } 14 | 15 | public Greenhouse(string mapPath, string name) 16 | : base(mapPath, name) { } 17 | 18 | [SuppressMessage("SMAPI", "AvoidNetField", Justification = "The Name field doesn't have a setter, so we need to do it through the net field value.")] 19 | public override void DayUpdate(int dayOfMonth) 20 | { 21 | string realName = this.Name; 22 | this.name.Value = "Greenhouse"; 23 | base.DayUpdate(dayOfMonth); 24 | this.name.Value = realName; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/Locations/Sewer.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Serialization; 2 | 3 | namespace Entoarox.AdvancedLocationLoader.Locations 4 | { 5 | [XmlType("ALLSewer")] 6 | public class Sewer : StardewValley.Locations.Sewer 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public Sewer() { } 12 | 13 | public Sewer(string mapPath, string name) 14 | : base(mapPath, name) { } 15 | 16 | 17 | /********* 18 | ** Protected methods 19 | *********/ 20 | protected override void resetLocalState() 21 | { 22 | base.resetLocalState(); 23 | this.characters.Clear(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/i18n/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "sparkle": "Trotz des Funkeln, welches du gesehen hast,sieht es so aus als wäre nicht da.", 3 | "gold": "Gold", 4 | "yesCost": "Ja, das kostet {{amount}} {{itemName}}", 5 | "no": "Nein", 6 | "notEnough": "Du hast nicht genug {{itemName}} dafür.", 7 | "cancel": "Abbruch", 8 | "teleporter": "Wähle einen Zielort:" 9 | } 10 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/i18n/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "sparkle": "Despite the sparkle you saw, there doesn't seem to be anything here.", 3 | "gold": "Gold", 4 | "yesCost": "Yes, costs {{amount}} {{itemName}}", 5 | "no": "No", 6 | "notEnough": "You don't have enough {{itemName}} for this.", 7 | "cancel": "Cancel", 8 | "teleporter": "Choose a destination:" 9 | } 10 | -------------------------------------------------------------------------------- /AdvancedLocationLoader/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Advanced Location Loader", 3 | "Author": "Entoarox", 4 | "Version": "1.5.1", 5 | "Description": "Get your content into stardew without replacing any xnb files.", 6 | "UniqueID": "Entoarox.AdvancedLocationLoader", 7 | "EntryDll": "AdvancedLocationLoader.dll", 8 | "MinimumApiVersion": "2.9.3", 9 | "UpdateKeys": [ "Nexus:2270" ], 10 | "Dependencies": [ 11 | { "UniqueID": "Entoarox.EntoaroxFramework" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/ALLModEntry.cs: -------------------------------------------------------------------------------- 1 | using StardewModdingAPI; 2 | using StardewModdingAPI.Events; 3 | 4 | namespace Entoarox.AdvancedLocationLoader2 5 | { 6 | /// The mod entry class. 7 | public class ALLModEntry : Mod 8 | { 9 | /********* 10 | ** Public methods 11 | *********/ 12 | /// The mod entry point, called after the mod is first loaded. 13 | /// Provides simplified APIs for writing mods. 14 | public override void Entry(IModHelper helper) 15 | { 16 | helper.Events.GameLoop.GameLaunched += this.OnGameLaunched; 17 | } 18 | 19 | 20 | /********* 21 | ** Private methods 22 | *********/ 23 | /// Raised after the game is launched, right before the first update tick. This happens once per game session (unrelated to loading saves). All mods are loaded and initialised at this point, so this is a good time to set up mod integrations. 24 | /// The event sender. 25 | /// The event data. 26 | private void OnGameLaunched(object sender, GameLaunchedEventArgs e) 27 | { 28 | this.LoadContent(); 29 | } 30 | 31 | private void LoadContent() 32 | { 33 | foreach (var pack in this.Helper.ContentPacks.GetOwned()) 34 | { 35 | 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/AdvancedLocationLoader2.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | AdvancedLocationLoader2 5 | Entoarox.AdvancedLocationLoader2 6 | 1.5.0 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | false 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/ContentPack.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class ContentPack 10 | { 11 | #pragma warning disable CS0649 12 | public int Version; 13 | public string[] Includes=new string[0]; 14 | public MapFileLink[] Locations = new MapFileLink[0]; 15 | public MapFileLink[] Tilesheets = new MapFileLink[0]; 16 | public Warp[] Warps = new Warp[0]; 17 | public Patch[] Patches = new Patch[0]; 18 | public TileEdit[] TileEdits = new TileEdit[0]; 19 | public Shop[] Shops = new Shop[0]; 20 | #pragma warning restore CS0649 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/Location.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class Location : MapFileLink 10 | { 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/MapFileLink.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class MapFileLink 10 | { 11 | #pragma warning disable CS0649 12 | public string Conditions; 13 | public string FilePath; 14 | public string MapName; 15 | #pragma warning restore CS0649 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/Patch.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class Patch : MapFileLink 10 | { 11 | #pragma warning disable CS0649 12 | public int X; 13 | public int Y; 14 | public bool Destructive=true; 15 | public bool Full = true; 16 | #pragma warning restore CS0649 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/Shop.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class Shop 10 | { 11 | #pragma warning disable CS0649 12 | public string ShopId; 13 | public string[] ShopMessages; 14 | public int RestockDelay=0; 15 | public ShopItem[] Items=new ShopItem[0]; 16 | #pragma warning restore CS0649 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/ShopItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class ShopItem 10 | { 11 | #pragma warning disable CS0649 12 | #pragma warning disable CS0169 13 | string ItemName; 14 | int Price; 15 | int Stock=int.MaxValue; 16 | string Conditions; 17 | #pragma warning restore CS0649 18 | #pragma warning restore CS0169 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/TileEdit.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class TileEdit 10 | { 11 | #pragma warning disable CS0649 12 | public string MapName; 13 | public int X; 14 | public int Y; 15 | public string Layer; 16 | public string TileSheet; 17 | public int? TileIndex; 18 | public Dictionary Properties; 19 | public string Conditions; 20 | #pragma warning restore CS0649 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/Tilesheet.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class Tilesheet : MapFileLink 10 | { 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AdvancedLocationLoader2/Structure/Version1/Warp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.AdvancedLocationLoader2.Structure.Version1 8 | { 9 | class Warp 10 | { 11 | #pragma warning disable CS0649 12 | public string MapName; 13 | public int FromX; 14 | public int FromY; 15 | public string TargetName; 16 | public string TargetX; 17 | public string TargetY; 18 | #pragma warning restore CS0649 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /CustomBooks/CustomBooks.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | CustomBooks 5 | Entoarox.CustomBooks 6 | 0.1.0 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | false 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CustomBooks/Menu/InsertPage.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | 5 | namespace Entoarox.CustomBooks.Menu 6 | { 7 | internal class InsertPage : SystemPage 8 | { 9 | /********* 10 | ** Public methods 11 | *********/ 12 | public InsertPage(BookMenu menu) { } 13 | 14 | public override void Draw(SpriteBatch batch, Rectangle region) 15 | { 16 | Utility.drawTextWithShadow(batch, "Add Page", Game1.dialogueFont, new Vector2(region.X, region.Y + 16), Game1.textColor, 1); 17 | this.DrawOption(batch, Game1.staminaRect, region.X, region.Y + 100, region.Width, "Add Title Page"); 18 | this.DrawOption(batch, Game1.staminaRect, region.X, region.Y + 172, region.Width, "Add Text Page"); 19 | this.DrawOption(batch, Game1.staminaRect, region.X, region.Y + 244, region.Width, "Add Image Page"); 20 | } 21 | 22 | public override Bookshelf.Book.Page Serialize() 23 | { 24 | return null; 25 | } 26 | 27 | public override void Click(Rectangle region, int x, int y) { } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /CustomBooks/Menu/Page.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace Entoarox.CustomBooks.Menu 5 | { 6 | internal abstract class Page 7 | { 8 | public bool Editable = false; 9 | public abstract void Draw(SpriteBatch batch, Rectangle region); 10 | public abstract Bookshelf.Book.Page Serialize(); 11 | public abstract void Click(Rectangle region, int x, int y); 12 | public abstract void Release(Rectangle region, int x, int y); 13 | public abstract void Hover(Rectangle region, int x, int y); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /CustomBooks/Menu/TextPage.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | 5 | namespace Entoarox.CustomBooks.Menu 6 | { 7 | internal class TextPage : Page 8 | { 9 | /********* 10 | ** Fields 11 | *********/ 12 | private readonly string Text; 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public TextPage(string text) 19 | { 20 | this.Text = text; 21 | } 22 | 23 | public override void Draw(SpriteBatch batch, Rectangle region) 24 | { 25 | string text = Game1.parseText(this.Text, Game1.smallFont, region.Width); 26 | Utility.drawTextWithShadow(batch, text, Game1.smallFont, new Vector2(region.X, region.Y), Game1.textColor); 27 | } 28 | 29 | public override Bookshelf.Book.Page Serialize() 30 | { 31 | Bookshelf.Book.Page page = new Bookshelf.Book.Page 32 | { 33 | Type = Bookshelf.Book.PageType.Text, 34 | Content = this.Text 35 | }; 36 | return page; 37 | } 38 | 39 | public override void Click(Rectangle region, int x, int y) { } 40 | 41 | public override void Release(Rectangle region, int x, int y) { } 42 | 43 | public override void Hover(Rectangle region, int x, int y) { } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /CustomBooks/assets/abook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/abook.png -------------------------------------------------------------------------------- /CustomBooks/assets/binding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/binding.png -------------------------------------------------------------------------------- /CustomBooks/assets/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/book.png -------------------------------------------------------------------------------- /CustomBooks/assets/brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/brush.png -------------------------------------------------------------------------------- /CustomBooks/assets/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/delete.png -------------------------------------------------------------------------------- /CustomBooks/assets/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/edit.png -------------------------------------------------------------------------------- /CustomBooks/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/icon.png -------------------------------------------------------------------------------- /CustomBooks/assets/pages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/pages.png -------------------------------------------------------------------------------- /CustomBooks/assets/quil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/CustomBooks/assets/quil.png -------------------------------------------------------------------------------- /CustomBooks/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Custom Books", 3 | "Author": "Entoarox", 4 | "Version": "0.1.0", 5 | "Description": "Custom books that the player can fill up as they want!", 6 | "UniqueID": "Entoarox.CustomBooks", 7 | "EntryDll": "CustomBooks.dll", 8 | "MinimumApiVersion": "2.8-beta", 9 | "UpdateKeys": [] 10 | } 11 | -------------------------------------------------------------------------------- /CustomPaths/CustomPathConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.CustomPaths 2 | { 3 | internal class CustomPathConfig 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public int Alternatives = 0; 9 | public string File = ""; 10 | public string Name = ""; 11 | public int Price = 0; 12 | public string Requirements = null; 13 | public string Salesman = ""; 14 | public bool Seasonal = false; 15 | public int SpeedBoost = 0; 16 | public bool Animated = false; 17 | public int[] Frames = new int[0]; 18 | public int MillisPerFrame = 200; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /CustomPaths/CustomPaths.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | CustomPaths 5 | Entoarox.CustomPaths 6 | 1.1.2 7 | net452 8 | default 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | false 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CustomPaths/README.md: -------------------------------------------------------------------------------- 1 | **Custom Paths** lets players add new path types to the game by installing content packs. 2 | 3 | ## Install 4 | 1. [Install the latest version of SMAPI](https://smapi.io). 5 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269). 6 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2272). 7 | 4. Run the game using SMAPI. 8 | 9 | ## Compatibility 10 | * For Stardew Valley 1.3.30 or later. 11 | * Compatible with Linux, Mac, or Windows. 12 | * No known mod conflicts. 13 | 14 | ## Documentation for modders 15 | See an [example content pack](http://cdn.kvdk.net/files/CustomPathsExampleCP.zip) you can start 16 | from to create your own. 17 | 18 | ## See also 19 | * [Release notes](RELEASE-NOTES.md) 20 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2272) 21 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-custompaths.142022/) 22 | -------------------------------------------------------------------------------- /CustomPaths/RELEASE-NOTES.md: -------------------------------------------------------------------------------- 1 | ## Release notes 2 | ## 1.1.3 3 | Not yet released. (Thanks to Pathoschild!) 4 | 5 | * Updated for Stardew Valley 1.3. 6 | * Fixed Linux/Mac compatibility. 7 | * Removed custom update checks; replaced by standard SMAPI update alerts. 8 | * Refactored internally. 9 | 10 | ## 1.1.2 11 | Released 23 March 2018. 12 | 13 | * Tweaked tooltip for speed-boosting paths. 14 | * Fixed path pieces near the top of the screen disappearing when partially outside the viewport. 15 | 16 | ## 1.1.1 17 | Released 22 March 2018. 18 | 19 | * Fixed speed boosts not getting applied. 20 | 21 | ## 1.1 22 | Released 22 March 2018. 23 | 24 | * Added support for path speed boosts in `paths.json`. Paths with a speed boost will show the boost in their description. 25 | * Optimised performance: 26 | * overhauled path connection logic; 27 | * textures are now only updated as needed; 28 | * implemented some JavasSript-inspired black magic so that initializing the connection & texture information has no negative impact on the draw loop. 29 | * Fixed paths using weed description. 30 | 31 | ## 1.0 32 | Released 22 March 2018. 33 | -------------------------------------------------------------------------------- /CustomPaths/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Custom Paths", 3 | "Author": "Entoarox", 4 | "Version": "1.2.4", 5 | "Description": "Enables adding custom paths to the game using Content Packs!", 6 | "UniqueID": "Entoarox.CustomPaths", 7 | "EntryDll": "CustomPaths.dll", 8 | "MinimumApiVersion": "2.11.2", 9 | "UpdateKeys": [ "Nexus:2272" ], 10 | "Dependencies": [ 11 | { 12 | "UniqueID": "Entoarox.EntoaroxFramework", 13 | "MinimumVersion": "2.4.2" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /DialogueFramework/DialogueEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using StardewValley; 8 | 9 | namespace DialogueFramework 10 | { 11 | public class DialogueEventArgs : EventArgs 12 | { 13 | private readonly List Responses; 14 | internal DialogueEventArgs(List responses) 15 | { 16 | this.Responses = responses; 17 | } 18 | 19 | public void AddResponse(Response response) 20 | { 21 | this.Responses.Add(response); 22 | } 23 | 24 | public void ReplaceResponse(string responseKey, Response response) 25 | { 26 | this.Responses[this.Responses.FindIndex(a => a.responseKey.Equals(responseKey))] = response; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /DialogueFramework/DialogueFramework.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | DialogueFramework 5 | DialogueFramework 6 | 1.0.0 7 | net452 8 | 9 | true 10 | 11 | 7.3 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /DialogueFramework/DialogueFrameworkMod.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using StardewModdingAPI; 8 | 9 | namespace DialogueFramework 10 | { 11 | /// The mod entry class. 12 | public class DialogueFrameworkMod : Mod 13 | { 14 | internal static ModApi Api; 15 | 16 | /// The mod entry point, called after the mod is first loaded. 17 | /// Provides simplified APIs for writing mods. 18 | public override void Entry(IModHelper helper) 19 | { 20 | Api = new ModApi(); 21 | } 22 | 23 | /// Get an API that other mods can access. This is always called after . 24 | public override object GetApi() 25 | { 26 | return Api; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /DialogueFramework/IModApi.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using StardewValley; 8 | 9 | namespace DialogueFramework 10 | { 11 | interface IModApi 12 | { 13 | event EventHandler ChoiceDialogueOpened; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DialogueFramework/ModApi.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using StardewValley; 8 | 9 | namespace DialogueFramework 10 | { 11 | public class ModApi : IModApi 12 | { 13 | public event EventHandler ChoiceDialogueOpened; 14 | 15 | internal void FireChoiceDialogueOpened(List responses) 16 | { 17 | ChoiceDialogueOpened?.Invoke(this, new DialogueEventArgs(responses)); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DialogueFramework/Patcher.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Reflection; 7 | 8 | using StardewValley; 9 | 10 | using Harmony; 11 | 12 | namespace DialogueFramework 13 | { 14 | [HarmonyPatch] 15 | class Patch1 16 | { 17 | internal static MethodInfo TargetMethod() 18 | { 19 | return AccessTools.Method(Type.GetType("StardewValley.Game1, Stardew Valley") ?? Type.GetType("StardewValley.Game1, StardewValley"), "isCollidingPosition", new[] { typeof(string), typeof(List) }); 20 | } 21 | 22 | internal static void Prefix(string dialogue, List choices) 23 | { 24 | DialogueFrameworkMod.Api.FireChoiceDialogueOpened(choices); 25 | } 26 | } 27 | [HarmonyPatch] 28 | class Patch2 29 | { 30 | internal static MethodInfo TargetMethod() 31 | { 32 | return AccessTools.Method(Type.GetType("StardewValley.Game1, Stardew Valley") ?? Type.GetType("StardewValley.Game1, StardewValley"), "isCollidingPosition", new[] { typeof(string), typeof(List), typeof(int) }); 33 | } 34 | 35 | internal static void Prefix(string dialogue, List choices) 36 | { 37 | DialogueFrameworkMod.Api.FireChoiceDialogueOpened(choices); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /DiffPatcherV1R0P0/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /DynamicDungeons/ATile.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using xTile.Layers; 3 | using xTile.Tiles; 4 | 5 | namespace Entoarox.DynamicDungeons 6 | { 7 | internal struct ATile : ITile 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | public int X { get; set; } 13 | public int Y { get; set; } 14 | public Layer Layer { get; set; } 15 | public STile[] Frames; 16 | public int Interval; 17 | 18 | 19 | /********* 20 | ** Public methods 21 | *********/ 22 | public ATile(int x, int y, Layer layer, STile[] frames, int interval) 23 | { 24 | this.X = x; 25 | this.Y = y; 26 | this.Layer = layer; 27 | this.Frames = frames; 28 | this.Interval = interval; 29 | } 30 | 31 | public Tile Get() 32 | { 33 | return new AnimatedTile(this.Layer, this.Frames.Select(tile => (StaticTile)tile.Get()).ToArray(), this.Interval); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /DynamicDungeons/ActionInfo.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using StardewValley; 3 | 4 | namespace Entoarox.DynamicDungeons 5 | { 6 | internal class ActionInfo 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public Farmer Player { get; } 12 | public string Action { get; } 13 | public string[] Arguments { get; } 14 | public Vector2 Position { get; } 15 | 16 | 17 | /********* 18 | ** Public methods 19 | *********/ 20 | public ActionInfo(Farmer player, string action, string[] arguments, Vector2 position) 21 | { 22 | this.Player = player; 23 | this.Action = action; 24 | this.Arguments = arguments; 25 | this.Position = position; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /DynamicDungeons/DynamicDungeons.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | DynamicDungeons 5 | Entoarox.DynamicDungeons 6 | 0.1.16 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /DynamicDungeons/DynamicDungeonsAPI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StardewValley; 3 | using SObject = StardewValley.Object; 4 | 5 | namespace Entoarox.DynamicDungeons 6 | { 7 | internal class DynamicDungeonsAPI 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | public double CurrentDifficulty => ModEntry.Location?.Difficulty ?? 0; 13 | public int CurrentFloorLevel => ModEntry.Location?.Floor ?? 0; 14 | public bool InDungeon => Game1.currentLocation != null && Game1.currentLocation is DynamicDungeon; 15 | 16 | 17 | /********* 18 | ** Public methods 19 | *********/ 20 | public void RegisterLootEntry(string table, double dropChance, SObject itemLoot) 21 | { 22 | if (!LootHandler.LootTables.ContainsKey(table)) 23 | LootHandler.LootTables.Add(table, new LootHandler()); 24 | LootHandler.LootTables[table].Add(dropChance, itemLoot); 25 | } 26 | 27 | public void RegisterLootEntry(string table, double dropChance, Func itemLootCallback) 28 | { 29 | if (!LootHandler.LootTables.ContainsKey(table)) 30 | LootHandler.LootTables.Add(table, new LootHandler()); 31 | LootHandler.LootTables[table].Add(dropChance, itemLootCallback); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /DynamicDungeons/DynamicDungeonsSavefile.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using StardewValley.Objects; 3 | 4 | namespace Entoarox.DynamicDungeons 5 | { 6 | internal class DynamicDungeonsSavefile 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public Dictionary LoreFound = new Dictionary(); 12 | public Chest StorageChest = new Chest(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /DynamicDungeons/ITile.cs: -------------------------------------------------------------------------------- 1 | using xTile.Layers; 2 | 3 | namespace Entoarox.DynamicDungeons 4 | { 5 | internal interface ITile 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | int X { get; set; } 11 | int Y { get; set; } 12 | Layer Layer { get; set; } 13 | 14 | 15 | /********* 16 | ** Methods 17 | *********/ 18 | xTile.Tiles.Tile Get(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /DynamicDungeons/PTile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using xTile.Layers; 3 | 4 | namespace Entoarox.DynamicDungeons 5 | { 6 | internal struct PTile : ITile 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public int X { get; set; } 12 | public int Y { get; set; } 13 | public Layer Layer { get; set; } 14 | public string Key; 15 | public string Value; 16 | 17 | 18 | /********* 19 | ** Public methods 20 | *********/ 21 | public PTile(int x, int y, Layer layer, string key, string value) 22 | { 23 | this.X = x; 24 | this.Y = y; 25 | this.Layer = layer; 26 | this.Key = key; 27 | this.Value = value; 28 | } 29 | 30 | public xTile.Tiles.Tile Get() 31 | { 32 | throw new NotImplementedException(); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /DynamicDungeons/Page.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace Entoarox.DynamicDungeons 5 | { 6 | internal abstract class Page 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public abstract void Draw(SpriteBatch batch, Rectangle region); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /DynamicDungeons/STile.cs: -------------------------------------------------------------------------------- 1 | using xTile.Layers; 2 | using xTile.Tiles; 3 | 4 | namespace Entoarox.DynamicDungeons 5 | { 6 | internal struct STile : ITile 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public int X { get; set; } 12 | public int Y { get; set; } 13 | public Layer Layer { get; set; } 14 | public TileSheet Sheet; 15 | public int Index; 16 | 17 | 18 | /********* 19 | ** Public methods 20 | *********/ 21 | public STile(int x, int y, Layer layer, TileSheet sheet, int index) 22 | { 23 | this.X = x; 24 | this.Y = y; 25 | this.Layer = layer; 26 | this.Sheet = sheet; 27 | this.Index = index; 28 | } 29 | 30 | public xTile.Tiles.Tile Get() 31 | { 32 | return new StaticTile(this.Layer, this.Sheet, BlendMode.Additive, this.Index); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /DynamicDungeons/TextPage.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | 5 | namespace Entoarox.DynamicDungeons 6 | { 7 | internal class TextPage : Page 8 | { 9 | /********* 10 | ** Fields 11 | *********/ 12 | private readonly string Text; 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public TextPage(string text) 19 | { 20 | this.Text = text; 21 | } 22 | 23 | public override void Draw(SpriteBatch batch, Rectangle region) 24 | { 25 | string text = Game1.parseText(this.Text, Game1.smallFont, region.Width); 26 | Utility.drawTextWithShadow(batch, text, Game1.smallFont, new Vector2(region.X, region.Y), Game1.textColor); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /DynamicDungeons/Tiles/PropertyTile.cs: -------------------------------------------------------------------------------- 1 | using xTile; 2 | 3 | namespace Entoarox.DynamicDungeons.Tiles 4 | { 5 | internal class PropertyTile : Tile 6 | { 7 | /********* 8 | ** Fields 9 | *********/ 10 | private readonly string Key; 11 | private readonly string Value; 12 | 13 | 14 | /********* 15 | ** Public methods 16 | *********/ 17 | public PropertyTile(int x, int y, string layer, string key, string value) 18 | : base(x, y, layer) 19 | { 20 | this.Key = key; 21 | this.Value = value; 22 | } 23 | 24 | public override void Apply(int x, int y, Map map) 25 | { 26 | map.GetLayer(this.Layer).Tiles[this.X + x, this.Y + y]?.Properties.Add(this.Key, this.Value); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /DynamicDungeons/Tiles/StaticTile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using xTile; 3 | using xTile.Layers; 4 | using xTile.Tiles; 5 | 6 | namespace Entoarox.DynamicDungeons.Tiles 7 | { 8 | internal class StaticTile : Tile 9 | { 10 | /********* 11 | ** Fields 12 | *********/ 13 | private readonly int Index; 14 | private readonly string Sheet; 15 | 16 | 17 | /********* 18 | ** Public methods 19 | *********/ 20 | public StaticTile(int x, int y, string layer, int index, string sheet) 21 | : base(x, y, layer) 22 | { 23 | this.Index = index >= 0 ? index : throw new ArgumentOutOfRangeException(nameof(index)); 24 | this.Sheet = sheet ?? throw new ArgumentNullException(nameof(sheet)); 25 | } 26 | 27 | public override void Apply(int x, int y, Map map) 28 | { 29 | Layer layer = map.GetLayer(this.Layer); 30 | layer.Tiles[this.X + x, this.Y + y] = new xTile.Tiles.StaticTile(layer, map.GetTileSheet(this.Sheet), BlendMode.Additive, this.Index); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /DynamicDungeons/Tiles/Tile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using xTile; 3 | 4 | namespace Entoarox.DynamicDungeons.Tiles 5 | { 6 | internal abstract class Tile 7 | { 8 | /********* 9 | ** Fields 10 | *********/ 11 | protected string Layer; 12 | protected int X; 13 | protected int Y; 14 | 15 | 16 | /********* 17 | ** Public methods 18 | *********/ 19 | public abstract void Apply(int x, int y, Map map); 20 | 21 | public void Apply(Map map) 22 | { 23 | this.Apply(0, 0, map); 24 | } 25 | 26 | 27 | /********* 28 | ** Protected methods 29 | *********/ 30 | protected Tile(int x, int y, string layer) 31 | { 32 | this.X = x >= 0 ? x : throw new ArgumentOutOfRangeException(nameof(x)); 33 | this.Y = y >= 0 ? y : throw new ArgumentOutOfRangeException(nameof(y)); 34 | this.Layer = layer ?? throw new ArgumentNullException(nameof(layer)); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /DynamicDungeons/assets/DynamicDungeonsEntrance.tbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/DynamicDungeonsEntrance.tbin -------------------------------------------------------------------------------- /DynamicDungeons/assets/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/book/doodle1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book/doodle1.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/book/doodle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book/doodle2.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/book/doodle3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/book/doodle3.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/credits.txt: -------------------------------------------------------------------------------- 1 | Extra non-vanilla tiles have been created for me by community members over on the SDV discord. 2 | My thanks to the following people, for their work! 3 | 4 | Prismuth: 5 | - The ore boulder 6 | - The extra minecart tracks 7 | - The background texture used for the book menu 8 | - The custom tiles for the dungeon entrance 9 | 10 | ChefRude: 11 | - The offer statue 12 | - Eye animation on the dwarven vendor 13 | - The ore-vein walls 14 | - The dripping water walls 15 | 16 | Eiri: 17 | - The stalagmites 18 | - The caved-in skeleton 19 | - Creating the dwarven vendor sprite 20 | - Pufferchick NPC -------------------------------------------------------------------------------- /DynamicDungeons/assets/door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/door.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/dungeon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/dungeon.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/entrance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/entrance.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_boulder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_boulder.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_cavein.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_cavein.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_dwarfvendor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_dwarfvendor.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_info.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_stalagmite1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_stalagmite1.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_stalagmite2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_stalagmite2.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_statue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_statue.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_tracks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_tracks.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/sheet_walls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/sheet_walls.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/DoorSpriteSheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/DoorSpriteSheet.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/door_anim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/door_anim.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/door_anim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/door_anim2.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/door_wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/door_wall.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/merged.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/merged.xcf -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/probably_old_robot_thingy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/probably_old_robot_thingy.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/pufferchick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/pufferchick.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/robot_head_animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/robot_head_animation.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/sheet_info.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/sheet_info.xcf -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/sheet_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/sheet_light.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/unused/sheet_walls2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/unused/sheet_walls2.png -------------------------------------------------------------------------------- /DynamicDungeons/assets/zDynamicDungeonsEntrance_tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/DynamicDungeons/assets/zDynamicDungeonsEntrance_tiles.png -------------------------------------------------------------------------------- /DynamicDungeons/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Dynamic Dungeons", 3 | "Author": "Entoarox", 4 | "Version": "0.1.16", 5 | "Description": "Adds new dynamically generated dungeons to stardew valley!", 6 | "UniqueID": "Entoarox.DynamicDungeons", 7 | "EntryDll": "DynamicDungeons.dll", 8 | "MinimumApiVersion": "2.8-beta", 9 | "UpdateKeys": [] 10 | } 11 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Assets/Boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "sneakers": 504, 3 | "rubber_boots": 505, 4 | "leather_boots": 506, 5 | "work_boots": 507, 6 | "combat_boots": 508, 7 | "tundra_boots": 509, 8 | "thermal_boots": 510, 9 | "dark_boots": 511, 10 | "firewalker_boots": 512, 11 | "genie_shoes": 513, 12 | "space_boots": 514, 13 | "cowboy_boots": 515, 14 | "emilys_magic_boots": 804, 15 | "leprechaun_shoes": 806 16 | } -------------------------------------------------------------------------------- /EntoaroxUtilities/Assets/Floor.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } -------------------------------------------------------------------------------- /EntoaroxUtilities/Assets/Ring.json: -------------------------------------------------------------------------------- 1 | { 2 | "amethyst_ring": 529, 3 | "aquamarine_ring": 531, 4 | "burglars_ring": 526, 5 | "crabshell_ring": 810, 6 | "emerald_ring": 533, 7 | "glow_ring": 517, 8 | "iridium_band": 527, 9 | "jade_ring": 532, 10 | "jukebox_ring": 528, 11 | "magnet_ring": 519, 12 | "napalm_ring": 811, 13 | "ring_of_yoba": 524, 14 | "ruby_ring": 534, 15 | "savage_ring": 523, 16 | "slime_charmer_ring": 520, 17 | "small_glow_ring": 516, 18 | "small_magnet_ring": 518, 19 | "sturdy_ring": 525, 20 | "topaz_ring": 530, 21 | "vampire_ring": 522, 22 | "warrior_ring": 521, 23 | } -------------------------------------------------------------------------------- /EntoaroxUtilities/Assets/Wallpaper.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } -------------------------------------------------------------------------------- /EntoaroxUtilities/EUGlobals.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Utilities 2 | { 3 | public static class EUGlobals 4 | { 5 | public static IEntoUtilsApi Api => Internals.Api.EntoUtilsApi.Instance; 6 | 7 | public delegate bool TypeIdResolverDelegate(StardewValley.Item item, ref string typeId); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Internals/Api/ICustomFarmingApi.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.Utilities.Internals.Api 8 | { 9 | interface ICustomFarmingApi 10 | { 11 | StardewValley.Item getCustomObject(string id); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Internals/Api/IJsonAssetsApi.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.Utilities.Internals.Api 4 | { 5 | public interface IJsonAssetsApi 6 | { 7 | int GetObjectId(string name); 8 | int GetBigCraftableId(string name); 9 | int GetHatId(string name); 10 | int GetWeaponId(string name); 11 | int GetClothingId(string name); 12 | 13 | IDictionary GetAllObjectIds(); 14 | IDictionary GetAllBigCraftableIds(); 15 | IDictionary GetAllHatIds(); 16 | IDictionary GetAllWeaponIds(); 17 | IDictionary GetAllClothingIds(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Internals/Api/IPrismaticToolsApi.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Utilities.Internals.Api 2 | { 3 | public interface IPrismaticToolsApi 4 | { 5 | int SprinklerIndex { get; } 6 | int BarIndex { get; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Internals/AssetHandlers/HelperSheetLoader.cs: -------------------------------------------------------------------------------- 1 | using StardewModdingAPI; 2 | 3 | using Microsoft.Xna.Framework.Graphics; 4 | 5 | namespace Entoarox.Utilities.Internals.AssetHandlers 6 | { 7 | class HelperSheetLoader : IAssetLoader 8 | { 9 | public bool CanLoad(IAssetInfo asset) 10 | { 11 | return asset.AssetNameEquals("__EMU_HELPER_TILESHEET.png") || asset.AssetNameEquals("Maps/__EMU_HELPER_TILESHEET.png") || asset.AssetNameEquals("__EMU_HELPER_TILESHEET") || asset.AssetNameEquals("Maps/__EMU_HELPER_TILESHEET"); 12 | } 13 | 14 | public T Load(IAssetInfo asset) 15 | { 16 | return (T)(object)new Texture2D(StardewValley.Game1.graphics.GraphicsDevice, 16, 16); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Internals/Helpers/ModApi.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Utilities.Internals.Helpers 2 | { 3 | using Internals; 4 | public static class ModApi 5 | { 6 | public static bool IsLoadedAndApiAvailable(string mod, out T api) where T : class 7 | { 8 | api = null; 9 | if(EntoUtilsMod.Instance.Helper.ModRegistry.IsLoaded(mod)) 10 | api = EntoUtilsMod.Instance.Helper.ModRegistry.GetApi(mod); 11 | return api != null; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /EntoaroxUtilities/Tools/Timer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using StardewModdingAPI; 8 | 9 | namespace Entoarox.Utilities.Tools 10 | { 11 | public static class Timer 12 | { 13 | private static readonly Dictionary> Timers = new Dictionary>(); 14 | 15 | public static void StartTimer(this IMonitor monitor, string id, string message = null) 16 | { 17 | if (!Timers.ContainsKey(monitor)) 18 | Timers.Add(monitor, new Dictionary()); 19 | Timers[monitor][id] = DateTime.Now; 20 | if (message != null) 21 | monitor.Log(message); 22 | } 23 | public static TimeSpan StopTimer(this IMonitor monitor, string id, string message = null) 24 | { 25 | TimeSpan time = TimeSpan.Zero; 26 | if (Timers.ContainsKey(monitor) && Timers[monitor].ContainsKey(id)) 27 | time = DateTime.Now.Subtract(Timers[monitor][id]); 28 | if (message != null) 29 | monitor.Log(message.Replace("{{TIME}}", time.TotalMilliseconds.ToString())); 30 | return time; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Abstract/AbstractComponent.cs: -------------------------------------------------------------------------------- 1 | using Entoarox.Utilities.UI.Interfaces; 2 | 3 | using Microsoft.Xna.Framework; 4 | using Microsoft.Xna.Framework.Graphics; 5 | 6 | namespace Entoarox.Utilities.UI.Abstract 7 | { 8 | public abstract class AbstractComponent : IComponent 9 | { 10 | public virtual IComponentContainer Container { get; set; } 11 | 12 | public string Id { get; set; } 13 | 14 | protected int _Layer = 0; 15 | public int Layer 16 | { 17 | get => this._Layer; 18 | set 19 | { 20 | this._Layer = value; 21 | this.Container?.MarkDirty(); 22 | } 23 | } 24 | 25 | protected bool _Visible = true; 26 | public bool Visible 27 | { 28 | get => this._Visible; 29 | set 30 | { 31 | this._Visible = value; 32 | this.Container?.MarkDirty(); 33 | } 34 | } 35 | 36 | public virtual Rectangle DisplayRegion { get; set; } 37 | 38 | public abstract void Draw(Rectangle drawRect, SpriteBatch batch); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Abstract/AbstractUpdatingComponent.cs: -------------------------------------------------------------------------------- 1 | using Entoarox.Utilities.UI.Interfaces; 2 | 3 | using Microsoft.Xna.Framework; 4 | 5 | namespace Entoarox.Utilities.UI.Abstract 6 | { 7 | public abstract class AbstractUpdatingComponent : AbstractComponent, IUpdatingComponent 8 | { 9 | public abstract void Update(GameTime time); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Abstract/AbstractUpdatingInteractiveComponent.cs: -------------------------------------------------------------------------------- 1 | using Entoarox.Utilities.UI.Interfaces; 2 | 3 | using Microsoft.Xna.Framework; 4 | 5 | namespace Entoarox.Utilities.UI.Abstract 6 | { 7 | public abstract class AbstractUpdatingInteractiveComponent : AbstractInteractiveComponent, IUpdatingComponent 8 | { 9 | public abstract void Update(GameTime time); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Interfaces/IComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace Entoarox.Utilities.UI.Interfaces 5 | { 6 | public interface IComponent 7 | { 8 | IComponentContainer Container { get; set; } 9 | string Id { get; set; } 10 | int Layer { get; set; } 11 | bool Visible { get; set; } 12 | Rectangle DisplayRegion { get; set; } 13 | 14 | void Draw(Rectangle drawRect, SpriteBatch batch); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Interfaces/IComponentCollection.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Utilities.UI.Interfaces 4 | { 5 | public interface IComponentCollection : IComponentContainer, IInteractiveComponent, IUpdatingComponent 6 | { 7 | Rectangle ComponentRegion { get; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Interfaces/IComponentContainer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.Utilities.UI.Interfaces 4 | { 5 | public interface IComponentContainer : IEnumerable 6 | { 7 | IComponentMenu Menu { get; } 8 | IComponentContainer Components { get; } 9 | 10 | IComponent this[string componentId] { get; } 11 | 12 | void Add(IComponent component); 13 | void Remove(IComponent component); 14 | bool Contains(IComponent component); 15 | void Remove(string componentId); 16 | bool Contains(string componentId); 17 | void MarkDirty(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Interfaces/IComponentMenu.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Utilities.UI.Interfaces 2 | { 3 | public interface IComponentMenu : IComponentContainer 4 | { 5 | IInteractiveComponent FocusComponent { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Interfaces/IInteractiveComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Input; 3 | using Microsoft.Xna.Framework.Graphics; 4 | 5 | namespace Entoarox.Utilities.UI.Interfaces 6 | { 7 | public interface IInteractiveComponent : IComponent 8 | { 9 | bool Enabled { get; set; } 10 | Rectangle FocusRegion { get; } 11 | 12 | IInteractiveComponent NextUp { get; set; } 13 | IInteractiveComponent NextDown { get; set; } 14 | IInteractiveComponent NextLeft { get; set; } 15 | IInteractiveComponent NextRight { get; set; } 16 | 17 | int Scroll(int scrollAmount); 18 | 19 | void MouseIn(Point position); 20 | void MouseMove(Point position); 21 | void MouseOut(Point position); 22 | 23 | void LeftDown(Point position); 24 | void LeftHeld(Point position); 25 | void LeftUp(Point position); 26 | 27 | void RightDown(Point position); 28 | void RightHeld(Point position); 29 | void RightUp(Point position); 30 | 31 | void KeyDown(Keys key); 32 | void KeyHeld(Keys key); 33 | void KeyUp(Keys key); 34 | 35 | void FocusGained(); 36 | void FocusLost(); 37 | 38 | void Draw(Rectangle screenRect, Rectangle drawRect, SpriteBatch batch); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /EntoaroxUtilities/UI/Interfaces/IUpdatingComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Utilities.UI.Interfaces 4 | { 5 | public interface IUpdatingComponent : IComponent 6 | { 7 | void Update(GameTime time); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /EntoaroxUtilities/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Entoarox Modding Utilities", 3 | "Author": "Entoarox", 4 | "Version": "0.1.2", 5 | "Description": "Contains utilities to help make modding easier and provide cross-mod support for common things.", 6 | "UniqueID": "Entoarox.Utilities", 7 | "MinimumApiVersion": "3.8", 8 | "EntryDll": "EntoaroxUtilities.dll", 9 | "UpdateKeys": [ "nexus:5521" ] 10 | } 11 | -------------------------------------------------------------------------------- /EntoaroxUtilities/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ExtendedMinecart/ExtendedMinecart.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ExtendedMinecart 5 | Entoarox.ExtendedMinecart 6 | 1.8.2 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ExtendedMinecart/ModConfig.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.ExtendedMinecart 4 | { 5 | internal class ModConfig 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public bool RefuelingEnabled = true; 11 | public double RefuelRequiredChance = 0.05; 12 | public bool AlternateDesertMinecart = false; 13 | public bool AlternateFarmMinecart = false; 14 | public bool FarmDestinationEnabled = true; 15 | public bool DesertDestinationEnabled = true; 16 | public bool WoodsDestinationEnabled = true; 17 | public bool BeachDestinationEnabled = true; 18 | public bool WizardDestinationEnabled = true; 19 | public bool UseCustomFarmDestination = false; 20 | public Point CustomFarmDestinationPoint = new Point(0, 0); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ExtendedMinecart/README.md: -------------------------------------------------------------------------------- 1 | **Extended Minecart** adds new minecart destinations to the game, that function as both in and out 2 | spots. 3 | 4 | ## Install 5 | 1. [Install the latest version of SMAPI](https://smapi.io). 6 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269). 7 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2271). 8 | 4. Run the game using SMAPI. 9 | 10 | ## Use 11 | This mod adds new minecart destinations that function as both in and out spots. Some of these 12 | destinations unlock immediately, while others have requirements (like the Quarry). As a side-effect 13 | of having more places to go, the carts now have a small chance to run out of fuel and require you 14 | to input 5 coal before you can use them again. 15 | 16 | Made by request of Pathoschild as a somewhat Christmas gift, so share the thanks with him if you 17 | like it! 18 | 19 | ## Compatibility 20 | * For Stardew Valley 1.3.30 or later. 21 | * Compatible with Linux, Mac, or Windows. 22 | * No known mod conflicts. 23 | 24 | ## See also 25 | * [Release notes](RELEASE-NOTES.md) 26 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2271) 27 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-extended-minecart.127425/) 28 | -------------------------------------------------------------------------------- /ExtendedMinecart/i18n/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "choose-destination": "Choose destination", 3 | "needs-refuel.question": "The minecart has run out of fuel. Use 5 coal to refuel it?", 4 | "needs-refuel.no-coal": "The minecart is out of fuel and requires 5 coal to be refueled.", 5 | 6 | "destination.farm": "Farm", 7 | "destination.town": "Town", 8 | "destination.mine": "Mine", 9 | "destination.bus": "Bus", 10 | "destination.quarry": "Quarry", 11 | "destination.desert": "Desert", 12 | "destination.woods": "Woods", 13 | "destination.beach": "Beach", 14 | "destination.wizard": "Wizard" 15 | } 16 | -------------------------------------------------------------------------------- /ExtendedMinecart/i18n/pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "choose-destination": "Escolher Destino", 3 | "needs-refuel.question": "O carrinho ficou sem combustível. Usar 5 carvões para reabastecer?", 4 | "needs-refuel.no-coal": "O carrinho está sem combustível é necessário 5 carvões para voltar a funcionar.", 5 | 6 | "destination.farm": "Fazenda", 7 | "destination.town": "Cidade", 8 | "destination.mine": "Mina", 9 | "destination.bus": "Ônibus", 10 | "destination.quarry": "Pedreira", 11 | "destination.desert": "Deserto", 12 | "destination.woods": "Floresta Abandonada", 13 | "destination.beach": "Praia", 14 | "destination.wizard": "Feiticeiro" 15 | } -------------------------------------------------------------------------------- /ExtendedMinecart/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Extended Minecart", 3 | "Author": "Entoarox", 4 | "Version": "1.9.1", 5 | "Description": "More destinations for your minecart needs!", 6 | "UniqueID": "Entoarox.ExtendedMinecart", 7 | "EntryDll": "ExtendedMinecart.dll", 8 | "MinimumApiVersion": "2.11.0", 9 | "UpdateKeys": [ "Nexus:2271" ], 10 | "Dependencies": [ 11 | { "UniqueID": "Entoarox.EntoaroxFramework" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /FasterPaths/FasterPaths.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | FasterPaths 5 | Entoarox.FasterPaths 6 | 1.3.5 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /FasterPaths/ModConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.FasterPaths 2 | { 3 | public class ModConfig 4 | { 5 | public int WalkSpeedBoost = 0; 6 | public int RunSpeedBoost = 0; 7 | 8 | public int GravelPathBoost = 0; 9 | 10 | public int WoodFloorBoost = 1; 11 | public int WoodPathBoost = 1; 12 | public int PlankFloorBoost = 1; 13 | 14 | public int WeatheredFloorBoost = 2; 15 | public int StrawFloorBoost = 2; 16 | 17 | public int StoneFloorBoost = 3; 18 | public int CobblePathBoost = 3; 19 | public int SteppingStoneBoost = 3; 20 | public int BrickFloorBoost = 3; 21 | public int TownFloorBoost = 3; 22 | 23 | public int CrystalFloorBoost = 4; 24 | public int CrystalPathBoost = 4; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /FasterPaths/README.md: -------------------------------------------------------------------------------- 1 | **Faster Paths** makes you move faster while walking on a path you placed yourself. (To move faster 2 | off path too, run the game with the mod installed once and then edit the `config.json`.) 3 | 4 | ## Install 5 | 1. [Install the latest version of SMAPI](https://smapi.io). 6 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269). 7 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2277). 8 | 4. Run the game using SMAPI. 9 | 10 | ## Compatibility 11 | * For Stardew Valley 1.3.30 or later. 12 | * Compatible with Linux, Mac, or Windows. 13 | * No known mod conflicts. 14 | 15 | ## See also 16 | * [Release notes](RELEASE-NOTES.md) 17 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2277) 18 | * [Discussion thread](https://community.playstarbound.com/resources/smapi-faster-paths.3641/) 19 | -------------------------------------------------------------------------------- /FasterPaths/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Faster Paths", 3 | "Author": "Entoarox", 4 | "Version": "1.3.8", 5 | "Description": "Walk faster on paths, better paths faster movement!", 6 | "UniqueID": "Entoarox.FasterPaths", 7 | "EntryDll": "FasterPaths.dll", 8 | "MinimumApiVersion": "3.8", 9 | "UpdateKeys": [ "Nexus:2277" ], 10 | "Dependencies": [ 11 | { "UniqueID": "Entoarox.EntoaroxFramework" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /Framework/Advanced/PolyTupleHelper.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Advanced 2 | { 3 | internal class PolyTupleHelper 4 | { 5 | /********* 6 | ** Public methods 7 | *********/ 8 | public static int CreateHashCode(params object[] objects) 9 | { 10 | int hash1 = (5381 << 16) + 5381; 11 | int hash2 = hash1; 12 | 13 | int i = 0; 14 | foreach (object obj in objects) 15 | { 16 | int hashCode = obj.GetHashCode(); 17 | if (i % 2 == 0) 18 | hash1 = ((hash1 << 5) + hash1 + (hash1 >> 27)) ^ hashCode; 19 | else 20 | hash2 = ((hash2 << 5) + hash2 + (hash2 >> 27)) ^ hashCode; 21 | ++i; 22 | } 23 | 24 | return hash1 + hash2 * 1566083941; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Framework/Advanced/TupleSyntax.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Advanced 2 | { 3 | public static class TupleSyntax 4 | { 5 | /********* 6 | ** Public methods 7 | *********/ 8 | public static PolyTuple T(T1 item1, T2 item2) 9 | { 10 | return new PolyTuple(item1, item2); 11 | } 12 | 13 | public static PolyTuple T(T1 item1, T2 item2, T3 item3) 14 | { 15 | return new PolyTuple(item1, item2, item3); 16 | } 17 | 18 | public static PolyTuple T(T1 item1, T2 item2, T3 item3, T4 item4) 19 | { 20 | return new PolyTuple(item1, item2, item3, item4); 21 | } 22 | 23 | public static PolyTuple T(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5) 24 | { 25 | return new PolyTuple(item1, item2, item3, item4, item5); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Framework/ApiWrappers/IJsonAssetsAPI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Entoarox.Framework.ApiWrappers 5 | { 6 | 7 | public interface IJsonAssetsAPI 8 | { 9 | void LoadAssets(string path); 10 | 11 | int GetObjectId(string name); 12 | int GetCropId(string name); 13 | int GetFruitTreeId(string name); 14 | int GetBigCraftableId(string name); 15 | int GetHatId(string name); 16 | int GetWeaponId(string name); 17 | 18 | IDictionary GetAllObjectIds(); 19 | IDictionary GetAllCropIds(); 20 | IDictionary GetAllFruitTreeIds(); 21 | IDictionary GetAllBigCraftableIds(); 22 | IDictionary GetAllHatIds(); 23 | IDictionary GetAllWeaponIds(); 24 | 25 | event EventHandler IdsAssigned; 26 | event EventHandler AddedItemsToShop; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Framework/Config/ConfigDropdownAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StardewModdingAPI; 3 | 4 | namespace Entoarox.Framework.Config 5 | { 6 | [Obsolete] 7 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] 8 | public class ConfigDropdownAttribute : ConfigAttribute 9 | { 10 | /********* 11 | ** Accessors 12 | *********/ 13 | internal string[] Options; 14 | 15 | 16 | /********* 17 | ** Public methods 18 | *********/ 19 | /// Configs that can be accessed using must use this attribute or the parent attribute on properties they wish to be dynamic. This attribute is for members of the type where multiple options should be shown in a dropdown. 20 | /// The label to display in front of this config option. 21 | /// The description to show when the label for this config option is hovered over, should explain what the option does. 22 | /// The list of dropdown options to display 23 | public ConfigDropdownAttribute(string label, string description, string[] options) 24 | : base(label, description) 25 | { 26 | this.Options = options; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Framework/Core/AssetHandlers/DeferredAssetInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.Framework.Core.AssetHandlers 4 | { 5 | internal class DeferredAssetInfo 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public Type Type { get; set; } 11 | public Delegate Handler { get; set; } 12 | 13 | 14 | /********* 15 | ** Public methods 16 | *********/ 17 | public DeferredAssetInfo(Type type, Delegate handler) 18 | { 19 | this.Type = type; 20 | this.Handler = handler; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Framework/Core/AssetHandlers/DeferredTypeHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using StardewModdingAPI; 4 | 5 | namespace Entoarox.Framework.Core.AssetHandlers 6 | { 7 | internal class DeferredTypeHandler : IAssetEditor 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | internal static Dictionary> EditMap = new Dictionary>(); 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public bool CanEdit(IAssetInfo asset) 19 | { 20 | return DeferredTypeHandler.EditMap.ContainsKey(typeof(T)); 21 | } 22 | 23 | public void Edit(IAssetData assetData) 24 | { 25 | T asset = assetData.GetData(); 26 | foreach (AssetInjector injector in DeferredTypeHandler.EditMap[typeof(T)]) 27 | injector(assetData.AssetName, ref asset); 28 | assetData.ReplaceWith(asset); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Framework/Core/AssetHandlers/DictionaryInjector.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Entoarox.Framework.Core.Utilities; 3 | using StardewModdingAPI; 4 | 5 | namespace Entoarox.Framework.Core.AssetHandlers 6 | { 7 | internal class DictionaryInjector : IAssetEditor 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | internal static Dictionary Map = new Dictionary(); 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public bool CanEdit(IAssetInfo info) 19 | { 20 | return DictionaryInjector.Map.ContainsKey(info.AssetName) && DictionaryInjector.Map[info.AssetName].DataType == typeof(T); 21 | } 22 | 23 | public void Edit(IAssetData data) 24 | { 25 | DictionaryInjector.Map[data.AssetName].ApplyPatches(data); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Framework/Core/AssetHandlers/TextureInjector.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewModdingAPI; 4 | 5 | namespace Entoarox.Framework.Core.AssetHandlers 6 | { 7 | internal class TextureInjector : IAssetEditor 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | internal static Dictionary> Map = new Dictionary>(); 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public bool CanEdit(IAssetInfo info) 19 | { 20 | return typeof(T) == typeof(Texture2D) && TextureInjector.Map.ContainsKey(info.AssetName); 21 | } 22 | 23 | public void Edit(IAssetData data) 24 | { 25 | IAssetDataForImage img = data.AsImage(); 26 | foreach (TextureInjectorInfo entry in TextureInjector.Map[data.AssetName]) 27 | img.PatchImage(entry.Texture, entry.Source, entry.Destination, PatchMode.Replace); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Framework/Core/AssetHandlers/TextureInjectorInfo.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace Entoarox.Framework.Core.AssetHandlers 5 | { 6 | internal class TextureInjectorInfo 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public Texture2D Texture { get; } 12 | public Rectangle? Source { get; } 13 | public Rectangle? Destination { get; } 14 | 15 | 16 | /********* 17 | ** Public methods 18 | *********/ 19 | public TextureInjectorInfo(Texture2D texture, Rectangle? source, Rectangle? destination) 20 | { 21 | this.Texture = texture; 22 | this.Source = source; 23 | this.Destination = destination; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Framework/Core/AssetHandlers/XnbLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using StardewModdingAPI; 4 | 5 | namespace Entoarox.Framework.Core.AssetHandlers 6 | { 7 | internal class XnbLoader : IAssetLoader 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | internal static Dictionary> Map = new Dictionary>(); 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public bool CanLoad(IAssetInfo asset) 19 | { 20 | return XnbLoader.Map.ContainsKey(asset.AssetName); 21 | } 22 | 23 | public T Load(IAssetInfo asset) 24 | { 25 | return XnbLoader.Map[asset.AssetName].Item1.Load(XnbLoader.Map[asset.AssetName].Item2); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Framework/Core/Injection/HoeDirt_canPlantThisSeedHere.cs: -------------------------------------------------------------------------------- 1 | using Harmony; 2 | using StardewValley; 3 | using StardewValley.TerrainFeatures; 4 | 5 | namespace Entoarox.Framework.Core.Injection 6 | { 7 | [HarmonyPatch(typeof(HoeDirt), "canPlantThisSeedHere", new[] { typeof(int), typeof(int), typeof(int), typeof(bool) })] 8 | internal class HoeDirt_canPlantThisSeedHere 9 | { 10 | /********* 11 | ** Protected methods 12 | *********/ 13 | private static bool Prefix(HoeDirt __instance, bool __return, int objectIndex, int tileX, int tileY, bool isFertilizer) 14 | { 15 | return 16 | isFertilizer 17 | || __instance.crop != null 18 | || !(EntoaroxFrameworkMod.Config.GreenhouseEverywhere || Game1.currentLocation is IAugmentedLocation && (Game1.currentLocation as IAugmentedLocation).IsGreenhouse); 19 | } 20 | 21 | private static void Postfix(HoeDirt __instance, bool __return, int objectIndex, int tileX, int tileY, bool isFertilizer) 22 | { 23 | Crop crop = new Crop(objectIndex, tileX, tileY); 24 | __return = 25 | crop.seasonsToGrowIn.Count != 0 26 | && (!crop.raisedSeeds.Value || !Utility.doesRectangleIntersectTile(Game1.player.GetBoundingBox(), tileX, tileY)); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Framework/Core/Message.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework.Core 4 | { 5 | internal class Message 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public string Text; 11 | public float Alpha; 12 | public int Time; 13 | public int Size; 14 | public Color Color; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Framework/Core/ModConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Core 2 | { 3 | internal class ModConfig 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | /// If extra, possibly somewhat cheaty console commands should be enabled. 9 | public bool TrainerCommands = true; 10 | 11 | /// If every location should be treated like the greenhouse when it comes to crops. 12 | public bool GreenhouseEverywhere = false; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/Core/Serialization/CustomContractResolver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Newtonsoft.Json; 5 | using Newtonsoft.Json.Serialization; 6 | 7 | using System.Xml.Serialization; 8 | using System.Reflection; 9 | 10 | namespace Entoarox.Framework.Core.Serialization 11 | { 12 | internal class CustomContractResolver : DefaultContractResolver 13 | { 14 | /********* 15 | ** Protected methods 16 | *********/ 17 | protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) 18 | { 19 | // get property info 20 | var prop = base.CreateProperty(member, memberSerialization); 21 | var elementAttr = (XmlElementAttribute)prop.AttributeProvider.GetAttributes(typeof(XmlElementAttribute), true).FirstOrDefault(); 22 | var ignoreAttr = (XmlIgnoreAttribute)prop.AttributeProvider.GetAttributes(typeof(XmlIgnoreAttribute), true).FirstOrDefault(); 23 | 24 | // set name 25 | if (!string.IsNullOrWhiteSpace(elementAttr?.ElementName)) 26 | prop.PropertyName = elementAttr.ElementName; 27 | 28 | // set whether to seralize 29 | prop.ShouldSerialize = value => ignoreAttr == null; 30 | return prop; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Framework/Core/Utilities/DictionaryAssetInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using StardewModdingAPI; 3 | 4 | namespace Entoarox.Framework.Core.Utilities 5 | { 6 | internal class DictionaryAssetInfo 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public IContentHelper ContentHelper { get; } 12 | public IDictionary Data { get; } 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public DictionaryAssetInfo(IContentHelper contentHelper, IDictionary data) 19 | { 20 | this.ContentHelper = contentHelper; 21 | this.Data = data; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Framework/Core/Utilities/Events.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StardewModdingAPI; 3 | 4 | namespace Entoarox.Framework.Core.Utilities 5 | { 6 | internal static class Events 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public static void FireEventSafely(string name, Delegate evt, TArgs args, bool obsolete = false) where TArgs : EventArgs 12 | { 13 | if (evt == null) 14 | return; 15 | foreach (Delegate handler in evt.GetInvocationList()) 16 | try 17 | { 18 | if (typeof(TArgs) == typeof(EventArgs)) 19 | (handler as EventHandler).Invoke(null, args); 20 | else 21 | (handler as EventHandler).Invoke(null, args); 22 | if (obsolete) 23 | EntoaroxFrameworkMod.Logger.LogOnce($"The {handler.Method.Name} event handler is using the deprecated {evt.Target.GetType().Name}.{name} event.", LogLevel.Warn); 24 | } 25 | catch (Exception ex) 26 | { 27 | EntoaroxFrameworkMod.Logger.Log($"The {handler.Method.Name} event handler failed handling the {evt.Target.GetType().Name}.{name} event:\n{ex}", LogLevel.Error); 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Framework/Core/Utilities/Globals.cs: -------------------------------------------------------------------------------- 1 | using StardewModdingAPI; 2 | 3 | namespace Entoarox.Framework.Core.Utilities 4 | { 5 | internal static class Globals 6 | { 7 | /********* 8 | ** Public methods 9 | *********/ 10 | public static string GetModName(IModLinked mod) 11 | { 12 | return EntoaroxFrameworkMod.SHelper.ModRegistry.Get(mod.ModID).Manifest.Name; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Framework/Delegates.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework 2 | { 3 | public delegate T AssetLoader(string assetName); 4 | 5 | public delegate void AssetInjector(string assetName, ref T asset); 6 | 7 | public delegate void ReceiveMessage(string modID, string channel, string message, bool broadcast); 8 | } 9 | -------------------------------------------------------------------------------- /Framework/EntoaroxFramework.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | EntoaroxFramework 5 | Entoarox.Framework 6 | 2.4.2 7 | net452 8 | 9 | true 10 | 11 | 7.3 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Always 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Framework/Events/EventArgsActiveItemChanged.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StardewValley; 3 | 4 | namespace Entoarox.Framework.Events 5 | { 6 | public class EventArgsActiveItemChanged : EventArgs 7 | { 8 | public readonly Item OldItem; 9 | public readonly Item NewItem; 10 | 11 | public EventArgsActiveItemChanged(Item oldItem, Item newItem) 12 | { 13 | this.OldItem = oldItem; 14 | this.NewItem = newItem; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Framework/Events/EventArgsArguments.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.Framework.Events 4 | { 5 | public class EventArgsArguments : EventArgs 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public object[] Arguments; 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | public EventArgsArguments(object[] arguments = null) 17 | { 18 | this.Arguments = arguments ?? new object[0]; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Framework/Events/EventArgsEditable.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Events 2 | { 3 | public class EventArgsEditable : EventArgsArguments 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public TReturn Value; 9 | 10 | 11 | /********* 12 | ** Public methods 13 | *********/ 14 | public EventArgsEditable(TReturn value, object[] arguments = null) 15 | : base(arguments) 16 | { 17 | this.Value = value; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Framework/Events/EventArgsReturnable.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Events 2 | { 3 | public class EventArgsReturnable : EventArgsArguments 4 | { 5 | /********* 6 | ** Fields 7 | *********/ 8 | private TReturn _Value; 9 | 10 | 11 | /********* 12 | ** Accessors 13 | *********/ 14 | internal bool ReturnSet; 15 | 16 | public TReturn Value 17 | { 18 | set 19 | { 20 | this.ReturnSet = true; 21 | this._Value = value; 22 | } 23 | get => this._Value; 24 | } 25 | 26 | 27 | /********* 28 | ** Public methods 29 | *********/ 30 | public EventArgsReturnable(object[] arguments = null) 31 | : base(arguments) { } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Framework/Events/MoreEvents.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using EntoEvents = Entoarox.Framework.Core.Utilities.Events; 3 | 4 | namespace Entoarox.Framework.Events 5 | { 6 | public static class MoreEvents 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | /// Triggered whenever a action tile is activated by the player. 12 | public static event EventHandler ActionTriggered; 13 | 14 | /// Triggered whenever a action tile is first walked onto by the player. 15 | public static event EventHandler TouchActionTriggered; 16 | 17 | 18 | /********* 19 | ** Public methods 20 | *********/ 21 | internal static void FireActionTriggered(EventArgsActionTriggered eventArgs) 22 | { 23 | EntoEvents.FireEventSafely("ActionTriggered", ActionTriggered, eventArgs); 24 | } 25 | 26 | internal static void FireTouchActionTriggered(EventArgsActionTriggered eventArgs) 27 | { 28 | EntoEvents.FireEventSafely("TouchActionTriggered", TouchActionTriggered, eventArgs); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Framework/Experimental/PathNode.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Experimental 2 | { 3 | public class PathNode 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public PathNode Parent; 9 | public int X; 10 | public int Y; 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | public PathNode(int x, int y, PathNode parent = null) 17 | { 18 | this.Parent = parent; 19 | this.X = x; 20 | this.Y = y; 21 | } 22 | 23 | public override bool Equals(object obj) 24 | { 25 | return obj is PathNode node && node.X == this.X && node.Y == this.Y; 26 | } 27 | 28 | public override int GetHashCode() 29 | { 30 | return (this.X << 8) | this.Y; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Framework/Extensions/PointExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework.Extensions 4 | { 5 | public static class PointExtensions 6 | { 7 | public static Vector2 ToVector2(this Point self) 8 | { 9 | return new Vector2(self.X, self.Y); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Framework/Extensions/StringExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | 4 | namespace Entoarox.Framework.Extensions 5 | { 6 | public static class StringExtensions 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public static string Base64Encode(this string str) 12 | { 13 | if (str == null) 14 | throw new ArgumentNullException(nameof(str)); 15 | return Convert.ToBase64String(Encoding.UTF8.GetBytes(str)); 16 | } 17 | 18 | public static string Base64Decode(this string str) 19 | { 20 | if (str == null) 21 | throw new ArgumentNullException(nameof(str)); 22 | return Encoding.UTF8.GetString(Convert.FromBase64String(str)); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Framework/IAugmentedLocation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.Framework 4 | { 5 | /// A location which can use extended functionality provided by the framework. 6 | public interface IAugmentedLocation 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | /// The vanilla equivalent of this location. When replacing a vanilla location, this should be set to the type of that location in vanilla. If you are adding a new location, it should be set to null. When not null, the framework will during saving restore the vanilla version, then load the modded version again after loading. 12 | [Obsolete("This API member is not yet functional in the current development build.")] 13 | Type VanillaEquivalent { get; } 14 | 15 | /// Whether to treat the location as a greenhouse for crop behaviour. 16 | bool IsGreenhouse { get; } 17 | 18 | /// Whether to treat the location as a house/sheds for furniture behaviour. Flooring and wallpaper currently will not work in such locations. Serialization of decoratable locations is automatically handled by the framework. 19 | [Obsolete("This API member is not yet functional in the current development build.")] 20 | bool IsDecoratable { get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Framework/IConditionHelper.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework 2 | { 3 | public interface IConditionHelper 4 | { 5 | bool ValidateConditions(string conditions, char separator = ','); 6 | bool ValidateConditions(string[] conditions); 7 | bool ValidateCondition(string condition); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Framework/IContentHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.Framework 4 | { 5 | public interface IContentHandler 6 | { 7 | bool IsLoader { get; } 8 | bool IsInjector { get; } 9 | bool CanInject(string assetName); 10 | bool CanLoad(string assetName); 11 | void Inject(string assetName, ref T asset); 12 | T Load(string assetName, Func loadBase); 13 | } 14 | } -------------------------------------------------------------------------------- /Framework/ICustomItem.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework 2 | { 3 | public interface ICustomItem { } 4 | } 5 | -------------------------------------------------------------------------------- /Framework/IDeserializationHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework 2 | { 3 | public interface IDeserializationHandler 4 | { 5 | bool ShouldDelete(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Framework/IHookedLocation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.Framework 4 | { 5 | [Obsolete("Not for use by mods, designed for use by the framework's location event mechanics.")] 6 | public interface IHookedLocation { } 7 | } 8 | -------------------------------------------------------------------------------- /Framework/IInterModHelper.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework 2 | { 3 | public interface IInterModHelper 4 | { 5 | /********* 6 | ** Methods 7 | *********/ 8 | /// Subscribe for any messages posted to the given channel. 9 | /// The channel to subscribe to 10 | /// The handler to receive any messages with 11 | void Subscribe(string channel, ReceiveMessage handler); 12 | 13 | /// Subscribe for any messages posted to a channel with this mods unique ID as its channel name. 14 | /// 15 | void Subscribe(ReceiveMessage handler); 16 | 17 | /// Publish any given message to the given channel. 18 | /// The channel to publish to 19 | /// The message to publish 20 | void Publish(string channel, string message); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Framework/IMessageHelper.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework 4 | { 5 | public interface IMessageHelper 6 | { 7 | void Add(string message, string name, Color color); 8 | void Add(string message, Color color); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Framework/IPlayerModifierHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Entoarox.Framework 5 | { 6 | public interface IPlayerModifierHelper 7 | { 8 | int Count { get; } 9 | void Add(PlayerModifier modifier); 10 | void AddRange(IEnumerable modifiers); 11 | void Remove(PlayerModifier modifier); 12 | void RemoveAll(Predicate predicate); 13 | void Clear(); 14 | bool Contains(PlayerModifier modifier); 15 | bool Exists(Predicate predicate); 16 | bool TrueForAll(Predicate predicate); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Framework/Indev/CustomAdditionAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.Framework.Indev 4 | { 5 | [Obsolete("This functionality is still in development and thus not meant for production use", true)] 6 | internal class CustomAdditionAttribute : Attribute { } 7 | } 8 | -------------------------------------------------------------------------------- /Framework/Indev/IProfession.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework.Graphics; 2 | 3 | namespace Entoarox.Framework.Indev 4 | { 5 | internal interface IProfession 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | /// The skill level required before this profession can be unlocked. 11 | int SkillLevel { get; } 12 | 13 | /// The internal name of the parent profession needed to unlock this one (or `null` for no parent). 14 | string Parent { get; } 15 | 16 | /// The internal name used for this profession by the code. 17 | string Name { get; } 18 | 19 | /// The name that is visually displayed for this profession. 20 | string DisplayName { get; } 21 | 22 | /// A short description of the benefits this profession gives. 23 | string Description { get; } 24 | 25 | /// The icon for this profession. 26 | Texture2D Icon { get; } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Framework/Indev/PlayerSkillInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.Framework.Indev 4 | { 5 | internal class PlayerSkillInfo 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public int Experience = 0; 11 | public int Level = 0; 12 | public List Professions = new List(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/Indev/RecipeComponent.cs: -------------------------------------------------------------------------------- 1 | using Entoarox.Framework.UI; 2 | 3 | namespace Entoarox.Framework.Indev //.UI 4 | { 5 | internal class RecipeComponent : BaseInteractiveMenuComponent 6 | { 7 | /********* 8 | ** Public methods 9 | *********/ 10 | public RecipeComponent(int item, bool craftable = true) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Framework/Indev/SkillData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.Framework.Indev 4 | { 5 | internal class PlayerSkillData 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public Dictionary Skills = new Dictionary(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Framework/Indev/VanillaProfession.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley.Menus; 4 | 5 | namespace Entoarox.Framework.Indev 6 | { 7 | [Obsolete("Currently in development", true)] 8 | internal class VanillaProfession : IProfession 9 | { 10 | /********* 11 | ** Accessors 12 | *********/ 13 | public int SkillLevel { get; } 14 | 15 | public string Parent { get; } 16 | 17 | public string Name { get; } 18 | 19 | public string DisplayName => LevelUpMenu.getProfessionTitleFromNumber(SkillHelper.VanillaProfessions[this.Name]); 20 | 21 | public string Description => string.Join("\n", LevelUpMenu.getProfessionDescription(SkillHelper.VanillaProfessions[this.Name])); 22 | 23 | public Texture2D Icon => throw new NotImplementedException(); 24 | 25 | 26 | /********* 27 | ** Public methods 28 | *********/ 29 | public VanillaProfession(string name, string parent, int level) 30 | { 31 | this.Name = name; 32 | this.Parent = parent; 33 | this.SkillLevel = level; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Framework/Interface/Base/BaseClickableComponent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | 4 | namespace Entoarox.Framework.Interface 5 | { 6 | public abstract class BaseClickableComponent : BaseDynamicComponent 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public event Action EventClicked; 12 | 13 | 14 | /********* 15 | ** Public methods 16 | *********/ 17 | public override void LeftClick(Point offset, Point position) 18 | { 19 | this.EventClicked?.Invoke(); 20 | base.LeftClick(offset, position); 21 | } 22 | 23 | public override void LeftHeld(Point offset, Point position) 24 | { 25 | this.EventClicked?.Invoke(); 26 | base.LeftHeld(offset, position); 27 | } 28 | 29 | 30 | /********* 31 | ** Protected methods 32 | *********/ 33 | protected BaseClickableComponent(string name, Rectangle bounds, int layer) 34 | : base(name, bounds, layer) { } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Framework/Interface/Base/BaseComponentContainer.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework.Interface 4 | { 5 | public abstract class BaseComponentContainer : BaseComponent, IComponentContainer 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | #pragma warning disable CS0618 // Type or member is obsolete 11 | public InterfaceMenu Menu => this.Owner.Menu; 12 | #pragma warning restore CS0618 // Type or member is obsolete 13 | public Rectangle InnerBounds => this.OuterBounds; 14 | public IDynamicComponent FocusComponent => null; 15 | 16 | 17 | /********* 18 | ** Public methods 19 | *********/ 20 | public abstract bool HasFocus(IDynamicComponent component); 21 | public abstract bool TabBack(); 22 | public abstract bool TabNext(); 23 | 24 | 25 | /********* 26 | ** Protected methods 27 | *********/ 28 | protected BaseComponentContainer(string name, Rectangle bounds, int layer) 29 | : base(name, bounds, layer) { } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Framework/Interface/Base/BaseInputComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework.Interface 4 | { 5 | public abstract class BaseInputComponent : BaseDynamicComponent, IInputComponent 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public bool Selected { get; set; } 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | public abstract void ReceiveInput(char input); 17 | 18 | 19 | /********* 20 | ** Protected methods 21 | *********/ 22 | protected BaseInputComponent(string name, Rectangle bounds, int layer) 23 | : base(name, bounds, layer) { } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Framework/Interface/Containers/GenericComponentCollection.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.Xna.Framework; 3 | 4 | namespace Entoarox.Framework.Interface 5 | { 6 | public class GenericComponentCollection : BaseComponentCollection 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public GenericComponentCollection(string name, Rectangle bounds, int layer = 0) 12 | : base(name, bounds, layer) { } 13 | 14 | public GenericComponentCollection(string name, Rectangle bounds, IEnumerable components, int layer = 0) 15 | : base(name, bounds, layer) 16 | { 17 | foreach (IComponent component in components) 18 | this.AddComponent(component); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Framework/Interface/Interfaces/IControllerComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework.Input; 2 | 3 | namespace Entoarox.Framework.Interface 4 | { 5 | internal interface IControllerComponent 6 | { 7 | /********* 8 | ** Methods 9 | *********/ 10 | bool ReceiveController(Buttons button); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Framework/Interface/Interfaces/IFloatComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Interface 2 | { 3 | public interface IFloatComponent : IDynamicComponent 4 | { 5 | IDynamicComponent FloatComponent { get; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Framework/Interface/Interfaces/IHotkeyComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework.Input; 2 | 3 | namespace Entoarox.Framework.Interface 4 | { 5 | public interface IHotkeyComponent : IDynamicComponent 6 | { 7 | /********* 8 | ** Methods 9 | *********/ 10 | /// This event is triggered whenever a keyboard key is pressed. If or is false, this event will not trigger. If a component is both and then unless is false, input events happen instead of hotkey events. 11 | /// The key pressed. 12 | bool ReceiveHotkey(Keys key); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/Interface/Interfaces/IInputComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Interface 2 | { 3 | public interface IInputComponent : IDynamicComponent 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | /// Input components will only receive input events while this value is true. 9 | bool Selected { get; set; } 10 | 11 | 12 | /********* 13 | ** Methods 14 | *********/ 15 | /// Triggers when a new character is input by the user. Conversion of keyboard input to the correct character values is handled by the framework. If , or is false, this event will not trigger. 16 | /// The input character. 17 | void ReceiveInput(char input); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Framework/Interface/Interfaces/IItemContainer.cs: -------------------------------------------------------------------------------- 1 | using StardewValley; 2 | 3 | namespace Entoarox.Framework.Interface 4 | { 5 | internal interface IItemContainer 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | Item CurrentItem { get; set; } 11 | bool IsGhostSlot { get; } 12 | 13 | /********* 14 | ** Methods 15 | *********/ 16 | bool AcceptsItem(Item item); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Framework/Interface/Interfaces/IVisibilityObserver.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Interface 2 | { 3 | internal interface IVisibilityObserver : IComponentContainer 4 | { 5 | /********* 6 | ** Methods 7 | *********/ 8 | void VisibilityChanged(IComponent component); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Framework/Interface/Misc/Strings.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.Interface 2 | { 3 | internal static class Strings 4 | { 5 | internal static string KeyNotFound = "Component is not attached to this collection"; 6 | internal static string ComponentAttached = "Component is already attached to a collection"; 7 | internal static string ComponentNotAttached = "Component is not attached to a collection"; 8 | internal static string DuplicateKey = "Another component with the same name is already attached to this collection"; 9 | internal static string NullMenu = "Container is not attached to a menu"; 10 | internal static string NullOwner = "Component is not attached to a container"; 11 | internal static string NotAccepted = "Component is not accepted by this collection"; 12 | internal static string ContainerNotAttached = "Container is not attached to a menu"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/Interface/Static/GradientComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | 5 | namespace Entoarox.Framework.Interface 6 | { 7 | public class GradientComponent : BaseComponent 8 | { 9 | /********* 10 | ** Fields 11 | *********/ 12 | private readonly Color FromColor; 13 | private readonly Color ToColor; 14 | private readonly bool Vertical; 15 | 16 | 17 | /********* 18 | ** Public methods 19 | *********/ 20 | public GradientComponent(string name, Rectangle bounds, Color fromColor, Color toColor, bool vertical = false, int layer = 0) 21 | : base(name, bounds, layer) 22 | { 23 | this.FromColor = fromColor; 24 | this.ToColor = toColor; 25 | this.Vertical = vertical; 26 | } 27 | 28 | public override void Draw(Point offset, SpriteBatch batch) 29 | { 30 | Rectangle rect = Utilities.GetDrawRectangle(offset, this.OuterBounds); 31 | batch.Draw(Game1.staminaRect, rect, this.FromColor); 32 | batch.Draw(this.Vertical ? Utilities.GradientTextureVertical : Utilities.GradientTextureHorizontal, rect, this.ToColor); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Framework/README.md: -------------------------------------------------------------------------------- 1 | **Entoarox Framework** contains utilities that other mods can use to simplify their code. All of 2 | its main functionality is designed as extension methods on SMAPI's own API's, thus one simple 3 | `using Entoarox.Framework;` at the top of your file, and all of it is available. 4 | 5 | ## Install 6 | 1. [Install the latest version of SMAPI](https://smapi.io). 7 | 2. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2269). 8 | 3. Run the game using SMAPI. 9 | 10 | ## Compatibility 11 | * For Stardew Valley 1.3.30 or later. 12 | * Compatible with Linux, Mac, or Windows. 13 | * No known mod conflicts. 14 | 15 | ## See also 16 | * [Release notes](RELEASE-NOTES.md) 17 | * [Nexus mod](https://www.nexusmods.com/stardewvalley/mods/2269) 18 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-entoarox-framework.125025/) 19 | -------------------------------------------------------------------------------- /Framework/UI/Base/BaseFormComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.Framework.UI 2 | { 3 | public abstract class BaseFormComponent : BaseInteractiveMenuComponent 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public virtual bool Disabled { get; set; } = false; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Framework/UI/Base/BaseKeyboardFormComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework.Input; 2 | 3 | namespace Entoarox.Framework.UI 4 | { 5 | public abstract class BaseKeyboardFormComponent : BaseFormComponent, IKeyboardComponent 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | public bool Selected { get; set; } 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | public virtual void TextReceived(char chr) { } 17 | 18 | public virtual void TextReceived(string str) { } 19 | 20 | public virtual void CommandReceived(char cmd) { } 21 | 22 | public virtual void SpecialReceived(Keys key) { } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Framework/UI/Containers/BookComponent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Xna.Framework; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | internal class BookComponent : IComponentContainer 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public Rectangle EventRegion => throw new NotImplementedException(); 12 | public Rectangle ZoomEventRegion => throw new NotImplementedException(); 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public FrameworkMenu GetAttachedMenu() 19 | { 20 | throw new NotImplementedException(); 21 | } 22 | 23 | public void GiveFocus(IInteractiveMenuComponent component) 24 | { 25 | throw new NotImplementedException(); 26 | } 27 | 28 | public void ResetFocus() 29 | { 30 | throw new NotImplementedException(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Framework/UI/Containers/ClickableCollectionComponent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.Xna.Framework; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | internal class ClickableCollectionComponent : GenericCollectionComponent 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | public event ClickHandler Handler; 12 | 13 | 14 | /********* 15 | ** Public methods 16 | *********/ 17 | public ClickableCollectionComponent(Point size, ClickHandler handler = null, List components = null) 18 | : base(size, components) 19 | { 20 | if (handler != null) 21 | this.Handler += handler; 22 | } 23 | 24 | public ClickableCollectionComponent(Rectangle area, ClickHandler handler = null, List components = null) 25 | : base(area, components) 26 | { 27 | if (handler != null) 28 | this.Handler += handler; 29 | } 30 | 31 | public override void LeftHeld(Point p, Point o) { } 32 | 33 | public override void LeftUp(Point p, Point o) { } 34 | 35 | public override void LeftClick(Point p, Point o) 36 | { 37 | this.Handler?.Invoke(this, this.Parent, this.Parent.GetAttachedMenu()); 38 | } 39 | 40 | public override void RightClick(Point p, Point o) { } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Framework/UI/Generic/AnimatedComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | 5 | namespace Entoarox.Framework.UI 6 | { 7 | public class AnimatedComponent : BaseMenuComponent 8 | { 9 | /********* 10 | ** Fields 11 | *********/ 12 | protected TemporaryAnimatedSprite Sprite; 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public AnimatedComponent(Point position, TemporaryAnimatedSprite sprite) 19 | { 20 | this.SetScaledArea(new Rectangle(position.X, position.Y, sprite.sourceRect.Width, sprite.sourceRect.Height)); 21 | this.Sprite = sprite; 22 | } 23 | 24 | public override void Update(GameTime t) 25 | { 26 | this.Sprite.update(t); 27 | } 28 | 29 | public override void Draw(SpriteBatch b, Point o) 30 | { 31 | if (this.Visible) 32 | this.Sprite.draw(b, false, o.X + this.Area.X, o.Y + this.Area.Y); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Framework/UI/Generic/ColoredRectangleComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | 5 | namespace Entoarox.Framework.UI 6 | { 7 | internal class ColoredRectangleComponent : BaseMenuComponent 8 | { 9 | /********* 10 | ** Accessors 11 | *********/ 12 | public Color Color; 13 | 14 | 15 | /********* 16 | ** Public methods 17 | *********/ 18 | public ColoredRectangleComponent(Rectangle area, Color color) 19 | { 20 | this.SetScaledArea(area); 21 | this.Color = color; 22 | } 23 | 24 | public override void Draw(SpriteBatch b, Point o) 25 | { 26 | b.Draw(Game1.staminaRect, new Rectangle(this.Area.X + o.X, this.Area.Y + o.Y, this.Area.Width, this.Area.Height), this.Color); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Framework/UI/Generic/FrameComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | using StardewValley; 4 | using StardewValley.Menus; 5 | 6 | namespace Entoarox.Framework.UI 7 | { 8 | public class FrameComponent : BaseMenuComponent 9 | { 10 | /********* 11 | ** Fields 12 | *********/ 13 | protected bool Chrome; 14 | 15 | 16 | /********* 17 | ** Public methods 18 | *********/ 19 | public FrameComponent(Rectangle area, Texture2D texture, Rectangle? crop = null) 20 | : base(area, texture, crop) { } 21 | 22 | public FrameComponent(Rectangle area) 23 | { 24 | this.Chrome = true; 25 | this.SetScaledArea(area); 26 | } 27 | 28 | public override void Draw(SpriteBatch b, Point o) 29 | { 30 | if (!this.Visible) 31 | return; 32 | if (this.Chrome) 33 | FrameworkMenu.DrawMenuRect(b, this.Area.X + o.X, this.Area.Y + o.Y, this.Area.Width, this.Area.Height); 34 | else 35 | IClickableMenu.drawTextureBox(b, this.Texture, this.Crop, this.Area.X + o.X, this.Area.Y + o.Y, this.Area.Width, this.Area.Height, Color.White, Game1.pixelZoom, false); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Framework/UI/Generic/TextureComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | public class TextureComponent : BaseMenuComponent 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public TextureComponent(Rectangle area, Texture2D texture, Rectangle? crop = null) 12 | : base(area, texture, crop) { } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/UI/Interfaces/IComponentCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | public interface IComponentCollection : IComponentContainer 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | List InteractiveComponents { get; } 12 | List StaticComponents { get; } 13 | 14 | 15 | /********* 16 | ** Methods 17 | *********/ 18 | bool AcceptsComponent(IMenuComponent component); 19 | void AddComponent(IMenuComponent component); 20 | void RemoveComponent(IMenuComponent component); 21 | void RemoveComponents() where T : IMenuComponent; 22 | void RemoveComponents(Predicate filter); 23 | void ClearComponents(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Framework/UI/Interfaces/IComponentContainer.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework.UI 4 | { 5 | public interface IComponentContainer 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | Rectangle EventRegion { get; } 11 | Rectangle ZoomEventRegion { get; } 12 | 13 | 14 | /********* 15 | ** Methods 16 | *********/ 17 | void ResetFocus(); 18 | void GiveFocus(IInteractiveMenuComponent component); 19 | FrameworkMenu GetAttachedMenu(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Framework/UI/Interfaces/IIinteractiveMenuComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | 3 | namespace Entoarox.Framework.UI 4 | { 5 | public interface IInteractiveMenuComponent : IMenuComponent 6 | { 7 | bool InBounds(Point position, Point offset); 8 | void LeftClick(Point position, Point offset); 9 | void RightClick(Point position, Point offset); 10 | void LeftHeld(Point position, Point offset); 11 | void LeftUp(Point position, Point offset); 12 | void HoverIn(Point position, Point offset); 13 | void HoverOut(Point position, Point offset); 14 | void HoverOver(Point position, Point offset); 15 | void FocusLost(); 16 | void FocusGained(); 17 | bool Scroll(int direction, Point position, Point offset); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Framework/UI/Interfaces/IKeyboardComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework.Input; 2 | 3 | namespace Entoarox.Framework.UI 4 | { 5 | public interface IKeyboardComponent 6 | { 7 | /********* 8 | ** Accessors 9 | *********/ 10 | bool Selected { get; set; } 11 | 12 | 13 | /********* 14 | ** Public methods 15 | *********/ 16 | void TextReceived(char chr); 17 | void TextReceived(string str); 18 | void CommandReceived(char cmd); 19 | void SpecialReceived(Keys key); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Framework/UI/Interfaces/IMenuComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using Microsoft.Xna.Framework.Graphics; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | public interface IMenuComponent 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | bool Visible { get; set; } 12 | int Layer { get; set; } 13 | IComponentContainer Parent { get; } 14 | 15 | 16 | /********* 17 | ** Public methods 18 | *********/ 19 | void Update(GameTime t); 20 | void Draw(SpriteBatch b, Point offset); 21 | void Attach(IComponentContainer collection); 22 | void Detach(IComponentContainer collection); 23 | void OnAttach(IComponentContainer parent); 24 | void OnDetach(IComponentContainer parent); 25 | Point GetPosition(); 26 | Rectangle GetRegion(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Framework/UI/Wrapper/ClickableCancelComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using StardewValley; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | internal class ClickableCancelComponent : ClickableTextureComponent 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public ClickableCancelComponent(Point position, ClickHandler handler = null) 12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.mouseCursors, handler, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 47), true) { } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/UI/Wrapper/ClickableConfirmComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using StardewValley; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | internal class ClickableConfirmComponent : ClickableTextureComponent 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public ClickableConfirmComponent(Point position, ClickHandler handler = null) 12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.mouseCursors, handler, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 46), true) { } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/UI/Wrapper/ClickableObjectComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using StardewValley; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | internal class ClickableObjectComponent : ClickableTextureComponent 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public ClickableObjectComponent(Point position, int index, ClickHandler handler = null, bool scaleOnHover = true) 12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.objectSpriteSheet, handler, Game1.getSourceRectForStandardTileSheet(Game1.objectSpriteSheet, index, 16, 16), scaleOnHover) { } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/UI/Wrapper/ObjectComponent.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework; 2 | using StardewValley; 3 | 4 | namespace Entoarox.Framework.UI 5 | { 6 | internal class ObjectComponent : TextureComponent 7 | { 8 | /********* 9 | ** Public methods 10 | *********/ 11 | public ObjectComponent(Point position, int index) 12 | : base(new Rectangle(position.X, position.Y, 16, 16), Game1.objectSpriteSheet, Game1.getSourceRectForStandardTileSheet(Game1.objectSpriteSheet, index, 16, 16)) { } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Framework/assets/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/Framework/assets/placeholder.png -------------------------------------------------------------------------------- /Framework/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Entoarox Framework", 3 | "Author": "Entoarox", 4 | "Version": "2.5.2", 5 | "Description": "A collection of APIs to make modding easier.", 6 | "UniqueID": "Entoarox.EntoaroxFramework", 7 | "EntryDll": "EntoaroxFramework.dll", 8 | "MinimumApiVersion": "3.8", 9 | "UpdateKeys": [ "Nexus:2269" ] 10 | } 11 | -------------------------------------------------------------------------------- /FurnitureAnywhere/FurnitureAnywhere.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | FurnitureAnywhere 5 | Entoarox.FurnitureAnywhere 6 | 1.1.7 7 | net452 8 | 9 | true 10 | 11 | 7.3 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | false 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /FurnitureAnywhere/README.md: -------------------------------------------------------------------------------- 1 | **Furniture Anywhere** lets you to place furniture in ANY location. 2 | 3 | ## Install 4 | 1. [Install the latest version of SMAPI](https://smapi.io). 5 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269). 6 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2276). 7 | 4. Run the game using SMAPI. 8 | 9 | ## Use 10 | Furniture Anywhere lets you to place furniture in ANY location. While this is nice and well, due to 11 | technical limitations, outside of the house or sheds, you can only place furniture the same way as 12 | chests or machines, aka, right next to your player. Otherwise, this mod has been tested extensively 13 | and no major issues have been found! So go out there, and make Stardew a furniture abomination as 14 | you wish! 15 | 16 | ## Compatibility 17 | * For Stardew Valley 1.3.30 or later. 18 | * Compatible with Linux, Mac, or Windows. 19 | * No known mod conflicts. 20 | 21 | ## See also 22 | * [Release notes](RELEASE-NOTES.md) 23 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2276) 24 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-furniture-anywhere.126719/) 25 | -------------------------------------------------------------------------------- /FurnitureAnywhere/RELEASE-NOTES.md: -------------------------------------------------------------------------------- 1 | ## Release notes 2 | ## 1.1.7 3 | Released 28 December 2018. (Thanks to Pathoschild!) 4 | 5 | * Updated for the upcoming SMAPI 3.0. 6 | 7 | ## 1.1.6 8 | Released 23 September 2018. (Thanks to Pathoschild and Slamerz!) 9 | 10 | * Updated for Stardew Valley 1.3. 11 | * Fixed Linux/Mac compatibility. 12 | * Removed custom update checks; replaced by standard SMAPI update alerts. 13 | * Refactored internally. 14 | 15 | ## 1.1.5 16 | Released 01 December 2017. 17 | 18 | * Fixed issues in my mod build process that broke most of my mods. 19 | 20 | ## 1.1.2b 21 | Released 01 December 2017. 22 | 23 | * Updated for Entoarox Framework 2.0. 24 | 25 | ## 1.1.2 26 | Released 16 April 2017. (Thanks to Pathoschild!) 27 | 28 | * Updated for SMAPI 1.9. 29 | 30 | ## 1.1.1 31 | Released 10 February 2017. 32 | 33 | * Fixed boxing code so it actually works. 34 | 35 | ## 1.1 36 | Released 10 February 2017. 37 | 38 | * Added boxing code to replace furniture before save, to avoid breaking saves if you uninstall the mod. 39 | 40 | ## 1.0.2 41 | Released 23 November 2016. 42 | 43 | * Fixed mod not working for many players. 44 | * Fixed framework complaining about a type not being handled properly. 45 | * Fixed inconsistent furniture rotation behavior. 46 | * Fixed being able to place furniture so it overlaps another bit of furniture. 47 | * Fixed picking up furniture behaving unintuitively. 48 | 49 | ## 1.0 50 | Released 07 November 2016. 51 | -------------------------------------------------------------------------------- /FurnitureAnywhere/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Furniture Anywhere", 3 | "Author": "Entoarox", 4 | "Version": "1.1.11", 5 | "Description": "Lets you place furniture anywhere you can place chests or machines!", 6 | "UniqueID": "Entoarox.FurnitureAnywhere", 7 | "EntryDll": "FurnitureAnywhere.dll", 8 | "MinimumApiVersion": "2.9.3", 9 | "UpdateKeys": [ "Nexus:2276" ], 10 | "Dependencies": [ 11 | { "UniqueID": "Entoarox.EntoaroxFramework" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /LanguagePatcher/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LanguagePatcher/LanguagePatcher.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | LanguagePatcher 5 | LanguagePatcher 6 | 1.0.0 7 | net452 8 | Exe 9 | 7.3 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /MagicJunimoPet/Ability.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework; 8 | using Microsoft.Xna.Framework.Graphics; 9 | 10 | namespace MagicJunimoPet 11 | { 12 | public abstract class Ability 13 | { 14 | public SmartPet Pet { get; internal set; } 15 | 16 | public abstract string Id { get; } 17 | public virtual string GetName() 18 | { 19 | return MJPModEntry.SHelper.Translation.Get("Ability." + this.Id + ".Name", new { PetName = this.Pet.Name }); 20 | } 21 | public virtual string GetDescription() 22 | { 23 | return MJPModEntry.SHelper.Translation.Get("Ability." + this.Id + ".Description", new { PetName = this.Pet.Name }); 24 | } 25 | public abstract void DrawIcon(Rectangle region, SpriteBatch batch); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /MagicJunimoPet/Behaviour.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework; 8 | 9 | using StardewValley; 10 | using StardewValley.Locations; 11 | 12 | namespace MagicJunimoPet 13 | { 14 | public abstract class Behaviour 15 | { 16 | protected readonly SmartPet Pet; 17 | public Behaviour(SmartPet pet) 18 | { 19 | this.Pet = pet; 20 | } 21 | public abstract void OnBehaviour(GameTime time); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MagicJunimoPet/IActiveAbility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework; 8 | using Microsoft.Xna.Framework.Graphics; 9 | 10 | using StardewValley; 11 | 12 | namespace MagicJunimoPet 13 | { 14 | interface IActiveAbility 15 | { 16 | string GetLabel(); 17 | void OnTrigger(Farmer who); 18 | void DrawTriggerIcon(Rectangle region, SpriteBatch batch); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MagicJunimoPet/IRankedAbility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace MagicJunimoPet 8 | { 9 | interface IRankedAbility 10 | { 11 | int Rank { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MagicJunimoPet/IRestrictedAbility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace MagicJunimoPet 8 | { 9 | interface IRestrictedAbility 10 | { 11 | bool IsAvailable(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MagicJunimoPet/ISkinAbility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework.Graphics; 8 | 9 | namespace MagicJunimoPet 10 | { 11 | interface ISkinAbility 12 | { 13 | void DrawPet(SpriteBatch batch); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MagicJunimoPet/ITickingAbility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework; 8 | 9 | namespace MagicJunimoPet 10 | { 11 | interface ITickingAbility 12 | { 13 | void OnUpdate(GameTime time); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MagicJunimoPet/MagicJunimoPet.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | MagicJunimoPet 5 | MagicJunimoPet 6 | 1.1.2 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /MagicJunimoPet/PetState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace MagicJunimoPet 8 | { 9 | public enum PetState 10 | { 11 | Wandering, 12 | Following, 13 | Idling 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MagicJunimoPet/Renderer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework; 8 | using Microsoft.Xna.Framework.Graphics; 9 | 10 | namespace MagicJunimoPet 11 | { 12 | public abstract class Renderer 13 | { 14 | public abstract void Draw(SmartPet pet, SpriteBatch batch); 15 | public abstract void Update(SmartPet pet, GameTime time); 16 | public virtual string HappySound => "Silence"; 17 | public virtual string ThudSound => "Silence"; 18 | public virtual string WagSound => "Silence"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MagicJunimoPet/assets/junimo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MagicJunimoPet/assets/junimo.png -------------------------------------------------------------------------------- /MagicJunimoPet/i18n/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "FirstMessage": "You have found your first hidden junimo, find all five to wake up the Magic Junimo!", 3 | "FoundMessage": "You have found hidden junimo {{TotalFound}} of 5, find them all to wake up the Magic Junimo!", 4 | "LastMessage": "You have found all hidden junimo's and awoken the Magic Junimo, it will reach your farm tomorrow.", 5 | "EmptyMessage": "The junimo that was hidden here has since moved on." 6 | } 7 | -------------------------------------------------------------------------------- /MagicJunimoPet/i18n/ko.json: -------------------------------------------------------------------------------- 1 | { 2 | "FirstMessage": "당신은 첫번째 숨겨진 주니모를 찾으셨습니다, 다섯 주니모를 전부 찾아 마법 주니모를 깨우세요!", 3 | "FoundMessage": "당신은 5마리 중 {{TotalFound}}마리의 숨겨진 주니모를 찾았습니다, 전부 찾아서 마법 주니모를 깨우세요!", 4 | "LastMessage": "당신은 모든 숨겨진 주니모들을 찾았으며 마법 주니모를 깨웠습니다, 내일 당신의 농장에 깜짝 손님이 도착할 겁니다.", 5 | "EmptyMessage": "주니모가 이 곳에 숨어있었습니다, 이사가기 전까지는요." 6 | } 7 | -------------------------------------------------------------------------------- /MagicJunimoPet/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Magic Junimo Pet", 3 | "Author": "Entoarox", 4 | "Version": "1.2.2", 5 | "Description": "Adds a magic junimo who will come to live on your farm after you finish aiding his family.", 6 | "UniqueID": "Entoarox.MagicJunimoPet", 7 | "EntryDll": "MagicJunimoPet.dll", 8 | "MinimumApiVersion": "2.11.0", 9 | "UpdateKeys": [ "Nexus:3567" ] 10 | } 11 | -------------------------------------------------------------------------------- /MoreAnimals/Framework/AnimalSkin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.MorePetsAndAnimals.Framework 4 | { 5 | /// An animal skin. 6 | internal class AnimalSkin 7 | { 8 | /********* 9 | ** Accessors 10 | *********/ 11 | /// The animal type. 12 | public string AnimalType { get; } 13 | 14 | /// A unique skin ID for the animal type. 15 | public int ID { get; } 16 | 17 | /// The internal asset key. 18 | public string AssetKey { get; } 19 | 20 | 21 | /********* 22 | ** Public methods 23 | *********/ 24 | /// Construct an instance. 25 | /// The animal type. 26 | /// A unique skin ID for the animal type. 27 | /// The internal asset key. 28 | public AnimalSkin(string animalType, int id, string assetKey) 29 | { 30 | this.AnimalType = animalType; 31 | this.ID = id; 32 | this.AssetKey = assetKey; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /MoreAnimals/MoreAnimals.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | MoreAnimals 5 | Entoarox.MorePetsAndAnimals 6 | 3.0.2 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /MoreAnimals/assets/box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/box.png -------------------------------------------------------------------------------- /MoreAnimals/assets/credits.txt: -------------------------------------------------------------------------------- 1 | dog_1 Bouhm 2 | dog_2 WildSpirits 3 | dog_3 WildSpirits 4 | dog_4 iWonTheWorld 5 | dog_5 Zhuria 6 | dog_6 Zhuria 7 | dog_7 Zhuria 8 | dog_8 Tofuffalo 9 | dog_9 BunnyBuns 10 | 11 | cat_1 WildSpirits 12 | cat_2 WildSpirits 13 | cat_3 JamieDepledge 14 | cat_4 Inccubus 15 | cat_5 Vixxi 16 | cat_6 mkslux00 17 | cat_7 BlackBodyX64 18 | cat_8 Ex0dus13 19 | cat_9 Ex0dus13 -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/BabyDuck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/BabyDuck.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_1.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_2.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_3.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_4.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_5.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_6.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_7.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_8.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/cat_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/cat_9.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_1.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_2.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_3.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_4.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_5.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_6.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_7.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_8.png -------------------------------------------------------------------------------- /MoreAnimals/assets/skins/dog_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/MoreAnimals/assets/skins/dog_9.png -------------------------------------------------------------------------------- /MoreAnimals/i18n/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "Just an empty box.", 3 | "AdoptMessage": "Oh dear, it looks like someone has abandoned a poor {{petType}} here! Perhaps you should pay Marnie {{adoptionPrice}} gold to give it a checkup so you can adopt it?", 4 | "AdoptNoGold": "Unfortunately I do not have the required {{adoptionPrice}} gold in order to do this.", 5 | "AdoptYes": "Yes, I really should adopt the poor animal!", 6 | "AdoptNo": "No, I do not have the space to house it.", 7 | "ChooseName": "Choose a name", 8 | "Adopted": "Marnie will bring {{petName}} to your house once their have had their checkup." 9 | } 10 | -------------------------------------------------------------------------------- /MoreAnimals/i18n/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "Solo es una caja vacía.", 3 | "AdoptMessage": "¡Oh cielos, parece que alguien ha abandonado un ejemplar de {{petType}}! Quizás pueda pagarle a Marnie {{adoptionPrice}}G para que le haga un chequeo y así poder adoptarlo.", 4 | "AdoptNoGold": "Desgraciadamente, no tengo los {{adoptionPrice}}G para hacerlo.", 5 | "AdoptYes": "¡Sí, debería adoptar al pobre animal!", 6 | "AdoptNo": "No, no tengo espacio para acogerlo.", 7 | "ChooseName": "Elige un nombre", 8 | "Adopted": "Marnie llevará a {{petName}} a tu casa una vez le haya hecho el chequeo." 9 | } 10 | -------------------------------------------------------------------------------- /MoreAnimals/i18n/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "Juste une boîte vide.", 3 | "AdoptMessage": "Oh non, on dirait que quelqu'un a abandonné un pauvre {{petType}} ici ! Peut-être devriez-vous payer Marnie {{adoptionPrice}} po pour qu'elle lui fasse un bilan de santé pour pouvoir l'adopter ?", 4 | "AdoptNoGold": "Malheureusement, je n'ai pas les {{adoptionPrice}} po nécessaires pour le faire.", 5 | "AdoptYes": "Oui, je devrais vraiment adopter ce pauvre animal !", 6 | "AdoptNo": "Non, je n'ai pas la place pour l'accueillir.", 7 | "ChooseName": "Choisissez un nom", 8 | "Adopted": "Marnie amènera {{petName}} chez vous une fois qu'elle aura fait leur bilan de santé." 9 | } 10 | -------------------------------------------------------------------------------- /MoreAnimals/i18n/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "Soltanto una scatola vuota.", 3 | "AdoptMessage": "Oh no, a quanto pare qualcuno ha abbandonato un {{petType}} qui! Magari potresti pagare {{adoptionPrice}} a Marnie per un controllo, così da adottarlo?", 4 | "AdoptNoGold": "Purtroppo non ho i {{adoptionPrice}} richiesti per poterlo fare.", 5 | "AdoptYes": "Sì, dovrei proprio adottarlo!", 6 | "AdoptNo": "No, non ho spazio per ospitarlo.", 7 | "ChooseName": "Scegli un nome", 8 | "Adopted": "Marnie porterà {{petName}} a casa tua subito dopo il controllo." 9 | } 10 | -------------------------------------------------------------------------------- /MoreAnimals/i18n/ko.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "단지 빈 상자일 뿐이다.", 3 | "AdoptMessage": "오 이런, 누군가가 여기에 불쌍한 고양이 {petType} 한 마리를 버리고 간 것 같군요! 마니에게 {adoptionPrice} G를 지불하고 검진을 받아서 이 아이를 입양하시겠어요?", 4 | "AdoptNoGold": "이런 불행하게도, 제게는 {adoptionPrice} G만큼의 현금이 없는 것 같군요.", 5 | "AdoptYes": "네, 실로 불쌍한 이 동물을 입양해 돌봐줘야겠어요!", 6 | "AdoptNo": "아니요, 제 집에 새 애완동물을 들일만한 여력이 없어요.", 7 | "ChooseName": "이름을 지어주세요.", 8 | "Adopted": "필수적 예방 접종 및 단장을 모두 끝마치고 나면 마니가 {petName}을/를 당신의 집으로 데려다 줄 것입니다." 9 | } 10 | -------------------------------------------------------------------------------- /MoreAnimals/i18n/pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "Apenas uma caixa vazia.", 3 | "AdoptMessage": "Poxa vida, parece que alguém abandonou um pobre {{petType}} aqui! Talvez você deva pagar {{adoptionPrice}} ouro a Marnie para dar uma olhada nele e então adotá-lo?", 4 | "AdoptNoGold": "Infelizmente eu não tenho {{adoptionPrice}} ouro necessário para fazer isso.", 5 | "AdoptYes": "Sim, eu realmente devo adotar o pobre animal!", 6 | "AdoptNo": "Não, eu não tenho o espaço necessário em casa.", 7 | "ChooseName": "Escolha um nome", 8 | "Adopted": "A Marnie vai trazer o {{petName}} para sua casa assim que eles derem uma olhada nele." 9 | } -------------------------------------------------------------------------------- /MoreAnimals/i18n/zh.json: -------------------------------------------------------------------------------- 1 | { 2 | "EmptyBox": "只是一个空箱子。", 3 | "AdoptMessage": "啊,天呀!看起来有一只被遗弃又可怜的{{petType}}在这里!也许你应该付给玛妮{{adoptionPrice}}元,给它做个检查,看看能不能领养它?", 4 | "AdoptNoGold": "很不幸的,我并没有{{adoptionPrice}}元做这件事。", 5 | "AdoptYes": "是,我真的应该领养这只可怜的动物!", 6 | "AdoptNo": "不,我没有空间收留它。", 7 | "ChooseName": "取一个名字", 8 | "Adopted": "一旦他们做了检查,玛妮将会带{{petName}}去你家。" 9 | } 10 | -------------------------------------------------------------------------------- /MoreAnimals/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "More Animals", 3 | "Author": "Entoarox, see credits.txt for texture authors", 4 | "Version": "3.0.4", 5 | "Description": "Lets you adopt more pets, with skins of your choice! - Now also includes randomised animal skins!", 6 | "UniqueID": "Entoarox.MoreAnimals", 7 | "EntryDll": "MoreAnimals.dll", 8 | "MinimumApiVersion": "2.11.0", 9 | "UpdateKeys": [ "Nexus:2274" ], 10 | "Dependencies": [ 11 | { "UniqueID": "Entoarox.EntoaroxFramework" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /PlayGround/EF 2.1/IProfession.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xna.Framework.Graphics; 2 | 3 | namespace Entoarox.Framework 4 | { 5 | interface IProfession 6 | { 7 | /// 8 | /// The skill level required before this profession can be unlocked 9 | /// 10 | int SkillLevel { get; } 11 | /// 12 | /// The internal name of the parent profession needed to unlock this one (or `null` for no parent) 13 | /// 14 | string Parent { get; } 15 | /// 16 | /// The internal name used for this profession by the code 17 | /// 18 | string Name { get; } 19 | /// 20 | /// The name that is visually displayed for this profession 21 | /// 22 | string DisplayName { get; } 23 | /// 24 | /// A short description of the benefits this profession gives 25 | /// 26 | string Description { get; } 27 | /// 28 | /// The icon for this profession 29 | /// 30 | Texture2D Icon { get; } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /PlayGround/EF 2.1/RecipeComponent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Entoarox.Framework.UI 8 | { 9 | class RecipeComponent : BaseInteractiveMenuComponent 10 | { 11 | public RecipeComponent(int item, bool craftable=true) 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /PlayGround/EF 2.1/SkillData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Entoarox.Framework.Core.Skills 4 | { 5 | class PlayerSkillData 6 | { 7 | #pragma warning disable CS0649 8 | public class SkillInfo 9 | { 10 | public int Experience; 11 | public int Level; 12 | public List Professions; 13 | } 14 | public Dictionary Skills; 15 | #pragma warning restore CS0649 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /PlayGround/EF 2.1/VanillaProfession.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Microsoft.Xna.Framework; 8 | using Microsoft.Xna.Framework.Graphics; 9 | 10 | using SFarmer = StardewValley.Farmer; 11 | using StardewValley.Menus; 12 | 13 | namespace Entoarox.Framework.Core.Skills 14 | { 15 | [Obsolete("Currently in development",true)] 16 | class VanillaProfession : IProfession 17 | { 18 | private string _Name; 19 | private string _Parent; 20 | private int _Level; 21 | public VanillaProfession(string name, string parent, int level) 22 | { 23 | this._Name = name; 24 | this._Parent = parent; 25 | this._Level = level; 26 | } 27 | public int SkillLevel => this._Level; 28 | 29 | public string Parent => this._Parent; 30 | 31 | public string Name => this._Name; 32 | 33 | public string DisplayName => LevelUpMenu.getProfessionTitleFromNumber(SkillHelper._VanillaProfessions[this._Name]); 34 | 35 | public string Description => string.Join("\n", LevelUpMenu.getProfessionDescription(SkillHelper._VanillaProfessions[this._Name])); 36 | 37 | public Texture2D Icon => throw new NotImplementedException(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /PlayGround/PlayGround.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | PlayGround 5 | PlayGround 6 | 0.0.1 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /PlayGround/WrapperTest/IWrapper.cs: -------------------------------------------------------------------------------- 1 | namespace PlayGround.WrapperTest 2 | { 3 | interface IWrapper 4 | { 5 | void CallMethod(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /PlayGround/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Playerground", 3 | "Author": "Entoarox", 4 | "Version": "0.0.1", 5 | "Description": "Dev mod, not for use by end-users!", 6 | "UniqueID": "Entoarox.Playground", 7 | "EntryDll": "PlayGround.dll", 8 | "MinimumApiVersion": "2.8-beta", 9 | "UpdateKeys": [] 10 | } 11 | -------------------------------------------------------------------------------- /SeasonalImmersion/ContentMode.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.SeasonalImmersion 2 | { 3 | internal enum ContentMode 4 | { 5 | Directory, 6 | Zipped, 7 | Internal 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Big Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Big Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Big Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Big Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Deluxe Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Deluxe Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Deluxe Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Deluxe Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Earth Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Earth Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Gold Clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Gold Clock.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Mill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Mill.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Shed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Shed.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Silo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Silo.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Slime Hutch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Slime Hutch.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Stable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Stable.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Water Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Water Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/Well.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/Well.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/fall/houses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/fall/houses.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Seasonal Buildings", 3 | "Author": "eLe", 4 | "Version": "1.0.0", 5 | "Description": "Adding seasonal sprucing up to the buildings", 6 | } 7 | -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Big Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Big Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Big Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Big Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Deluxe Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Deluxe Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Deluxe Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Deluxe Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Earth Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Earth Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Gold Clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Gold Clock.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Mill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Mill.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Shed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Shed.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Silo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Silo.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Slime Hutch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Slime Hutch.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Stable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Stable.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Water Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Water Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/Well.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/Well.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/spring/houses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/spring/houses.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Big Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Big Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Big Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Big Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Deluxe Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Deluxe Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Deluxe Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Deluxe Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Earth Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Earth Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Gold Clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Gold Clock.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Mill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Mill.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Shed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Shed.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Silo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Silo.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Slime Hutch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Slime Hutch.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Stable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Stable.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Water Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Water Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/Well.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/Well.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/summer/houses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/summer/houses.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Big Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Big Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Big Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Big Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Deluxe Barn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Deluxe Barn.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Deluxe Coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Deluxe Coop.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Earth Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Earth Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Gold Clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Gold Clock.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Mill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Mill.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Shed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Shed.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Silo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Silo.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Slime Hutch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Slime Hutch.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Stable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Stable.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Water Obelisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Water Obelisk.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/Well.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/Well.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPack/winter/houses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/ContentPack/winter/houses.png -------------------------------------------------------------------------------- /SeasonalImmersion/ContentPackManifest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Entoarox.SeasonalImmersion 4 | { 5 | internal class ContentPackManifest 6 | { 7 | #pragma warning disable CS0649 8 | public string Name; 9 | public string Author; 10 | public Version Version; 11 | #pragma warning restore CS0649 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /SeasonalImmersion/Ionic.Zip.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/SeasonalImmersion/Ionic.Zip.dll -------------------------------------------------------------------------------- /SeasonalImmersion/ModConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.SeasonalImmersion 2 | { 3 | /// The mod configuration options. 4 | internal class ModConfig 5 | { 6 | /// Whether to log more detailed info for troubleshooting. 7 | public bool VerboseLog { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SeasonalImmersion/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Seasonal Immersion", 3 | "Author": "Entoarox", 4 | "Version": "1.12.1", 5 | "Description": "Immerse yourself in a more seasonal world!", 6 | "UniqueID": "Entoarox.SeasonalImmersion", 7 | "EntryDll": "SeasonalImmersion.dll", 8 | "MinimumApiVersion": "2.8-beta", 9 | "UpdateKeys": [ "Nexus:2273" ] 10 | } 11 | -------------------------------------------------------------------------------- /ShopExpander/README.md: -------------------------------------------------------------------------------- 1 | **Shop Expander** lets you buy often-needed resources like wood/stone/seeds in bulk from the appropriate vendor. 2 | 3 | ## Install 4 | 1. [Install the latest version of SMAPI](https://smapi.io). 5 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269). 6 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2278). 7 | 4. Run the game using SMAPI. 8 | 9 | ## Use 10 | This mod uses the Custom Conditions System included in the Entoarox Framework library; see 11 | [the documentation](https://github.com/Entoarox/StardewMods/blob/master/Framework/ConditionDocumentation.md) 12 | for more info. 13 | 14 | ## Compatibility 15 | * For Stardew Valley 1.3.30 or later. 16 | * Compatible with Linux, Mac, or Windows. 17 | * No known mod conflicts. 18 | 19 | ## See also 20 | * [Release notes](RELEASE-NOTES.md) 21 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2278) 22 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-shop-expander.127913/) 23 | -------------------------------------------------------------------------------- /ShopExpander/Reference.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.ShopExpander 2 | { 3 | internal class Reference 4 | { 5 | /********* 6 | ** Accessors 7 | *********/ 8 | public string Owner; 9 | public int Item; 10 | public int Amount; 11 | public string Conditions = null; 12 | 13 | 14 | /********* 15 | ** Public methods 16 | *********/ 17 | public Reference(string owner, int item, int amount, string conditions = null) 18 | { 19 | this.Owner = owner; 20 | this.Item = item; 21 | this.Amount = amount; 22 | this.Conditions = conditions; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ShopExpander/ShopExpander.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ShopExpander 5 | Entoarox.ShopExpander 6 | 1.6.2 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ShopExpander/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Shop Expander", 3 | "Author": "Entoarox", 4 | "Version": "1.6.5", 5 | "Description": "Adds bulk options for wood & stone to the carpenter.", 6 | "UniqueID": "Entoarox.ShopExpander", 7 | "EntryDll": "ShopExpander.dll", 8 | "MinimumApiVersion": "2.9.3", 9 | "UpdateKeys": [ "Nexus:2278" ], 10 | "Dependencies": [ 11 | { "UniqueID": "Entoarox.EntoaroxFramework" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /SitForStaminaMod/Config.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.SitForStamina 2 | { 3 | class Config 4 | { 5 | public uint TicksPerRegen = 5; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /SitForStaminaMod/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Sit For Stamina", 3 | "Author": "Entoarox", 4 | "Version": "1.0", 5 | "Description": "Passively regen stamina while sitting.", 6 | "UniqueID": "Entoarox.SitForStamina", 7 | "MinimumApiVersion": "3.8", 8 | "EntryDll": "SitForStamina.dll", 9 | "UpdateKeys": [ "nexus:7334" ] 10 | } 11 | -------------------------------------------------------------------------------- /SitForStaminaMod/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /StardewModdingAPI191113(1).vspx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191113(1).vspx -------------------------------------------------------------------------------- /StardewModdingAPI191113(2).vspx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191113(2).vspx -------------------------------------------------------------------------------- /StardewModdingAPI191113.vspx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191113.vspx -------------------------------------------------------------------------------- /StardewModdingAPI191207.vspx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI191207.vspx -------------------------------------------------------------------------------- /StardewModdingAPI200220.vspx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Entoarox/StardewMods/32ee759fce26aebbb14947727da1b7d3e592d78d/StardewModdingAPI200220.vspx -------------------------------------------------------------------------------- /TDiffMaker/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /TDiffMaker/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /XnbLoader/ModConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Entoarox.XnbLoader 2 | { 3 | /// The mod configuration options. 4 | internal class ModConfig 5 | { 6 | /// Whether to log more detailed info for troubleshooting. 7 | public bool VerboseLog { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /XnbLoader/README.md: -------------------------------------------------------------------------------- 1 | **XNB Loader** lets you install any XNB mod just by adding it in this mod's `ModContent` folder, 2 | without needing to change any of the game's real files. 3 | 4 | ## Install 5 | 1. [Install the latest version of SMAPI](https://smapi.io). 6 | 2. [Install Entoarox Framework](https://www.nexusmods.com/stardewvalley/mods/2269). 7 | 3. [Install this mod from Nexus Mods](https://www.nexusmods.com/stardewvalley/mods/2275). 8 | 4. Run the game using SMAPI. 9 | 5. Once installed, you can add XNB mods in the `Stardew Valley\Mods\XNBLoader\ModContent` folder. 10 | 11 | ## Compatibility 12 | * For Stardew Valley 1.3.30 or later. 13 | * Compatible with Linux, Mac, or Windows. 14 | * No known mod conflicts. 15 | 16 | ## See also 17 | * [Release notes](RELEASE-NOTES.md) 18 | * [Nexus mod](http://www.nexusmods.com/stardewvalley/mods/2275) 19 | * [Discussion thread](https://community.playstarbound.com/threads/smapi-xnb-loader.130047/) 20 | -------------------------------------------------------------------------------- /XnbLoader/XnbLoader.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | XnbLoader 5 | Entoarox.XnbLoader 6 | 1.1.11 7 | net452 8 | 7.3 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /XnbLoader/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "Xnb Loader", 3 | "Author": "Entoarox", 4 | "Version": "1.1.11", 5 | "Description": "Safely load custom xnb files without touching your Content directory!", 6 | "UniqueID": "Entoarox.XnbLoader", 7 | "EntryDll": "XnbLoader.dll", 8 | "MinimumApiVersion": "2.8-beta", 9 | "UpdateKeys": [ "Nexus:2275" ], 10 | "Dependencies": [ 11 | { 12 | "UniqueID": "Entoarox.EntoaroxFramework" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /common.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Entoarox 6 | https://github.com/Entoarox/StardewMods 7 | git 8 | 9 | 10 | 7.1 11 | x86 12 | x86 13 | 14 | 15 | 16 | --------------------------------------------------------------------------------