Initial project scaffold for VS Vineyard mod
Sets up C# .NET 8 project with modinfo.json, ModSystem entry point, full asset directory structure, .gitignore, and README. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
19
.gitignore
vendored
Normal file
19
.gitignore
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Build output
|
||||||
|
bin/
|
||||||
|
obj/
|
||||||
|
releases/
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
|
*.user
|
||||||
|
*.suo
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
72
README.md
Normal file
72
README.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# VS Vineyard
|
||||||
|
|
||||||
|
A Vintage Story mod adding viticulture and winemaking mechanics.
|
||||||
|
|
||||||
|
## Features (Planned)
|
||||||
|
|
||||||
|
- Grape vine blocks with seasonal growth stages
|
||||||
|
- Grape harvesting and pressing into juice
|
||||||
|
- Fermentation and barrel aging system
|
||||||
|
- Multiple wine varieties with stat effects
|
||||||
|
- Wild grape vines in world generation
|
||||||
|
|
||||||
|
## Development Setup
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
|
||||||
|
- Vintage Story installed
|
||||||
|
|
||||||
|
### Environment Variable
|
||||||
|
|
||||||
|
Set `VINTAGE_STORY` to your game installation path:
|
||||||
|
|
||||||
|
**Linux:**
|
||||||
|
```bash
|
||||||
|
export VINTAGE_STORY="$HOME/.local/share/vintagestory"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows (PowerShell):**
|
||||||
|
```powershell
|
||||||
|
$env:VINTAGE_STORY = "$env:APPDATA\Vintagestory"
|
||||||
|
```
|
||||||
|
|
||||||
|
Add this to your shell profile so it persists.
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet build # Debug build
|
||||||
|
dotnet build -c Release # Release build + creates releases/vsvineyard-x.x.x.zip
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install for Testing
|
||||||
|
|
||||||
|
Symlink or copy the `releases/*.zip` into your Mods folder:
|
||||||
|
|
||||||
|
**Linux:** `~/.config/VintagestoryData/Mods/`
|
||||||
|
**Windows:** `%APPDATA%\VintagestoryData\Mods\`
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
VSVineyard/
|
||||||
|
├── src/ C# source files
|
||||||
|
├── resources/
|
||||||
|
│ ├── modinfo.json Mod metadata
|
||||||
|
│ └── assets/
|
||||||
|
│ └── vsvineyard/
|
||||||
|
│ ├── blocktypes/ Block JSON definitions
|
||||||
|
│ ├── itemtypes/ Item JSON definitions
|
||||||
|
│ ├── textures/ PNG textures
|
||||||
|
│ ├── shapes/ 3D model JSON
|
||||||
|
│ ├── recipes/ Crafting/cooking recipes
|
||||||
|
│ ├── worldgen/ World gen patches
|
||||||
|
│ └── lang/ Localization strings
|
||||||
|
├── releases/ Built mod zips (git-ignored)
|
||||||
|
└── VSVineyard.csproj
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
This is a group project — feel free to open issues or PRs!
|
||||||
39
VSVineyard.csproj
Normal file
39
VSVineyard.csproj
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<AssemblyName>VSVineyard</AssemblyName>
|
||||||
|
<RootNamespace>VSVineyard</RootNamespace>
|
||||||
|
<Version>0.1.0</Version>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Reference the Vintage Story API DLLs from the game installation directory.
|
||||||
|
Set the VINTAGE_STORY environment variable to your game install path.
|
||||||
|
Linux default: ~/.local/share/vintagestory
|
||||||
|
Windows default: C:\Users\<you>\AppData\Roaming\VintagestoryData -->
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="VintagestoryAPI">
|
||||||
|
<HintPath>$(VINTAGE_STORY)/VintagestoryAPI.dll</HintPath>
|
||||||
|
<Private>false</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VSSurvivalMod">
|
||||||
|
<HintPath>$(VINTAGE_STORY)/Mods/VSSurvivalMod.dll</HintPath>
|
||||||
|
<Private>false</Private>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!-- Copy assets into build output for Release packaging -->
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="resources/**" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!-- On Release build, zip everything into a distributable mod file -->
|
||||||
|
<Target Name="PackMod" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
|
||||||
|
<ItemGroup>
|
||||||
|
<ModFiles Include="$(OutputPath)/**" Exclude="$(OutputPath)/*.pdb;$(OutputPath)/**/*.pdb" />
|
||||||
|
</ItemGroup>
|
||||||
|
<MakeDir Directories="releases" />
|
||||||
|
<ZipDirectory SourceDirectory="$(OutputPath)" DestinationFile="releases/vsvineyard-$(Version).zip" Overwrite="true" />
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
8
resources/assets/vsvineyard/lang/en.json
Normal file
8
resources/assets/vsvineyard/lang/en.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"block-vsvineyard-grapevine-*": "Grape Vine",
|
||||||
|
"item-vsvineyard-grapes-*": "Grapes",
|
||||||
|
"item-vsvineyard-grapejuice": "Grape Juice",
|
||||||
|
"item-vsvineyard-wine-*": "Wine",
|
||||||
|
"block-vsvineyard-winebarrel": "Wine Barrel",
|
||||||
|
"block-vsvineyard-winepress": "Wine Press"
|
||||||
|
}
|
||||||
15
resources/modinfo.json
Normal file
15
resources/modinfo.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"type": "code",
|
||||||
|
"modid": "vsvineyard",
|
||||||
|
"name": "VS Vineyard",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "Adds viticulture and winemaking to Vintage Story — grow grape vines, harvest grapes, press juice, ferment and age wine in barrels.",
|
||||||
|
"authors": ["VSVineyard Contributors"],
|
||||||
|
"website": "",
|
||||||
|
"dependencies": {
|
||||||
|
"game": "1.19.0"
|
||||||
|
},
|
||||||
|
"side": "Universal",
|
||||||
|
"requiredOnClient": true,
|
||||||
|
"requiredOnServer": true
|
||||||
|
}
|
||||||
31
src/VSVineyardModSystem.cs
Normal file
31
src/VSVineyardModSystem.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using Vintagestory.API.Common;
|
||||||
|
using Vintagestory.API.Server;
|
||||||
|
using Vintagestory.API.Client;
|
||||||
|
|
||||||
|
namespace VSVineyard;
|
||||||
|
|
||||||
|
public class VSVineyardModSystem : ModSystem
|
||||||
|
{
|
||||||
|
public override void Start(ICoreAPI api)
|
||||||
|
{
|
||||||
|
base.Start(api);
|
||||||
|
api.Logger.Notification("[VS Vineyard] Mod loaded successfully.");
|
||||||
|
|
||||||
|
// TODO: Register block/item/entity classes here as they are added
|
||||||
|
// api.RegisterBlockClass("GrapeVine", typeof(BlockGrapeVine));
|
||||||
|
// api.RegisterItemClass("Grapes", typeof(ItemGrapes));
|
||||||
|
// api.RegisterBlockEntityClass("WineBarrel", typeof(BlockEntityWineBarrel));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StartServerSide(ICoreServerAPI api)
|
||||||
|
{
|
||||||
|
base.StartServerSide(api);
|
||||||
|
// TODO: Server-side logic (recipes, world gen, network handlers)
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StartClientSide(ICoreClientAPI api)
|
||||||
|
{
|
||||||
|
base.StartClientSide(api);
|
||||||
|
// TODO: Client-side logic (GUI, rendering, HUD)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user