diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml
index 357764a..3a822f7 100644
--- a/.github/workflows/build-and-publish.yml
+++ b/.github/workflows/build-and-publish.yml
@@ -7,6 +7,7 @@ on:
env:
PROJECT_PATH: MinecraftJars/MinecraftJars.csproj
+ PROJECT_PATH_EXTENSION: MinecraftJars/MinecraftJars.csproj
PACKAGE_OUTPUT_DIR: ${{ github.workspace }}/output
NUGET_SOURCE_URL: "https://api.nuget.org/v3/index.json"
@@ -24,17 +25,23 @@ jobs:
dotnet-version: "7.0.x"
- name: "Restore packages"
- run: dotnet restore ${{ env.PROJECT_PATH }}
+ run: |
+ dotnet restore ${{ env.PROJECT_PATH }}
+ dotnet restore ${{ env.PROJECT_PATH_EXTENSION }}
- name: "Build project"
- run: dotnet build ${{ env.PROJECT_PATH }} --no-restore --configuration Release
+ run: |
+ dotnet build ${{ env.PROJECT_PATH }} --no-restore --configuration Release
+ dotnet build ${{ env.PROJECT_PATH_EXTENSION }} --no-restore --configuration Release
- name: "Get version"
id: version
uses: battila7/get-version-action@v2
- name: "Pack project"
- run: dotnet pack ${{ env.PROJECT_PATH }} --no-restore --configuration Release --p:PackageVersion=${{ steps.version.outputs.version-without-v }} --output ${{ env.PACKAGE_OUTPUT_DIR }}
+ run: |
+ dotnet pack ${{ env.PROJECT_PATH }} --no-restore --configuration Release --p:PackageVersion=${{ steps.version.outputs.version-without-v }} --output ${{ env.PACKAGE_OUTPUT_DIR }}
+ dotnet pack ${{ env.PROJECT_PATH_EXTENSION }} --no-restore --configuration Release --p:PackageVersion=${{ steps.version.outputs.version-without-v }} --output ${{ env.PACKAGE_OUTPUT_DIR }}
- name: "Push package"
run: dotnet nuget push ${{ env.PACKAGE_OUTPUT_DIR }}/*.nupkg --api-key ${{ secrets.NUGET_AUTH_TOKEN }} --source ${{ env.NUGET_SOURCE_URL }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e2b3b42..a22ce71 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,10 +3,21 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
+## [1.4.0] - 2023-06-01
+
+### Changed
+- Renamed MinecraftJarManager to MinecraftJar
+
+### Added
+- IMinecraftJar interface
+- Extension for dependency injection
+- Test case for dependency injection
+- Automatic deployment of dependency injection injection to nuget.org
+
## [1.3.2] - 2023-06-01
-### Fixed
+### Added
- Fabric version snapshot test missing
### Fixed
diff --git a/MinecraftJars.Demo/MinecraftJars.Demo.Console/Program.cs b/MinecraftJars.Demo/MinecraftJars.Demo.Console/Program.cs
index 47543c0..dd78efc 100644
--- a/MinecraftJars.Demo/MinecraftJars.Demo.Console/Program.cs
+++ b/MinecraftJars.Demo/MinecraftJars.Demo.Console/Program.cs
@@ -2,9 +2,9 @@
using MinecraftJars;
using MinecraftJars.Core.Versions;
-var providerManager = new MinecraftJarManager();
+var minecraftJar = new MinecraftJar();
-foreach (var provider in providerManager.GetProviders())
+foreach (var provider in minecraftJar.GetProviders())
{
SetConsoleColor(ConsoleColor.White, ConsoleColor.Red);
Console.WriteLine($"{provider.Name}:");
diff --git a/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/MinecraftJars.Extension.DependencyInjection.csproj b/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/MinecraftJars.Extension.DependencyInjection.csproj
new file mode 100644
index 0000000..be3f4ad
--- /dev/null
+++ b/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/MinecraftJars.Extension.DependencyInjection.csproj
@@ -0,0 +1,42 @@
+
+
+
+ net7.0
+ enable
+ enable
+ MinecraftJars.NET.Extensions.DependencyInjection
+ Patrick Weiss
+ MinecraftJars.NET.Extensions.DependencyInjection
+ MinecraftJars.NET Dependency Injection Extension
+ https://github.com/tekgator/MinecraftJars.NET
+ MinecraftJarsNET-Logo-128px.png
+ README.md
+ https://github.com/tekgator/MinecraftJars.NET
+ git
+ LICENSE
+ Dependency injection extension for MinecraftJars.NET
+ @Patrick Weiss 2023
+ minecraftjars;minecraftjars.net;dependency injection;di
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ \
+
+
+ True
+ \
+
+
+
+
diff --git a/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/README.md b/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/README.md
new file mode 100644
index 0000000..2d2ef51
--- /dev/null
+++ b/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/README.md
@@ -0,0 +1,35 @@
+![MinecraftJars.NET dependency injection extensions](../../Resources/MinecraftJarsNET-Logo-64px.png "MinecraftJars.NET dependency injection extensions")
+MinecraftJars.NET dependency injection extensions
+======
+
+## Installing
+
+Multiple options are available to install within your project:
+
+1. Install, using the [Nuget Gallery](https://www.nuget.org/packages/MinecraftJars.NET.Extensions.DependencyInjection)
+
+2. Install using the Package Manager Console:
+ ```ps
+ Install-Package MinecraftJars.NET.Extensions.DependencyInjection
+ ```
+3. Install using .NET CLI
+ ```cmd
+ dotnet add package MinecraftJars.NET.Extensions.DependencyInjection
+ ```
+
+## Usage
+
+As simple as
+
+```CSharp
+
+// Registering DI
+services.AddMinecraftJar();
+
+// Injecting e.g. via service provider
+var minecraftJar = serviceProvider.GetRequiredService()
+
+// Usage
+var providers = minecraftJar.GetProviders();
+
+```
\ No newline at end of file
diff --git a/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/ServiceCollectionExtensions.cs b/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/ServiceCollectionExtensions.cs
new file mode 100644
index 0000000..2a9726d
--- /dev/null
+++ b/MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection/ServiceCollectionExtensions.cs
@@ -0,0 +1,18 @@
+using Microsoft.Extensions.DependencyInjection;
+using MinecraftJars.Core.Providers;
+
+namespace MinecraftJars.Extension.DependencyInjection;
+
+public static class ServiceCollectionExtensions
+{
+ public static IServiceCollection AddMinecraftJar(this IServiceCollection services)
+ {
+ services.AddHttpClient();
+ services.AddScoped(sp => new MinecraftJar(new ProviderOptions
+ {
+ HttpClientFactory = sp.GetRequiredService()
+ }));
+
+ return services;
+ }
+}
\ No newline at end of file
diff --git a/MinecraftJars.Tests/DependencyInjectionTests.cs b/MinecraftJars.Tests/DependencyInjectionTests.cs
new file mode 100644
index 0000000..2ff2ec0
--- /dev/null
+++ b/MinecraftJars.Tests/DependencyInjectionTests.cs
@@ -0,0 +1,15 @@
+using Microsoft.Extensions.DependencyInjection;
+using MinecraftJars.Extension.DependencyInjection;
+
+namespace MinecraftJars.Tests;
+
+[TestFixture, Order(5)]
+public class DependencyInjectionTests
+{
+ [Test]
+ public void DependencyInjection_Success()
+ {
+ using var serviceProvider = new ServiceCollection().AddMinecraftJar().BuildServiceProvider();
+ Assert.That(serviceProvider.GetService(), Is.Not.Null);
+ }
+}
\ No newline at end of file
diff --git a/MinecraftJars.Tests/DownloadTests.cs b/MinecraftJars.Tests/DownloadTests.cs
index 3687bb6..d367371 100644
--- a/MinecraftJars.Tests/DownloadTests.cs
+++ b/MinecraftJars.Tests/DownloadTests.cs
@@ -8,9 +8,9 @@ namespace MinecraftJars.Tests;
[TestFixture, Order(4)]
public class DownloadTests
{
- private static readonly MinecraftJarManager JarManager = new();
+ private static readonly MinecraftJar MinecraftJar = new();
private static IEnumerable Projects() =>
- JarManager.GetProviders().SelectMany(p => p.Projects.Select(t => t.Name));
+ MinecraftJar.GetProviders().SelectMany(p => p.Projects.Select(t => t.Name));
[Test, Order(1)]
[Ignore("Very time consuming should only be utilised when necessary")]
@@ -18,7 +18,7 @@ public class DownloadTests
[ValueSource(nameof(Projects))] string projectName,
[Values(true, false)] bool loadFileSize)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
foreach (var version in await project.GetVersions())
{
@@ -42,7 +42,7 @@ public class DownloadTests
[ValueSource(nameof(Projects))] string projectName,
[Values(true, false)] bool loadFileSize)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var version = (await project.GetVersions(new VersionOptions { MaxRecords = 1 })).First();
TestContext.Progress.WriteLine("{0}: Retrieving download for version {1}",
@@ -63,7 +63,7 @@ public class DownloadTests
[Ignore("Very time consuming should only be utilised when necessary. Git and Java must be installed")]
public async Task BuildSpigot_Success(string projectName)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var version = (await project.GetVersions(new VersionOptions { MaxRecords = 1 })).First();
TestContext.Progress.WriteLine("{0}: Start building {1} version {2}",
@@ -98,7 +98,7 @@ public async Task BuildSpigot_Success(string projectName)
[Ignore("Very time consuming should only be utilised when necessary. Git and Java must be installed")]
public async Task BuildSpigot_Cancel(string projectName)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var version = (await project.GetVersions(new VersionOptions { MaxRecords = 1 })).First();
TestContext.Progress.WriteLine("{0}: Start building {1} version {2}",
diff --git a/MinecraftJars.Tests/MinecraftJars.Tests.csproj b/MinecraftJars.Tests/MinecraftJars.Tests.csproj
index fd2f453..7363fc8 100644
--- a/MinecraftJars.Tests/MinecraftJars.Tests.csproj
+++ b/MinecraftJars.Tests/MinecraftJars.Tests.csproj
@@ -19,6 +19,7 @@
+
diff --git a/MinecraftJars.Tests/ProjectTests.cs b/MinecraftJars.Tests/ProjectTests.cs
index 4b193c6..0befda5 100644
--- a/MinecraftJars.Tests/ProjectTests.cs
+++ b/MinecraftJars.Tests/ProjectTests.cs
@@ -5,18 +5,18 @@ namespace MinecraftJars.Tests;
[TestFixture, Order(2)]
public class ProjectTests
{
- private static readonly MinecraftJarManager JarManager = new();
- private static IEnumerable Providers() => JarManager.GetProviders().Select(p => p.Name);
+ private static readonly MinecraftJar MinecraftJar = new();
+ private static IEnumerable Providers() => MinecraftJar.GetProviders().Select(p => p.Name);
private static IEnumerable Groups() => Enum.GetValues();
[TestCaseSource(nameof(Providers)), Order(1)]
public void GetProviderByProject_Success(string providerName)
{
- var provider = JarManager.GetProvider(providerName);
+ var provider = MinecraftJar.GetProvider(providerName);
foreach (var project in provider.Projects)
{
- var providerByProject = JarManager.GetProvider(project);
+ var providerByProject = MinecraftJar.GetProvider(project);
Assert.That(providerByProject, Is.SameAs(provider));
TestContext.Progress.WriteLine("{0}: Provider for project {1} is {2}",
@@ -27,7 +27,7 @@ public void GetProviderByProject_Success(string providerName)
[TestCase, Order(2)]
public void GetProjects_Success()
{
- var projects = JarManager.GetProjects().ToList();
+ var projects = MinecraftJar.GetProjects().ToList();
Assert.That(projects, Is.Not.Empty);
TestContext.Progress.WriteLine("{0}: {1} projects found", nameof(GetProjects_Success), projects.Count);
@@ -36,7 +36,7 @@ public void GetProjects_Success()
[TestCaseSource(nameof(Groups)), Order(3)]
public void GetProjectsByGroup_Success(Group group)
{
- var projects = JarManager.GetProjects(group).ToList();
+ var projects = MinecraftJar.GetProjects(group).ToList();
Assert.That(projects.All(p => p.Group == group), Is.True);
TestContext.Progress.WriteLine("{0}: {1} projects found for {2}", nameof(GetProjectsByGroup_Success), projects.Count, group);
diff --git a/MinecraftJars.Tests/ProviderTests.cs b/MinecraftJars.Tests/ProviderTests.cs
index bccbbbd..cd4c78e 100644
--- a/MinecraftJars.Tests/ProviderTests.cs
+++ b/MinecraftJars.Tests/ProviderTests.cs
@@ -5,13 +5,13 @@ namespace MinecraftJars.Tests;
[TestFixture, Order(1)]
public class ProviderTests
{
- private static readonly MinecraftJarManager JarManager = new();
+ private static readonly MinecraftJar MinecraftJar = new();
private static IEnumerable Groups() => Enum.GetValues();
[TestCase, Order(1)]
public void GetProviders_Success()
{
- var providers = JarManager.GetProviders().ToList();
+ var providers = MinecraftJar.GetProviders().ToList();
Assert.That(providers, Is.Not.Empty);
TestContext.Progress.WriteLine("{0}: {1} providers found", nameof(GetProviders_Success), providers.Count);
@@ -20,7 +20,7 @@ public void GetProviders_Success()
[TestCaseSource(nameof(Groups)), Order(2)]
public void GetProvidersByGroup_Success(Group group)
{
- var providers = JarManager.GetProviders(group).ToList();
+ var providers = MinecraftJar.GetProviders(group).ToList();
Assert.That(providers, Is.Not.Empty);
TestContext.Progress.WriteLine("{0}: {1} providers found for {2}", nameof(GetProvidersByGroup_Success), providers.Count, group);
@@ -29,16 +29,16 @@ public void GetProvidersByGroup_Success(Group group)
[TestCase(100), Order(3)]
public void GetProvidersByGroup_InvalidGroup(Group group)
{
- Assert.That(JarManager.GetProviders(group), Is.Empty);
+ Assert.That(MinecraftJar.GetProviders(group), Is.Empty);
TestContext.Progress.WriteLine("{0}: Group {1} is invalid", nameof(GetProvidersByGroup_InvalidGroup), group);
}
[TestCase, Order(4)]
public void GetProviderByName_Success()
{
- foreach (var name in JarManager.GetProviders().Select(p => p.Name))
+ foreach (var name in MinecraftJar.GetProviders().Select(p => p.Name))
{
- var provider = JarManager.GetProvider(name);
+ var provider = MinecraftJar.GetProvider(name);
Assert.That(provider, Is.Not.Null);
TestContext.Progress.WriteLine("{0}: Provider for name {1} found", nameof(GetProviderByName_Success), name);
@@ -48,7 +48,7 @@ public void GetProviderByName_Success()
[TestCase("InvalidProviderName"), Order(5)]
public void GetProviderByName_InvalidProvider(string name)
{
- Assert.Throws(() => JarManager.GetProvider(name));
+ Assert.Throws(() => MinecraftJar.GetProvider(name));
TestContext.Progress.WriteLine("{0}: Provider name {1} invalid", nameof(GetProviderByName_InvalidProvider), name);
}
}
\ No newline at end of file
diff --git a/MinecraftJars.Tests/VersionTests.cs b/MinecraftJars.Tests/VersionTests.cs
index 42b1741..65cd49f 100644
--- a/MinecraftJars.Tests/VersionTests.cs
+++ b/MinecraftJars.Tests/VersionTests.cs
@@ -6,14 +6,14 @@ namespace MinecraftJars.Tests;
[TestFixture, Order(3)]
public class VersionTests
{
- private static readonly MinecraftJarManager JarManager = new MinecraftJarManager();
+ private static readonly MinecraftJar MinecraftJar = new();
private static IEnumerable Projects() =>
- JarManager.GetProviders().SelectMany(p => p.Projects.Select(t => t.Name));
+ MinecraftJar.GetProviders().SelectMany(p => p.Projects.Select(t => t.Name));
[TestCaseSource(nameof(Projects)), Order(1)]
public async Task GetVersions_Success(string projectName)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var versions = (await project.GetVersions()).ToList();
Assert.That(versions, Is.Not.Empty);
@@ -28,7 +28,7 @@ public async Task GetVersions_Success(string projectName)
[ValueSource(nameof(Projects))] string projectName,
[Values(5, 10)] int maxRecords)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var versions = (await project.GetVersions(new VersionOptions
{
MaxRecords = maxRecords
@@ -43,7 +43,7 @@ public async Task GetVersions_Success(string projectName)
[TestCaseSource(nameof(Projects)), Order(3)]
public async Task GetVersions_SpecificVersion(string projectName)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var version = (await project.GetVersions()).First();
var versions = (await project.GetVersions(new VersionOptions
{
@@ -69,7 +69,7 @@ public async Task GetVersions_SpecificVersion(string projectName)
[Order(4)]
public async Task GetVersions_ContainsSnapshot(string projectName)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var versions = (await project.GetVersions(new VersionOptions
{
@@ -92,7 +92,7 @@ public async Task GetVersions_ContainsSnapshot(string projectName)
[Order(5)]
public async Task GetVersions_ContainsNoSnapshot(string projectName)
{
- var project = JarManager.GetProjects().Single(p => p.Name.Equals(projectName));
+ var project = MinecraftJar.GetProjects().Single(p => p.Name.Equals(projectName));
var versions = (await project.GetVersions(new VersionOptions
{
IncludeSnapshotBuilds = false
diff --git a/MinecraftJars.sln b/MinecraftJars.sln
index 86c1582..3368b20 100644
--- a/MinecraftJars.sln
+++ b/MinecraftJars.sln
@@ -22,6 +22,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MinecraftJars.Plugin.Pocket
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MinecraftJars.Plugin.Fabric", "MinecraftJars.Plugin\MinecraftJars.Plugin.Fabric\MinecraftJars.Plugin.Fabric.csproj", "{032DAEF4-810E-44B4-A8E0-4A0039B1D42E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MinecraftJars.Extension.DependencyInjection", "MinecraftJars.Extension\MinecraftJars.Extension.DependencyInjection\MinecraftJars.Extension.DependencyInjection.csproj", "{A9F4324F-BABF-4EE1-9856-B169368BA9EE}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -72,5 +74,9 @@ Global
{032DAEF4-810E-44B4-A8E0-4A0039B1D42E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{032DAEF4-810E-44B4-A8E0-4A0039B1D42E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{032DAEF4-810E-44B4-A8E0-4A0039B1D42E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A9F4324F-BABF-4EE1-9856-B169368BA9EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A9F4324F-BABF-4EE1-9856-B169368BA9EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A9F4324F-BABF-4EE1-9856-B169368BA9EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A9F4324F-BABF-4EE1-9856-B169368BA9EE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
diff --git a/MinecraftJars/IMinecraftJar.cs b/MinecraftJars/IMinecraftJar.cs
new file mode 100644
index 0000000..0460c29
--- /dev/null
+++ b/MinecraftJars/IMinecraftJar.cs
@@ -0,0 +1,37 @@
+using MinecraftJars.Core.Projects;
+using MinecraftJars.Core.Providers;
+
+namespace MinecraftJars;
+
+public interface IMinecraftJar
+{
+ ///
+ /// Return a list of all providers (plugins)
+ ///
+ IEnumerable GetProviders();
+
+ ///
+ /// Return a list of all providers offering a certain project group
+ ///
+ IEnumerable GetProviders(Group group);
+
+ ///
+ /// Return a specific provider
+ ///
+ IMinecraftProvider GetProvider(string provider);
+
+ ///
+ /// Return the provider for the provided Project
+ ///
+ IMinecraftProvider GetProvider(IMinecraftProject project);
+
+ ///
+ /// Return a list of all projects (e.g. Vanilla, Spigot, etc.)
+ ///
+ IEnumerable GetProjects();
+
+ ///
+ /// Return a list of all projects for a certain type (e.g. all proxies)
+ ///
+ IEnumerable GetProjects(Group group);
+}
\ No newline at end of file
diff --git a/MinecraftJars/MinecraftJarManager.cs b/MinecraftJars/MinecraftJar.cs
similarity index 74%
rename from MinecraftJars/MinecraftJarManager.cs
rename to MinecraftJars/MinecraftJar.cs
index cc7045c..76cef83 100644
--- a/MinecraftJars/MinecraftJarManager.cs
+++ b/MinecraftJars/MinecraftJar.cs
@@ -7,7 +7,7 @@
namespace MinecraftJars;
-public class MinecraftJarManager
+public class MinecraftJar : IMinecraftJar
{
[ImportMany(typeof(IMinecraftProvider))]
private IEnumerable _providers;
@@ -18,7 +18,7 @@ public class MinecraftJarManager
[Export]
private PluginHttpClientFactory HttpClientFactory { get; }
- public MinecraftJarManager(ProviderOptions? options = null)
+ public MinecraftJar(ProviderOptions? options = null)
{
ProviderOptions = options ?? new ProviderOptions();
HttpClientFactory = new PluginHttpClientFactory(ProviderOptions.HttpClientFactory);
@@ -33,17 +33,11 @@ public MinecraftJarManager(ProviderOptions? options = null)
_providers ??= Enumerable.Empty();
}
- ///
- /// Return a list of all providers (plugins)
- ///
public IEnumerable GetProviders()
{
return _providers;
}
- ///
- /// Return a list of all providers offering a certain project group
- ///
public IEnumerable GetProviders(Group group)
{
var providers = new List();
@@ -54,36 +48,24 @@ public IEnumerable GetProviders(Group group)
return providers;
}
- ///
- /// Return a specific provider
- ///
public IMinecraftProvider GetProvider(string provider)
{
return _providers
.Single(p => p.Name.Equals(provider));
}
- ///
- /// Return the provider for the provided Project
- ///
public IMinecraftProvider GetProvider(IMinecraftProject project)
{
return _providers
.Single(p => p.Projects.Contains(project));
}
- ///
- /// Return a list of all projects (e.g. Vanilla, Spigot, etc.)
- ///
public IEnumerable GetProjects()
{
return GetProviders()
.SelectMany(p => p.Projects);
}
- ///
- /// Return a list of all projects for a certain type (e.g. all proxies)
- ///
public IEnumerable GetProjects(Group group)
{
return GetProviders()
diff --git a/README.md b/README.md
index 226e2f9..78855dd 100644
--- a/README.md
+++ b/README.md
@@ -66,16 +66,16 @@ Multiple options are available to install within your project:
## Usage
-MinecraftJars.NET comes with a `MinecraftJarManager` class which has to be instantiated, optionally `ProviderOptions` can be supplied.
+MinecraftJars.NET comes with a `MinecraftJar` class which has to be instantiated, optionally `ProviderOptions` can be supplied.
Each Plugin provides an interface instance for the provider `IMinecraftProvider` as well an interface instance for `IEnumerable` with it's versions `IEnumerable`.
Since getting the actual download link mostly involves another API query it is accessible via the `IMinecraftVersion.GetDownload()` method.
```CSharp
using MinecraftJars;
-var jarManager = new MinecraftJarManager();
+var minecraftJar = new MinecraftJar();
-foreach (var provider in jarManager.GetProviders())
+foreach (var provider in minecraftJar.GetProviders())
{
Console.WriteLine($"{provider}");
@@ -116,6 +116,12 @@ As an example with the Paper Minecraft experience following values can be expect
- Not all providers will fill all properties in each interface instance. Further information are provided in the README.md of each plugin.
+## Dependency Injection
+
+An extensions package is available for [Dependency Injection](MinecraftJars.Extension/MinecraftJars.Extension.DependencyInjection).
+Look up the project but it is as easy as installing it and adding MinecraftJar.NET to the DI.
+
+
## Demo application
Have a look at the [Console Demo](MinecraftJars.Demo/MinecraftJars.Demo.Console) within the repository.