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), };