{"id":21747208,"url":"https://github.com/plan-player-analytics/platform-abstraction-layer","last_synced_at":"2025-09-13T13:28:57.296Z","repository":{"id":46597489,"uuid":"341506782","full_name":"plan-player-analytics/Platform-abstraction-layer","owner":"plan-player-analytics","description":"Abstraction layer for different minecraft server platforms","archived":false,"fork":false,"pushed_at":"2025-01-26T09:48:28.000Z","size":164,"stargazers_count":2,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T06:53:20.279Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/plan-player-analytics.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,"zenodo":null}},"created_at":"2021-02-23T09:56:03.000Z","updated_at":"2025-01-26T09:48:31.000Z","dependencies_parsed_at":"2024-05-17T18:29:23.587Z","dependency_job_id":"0261fe75-ce60-47e0-8def-cbad6ebdc33a","html_url":"https://github.com/plan-player-analytics/Platform-abstraction-layer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/plan-player-analytics/Platform-abstraction-layer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plan-player-analytics%2FPlatform-abstraction-layer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plan-player-analytics%2FPlatform-abstraction-layer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plan-player-analytics%2FPlatform-abstraction-layer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plan-player-analytics%2FPlatform-abstraction-layer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plan-player-analytics","download_url":"https://codeload.github.com/plan-player-analytics/Platform-abstraction-layer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plan-player-analytics%2FPlatform-abstraction-layer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274968833,"owners_count":25383116,"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","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-26T08:08:20.954Z","updated_at":"2025-09-13T13:28:57.263Z","avatar_url":"https://github.com/plan-player-analytics.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Platform abstraction layer\n\nPlatform abstraction layer is a library for abstracting away some server platform specific implementations.\n\nCompared to the [the previous abstraction library](https://github.com/AuroraLS3/Abstract-Plugin-Framework), this library\nis more modular and main goal was to use composition rather than inheritance to gain access to the platform\nimplementations. This allows users of this API to use other libraries without worrying about compatibility issues.\n\n### Supported Minecraft server-platforms\n\n- [Spigot](https://www.spigotmc.org/)\n- [Folia](https://papermc.io/software/folia)\n- [Sponge](https://www.spongepowered.org/)\n- [Nukkit](https://cloudburstmc.org/)\n- [BungeeCord](https://www.spigotmc.org/wiki/bungeecord/)\n- [Velocity](https://www.velocitypowered.com/)\n\n### Building\n\n```bash\n./gradlew build\n```\n\n### Usage\n\n```groovy\nrepositories {\n    maven { // Platform abstraction layer repository\n        url = \"https://repo.playeranalytics.net/releases\"\n    }\n}\n\next.palVersion = \"5.3.0\"\n\ndependencies {\n    implementation \"net.playeranalytics:platform-abstraction-layer-api:$palVersion\"\n    \n    // Pick your platform(s)\n    implementation \"net.playeranalytics:platform-abstraction-layer-bukkit:$palVersion\"\n    implementation \"net.playeranalytics:platform-abstraction-layer-folia:$palVersion\"\n    implementation \"net.playeranalytics:platform-abstraction-layer-bungeecord:$palVersion\"\n    implementation \"net.playeranalytics:platform-abstraction-layer-nukkit:$palVersion\"\n    implementation \"net.playeranalytics:platform-abstraction-layer-sponge:$palVersion\"\n    implementation \"net.playeranalytics:platform-abstraction-layer-velocity:$palVersion\"\n}\n```\n\nInclude this library in your project and shade/shadow the library classes into the final artifact.  \nRelocate `net.playeranalytics.plugin` to a different location to avoid conflicts.\n\nAccess the API:\n\n```java\nPlatformAbstractionLayer layer;\n\n// org.bukkit.plugin.java.JavaPlugin\nlayer =new\n\nBukkitPlatformLayer(javaPlugin);\n// org.bukkit.plugin.java.JavaPlugin\nlayer =new\n\nFoliaPlatformLayer(javaPlugin); // Throws IllegalStateException on non-Folia servers\n// Object (has @Plugin annotation), File, org.slf4j.Logger\nlayer = new SpongePlatformLayer(plugin, dataFolder, logger); \n// cn.nukkit.plugin.PluginBase\nlayer = new NukkitPlatformLayer(pluginBase);\n// net.md_5.bungee.api.plugin.Plugin\nlayer = new BungeePlatformLayer(plugin);\n// Object (has @Plugin annotation), ProxyServer, org.slf4j.Logger, Path\nlayer = new VelocityPlatformLayer(plugin, proxy, logger, dataFolderPath);     \n```\n\nSee the javadoc for further details on each feature `PlatformAbstractionLayer` provides.\n\n### Features\n\n- Console logging\n- Access to plugin meta-data, jar-resources and configuration folder\n- Access to platform task scheduling\n- Managing listeners of specific platform\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplan-player-analytics%2Fplatform-abstraction-layer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplan-player-analytics%2Fplatform-abstraction-layer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplan-player-analytics%2Fplatform-abstraction-layer/lists"}