Closed Captions / Subtitles for Vintage Story.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Initial commit of Anego's ModTemplate.

Different55 baf8910d

+1243
+675
.gitignore
··· 1 + # Created by https://www.toptal.com/developers/gitignore/api/csharp,visualstudio,visualstudiocode,rider 2 + # Edit at https://www.toptal.com/developers/gitignore?templates=csharp,visualstudio,visualstudiocode,rider 3 + 4 + ### Csharp ### 5 + ## Ignore Visual Studio temporary files, build results, and 6 + ## files generated by popular Visual Studio add-ons. 7 + ## 8 + ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 9 + 10 + # User-specific files 11 + *.rsuser 12 + *.suo 13 + *.user 14 + *.userosscache 15 + *.sln.docstates 16 + 17 + # User-specific files (MonoDevelop/Xamarin Studio) 18 + *.userprefs 19 + 20 + # Mono auto generated files 21 + mono_crash.* 22 + 23 + # Build results 24 + [Dd]ebug/ 25 + [Dd]ebugPublic/ 26 + [Rr]elease/ 27 + [Rr]eleases/ 28 + x64/ 29 + x86/ 30 + [Ww][Ii][Nn]32/ 31 + [Aa][Rr][Mm]/ 32 + [Aa][Rr][Mm]64/ 33 + bld/ 34 + [Bb]in/ 35 + [Oo]bj/ 36 + [Ll]og/ 37 + [Ll]ogs/ 38 + 39 + # Visual Studio 2015/2017 cache/options directory 40 + .vs/ 41 + # Uncomment if you have tasks that create the project's static files in wwwroot 42 + #wwwroot/ 43 + 44 + # Visual Studio 2017 auto generated files 45 + Generated\ Files/ 46 + 47 + # MSTest test Results 48 + [Tt]est[Rr]esult*/ 49 + [Bb]uild[Ll]og.* 50 + 51 + # NUnit 52 + *.VisualState.xml 53 + TestResult.xml 54 + nunit-*.xml 55 + 56 + # Build Results of an ATL Project 57 + [Dd]ebugPS/ 58 + [Rr]eleasePS/ 59 + dlldata.c 60 + 61 + # Benchmark Results 62 + BenchmarkDotNet.Artifacts/ 63 + 64 + # .NET Core 65 + project.lock.json 66 + project.fragment.lock.json 67 + artifacts/ 68 + 69 + # ASP.NET Scaffolding 70 + ScaffoldingReadMe.txt 71 + 72 + # StyleCop 73 + StyleCopReport.xml 74 + 75 + # Files built by Visual Studio 76 + *_i.c 77 + *_p.c 78 + *_h.h 79 + *.ilk 80 + *.meta 81 + *.obj 82 + *.iobj 83 + *.pch 84 + *.pdb 85 + *.ipdb 86 + *.pgc 87 + *.pgd 88 + *.rsp 89 + *.sbr 90 + *.tlb 91 + *.tli 92 + *.tlh 93 + *.tmp 94 + *.tmp_proj 95 + *_wpftmp.csproj 96 + *.log 97 + *.tlog 98 + *.vspscc 99 + *.vssscc 100 + .builds 101 + *.pidb 102 + *.svclog 103 + *.scc 104 + 105 + # Chutzpah Test files 106 + _Chutzpah* 107 + 108 + # Visual C++ cache files 109 + ipch/ 110 + *.aps 111 + *.ncb 112 + *.opendb 113 + *.opensdf 114 + *.sdf 115 + *.cachefile 116 + *.VC.db 117 + *.VC.VC.opendb 118 + 119 + # Visual Studio profiler 120 + *.psess 121 + *.vsp 122 + *.vspx 123 + *.sap 124 + 125 + # Visual Studio Trace Files 126 + *.e2e 127 + 128 + # TFS 2012 Local Workspace 129 + $tf/ 130 + 131 + # Guidance Automation Toolkit 132 + *.gpState 133 + 134 + # ReSharper is a .NET coding add-in 135 + _ReSharper*/ 136 + *.[Rr]e[Ss]harper 137 + *.DotSettings.user 138 + 139 + # TeamCity is a build add-in 140 + _TeamCity* 141 + 142 + # DotCover is a Code Coverage Tool 143 + *.dotCover 144 + 145 + # AxoCover is a Code Coverage Tool 146 + .axoCover/* 147 + !.axoCover/settings.json 148 + 149 + # Coverlet is a free, cross platform Code Coverage Tool 150 + coverage*.json 151 + coverage*.xml 152 + coverage*.info 153 + 154 + # Visual Studio code coverage results 155 + *.coverage 156 + *.coveragexml 157 + 158 + # NCrunch 159 + _NCrunch_* 160 + .*crunch*.local.xml 161 + nCrunchTemp_* 162 + 163 + # MightyMoose 164 + *.mm.* 165 + AutoTest.Net/ 166 + 167 + # Web workbench (sass) 168 + .sass-cache/ 169 + 170 + # Installshield output folder 171 + [Ee]xpress/ 172 + 173 + # DocProject is a documentation generator add-in 174 + DocProject/buildhelp/ 175 + DocProject/Help/*.HxT 176 + DocProject/Help/*.HxC 177 + DocProject/Help/*.hhc 178 + DocProject/Help/*.hhk 179 + DocProject/Help/*.hhp 180 + DocProject/Help/Html2 181 + DocProject/Help/html 182 + 183 + # Click-Once directory 184 + publish/ 185 + 186 + # Publish Web Output 187 + *.[Pp]ublish.xml 188 + *.azurePubxml 189 + # Note: Comment the next line if you want to checkin your web deploy settings, 190 + # but database connection strings (with potential passwords) will be unencrypted 191 + *.pubxml 192 + *.publishproj 193 + 194 + # Microsoft Azure Web App publish settings. Comment the next line if you want to 195 + # checkin your Azure Web App publish settings, but sensitive information contained 196 + # in these scripts will be unencrypted 197 + PublishScripts/ 198 + 199 + # NuGet Packages 200 + *.nupkg 201 + # NuGet Symbol Packages 202 + *.snupkg 203 + # The packages folder can be ignored because of Package Restore 204 + **/[Pp]ackages/* 205 + # except build/, which is used as an MSBuild target. 206 + !**/[Pp]ackages/build/ 207 + # Uncomment if necessary however generally it will be regenerated when needed 208 + #!**/[Pp]ackages/repositories.config 209 + # NuGet v3's project.json files produces more ignorable files 210 + *.nuget.props 211 + *.nuget.targets 212 + 213 + # Microsoft Azure Build Output 214 + csx/ 215 + *.build.csdef 216 + 217 + # Microsoft Azure Emulator 218 + ecf/ 219 + rcf/ 220 + 221 + # Windows Store app package directories and files 222 + AppPackages/ 223 + BundleArtifacts/ 224 + Package.StoreAssociation.xml 225 + _pkginfo.txt 226 + *.appx 227 + *.appxbundle 228 + *.appxupload 229 + 230 + # Visual Studio cache files 231 + # files ending in .cache can be ignored 232 + *.[Cc]ache 233 + # but keep track of directories ending in .cache 234 + !?*.[Cc]ache/ 235 + 236 + # Others 237 + ClientBin/ 238 + ~$* 239 + *~ 240 + *.dbmdl 241 + *.dbproj.schemaview 242 + *.jfm 243 + *.pfx 244 + *.publishsettings 245 + orleans.codegen.cs 246 + 247 + # Including strong name files can present a security risk 248 + # (https://github.com/github/gitignore/pull/2483#issue-259490424) 249 + #*.snk 250 + 251 + # Since there are multiple workflows, uncomment next line to ignore bower_components 252 + # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 253 + #bower_components/ 254 + 255 + # RIA/Silverlight projects 256 + Generated_Code/ 257 + 258 + # Backup & report files from converting an old project file 259 + # to a newer Visual Studio version. Backup files are not needed, 260 + # because we have git ;-) 261 + _UpgradeReport_Files/ 262 + Backup*/ 263 + UpgradeLog*.XML 264 + UpgradeLog*.htm 265 + ServiceFabricBackup/ 266 + *.rptproj.bak 267 + 268 + # SQL Server files 269 + *.mdf 270 + *.ldf 271 + *.ndf 272 + 273 + # Business Intelligence projects 274 + *.rdl.data 275 + *.bim.layout 276 + *.bim_*.settings 277 + *.rptproj.rsuser 278 + *- [Bb]ackup.rdl 279 + *- [Bb]ackup ([0-9]).rdl 280 + *- [Bb]ackup ([0-9][0-9]).rdl 281 + 282 + # Microsoft Fakes 283 + FakesAssemblies/ 284 + 285 + # GhostDoc plugin setting file 286 + *.GhostDoc.xml 287 + 288 + # Node.js Tools for Visual Studio 289 + .ntvs_analysis.dat 290 + node_modules/ 291 + 292 + # Visual Studio 6 build log 293 + *.plg 294 + 295 + # Visual Studio 6 workspace options file 296 + *.opt 297 + 298 + # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 299 + *.vbw 300 + 301 + # Visual Studio 6 auto-generated project file (contains which files were open etc.) 302 + *.vbp 303 + 304 + # Visual Studio 6 workspace and project file (working project files containing files to include in project) 305 + *.dsw 306 + *.dsp 307 + 308 + # Visual Studio 6 technical files 309 + 310 + # Visual Studio LightSwitch build output 311 + **/*.HTMLClient/GeneratedArtifacts 312 + **/*.DesktopClient/GeneratedArtifacts 313 + **/*.DesktopClient/ModelManifest.xml 314 + **/*.Server/GeneratedArtifacts 315 + **/*.Server/ModelManifest.xml 316 + _Pvt_Extensions 317 + 318 + # Paket dependency manager 319 + .paket/paket.exe 320 + paket-files/ 321 + 322 + # FAKE - F# Make 323 + .fake/ 324 + 325 + # CodeRush personal settings 326 + .cr/personal 327 + 328 + # Python Tools for Visual Studio (PTVS) 329 + __pycache__/ 330 + *.pyc 331 + 332 + # Cake - Uncomment if you are using it 333 + # tools/** 334 + # !tools/packages.config 335 + 336 + # Tabs Studio 337 + *.tss 338 + 339 + # Telerik's JustMock configuration file 340 + *.jmconfig 341 + 342 + # BizTalk build output 343 + *.btp.cs 344 + *.btm.cs 345 + *.odx.cs 346 + *.xsd.cs 347 + 348 + # OpenCover UI analysis results 349 + OpenCover/ 350 + 351 + # Azure Stream Analytics local run output 352 + ASALocalRun/ 353 + 354 + # MSBuild Binary and Structured Log 355 + *.binlog 356 + 357 + # NVidia Nsight GPU debugger configuration file 358 + *.nvuser 359 + 360 + # MFractors (Xamarin productivity tool) working folder 361 + .mfractor/ 362 + 363 + # Local History for Visual Studio 364 + .localhistory/ 365 + 366 + # Visual Studio History (VSHistory) files 367 + .vshistory/ 368 + 369 + # BeatPulse healthcheck temp database 370 + healthchecksdb 371 + 372 + # Backup folder for Package Reference Convert tool in Visual Studio 2017 373 + MigrationBackup/ 374 + 375 + # Ionide (cross platform F# VS Code tools) working folder 376 + .ionide/ 377 + 378 + # Fody - auto-generated XML schema 379 + FodyWeavers.xsd 380 + 381 + # VS Code files for those working on multiple tools 382 + .vscode/* 383 + !.vscode/settings.json 384 + !.vscode/tasks.json 385 + !.vscode/launch.json 386 + !.vscode/extensions.json 387 + *.code-workspace 388 + 389 + # Local History for Visual Studio Code 390 + .history/ 391 + 392 + # Windows Installer files from build outputs 393 + *.cab 394 + *.msi 395 + *.msix 396 + *.msm 397 + *.msp 398 + 399 + # JetBrains Rider 400 + *.sln.iml 401 + 402 + ### Rider ### 403 + # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 404 + # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 405 + 406 + # User-specific stuff 407 + .idea/**/workspace.xml 408 + .idea/**/tasks.xml 409 + .idea/**/usage.statistics.xml 410 + .idea/**/dictionaries 411 + .idea/**/shelf 412 + 413 + # AWS User-specific 414 + .idea/**/aws.xml 415 + 416 + # Generated files 417 + .idea/**/contentModel.xml 418 + 419 + # Sensitive or high-churn files 420 + .idea/**/dataSources/ 421 + .idea/**/dataSources.ids 422 + .idea/**/dataSources.local.xml 423 + .idea/**/sqlDataSources.xml 424 + .idea/**/dynamic.xml 425 + .idea/**/uiDesigner.xml 426 + .idea/**/dbnavigator.xml 427 + 428 + # Gradle 429 + .idea/**/gradle.xml 430 + .idea/**/libraries 431 + 432 + # Gradle and Maven with auto-import 433 + # When using Gradle or Maven with auto-import, you should exclude module files, 434 + # since they will be recreated, and may cause churn. Uncomment if using 435 + # auto-import. 436 + # .idea/artifacts 437 + # .idea/compiler.xml 438 + # .idea/jarRepositories.xml 439 + # .idea/modules.xml 440 + # .idea/*.iml 441 + # .idea/modules 442 + # *.iml 443 + # *.ipr 444 + 445 + # CMake 446 + cmake-build-*/ 447 + 448 + # Mongo Explorer plugin 449 + .idea/**/mongoSettings.xml 450 + 451 + # File-based project format 452 + *.iws 453 + 454 + # IntelliJ 455 + out/ 456 + 457 + # mpeltonen/sbt-idea plugin 458 + .idea_modules/ 459 + 460 + # JIRA plugin 461 + atlassian-ide-plugin.xml 462 + 463 + # Cursive Clojure plugin 464 + .idea/replstate.xml 465 + 466 + # SonarLint plugin 467 + .idea/sonarlint/ 468 + 469 + # Crashlytics plugin (for Android Studio and IntelliJ) 470 + com_crashlytics_export_strings.xml 471 + crashlytics.properties 472 + crashlytics-build.properties 473 + fabric.properties 474 + 475 + # Editor-based Rest Client 476 + .idea/httpRequests 477 + 478 + # Android studio 3.1+ serialized cache file 479 + .idea/caches/build_file_checksums.ser 480 + 481 + ### VisualStudioCode ### 482 + !.vscode/*.code-snippets 483 + 484 + # Local History for Visual Studio Code 485 + 486 + # Built Visual Studio Code Extensions 487 + *.vsix 488 + 489 + ### VisualStudioCode Patch ### 490 + # Ignore all local history of files 491 + .history 492 + .ionide 493 + 494 + ### VisualStudio ### 495 + 496 + # User-specific files 497 + 498 + # User-specific files (MonoDevelop/Xamarin Studio) 499 + 500 + # Mono auto generated files 501 + 502 + # Build results 503 + 504 + # Visual Studio 2015/2017 cache/options directory 505 + # Uncomment if you have tasks that create the project's static files in wwwroot 506 + 507 + # Visual Studio 2017 auto generated files 508 + 509 + # MSTest test Results 510 + 511 + # NUnit 512 + 513 + # Build Results of an ATL Project 514 + 515 + # Benchmark Results 516 + 517 + # .NET Core 518 + 519 + # ASP.NET Scaffolding 520 + 521 + # StyleCop 522 + 523 + # Files built by Visual Studio 524 + 525 + # Chutzpah Test files 526 + 527 + # Visual C++ cache files 528 + 529 + # Visual Studio profiler 530 + 531 + # Visual Studio Trace Files 532 + 533 + # TFS 2012 Local Workspace 534 + 535 + # Guidance Automation Toolkit 536 + 537 + # ReSharper is a .NET coding add-in 538 + 539 + # TeamCity is a build add-in 540 + 541 + # DotCover is a Code Coverage Tool 542 + 543 + # AxoCover is a Code Coverage Tool 544 + 545 + # Coverlet is a free, cross platform Code Coverage Tool 546 + 547 + # Visual Studio code coverage results 548 + 549 + # NCrunch 550 + 551 + # MightyMoose 552 + 553 + # Web workbench (sass) 554 + 555 + # Installshield output folder 556 + 557 + # DocProject is a documentation generator add-in 558 + 559 + # Click-Once directory 560 + 561 + # Publish Web Output 562 + # Note: Comment the next line if you want to checkin your web deploy settings, 563 + # but database connection strings (with potential passwords) will be unencrypted 564 + 565 + # Microsoft Azure Web App publish settings. Comment the next line if you want to 566 + # checkin your Azure Web App publish settings, but sensitive information contained 567 + # in these scripts will be unencrypted 568 + 569 + # NuGet Packages 570 + # NuGet Symbol Packages 571 + # The packages folder can be ignored because of Package Restore 572 + # except build/, which is used as an MSBuild target. 573 + # Uncomment if necessary however generally it will be regenerated when needed 574 + # NuGet v3's project.json files produces more ignorable files 575 + 576 + # Microsoft Azure Build Output 577 + 578 + # Microsoft Azure Emulator 579 + 580 + # Windows Store app package directories and files 581 + 582 + # Visual Studio cache files 583 + # files ending in .cache can be ignored 584 + # but keep track of directories ending in .cache 585 + 586 + # Others 587 + 588 + # Including strong name files can present a security risk 589 + # (https://github.com/github/gitignore/pull/2483#issue-259490424) 590 + 591 + # Since there are multiple workflows, uncomment next line to ignore bower_components 592 + # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 593 + 594 + # RIA/Silverlight projects 595 + 596 + # Backup & report files from converting an old project file 597 + # to a newer Visual Studio version. Backup files are not needed, 598 + # because we have git ;-) 599 + 600 + # SQL Server files 601 + 602 + # Business Intelligence projects 603 + 604 + # Microsoft Fakes 605 + 606 + # GhostDoc plugin setting file 607 + 608 + # Node.js Tools for Visual Studio 609 + 610 + # Visual Studio 6 build log 611 + 612 + # Visual Studio 6 workspace options file 613 + 614 + # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 615 + 616 + # Visual Studio 6 auto-generated project file (contains which files were open etc.) 617 + 618 + # Visual Studio 6 workspace and project file (working project files containing files to include in project) 619 + 620 + # Visual Studio 6 technical files 621 + 622 + # Visual Studio LightSwitch build output 623 + 624 + # Paket dependency manager 625 + 626 + # FAKE - F# Make 627 + 628 + # CodeRush personal settings 629 + 630 + # Python Tools for Visual Studio (PTVS) 631 + 632 + # Cake - Uncomment if you are using it 633 + # tools/** 634 + # !tools/packages.config 635 + 636 + # Tabs Studio 637 + 638 + # Telerik's JustMock configuration file 639 + 640 + # BizTalk build output 641 + 642 + # OpenCover UI analysis results 643 + 644 + # Azure Stream Analytics local run output 645 + 646 + # MSBuild Binary and Structured Log 647 + 648 + # NVidia Nsight GPU debugger configuration file 649 + 650 + # MFractors (Xamarin productivity tool) working folder 651 + 652 + # Local History for Visual Studio 653 + 654 + # Visual Studio History (VSHistory) files 655 + 656 + # BeatPulse healthcheck temp database 657 + 658 + # Backup folder for Package Reference Convert tool in Visual Studio 2017 659 + 660 + # Ionide (cross platform F# VS Code tools) working folder 661 + 662 + # Fody - auto-generated XML schema 663 + 664 + # VS Code files for those working on multiple tools 665 + 666 + # Local History for Visual Studio Code 667 + 668 + # Windows Installer files from build outputs 669 + 670 + # JetBrains Rider 671 + 672 + ### VisualStudio Patch ### 673 + # Additional files built by Visual Studio 674 + 675 + # End of https://www.toptal.com/developers/gitignore/api/csharp,visualstudio,visualstudiocode,rider
+6
.vscode/extensions.json
··· 1 + { 2 + "recommendations": [ 3 + "ms-dotnettools.csdevkit", 4 + "ms-dotnettools.csharp" 5 + ] 6 + }
+61
.vscode/launch.json
··· 1 + { 2 + // Use IntelliSense to learn about possible attributes. 3 + // Hover to view descriptions of existing attributes. 4 + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 + "version": "0.2.0", 6 + "configurations": [ 7 + { 8 + "name": "Launch Client (Debug)", 9 + "type": "coreclr", 10 + "request": "launch", 11 + "program": "${env:VINTAGE_STORY}/Vintagestory.exe", 12 + "linux": { 13 + "program": "${env:VINTAGE_STORY}/Vintagestory" 14 + }, 15 + "osx": { 16 + "program": "${env:VINTAGE_STORY}/Vintagestory" 17 + }, 18 + "preLaunchTask": "build", 19 + "args": [ 20 + // "--playStyle" , "preset-surviveandbuild", 21 + // "--openWorld" , "modding test world", 22 + "--tracelog", 23 + "--addModPath", 24 + "${workspaceFolder}/ModTemplate/bin/Debug/Mods" 25 + ], 26 + "console": "internalConsole", 27 + "stopAtEntry": false 28 + }, 29 + { 30 + "name": "Launch Server", 31 + "type": "coreclr", 32 + "request": "launch", 33 + "program": "${env:VINTAGE_STORY}/VintagestoryServer.exe", 34 + "linux": { 35 + "program": "${env:VINTAGE_STORY}/VintagestoryServer" 36 + }, 37 + "osx": { 38 + "program": "${env:VINTAGE_STORY}/VintagestoryServer" 39 + }, 40 + "preLaunchTask": "build", 41 + "args": [ 42 + "--tracelog", 43 + "--addModPath", 44 + "${workspaceFolder}/ModTemplate/bin/Debug/Mods" 45 + ], 46 + "console": "internalConsole", 47 + "stopAtEntry": false 48 + }, 49 + { 50 + "name": "CakeBuild", 51 + "type": "coreclr", 52 + "request": "launch", 53 + "preLaunchTask": "build (Cake)", 54 + "program": "${workspaceFolder}/CakeBuild/bin/Debug/net7.0/CakeBuild.dll", 55 + "args": [], 56 + "cwd": "${workspaceFolder}/CakeBuild", 57 + "stopAtEntry": false, 58 + "console": "internalConsole" 59 + } 60 + ] 61 + }
+7
.vscode/settings.json
··· 1 + { 2 + "dotnet.defaultSolution": "ModTemplate.sln", 3 + "files.associations": { 4 + "server-*.txt": "log", 5 + "client-*.txt": "log" 6 + } 7 + }
+40
.vscode/tasks.json
··· 1 + { 2 + "version": "2.0.0", 3 + "tasks": [ 4 + { 5 + "label": "build", 6 + "command": "dotnet", 7 + "type": "process", 8 + "args": [ 9 + "build", 10 + "-c", 11 + "Debug", 12 + "${workspaceFolder}/ModTemplate/ModTemplate.csproj" 13 + ], 14 + "problemMatcher": "$msCompile" 15 + }, 16 + { 17 + "label": "package", 18 + "command": "dotnet", 19 + "type": "process", 20 + "args": [ 21 + "run", 22 + "--project", 23 + "${workspaceFolder}/CakeBuild/CakeBuild.csproj" 24 + ], 25 + "problemMatcher": "$msCompile" 26 + }, 27 + { 28 + "label": "build (Cake)", 29 + "command": "dotnet", 30 + "type": "process", 31 + "args": [ 32 + "build", 33 + "-c", 34 + "Debug", 35 + "${workspaceFolder}/CakeBuild/CakeBuild.csproj" 36 + ], 37 + "problemMatcher": "$msCompile" 38 + } 39 + ] 40 + }
+19
CakeBuild/CakeBuild.csproj
··· 1 + <Project Sdk="Microsoft.NET.Sdk"> 2 + <PropertyGroup> 3 + <OutputType>Exe</OutputType> 4 + <TargetFramework>net7.0</TargetFramework> 5 + <RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory> 6 + </PropertyGroup> 7 + 8 + <ItemGroup> 9 + <PackageReference Include="Cake.Frosting" Version="3.1.0" /> 10 + <PackageReference Include="Cake.Json" Version="7.0.1" /> 11 + <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> 12 + </ItemGroup> 13 + 14 + <ItemGroup> 15 + <Reference Include="VintagestoryAPI"> 16 + <HintPath>$(VINTAGE_STORY)/VintagestoryAPI.dll</HintPath> 17 + </Reference> 18 + </ItemGroup> 19 + </Project>
+114
CakeBuild/Program.cs
··· 1 + using System; 2 + using System.IO; 3 + using Cake.Common; 4 + using Cake.Common.IO; 5 + using Cake.Common.Tools.DotNet; 6 + using Cake.Common.Tools.DotNet.Clean; 7 + using Cake.Common.Tools.DotNet.Publish; 8 + using Cake.Core; 9 + using Cake.Frosting; 10 + using Cake.Json; 11 + using Newtonsoft.Json; 12 + using Newtonsoft.Json.Linq; 13 + using Vintagestory.API.Common; 14 + 15 + public static class Program 16 + { 17 + public static int Main(string[] args) 18 + { 19 + return new CakeHost() 20 + .UseContext<BuildContext>() 21 + .Run(args); 22 + } 23 + } 24 + 25 + public class BuildContext : FrostingContext 26 + { 27 + public const string ProjectName = "ModTemplate"; 28 + public string BuildConfiguration { get; set; } 29 + public string Version { get; } 30 + public string Name { get; } 31 + public bool SkipJsonValidation { get; set; } 32 + 33 + public BuildContext(ICakeContext context) 34 + : base(context) 35 + { 36 + BuildConfiguration = context.Argument("configuration", "Release"); 37 + SkipJsonValidation = context.Argument("skipJsonValidation", false); 38 + var modInfo = context.DeserializeJsonFromFile<ModInfo>($"../{BuildContext.ProjectName}/modinfo.json"); 39 + Version = modInfo.Version; 40 + Name = modInfo.ModID; 41 + } 42 + } 43 + 44 + [TaskName("ValidateJson")] 45 + public sealed class ValidateJsonTask : FrostingTask<BuildContext> 46 + { 47 + public override void Run(BuildContext context) 48 + { 49 + if (context.SkipJsonValidation) 50 + { 51 + return; 52 + } 53 + var jsonFiles = context.GetFiles($"../{BuildContext.ProjectName}/assets/**/*.json"); 54 + foreach (var file in jsonFiles) 55 + { 56 + try 57 + { 58 + var json = File.ReadAllText(file.FullPath); 59 + JToken.Parse(json); 60 + } 61 + catch (JsonException ex) 62 + { 63 + throw new Exception($"Validation failed for JSON file: {file.FullPath}{Environment.NewLine}{ex.Message}", ex); 64 + } 65 + } 66 + } 67 + } 68 + 69 + [TaskName("Build")] 70 + [IsDependentOn(typeof(ValidateJsonTask))] 71 + public sealed class BuildTask : FrostingTask<BuildContext> 72 + { 73 + public override void Run(BuildContext context) 74 + { 75 + context.DotNetClean($"../{BuildContext.ProjectName}/{BuildContext.ProjectName}.csproj", 76 + new DotNetCleanSettings 77 + { 78 + Configuration = context.BuildConfiguration 79 + }); 80 + 81 + 82 + context.DotNetPublish($"../{BuildContext.ProjectName}/{BuildContext.ProjectName}.csproj", 83 + new DotNetPublishSettings 84 + { 85 + Configuration = context.BuildConfiguration 86 + }); 87 + } 88 + } 89 + 90 + [TaskName("Package")] 91 + [IsDependentOn(typeof(BuildTask))] 92 + public sealed class PackageTask : FrostingTask<BuildContext> 93 + { 94 + public override void Run(BuildContext context) 95 + { 96 + context.EnsureDirectoryExists("../Releases"); 97 + context.CleanDirectory("../Releases"); 98 + context.EnsureDirectoryExists($"../Releases/{context.Name}"); 99 + context.CopyFiles($"../{BuildContext.ProjectName}/bin/{context.BuildConfiguration}/Mods/mod/publish/*", $"../Releases/{context.Name}"); 100 + context.CopyDirectory($"../{BuildContext.ProjectName}/assets", $"../Releases/{context.Name}/assets"); 101 + context.CopyFile($"../{BuildContext.ProjectName}/modinfo.json", $"../Releases/{context.Name}/modinfo.json"); 102 + if (context.FileExists($"../{BuildContext.ProjectName}/modicon.png")) 103 + { 104 + context.CopyFile($"../{BuildContext.ProjectName}/modicon.png", $"../Releases/{context.Name}/modicon.png"); 105 + } 106 + context.Zip($"../Releases/{context.Name}", $"../Releases/{context.Name}_{context.Version}.zip"); 107 + } 108 + } 109 + 110 + [TaskName("Default")] 111 + [IsDependentOn(typeof(PackageTask))] 112 + public class DefaultTask : FrostingTask 113 + { 114 + }
+121
LICENSE
··· 1 + Creative Commons Legal Code 2 + 3 + CC0 1.0 Universal 4 + 5 + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 + HEREUNDER. 13 + 14 + Statement of Purpose 15 + 16 + The laws of most jurisdictions throughout the world automatically confer 17 + exclusive Copyright and Related Rights (defined below) upon the creator 18 + and subsequent owner(s) (each and all, an "owner") of an original work of 19 + authorship and/or a database (each, a "Work"). 20 + 21 + Certain owners wish to permanently relinquish those rights to a Work for 22 + the purpose of contributing to a commons of creative, cultural and 23 + scientific works ("Commons") that the public can reliably and without fear 24 + of later claims of infringement build upon, modify, incorporate in other 25 + works, reuse and redistribute as freely as possible in any form whatsoever 26 + and for any purposes, including without limitation commercial purposes. 27 + These owners may contribute to the Commons to promote the ideal of a free 28 + culture and the further production of creative, cultural and scientific 29 + works, or to gain reputation or greater distribution for their Work in 30 + part through the use and efforts of others. 31 + 32 + For these and/or other purposes and motivations, and without any 33 + expectation of additional consideration or compensation, the person 34 + associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 + is an owner of Copyright and Related Rights in the Work, voluntarily 36 + elects to apply CC0 to the Work and publicly distribute the Work under its 37 + terms, with knowledge of his or her Copyright and Related Rights in the 38 + Work and the meaning and intended legal effect of CC0 on those rights. 39 + 40 + 1. Copyright and Related Rights. A Work made available under CC0 may be 41 + protected by copyright and related or neighboring rights ("Copyright and 42 + Related Rights"). Copyright and Related Rights include, but are not 43 + limited to, the following: 44 + 45 + i. the right to reproduce, adapt, distribute, perform, display, 46 + communicate, and translate a Work; 47 + ii. moral rights retained by the original author(s) and/or performer(s); 48 + iii. publicity and privacy rights pertaining to a person's image or 49 + likeness depicted in a Work; 50 + iv. rights protecting against unfair competition in regards to a Work, 51 + subject to the limitations in paragraph 4(a), below; 52 + v. rights protecting the extraction, dissemination, use and reuse of data 53 + in a Work; 54 + vi. database rights (such as those arising under Directive 96/9/EC of the 55 + European Parliament and of the Council of 11 March 1996 on the legal 56 + protection of databases, and under any national implementation 57 + thereof, including any amended or successor version of such 58 + directive); and 59 + vii. other similar, equivalent or corresponding rights throughout the 60 + world based on applicable law or treaty, and any national 61 + implementations thereof. 62 + 63 + 2. Waiver. To the greatest extent permitted by, but not in contravention 64 + of, applicable law, Affirmer hereby overtly, fully, permanently, 65 + irrevocably and unconditionally waives, abandons, and surrenders all of 66 + Affirmer's Copyright and Related Rights and associated claims and causes 67 + of action, whether now known or unknown (including existing as well as 68 + future claims and causes of action), in the Work (i) in all territories 69 + worldwide, (ii) for the maximum duration provided by applicable law or 70 + treaty (including future time extensions), (iii) in any current or future 71 + medium and for any number of copies, and (iv) for any purpose whatsoever, 72 + including without limitation commercial, advertising or promotional 73 + purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 + member of the public at large and to the detriment of Affirmer's heirs and 75 + successors, fully intending that such Waiver shall not be subject to 76 + revocation, rescission, cancellation, termination, or any other legal or 77 + equitable action to disrupt the quiet enjoyment of the Work by the public 78 + as contemplated by Affirmer's express Statement of Purpose. 79 + 80 + 3. Public License Fallback. Should any part of the Waiver for any reason 81 + be judged legally invalid or ineffective under applicable law, then the 82 + Waiver shall be preserved to the maximum extent permitted taking into 83 + account Affirmer's express Statement of Purpose. In addition, to the 84 + extent the Waiver is so judged Affirmer hereby grants to each affected 85 + person a royalty-free, non transferable, non sublicensable, non exclusive, 86 + irrevocable and unconditional license to exercise Affirmer's Copyright and 87 + Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 + maximum duration provided by applicable law or treaty (including future 89 + time extensions), (iii) in any current or future medium and for any number 90 + of copies, and (iv) for any purpose whatsoever, including without 91 + limitation commercial, advertising or promotional purposes (the 92 + "License"). The License shall be deemed effective as of the date CC0 was 93 + applied by Affirmer to the Work. Should any part of the License for any 94 + reason be judged legally invalid or ineffective under applicable law, such 95 + partial invalidity or ineffectiveness shall not invalidate the remainder 96 + of the License, and in such case Affirmer hereby affirms that he or she 97 + will not (i) exercise any of his or her remaining Copyright and Related 98 + Rights in the Work or (ii) assert any associated claims and causes of 99 + action with respect to the Work, in either case contrary to Affirmer's 100 + express Statement of Purpose. 101 + 102 + 4. Limitations and Disclaimers. 103 + 104 + a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 + surrendered, licensed or otherwise affected by this document. 106 + b. Affirmer offers the Work as-is and makes no representations or 107 + warranties of any kind concerning the Work, express, implied, 108 + statutory or otherwise, including without limitation warranties of 109 + title, merchantability, fitness for a particular purpose, non 110 + infringement, or the absence of latent or other defects, accuracy, or 111 + the present or absence of errors, whether or not discoverable, all to 112 + the greatest extent permissible under applicable law. 113 + c. Affirmer disclaims responsibility for clearing rights of other persons 114 + that may apply to the Work or any use thereof, including without 115 + limitation any person's Copyright and Related Rights in the Work. 116 + Further, Affirmer disclaims responsibility for obtaining any necessary 117 + consents, permissions or other rights required for any use of the 118 + Work. 119 + d. Affirmer understands and acknowledges that Creative Commons is not a 120 + party to this document and has no duty or obligation with respect to 121 + this CC0 or use of the Work.
+28
ModTemplate.sln
··· 1 +  2 + Microsoft Visual Studio Solution File, Format Version 12.00 3 + # Visual Studio Version 17 4 + VisualStudioVersion = 17.0.31903.59 5 + MinimumVisualStudioVersion = 10.0.40219.1 6 + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CakeBuild", "CakeBuild\CakeBuild.csproj", "{BC68EDF6-C294-4819-B7F4-9EA99B73E69D}" 7 + EndProject 8 + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModTemplate", "ModTemplate\ModTemplate.csproj", "{CB2100BC-F653-402A-9FBA-EA463C2BD4FC}" 9 + EndProject 10 + Global 11 + GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 + Debug|Any CPU = Debug|Any CPU 13 + Release|Any CPU = Release|Any CPU 14 + EndGlobalSection 15 + GlobalSection(SolutionProperties) = preSolution 16 + HideSolutionNode = FALSE 17 + EndGlobalSection 18 + GlobalSection(ProjectConfigurationPlatforms) = postSolution 19 + {BC68EDF6-C294-4819-B7F4-9EA99B73E69D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 20 + {BC68EDF6-C294-4819-B7F4-9EA99B73E69D}.Debug|Any CPU.Build.0 = Debug|Any CPU 21 + {BC68EDF6-C294-4819-B7F4-9EA99B73E69D}.Release|Any CPU.ActiveCfg = Release|Any CPU 22 + {BC68EDF6-C294-4819-B7F4-9EA99B73E69D}.Release|Any CPU.Build.0 = Release|Any CPU 23 + {CB2100BC-F653-402A-9FBA-EA463C2BD4FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 24 + {CB2100BC-F653-402A-9FBA-EA463C2BD4FC}.Debug|Any CPU.Build.0 = Debug|Any CPU 25 + {CB2100BC-F653-402A-9FBA-EA463C2BD4FC}.Release|Any CPU.ActiveCfg = Release|Any CPU 26 + {CB2100BC-F653-402A-9FBA-EA463C2BD4FC}.Release|Any CPU.Build.0 = Release|Any CPU 27 + EndGlobalSection 28 + EndGlobal
+41
ModTemplate/ModTemplate.csproj
··· 1 + <Project Sdk="Microsoft.NET.Sdk"> 2 + 3 + <PropertyGroup> 4 + <TargetFramework>net7.0</TargetFramework> 5 + <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> 6 + <OutputPath>bin\$(Configuration)\Mods\mod</OutputPath> 7 + </PropertyGroup> 8 + 9 + <ItemGroup> 10 + <Reference Include="VintagestoryAPI"> 11 + <HintPath>$(VINTAGE_STORY)/VintagestoryAPI.dll</HintPath> 12 + <Private>false</Private> 13 + </Reference> 14 + <Reference Include="VSSurvivalMod"> 15 + <HintPath>$(VINTAGE_STORY)/Mods/VSSurvivalMod.dll</HintPath> 16 + <Private>False</Private> 17 + </Reference> 18 + <Reference Include="VSEssentials"> 19 + <HintPath>$(VINTAGE_STORY)/Mods/VSEssentials.dll</HintPath> 20 + <Private>False</Private> 21 + </Reference> 22 + <Reference Include="VSCreativeMod"> 23 + <HintPath>$(VINTAGE_STORY)/Mods/VSCreativeMod.dll</HintPath> 24 + <Private>False</Private> 25 + </Reference> 26 + <Reference Include="Newtonsoft.Json"> 27 + <HintPath>$(VINTAGE_STORY)/Lib/Newtonsoft.Json.dll</HintPath> 28 + <Private>False</Private> 29 + </Reference> 30 + </ItemGroup> 31 + 32 + <ItemGroup> 33 + <Content Include="assets\**"> 34 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 35 + </Content> 36 + <Content Include="modinfo.json"> 37 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 38 + </Content> 39 + </ItemGroup> 40 + 41 + </Project>
+26
ModTemplate/ModTemplateModSystem.cs
··· 1 + using Vintagestory.API.Client; 2 + using Vintagestory.API.Common; 3 + using Vintagestory.API.Config; 4 + using Vintagestory.API.Server; 5 + 6 + namespace ModTemplate 7 + { 8 + public class ModTemplateModSystem : ModSystem 9 + { 10 + // Called on server and client 11 + public override void Start(ICoreAPI api) 12 + { 13 + Mod.Logger.Notification("Hello from template mod: " + Lang.Get("mymodid:hello")); 14 + } 15 + 16 + public override void StartServerSide(ICoreServerAPI api) 17 + { 18 + Mod.Logger.Notification("Hello from template mod server side"); 19 + } 20 + 21 + public override void StartClientSide(ICoreClientAPI api) 22 + { 23 + Mod.Logger.Notification("Hello from template mod client side"); 24 + } 25 + } 26 + }
+16
ModTemplate/Properties/launchSettings.json
··· 1 + { 2 + "profiles": { 3 + "Client": { 4 + "commandName": "Executable", 5 + "executablePath": "$(VINTAGE_STORY)/Vintagestory.exe", 6 + "commandLineArgs": "--tracelog --addModPath \"$(ProjectDir)/bin/$(Configuration)/Mods\"", 7 + "workingDirectory": "$(VINTAGE_STORY)" 8 + }, 9 + "Server": { 10 + "commandName": "Executable", 11 + "executablePath": "$(VINTAGE_STORY)/VintagestoryServer.exe", 12 + "commandLineArgs": "--tracelog --addModPath \"$(ProjectDir)/bin/$(Configuration)/Mods\"", 13 + "workingDirectory": "$(VINTAGE_STORY)" 14 + } 15 + } 16 + }
+3
ModTemplate/assets/mymodid/lang/en.json
··· 1 + { 2 + "hello": "hello world!" 3 + }
+13
ModTemplate/modinfo.json
··· 1 + { 2 + "type": "code", 3 + "modid": "mymodid", 4 + "name": "My Template Mod", 5 + "authors": [ 6 + "Unknown" 7 + ], 8 + "description": "To be added", 9 + "version": "1.0.0", 10 + "dependencies": { 11 + "game": "" 12 + } 13 + }
+70
README.md
··· 1 + # Vintage Story Mod Template 2 + 3 + This repository contains a configured .NET 7 mod for Visual Studio, Visual Studio Code and Rider that let's you start Vintage Story and add your own code to it. Supports logging and as well as debugging. 4 + 5 + 6 + 7 + ## Usage 8 + - Get a copy of this template by either using the "Use this Template" on github or cloning it or downloading a .zip file. 9 + - Open the Project with your preferred IDE 10 + - Run the template 11 + 12 + 13 + The template uses the Cake build system to produce a mod ready to release for you. 14 + You can create a release with one of the following methods: 15 + - In Visual Studio and Rider Select to run the CakeBuilder Project. 16 + - In Visual Studio Code click on "Terminal" > "Run Task" > "package" 17 + - run the build.ps1 or build.sh 18 + 19 + This will then produce the `mymodid_1.0.0.zip` inside the `Release` folder in the project root folder. 20 + 21 + 22 + ## Linux / Mac 23 + This sample is preconfigured for Windows if you want to use it on Linux or Mac you need to change the path for the Vintage Story (Server) binaries since those are now platform dependent with .NET 7. 24 + 25 + ### Rider 26 + If you use Rider on Linux or Mac you will need to change in 27 + `modtemplate/Properties/launchSettings.json` 28 + ``` 29 + "executablePath": "$(VINTAGE_STORY)/Vintagestory.exe", 30 + "executablePath": "$(VINTAGE_STORY)/VintagestoryServer.exe", 31 + ``` 32 + to 33 + ``` 34 + "executablePath": "$(VINTAGE_STORY)/Vintagestory", 35 + "executablePath": "$(VINTAGE_STORY)/VintagestoryServer", 36 + ``` 37 + 38 + ## Info General 39 + 40 + Since version 1.18.8-rc1 Vintage Story uses .NET 7 as its base framework. This means from now on mods can be targeted towards it and make use of the latest C# 11 language features. 41 + 42 + Further the new way of creating mods uses a [dotnet template package](https://www.nuget.org/packages/VintageStory.Mod.Templates/). 43 + 44 + This basically allows you to create a mod directly from Visual Studio, Rider or the command line (`dotnet new vsmod`) for more details how to use it see our [wiki page](https://wiki.vintagestory.at/index.php/Modding:Setting_up_your_Development_Environment). 45 + 46 + It supports options so you can easily add what ever dependency you may need in you next modding project. 47 + 48 + The new template also just houses a single mod by default (you can still manually add more if wanted). We think it is better to have the mods separated in their own repositories and Solutions. 49 + 50 + Further with the new template package and the cake build system there is not much need for the `vsmodtools` tool hopefully, which means less code to be maintained by us. 51 + 52 + We are also now supporting Visual Studio, Visual Studio Code and Rider with the new SDK style project and templates. 53 + 54 + ## Cake build system 55 + 56 + The new template also comes with the cake build system https://cakebuild.net/ found in the file [CakeBuild/Program.cs](CakeBuild/Program.cs). 57 + It is also used in the games repo to build the game for each platform (Windows x64, Linux x64, MacOs x64) and eventually Arm x64 as well at some point. 58 + 59 + But that is not all cake can do for us. 60 + Since we use the `Cake Frosting` setup which essentially adds another Project to our solution where we can write C# code to define our build and package procedure. Further we added a Json Validation step to it so before a build is made it will verify that all json files are at least parsable by `Newtonsoft.Json` to avoid simple mistakes. And if you want to use any Testing library you can also add it to the Cake build system to run your test when you create a mod.zip for release. 61 + 62 + 63 + ## Migrating Mods to .NET 7 64 + 65 + To migrate your mod to .NET 7 we would recommend you to create a new project with our new template (checkout our updated [wiki page](https://wiki.vintagestory.at/index.php/Modding:Setting_up_your_Development_Environment) for that) and copy over your old code. Additionally you may need to add any special references you need for your mod. 66 + 67 + Then you may have to make some code changes so your mod works with the .NET 7 version of the game. For most mods this should be just minor changes. 68 + 69 + Once that is done it should be ready to be started within you preferred IDE. So you can also benefit from new C# 11 language features as well as the cake build system. 70 +
+2
build.ps1
··· 1 + dotnet run --project CakeBuild/CakeBuild.csproj -- $args 2 + exit $LASTEXITCODE;
+1
build.sh
··· 1 + dotnet run --project ./CakeBuild/CakeBuild.csproj -- "$@"