diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8710f39..51ab07c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
+
+## [1.4.3] - 2023-06-03
+
+### Added
+- IMinecraftProject indicates what type of runtime the project requires (e.g. Java, Php or no special runtime)
+
+
## [1.4.2] - 2023-06-03
### Removed
diff --git a/MinecraftJars.Core/Projects/IMinecraftProject.cs b/MinecraftJars.Core/Projects/IMinecraftProject.cs
index c8dad15..55bc48b 100644
--- a/MinecraftJars.Core/Projects/IMinecraftProject.cs
+++ b/MinecraftJars.Core/Projects/IMinecraftProject.cs
@@ -24,6 +24,11 @@ public interface IMinecraftProject
///
string Url { get; }
+ ///
+ /// Required runtime for the project
+ ///
+ Runtime Runtime { get; }
+
///
/// PNG logo of the project
///
diff --git a/MinecraftJars.Core/Projects/Runtime.cs b/MinecraftJars.Core/Projects/Runtime.cs
new file mode 100644
index 0000000..e6e2131
--- /dev/null
+++ b/MinecraftJars.Core/Projects/Runtime.cs
@@ -0,0 +1,19 @@
+namespace MinecraftJars.Core.Projects;
+
+public enum Runtime
+{
+ ///
+ /// No special runtime required e.g. compiled executable for this os (e.g. Mojang Bedrock)
+ ///
+ None,
+
+ ///
+ /// Java installation required (most of the projects)
+ ///
+ Java,
+
+ ///
+ /// PHP installation required e.g. Pocketmine which requires a special PHP installation
+ ///
+ Php
+}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/FabricProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/FabricProjectFactory.cs
index b83eede..56e16f8 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/FabricProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/FabricProjectFactory.cs
@@ -5,14 +5,13 @@ namespace MinecraftJars.Plugin.Fabric;
internal static class FabricProjectFactory
{
- public const string Fabric = "Fabric";
-
public static readonly IEnumerable Projects = new List
{
new(Group: Group.Server,
- Name: Fabric,
+ Name: "Fabric",
Description: "Fabric is a lightweight, experimental modding toolchain for Minecraft.",
Url: "https://fabricmc.net",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Fabric)
};
}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/Model/FabricProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/Model/FabricProject.cs
index 5009ca4..cbcebff 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/Model/FabricProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Fabric/Model/FabricProject.cs
@@ -8,6 +8,7 @@ public record FabricProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/Model/MohistProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/Model/MohistProject.cs
index 9ed8a31..8f889c0 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/Model/MohistProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/Model/MohistProject.cs
@@ -8,6 +8,7 @@ public record MohistProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/MohistProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/MohistProjectFactory.cs
index 9894f18..2d3fb0f 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/MohistProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mohist/MohistProjectFactory.cs
@@ -5,14 +5,13 @@ namespace MinecraftJars.Plugin.Mohist;
internal static class MohistProjectFactory
{
- public const string Mohist = "Mohist";
-
public static readonly IEnumerable Projects = new List
{
new(Group: Group.Server,
- Name: Mohist,
+ Name: "Mohist",
Description: "Minecraft Forge Server Software Implementing Paper/Spigot/Bukkit API.",
Url: "https://mohistmc.com",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Mohist)
};
}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/Models/MojangProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/Models/MojangProject.cs
index fdfdc8e..1bd179f 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/Models/MojangProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/Models/MojangProject.cs
@@ -8,6 +8,7 @@ public record MojangProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/MojangProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/MojangProjectFactory.cs
index 68cd485..381f6d7 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/MojangProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Mojang/MojangProjectFactory.cs
@@ -5,20 +5,19 @@ namespace MinecraftJars.Plugin.Mojang;
internal class MojangProjectFactory
{
- public const string Vanilla = "Vanilla";
- public const string Bedrock = "Bedrock";
-
public static readonly IEnumerable Projects = new List
{
new(Group: Group.Server,
- Name: Vanilla,
+ Name: "Vanilla",
Description: "The Mojang vanilla Minecraft experience without mod support.",
Url: "https://www.minecraft.net/download/server",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Vanilla),
new(Group: Group.Bedrock,
- Name: Bedrock,
+ Name: "Bedrock",
Description: "Minecraft: Bedrock Edition refers to the multi-platform versions of Minecraft based on the Bedrock codebase.",
Url: "https://www.minecraft.net/download/server/bedrock",
+ Runtime: Runtime.None,
Logo: Properties.Resources.Bedrock)
};
}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/Model/PaperProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/Model/PaperProject.cs
index 4b1ce38..1dc9963 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/Model/PaperProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/Model/PaperProject.cs
@@ -8,6 +8,7 @@ public record PaperProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/PaperProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/PaperProjectFactory.cs
index 86dd145..052e275 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/PaperProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Paper/PaperProjectFactory.cs
@@ -11,21 +11,25 @@ internal static class PaperProjectFactory
Name: "Paper",
Description: "Paper is a Minecraft game server based on Spigot, designed to greatly improve performance and offer more advanced features and API.",
Url: "https://purpurmc.org",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Paper),
new(Group: Group.Server,
Name: "Folia",
Description: "Folia is a new fork of Paper that adds regionized multithreading to the server.",
Url: "https://papermc.io/software/folia",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Folia),
new(Group: Group.Proxy,
Name: "Velocity",
Description: "Velocity is the modern, high-performance proxy. Designed with performance and stability in mind, it’s a full alternative to Waterfall with its own plugin ecosystem.",
Url: "https://papermc.io/software/velocity",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Velocity),
new(Group: Group.Proxy,
Name: "Waterfall",
Description: "Waterfall is an upgraded BungeeCord, offering full compatibility with improvements to performance and stability.",
Url: "https://papermc.io/software/waterfall",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Waterfall)
};
}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/Model/PocketmineProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/Model/PocketmineProject.cs
index bd28790..e314d51 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/Model/PocketmineProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/Model/PocketmineProject.cs
@@ -8,6 +8,7 @@ public record PocketmineProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/PocketmineProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/PocketmineProjectFactory.cs
index 85df01f..18aadf6 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/PocketmineProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Pocketmine/PocketmineProjectFactory.cs
@@ -11,6 +11,7 @@ internal static class PocketmineProjectFactory
Name: "Pocketmine",
Description: "A highly customizable, open source server software for Minecraft: Bedrock Edition written in PHP.",
Url: "https://www.pocketmine.net",
+ Runtime.Php,
Logo: Properties.Resources.Pocketmine)
};
}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/Model/PurpurProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/Model/PurpurProject.cs
index f2e1e33..ff70f86 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/Model/PurpurProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/Model/PurpurProject.cs
@@ -8,6 +8,7 @@ public record PurpurProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/PurpurProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/PurpurProjectFactory.cs
index d98bd2b..2d85a5a 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/PurpurProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Purpur/PurpurProjectFactory.cs
@@ -11,6 +11,7 @@ internal static class PurpurProjectFactory
Name: "Purpur",
Description: "Purpur is a drop-in replacement for Paper servers designed for configurability, new fun and exciting gameplay features, and performance built on top of Paper.",
Url: "https://purpurmc.org",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Purpur)
};
}
\ No newline at end of file
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/Model/SpigotProject.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/Model/SpigotProject.cs
index cfb5bf3..4ce79fd 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/Model/SpigotProject.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/Model/SpigotProject.cs
@@ -8,6 +8,7 @@ public record SpigotProject(
string Name,
string Description,
string Url,
+ Runtime Runtime,
byte[] Logo) : IMinecraftProject
{
public async Task> GetVersions(
diff --git a/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/SpigotProjectFactory.cs b/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/SpigotProjectFactory.cs
index 55b204d..f7c4012 100644
--- a/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/SpigotProjectFactory.cs
+++ b/MinecraftJars.Plugin/MinecraftJars.Plugin.Spigot/SpigotProjectFactory.cs
@@ -5,20 +5,19 @@ namespace MinecraftJars.Plugin.Spigot;
internal static class SpigotProjectFactory
{
- public const string Spigot = "Spigot";
- public const string BungeeCord = "BungeeCord";
-
public static readonly IEnumerable Projects = new List
{
new(Group: Group.Server,
- Name: Spigot,
+ Name: "Spigot",
Description: "Spigot is a modified Minecraft server which provides additional performance optimizations, configuration options and features, whilst still remaining compatible with all existing plugins and consistent with Vanilla Minecraft game mechanics.",
Url: "https://www.spigotmc.org/wiki/spigot",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.Spigot),
new(Group: Group.Proxy,
- Name: BungeeCord,
+ Name: "BungeeCord",
Description: "BungeeCord acts as a proxy between the player's client and multiple connected Minecraft servers.",
Url: "https://www.spigotmc.org/wiki/bungeecord",
+ Runtime: Runtime.Java,
Logo: Properties.Resources.BungeeCord),
};