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