{"id":19690049,"url":"https://github.com/spacemex/spaceskill-api","last_synced_at":"2025-02-27T08:45:10.996Z","repository":{"id":257985693,"uuid":"873889019","full_name":"spacemex/SpaceSkill-Api","owner":"spacemex","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-31T21:03:28.000Z","size":65,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-10T08:36:48.973Z","etag":null,"topics":["minecr","minecraft-plugin","plugin"],"latest_commit_sha":null,"homepage":"https://www.spigotmc.org/resources/skillapi.120269/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spacemex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-16T22:30:12.000Z","updated_at":"2024-12-01T15:35:49.000Z","dependencies_parsed_at":"2024-10-20T01:10:00.260Z","dependency_job_id":"94e16f6a-0e91-4cdf-bb36-689f1c393b3b","html_url":"https://github.com/spacemex/SpaceSkill-Api","commit_stats":null,"previous_names":["spacemex/skillapi"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacemex%2FSpaceSkill-Api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacemex%2FSpaceSkill-Api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacemex%2FSpaceSkill-Api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacemex%2FSpaceSkill-Api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spacemex","download_url":"https://codeload.github.com/spacemex/SpaceSkill-Api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240996245,"owners_count":19890918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minecr","minecraft-plugin","plugin"],"created_at":"2024-11-11T19:04:12.695Z","updated_at":"2025-02-27T08:45:10.957Z","avatar_url":"https://github.com/spacemex.png","language":"Java","readme":"# SpaceSkill-Api - A Comprehensive API for Managing Skills in Bukkit Plugins\n\n[![Java CI with Maven](https://github.com/spacemex/SpaceSkill-Api/actions/workflows/maven.yml/badge.svg)](https://github.com/spacemex/SpaceSkill-Api/actions/workflows/maven.yml)\n[![](https://jitpack.io/v/spacemex/SpaceSkill-Api.svg)](https://jitpack.io/#spacemex/SpaceSkill-Api)\n\n### SpaceSkill-Api is a powerful and flexible API designed to simplify the creation and management of skills in Bukkit plugins.\n\n## How to include the API\n\n### With Maven:\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.github.spacemex\u003c/groupId\u003e\n        \u003cartifactId\u003eSpaceSkill-Api\u003c/artifactId\u003e\n        \u003cversion\u003e1.0\u003c/version\u003e\n        \u003cscope\u003eprovided\u003c/scope\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n### With Gradle:\n\n```groovy\nrepositories {\n    maven { url 'https://jitpack.io' }\n}\ndependencies {\n    compileOnly \"com.github.spacemex:SpaceSkill-Api:1.0\"\n}\n```\n\n**Note:** Replace `1.0` with the actual version number you are using.\n\n## Why SpaceSkill-Api?\n\nSpaceSkill-Api aims to provide a centralized system for skill management, making it easier for developers to create, use, and extend skills in their plugins. SpaceSkill-Api offers:\n\n* An easy-to-use interface for defining skills.\n* A base abstract class to simplify skill implementation.\n* Powerful utility classes for handling experience and levels.\n* Extensibility for adding custom functionality.\n\n## License\n\nSpaceSkill-Api is distributed under the MIT License. This means you are free to use, modify, and distribute it as long as you include the original license information.\n\n## Building\n\nSpaceSkill-Api includes all the necessary libraries to build from the current branch.\n\n## Implementing SpaceSkill-Api\n\nImplementing SpaceSkill-Api is straightforward. Below is an example of how to create a custom skill and hook into the API.\n\n### Example Plugin\n\n## Or A More Refined Example Plugin: [https://github.com/spacemex/SpaceSkill-ApiExamplePlugin](https://github.com/spacemex/SpaceSkillApiExamplePlugin)\n\n```java\npackage com.example.skillplugin;\n\nimport com.github.spacemex.skillApi.Skills.*;\nimport org.bukkit.OfflinePlayer;\nimport org.bukkit.command.Command;\nimport org.bukkit.command.CommandSender;\nimport org.bukkit.entity.Player;\nimport org.bukkit.plugin.java.JavaPlugin;\n\npublic class ExamplePlugin extends JavaPlugin {\n\n    private SkillManager skillManager;\n\n    @Override\n    public void onEnable() {\n        // Initialize your SpaceSkill-Api and SkillManager here\n        skillManager = new SkillManager();\n        skillManager.registerSkill(new MiningSkill());\n\n        getLogger().info(String.format(\"[%s] Enabled Version %s\", getDescription().getName(), getDescription().getVersion()));\n    }\n\n    @Override\n    public void onDisable() {\n        getLogger().info(String.format(\"[%s] Disabled Version %s\", getDescription().getName(), getDescription().getVersion()));\n    }\n\n    @Override\n    public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {\n        if (!(sender instanceof Player)) {\n            getLogger().info(\"Only players are supported for this Example Plugin.\");\n            return true;\n        }\n\n        Player player = (Player) sender;\n        Skill miningSkill = skillManager.getSkill(\"Mining\");\n\n        if (command.getLabel().equals(\"check-skill\")) {\n            double exp = miningSkill.getExp(player);\n            int level = miningSkill.getLevel(player);\n            sender.sendMessage(String.format(\"You have %s experience and are level %d in Mining.\", exp, level));\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    public SkillManager getSkillManager() {\n        return skillManager;\n    }\n}\n```\n\n### Creating a Custom Skill\n\n```java\npackage com.example.skillplugin;\n\nimport com.github.spacemex.skillApi.Skills.AbstractSkill;\nimport org.bukkit.OfflinePlayer;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class MiningSkill extends AbstractSkill {\n\n    private final Map\u003cOfflinePlayer, Double\u003e playerExp;\n    private final Map\u003cOfflinePlayer, Integer\u003e playerLevels;\n\n    public MiningSkill() {\n        super(\"Mining\");\n        this.playerExp = new HashMap\u003c\u003e();\n        this.playerLevels = new HashMap\u003c\u003e();\n    }\n\n    @Override\n    public boolean hasExp(OfflinePlayer player, int exp) {\n        return getExp(player) \u003e= exp;\n    }\n\n    @Override\n    public boolean hasLevel(OfflinePlayer player, int level) {\n        return getLevel(player) \u003e= level;\n    }\n\n    @Override\n    public double getExp(OfflinePlayer player) {\n        return playerExp.getOrDefault(player, 0.0);\n    }\n\n    @Override\n    public int getLevel(OfflinePlayer player) {\n        return playerLevels.getOrDefault(player, 0);\n    }\n\n    @Override\n    protected void setExp(OfflinePlayer player, double exp) {\n        playerExp.put(player, exp);\n    }\n\n    @Override\n    protected void setLevel(OfflinePlayer player, int level) {\n        playerLevels.put(player, level);\n    }\n\n    @Override\n    public double getExpToLevel(int level) {\n        return level * 100.0; // Example: each level requires 100 exp points\n    }\n}\n```\n\n## Conclusion\n\nSpaceSkill-Api provides a robust platform for skill management in Bukkit plugins. For detailed documentation and further examples, please visit the [GitHub repository](https://github.com/spacemex/SpaceSkill-Api).\n\nFeel free to open issues or contribute to the repository! Happy coding!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacemex%2Fspaceskill-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspacemex%2Fspaceskill-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacemex%2Fspaceskill-api/lists"}