{"id":33605832,"url":"https://github.com/mapacheee/extendedhorizons","last_synced_at":"2026-04-24T02:05:24.718Z","repository":{"id":320299300,"uuid":"1026405464","full_name":"Mapacheee/ExtendedHorizons","owner":"Mapacheee","description":"The best high-performance per-player view distance via Packets!","archived":false,"fork":false,"pushed_at":"2026-03-29T15:34:06.000Z","size":602,"stargazers_count":55,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"v3","last_synced_at":"2026-03-29T18:10:07.268Z","etag":null,"topics":["folia","folia-plugin","minecraftplugin","packetevents","paper-plugin","papermc-plugin","viewdistance"],"latest_commit_sha":null,"homepage":"https://discord.gg/yA3vD2S8Zj","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mapacheee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-25T20:40:48.000Z","updated_at":"2026-03-29T15:34:10.000Z","dependencies_parsed_at":"2025-10-23T03:25:55.534Z","dependency_job_id":"62eb15cb-4754-4e6c-8fb3-d20b300eedfb","html_url":"https://github.com/Mapacheee/ExtendedHorizons","commit_stats":null,"previous_names":["mapacheee/extendedhorizons"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/Mapacheee/ExtendedHorizons","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mapacheee%2FExtendedHorizons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mapacheee%2FExtendedHorizons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mapacheee%2FExtendedHorizons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mapacheee%2FExtendedHorizons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mapacheee","download_url":"https://codeload.github.com/Mapacheee/ExtendedHorizons/tar.gz/refs/heads/v3","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mapacheee%2FExtendedHorizons/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31371641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["folia","folia-plugin","minecraftplugin","packetevents","paper-plugin","papermc-plugin","viewdistance"],"created_at":"2025-11-30T15:04:42.877Z","updated_at":"2026-04-24T02:05:24.711Z","avatar_url":"https://github.com/Mapacheee.png","language":"Java","funding_links":["https://paypal.me/mapachedou"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"1080\" height=\"462\" alt=\"eh_main(1)(1)\" src=\"https://i.imgur.com/cJ3108T.png\" /\u003e\n\u003c/div\u003e\n\n---\n## What is ExtendedHorizons?\n\nExtendedHorizons is a high-performance view-distance extension plugin for modern Paper/Folia servers.  \nIt renders distant terrain using optimized fake chunks and optional far-player sync, so players can see farther than vanilla without the usual server overhead.\n\n---\n## Dependencies\n\n- [MapacheeeLib](https://github.com/Mapacheee/MapacheeeLib)\n- [PlaceholderAPI](https://github.com/PlaceholderAPI/PlaceholderAPI) *(optional hook)*\n- [FastAsyncWorldEdit](https://github.com/IntellectualSites/FastAsyncWorldEdit/releases) *(optional hook)*\n\n---\n## How to build\n\nBuild this project with this command: \n```cmd\n./gradlew shadowJar\n```\nThe artifact will be generated in `build/libs/ExtendedHorizons-{version}.jar` ready to use!\n\n---\n## For developers\n\nExtendedHorizons is built entirely with WinterFramework (Guice), so you can inject its services directly or resolve them statically.\n\nAdd this to your `plugin.yml` or `paper-plugin.yml`:\n```yaml\ndepend:\n  - ExtendedHorizons\n```\n\n### Accessing Services\n\nYou can access services natively through the Guice Injector provided by WinterFramework:\n\n```java\nimport me.mapacheee.extendedhorizons.ExtendedHorizonsPlugin;\nimport me.mapacheee.extendedhorizons.config.ConfigFacade;\nimport me.mapacheee.extendedhorizons.fakechunks.session.SessionRegistry;\nimport org.bukkit.plugin.java.JavaPlugin;\n\nExtendedHorizonsPlugin eh = JavaPlugin.getPlugin(ExtendedHorizonsPlugin.class);\n\n// Retrieve via standard Guice Injector:\nSessionRegistry sessionRegistry = eh.getInjector().getInstance(SessionRegistry.class);\n\n// Or via the static helper:\nsessionRegistry = ExtendedHorizonsPlugin.getService(SessionRegistry.class);\n```\n\n### What you can do through these services:\n\n- **Override view distance:** Set a custom radius for specific players dynamically.\n  ```java\n  PlayerSession session = sessionRegistry.ensureFor(player, false);\n  session.playerOverrideDistance(64); // See up to 64 fake chunks\n  ```\n- **Reset view distance:** Clear the custom override and allow the plugin to fall back to `world-settings` or `permissions`.\n  ```java\n  PlayerSession session = sessionRegistry.get(player.getUniqueId());\n  if (session != null) {\n      session.resetPlayerOverrideDistance();\n  }\n  ```\n- **Read configuration:** Access world rules, safe factors, and far-player settings dynamically via `configFacade.get()`.\n- **Track Far Players:** ExtendedHorizons natively syncs far players. You can read the `trackedFarPlayers()` from a `PlayerSession` to see exactly which entities are being simulated locally.\n\n---\n## Contribute\nTo contribute to this project, just follow this steps:\n- Fork repository.\n- Make ur changes.\n- Make sure your changes work.\n- Create a pull request explaining what you've done!\n\nEvery contribution is welcome and appreciated!\n\n---\n## Support\n- Report issues and suggestions in the repository’s issues section.\n- Join our Discord: [discord.gg/yA3vD2S8Zj](https://discord.gg/yA3vD2S8Zj)\n- Consider donate: [PayPal](https://paypal.me/mapachedou)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapacheee%2Fextendedhorizons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmapacheee%2Fextendedhorizons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapacheee%2Fextendedhorizons/lists"}