{"id":21860928,"url":"https://github.com/by1337/virtualentityapi","last_synced_at":"2025-10-08T13:32:46.692Z","repository":{"id":265141943,"uuid":"889174611","full_name":"By1337/VirtualEntityApi","owner":"By1337","description":"VirtualEntityApi is an API for creating packet entities.","archived":false,"fork":false,"pushed_at":"2024-12-29T20:58:34.000Z","size":694,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-29T21:26:14.001Z","etag":null,"topics":["bukkit","packet-entity","packets","protocol","spigot"],"latest_commit_sha":null,"homepage":"","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/By1337.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-11-15T18:55:27.000Z","updated_at":"2024-12-29T20:58:38.000Z","dependencies_parsed_at":"2024-12-29T21:24:20.451Z","dependency_job_id":"6ca038f4-ddd2-4448-918d-4e34b718365a","html_url":"https://github.com/By1337/VirtualEntityApi","commit_stats":null,"previous_names":["by1337/virtualentityapi"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/By1337%2FVirtualEntityApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/By1337%2FVirtualEntityApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/By1337%2FVirtualEntityApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/By1337%2FVirtualEntityApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/By1337","download_url":"https://codeload.github.com/By1337/VirtualEntityApi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235718693,"owners_count":19034658,"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":["bukkit","packet-entity","packets","protocol","spigot"],"created_at":"2024-11-28T03:09:04.831Z","updated_at":"2025-10-08T13:32:46.685Z","avatar_url":"https://github.com/By1337.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VirtualEntityApi\n\n**VirtualEntityApi** is an API for creating packet entities.\n\n### Features:\n- **Minimal use of NMS**.\n- **Maximum ease of use**.\n\nSupported versions: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.1, 1.20.4, 1.20.6, 1.21, 1.21.1, 1.21.3, 1.21.4\n\n---\n\n## Example Usage\n\n### Creating a packet mob\n```java\npublic void test(Player player) {\n    // Create a packet ArmorStand\n    VirtualArmorStand armorStand = VirtualArmorStand.create();\n    \n    // Set parameters\n    armorStand.setCustomName(Component.text(\"Custom name\"));\n    armorStand.setCustomNameVisible(true);\n    armorStand.setPos(new Vec3d(player.getLocation()));\n    armorStand.setNoBasePlate(true);\n    \n    // Pass the current list of observers\n    armorStand.tick(Set.of(player));\n}\n```\n\nWorking with packet mobs is very similar to working with regular mobs, except for the following differences:\n- Packet mobs **do not depend on chunk loading** (whether they are unloaded/loaded).\n- They ignore game rules such as `mob-spawning deny`, burning in sunlight, and physics.\n- They maintain their position even in the air and do not account for `velocity`.\n\n---\n\n### Automatic `tick` invocation with `PlayerTracker`\n```java\nprivate void spawn(Location location, Plugin plugin) {\n    PlayerTracker tracker = new PlayerTracker(location.getWorld(), new Vec3d(location));\n    \n    VirtualArmorStand armorStand = VirtualArmorStand.create();\n    armorStand.setCustomName(Component.text(\"Custom name\"));\n    armorStand.setCustomNameVisible(true);\n    armorStand.setPos(new Vec3d(location));\n    \n    tracker.addEntity(armorStand);\n    BukkitTask task = plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, tracker::tick, 1, 1);\n}\n```\n\n`PlayerTracker` automatically searches for players in the specified world and radius, invoking `tick` for the entities.\n\n---\n\n## Integration\n\n### Maven\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003eby1337-repo\u003c/id\u003e\n        \u003curl\u003ehttps://repo.by1337.space/repository/maven-releases/\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependencies\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003edev.by1337.virtualentity.api\u003c/groupId\u003e\n    \u003cartifactId\u003eVirtualEntityApi-api\u003c/artifactId\u003e\n    \u003cversion\u003e1.3\u003c/version\u003e\n    \u003cscope\u003eprovided\u003c/scope\u003e\n\u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n### Gradle\n```groovy\nrepositories {\n    maven {\n        name = \"by1337-repo\"\n        url = \"https://repo.by1337.space/repository/maven-releases/\"\n    }\n}\n\ndependencies {\n    compileOnly 'dev.by1337.virtualentity.api:VirtualEntityApi-api:1.2.4'\n}\n```\n\n---\n\n### License\n[MIT](LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fby1337%2Fvirtualentityapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fby1337%2Fvirtualentityapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fby1337%2Fvirtualentityapi/lists"}