{"id":30741136,"url":"https://github.com/iiahmedyt/moderndisguise","last_synced_at":"2025-09-04T00:44:50.623Z","repository":{"id":83926769,"uuid":"533035584","full_name":"iiAhmedYT/ModernDisguise","owner":"iiAhmedYT","description":"ModernDisguise is a free lightweight open-source high quality library to help you add a disguise/nick system in your minecraft plugin","archived":false,"fork":false,"pushed_at":"2025-07-24T17:55:58.000Z","size":638,"stargazers_count":95,"open_issues_count":1,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-24T23:05:27.273Z","etag":null,"topics":["disguise","java","minecraft","nick","skin","spigot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iiAhmedYT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":"2022-09-05T19:34:46.000Z","updated_at":"2025-07-24T17:56:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"af128e43-a9c8-48aa-acd9-e1496ededbb8","html_url":"https://github.com/iiAhmedYT/ModernDisguise","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/iiAhmedYT/ModernDisguise","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iiAhmedYT%2FModernDisguise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iiAhmedYT%2FModernDisguise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iiAhmedYT%2FModernDisguise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iiAhmedYT%2FModernDisguise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iiAhmedYT","download_url":"https://codeload.github.com/iiAhmedYT/ModernDisguise/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iiAhmedYT%2FModernDisguise/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273534470,"owners_count":25122677,"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-03T02:00:09.631Z","response_time":76,"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":["disguise","java","minecraft","nick","skin","spigot"],"created_at":"2025-09-04T00:44:49.698Z","updated_at":"2025-09-04T00:44:50.615Z","avatar_url":"https://github.com/iiAhmedYT.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](assets/ModernDisguise.png)\n\n## 💬 Description\nModernDisguise is a free lightweight open-source high quality library to help you add a disguise system to your\nminecraft plugin\n\nHere's the [SpigotMC Forum](https://www.spigotmc.org/threads/moderndisguise-a-lightweight-free-open-source-disguise-library.582167/)\n\n## 😎 Features\nYou can change the player's:\n- Name (Server side)\n- Skin (Server side)\n- EntityType (up to 82 entities) (Client side \u0026 other players only can see it)\n\n## ✅ Supported versions\n- 1.8.8 (1_8_R3)\n- 1.9.4 (1_9_R2)\n- 1.10.x (1_10_R1)\n- 1.11.x (1_11_R1)\n- 1.12.x (1_12_R1)\n- 1.13.x (1_13_R1, 1_13_R2)\n- 1.14.x (1_14_R1)\n- 1.15.x (1_15_R1)\n- 1.16.x (1_16_R1, 1_16_R2, 1_16_R3)\n- 1.17.x (1_17_R1)\n- 1.18.x (1_18_R1, 1_18_R2)\n- 1.19.x (1_19_R1, 1_19_R2, 1_19_R3)\n- 1.20.x (1_20_R1, 1_20_R2, 1_20_R3, 1_20_R4)\n- 1.21.x (1_21_R1, 1_21_R2, 1_21_R3, 1_21_R4, 1_21_R5)\n\n## ⚠️ WARNING\nOn versions that support Mojang Chat-Reports this library disables that feature in order for disguised players to chat.\nYou can disable it by using DisguiseProvider#allowOverrideChat(false)\n\nExample:\n```java\npublic class ExampleClass {\n\n    private final DisguiseProvider provider = DisguiseManager.getProvider();\n\n    public ExampleClass() {\n        boolean allowEntities = getConfig().getBoolean(\"allow-entity-disguises\");\n        DisguiseManager.initialize(ExamplePlugin.getInstance(), allowEntities);\n        provider.allowOverrideChat(false);\n    }\n\n}\n```\n\n## ➕ Add to your project\n### Maven\nAdd this repo to your repositories:\n\n```xml\n\u003crepository\u003e\n    \u003cid\u003egravemc-repo\u003c/id\u003e\n    \u003curl\u003ehttps://repo.gravemc.net/releases/\u003c/url\u003e\n\u003c/repository\u003e\n```\n\nand then add this dependancy:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003edev.iiahmed\u003c/groupId\u003e\n    \u003cartifactId\u003eModernDisguise\u003c/artifactId\u003e\n    \u003cversion\u003e4.3\u003c/version\u003e\n    \u003cscope\u003ecompile\u003c/scope\u003e\n\u003c/dependency\u003e\n```\nand you can relocate them as well, here's an example maven-shade-plugin config:\n```xml\n\u003cconfiguration\u003e\n    \u003cfilters\u003e\n        \u003cfilter\u003e\n            \u003cartifact\u003e*:*\u003c/artifact\u003e\n            \u003cexcludes\u003e\n                \u003cexclude\u003eMETA-INF/\u003c/exclude\u003e\n            \u003c/excludes\u003e\n        \u003c/filter\u003e\n    \u003c/filters\u003e\n    \u003crelocations\u003e\n        \u003crelocation\u003e\n            \u003cpattern\u003edev.iiahmed.disguise\u003c/pattern\u003e\n            \u003cshadedPattern\u003eyour.own.package.disguise\u003c/shadedPattern\u003e\n        \u003c/relocation\u003e\n    \u003c/relocations\u003e\n\u003c/configuration\u003e\n```\n### Gradle\nAdd this repo to your repositories block:\n```kt\nrepositories {\n    maven {\n        name = \"gravemc-repo\"\n        url = \"https://repo.gravemc.net/releases/\"\n    }\n}\n```\n\nand now add dependency:\n```kt\ndependencies {\n    implementation(\"dev.iiahmed:ModernDisguise:4.3\")\n}\n```\n\n## 🧑‍💻 Usage\nHere's an example usage of the API (easiest):\n\n```java\nimport dev.iiahmed.disguise.*;\n\nimport java.util.UUID;\nimport java.util.regex.Pattern;\n\npublic class ExampleClass implements Listener {\n\n    private final DisguiseProvider provider = DisguiseManager.getProvider();\n\n    public ExampleClass() {\n        boolean allowEntities = getConfig().getBoolean(\"allow-entity-disguises\");\n        DisguiseManager.initialize(ExamplePlugin.getInstance(), allowEntities);\n        provider.allowOverrideChat(false);\n    }\n\n    @EventHandler\n    public void onJoin(PlayerJoinEvent event) {\n        Player player = event.getPlayer();\n        Disguise disguise = Disguise.builder()\n                .setName(\"BillBobbyBob\")\n                // you could as well use Disguise.Builder#setSkin(Skin)\n                // or even Disguise.Builder#setSkin(uuid)\n                // it's recommended to run this async since #setSkin from an online API will block the mainthread\n                .setSkin(SkinAPI.MOJANG, UUID.fromString(\"d3db29ff-9bc2-4828-993f-3a75929280f5\"))\n                // this will change the player into a zombie for others only\n                .setEntityType(EntityType.ZOMBIE)\n                .build();\n        provider.disguise(player, disguise);\n    }\n\n}\n```\n\nHere's an advanced way of using it:\n```java\nimport dev.iiahmed.disguise.*;\n\npublic class ExampleClass implements Listener {\n\n    private final DisguiseProvider provider = DisguiseManager.getProvider();\n\n    public ExampleClass() {\n        boolean allowEntities = getConfig().getBoolean(\"allow-entity-disguises\");\n        DisguiseManager.initialize(ExamplePlugin.getInstance(), allowEntities);\n        provider.allowOverrideChat(false);\n        provider.setNameLength(16);\n        provider.setNamePattern(Pattern.compile(\"^[a-zA-Z0-9_]{1,16}$\"));\n    }\n\n    @EventHandler\n    public void onJoin(PlayerJoinEvent event) {\n        Player player = event.getPlayer();\n        Disguise disguise = Disguise.builder()\n                .setName(\"BillBobbyBob\")\n                // you could as well use Disguise.Builder#setSkin(Skin)\n                // or even Disguise.Builder#setSkin(uuid)\n                // it's recommended to run this async since #setSkin from an online API will block the mainthread\n                .setSkin(SkinAPI.MOJANG, UUID.fromString(\"d3db29ff-9bc2-4828-993f-3a75929280f5\"))\n                // this will change the player into a zombie for others only\n                .setEntity(builder -\u003e builder.setType(type).setAttribute(RangedAttribute.SCALE, 3.0D))\n                .build();\n        DisguiseResponse response = provider.disguise(player, disguise);\n        // there are 8 responses other than DisguiseResponse#SUCCESS\n        switch (response) {\n            case SUCCESS -\u003e player.sendMessage(\"Disguise is successful.\");\n            case FAIL_NAME_ALREADY_ONLINE -\u003e player.sendMessage(\"There's already an online player with that name.\");\n            default -\u003e player.sendMessage(\"Disguise is unsuccessful with the reason \" + response.toString());\n        }\n    }\n\n}\n```\n\nThere's way more to it but I'd rather you figure it out on your own by checking the DisguiseProvider class :)\n\n## 🏗️ Building\n###### 1- Building Spigot Versions (could be skipped if downloaded using codemc)\nAll these versions have to be built using Spigot's BuildTools\n- 1.8.8\n- 1.9.4\n- 1.10.2\n- 1.11.2\n- 1.12.2\n- 1.13, 1.13.2\n- 1.14.4\n- 1.15.2\n- 1.16.1, 1.16.3, 1.16.5\n\nVersions from now-on should be built with the ```--remapped``` flag\n- 1.17.1\n- 1.18.1, 1.18.2\n- 1.19.2, 1.19.3, 1.19.4\n- 1.20.1, 1.20.2, 1.20.4, 1.20.6\n- 1.21.1, 1.21.3, 1.21.4, 1.21.5, 1.21.7\n\n###### 2- Cloning\nYou can either clone the repository using the famous ```git clone``` command or use your IDE's clone feature\n\nCongratulations! Now you can build ModernDisguise with the command ```./gradlew shadowJar```\n\n## 🪪 License\nThis project is licensed under the [GPL-3.0 License](LICENSE.md)\n## ☀️ Credits\nShoutout to those people for helping me test this project and helping me find every single bug\n\n- [Bermine](https://github.com/Bermiin)\n- [Timury](https://github.com/MrKotex)\n- [noobi](https://github.com/c0dingnoobi)\n\nThanks to [all the github contributors](https://github.com/iiAhmedYT/ModernDisguise/graphs/contributors)\n\nThanks JetBrains for providing me an Open-Source development tools License ❤️\n\n![](assets/JetBrains.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiiahmedyt%2Fmoderndisguise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiiahmedyt%2Fmoderndisguise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiiahmedyt%2Fmoderndisguise/lists"}