DisguiseCraft
Tired of backwards EnderDragons? Upward looking chickens? Or some of the other bugs in MobDisguise? Ready to try something brand new? With DisguiseCraft we are taking a brand new approach on mob/player disguises by taking advantage of the advanced features released in the 1.1-R4 build of CraftBukkit!
Features:
- Disguise as any mob
- This includes: babies, colored sheep, sized slimes/magmacubes, tamed/aggressive wolves with colored collars, tabby/tuxedo/siamese cats, saddled pigs, villager occupations, and charged creepers
- Also unnatural slime/magmacube sizes: bigger, massive, godzilla
- You can also set the disguise on fire and hold blocks as an Enderman
- This includes: babies, colored sheep, sized slimes/magmacubes, tamed/aggressive wolves with colored collars, tabby/tuxedo/siamese cats, saddled pigs, villager occupations, and charged creepers
- Disguise as any player, including their skin, cape, and in-chat name
- The item you are holding and arm swings are shown
- Disguise as certain objects
- This includes the vehicles: boat, minecart, poweredminecart, storageminecart
- And the blocks: endercrystal, fallingblock (different materials)
- No Spout necessary! Disguised players' names are not shown in SpoutCraft (This is because the disguised player's packets are not sent to other clients)
- No Backwards EnderDragon! No messed up chicken head!
- Permissions support (All popular permissions systems)
- Multi-world permissions are supported
- Granular player-disguise nodes
- The player list doesn't show players who are disguised in your world
- The ability to see through disguises is given with a permission node (disguisecraft.seer)
- Disguises can fool mobs too! (disguisecraft.notarget & disguisecraft.notarget.strict)
- Item-pickup can be disabled while wearing a disguise
- You can disguise or undisguise other players
- You can keep your disguise even after log out (Activate in the config)
- Utilizes the Plugin Metrics service
- All of the commands have tab completion
- Developer API to allow for plugin integration
Commands:
Legend: <required> [optional]
- /d or /dis or /disguise [mobname/materialname] - Disguise as a mob or falling block of a given material (If no mob is given, the available disguises are listed) {also gives current disguise}
- /d baby [mobname] - Disguise as a baby mob (If no mob is given, the current disguise is used)
- /d <color> [sheep/wolf] - Disguise as a colored sheep or a wolf with a colored collar
- /d charged creeper - Disguise as a charged creeper
- /d <tiny/small/big/bigger/massive/godzilla> [slime/magmacube] - Disguise as a specifically-sized slime or magmacube
- /d <tamed/aggressive> [wolf] - Disguise as a tamed or aggressive wolf
- /d <tabby/tuxedo/siamese> [ocelot] - Disguise as a tabby, tuxedo, or siamese cat
- /d <saddled> [pig] - Disguise as a saddled pig
- /d <donkey/mule/undead/skeletal> [horse] - Disguise as a horse type
- /d <librarian/priest/blacksmith/butcher/generic> [villager] - Disguise as a villager with an occupation
- /d infected [zombie] - Disguise as a villager zombie
- /d wither skeleton - Disguise as a wither skeleton
- /d hold <block name/id #> - Hold blocks as an Enderman
- /d <burning> [mobname] - Disguise as a burning form of any mob
- /d player <playername> - Disguise as a player
- /d <nopickup/np> - Disable item pickup
- /d <blocklock/bl> - Locks your disguise to the center of the block you're in
- /d <noarmor/bl> - Makes your armor not show on your disguise
- /d <send/s> <playername/*> - Send your disguise to another player (or everybody)
- /u or /undis or /undisguise [playername/*] - Undisguise yourself or another player (or everybody)
These commands can all also be run from the console. You just need to specify the player name right after the /d or /u.
Permission Nodes:
Defaulted group in parenthesis (Note: Defaults are overriden by the '*' permission)
- disguisecraft.* - Has all DisguiseCraft privileges (Nobody)
- disguisecraft.other.* - Can use any of the disguise commands affecting others (Op)
- disguisecraft.other.disguise - Can disguise other players
- disguisecraft.other.undisguise - Can undisguise other players
- disguisecraft.seer - Can see nametags through disguises (Nobody)
- disguisecraft.notarget - Is not targeted by mobs while disguised as one (Everybody)
- disguisecraft.notarget.strict - Not targeted even after attacking the mob (Op)
- disguisecraft.player.* - Can disguise as any player (Op)
- disguisecraft.player.<playername> - Can disguise as the specified player
- disguisecraft.mob.* - Can disguise as any mob (Op)
- disguisecraft.mob.<mobname> - Can disguise as the specified mob
- disguisecraft.mob.<mobname>.baby - Can disguise as baby form
- disguisecraft.mob.sheep.color.* - Can disguise as a sheep of any color
- disguisecraft.mob.creeper.charged - Can disguise as a charged creeper
- disguisecraft.mob.<slime/magmacube>.size.* - Can disguise as any size slime or magmacube
- disguisecraft.mob.wolf.<tamed/aggressive> - Can disguise as either a tamed or aggressive wolf
- disguisecraft.mob.wolf.collar.* - Can disguise as a wolf with a colored collar
- disguisecraft.mob.ocelot.cat.* - Can disguise as any type cat
- disguisecraft.mob.pig.saddled - Can disguise as a saddled pig
- disguisecraft.mob.enderman.hold - Can hold blocks as an Enderman
- disguisecraft.mob.horse.type.* - Can be any horse type
- disguisecraft.mob.villager.occupation.* - Can disguise as a villager of any occupation
- disguisecraft.mob.zombie.infected. - Can disguise as an infected zombie (zombie villager)
- disguisecraft.mob.skeleton.wither - Can disguise as a wither skeleton
- disguisecraft.object.* - Can disguise as any object
- disguisecraft.object.vehicle.* - Can disguise as any vehicle
- disguisecraft.object.vehicle.<vehiclename> - Can disguise as the specified vehicle
- disguisecraft.object.block.* - Can disguise as any block entity
- disguisecraft.object.block.<blockname> - Can disguise as a specific block entity (TNTPrimed, EnderCrystal, FallingBlock)
- disguisecraft.object.block.fallingblock.material - Can disguise as a FallingBlock of any material
- disguisecraft.object.block.<blockname> - Can disguise as a specific block entity (TNTPrimed, EnderCrystal, FallingBlock)
- disguisecraft.object.vehicle.* - Can disguise as any vehicle
- disguisecraft.burning - Can have burning disguises
- disguisecraft.nopickup - Can use the "/d nopickup" command
- disguisecraft.blocklock - Can use the "/d blocklock" command
- disguisecraft.noarmor - Can use the "/d noarmor" command
How to use:
- Put Disguisecraft and http://www.spigotmc.org/resources/protocollib.1997/ in your plugins folder
- Restart your server
- Disguise! (e.g. /disguise Creeper)
- Run around scaring your friendssssssssssssss
Video:
Useful Links
Planned or ToDo <== Put suggestion comments over here!
Development builds of this project can be acquired at the provided continuous integration server.
These builds have not been approved by the BukkitDev staff. Use them at your own risk.
Dev Builds (Jenkins) <== Contains the latest DisguiseCraft builds!
JavaDocs and Source Code
Plugins Utilizing the API:
- Mortuus Terra - A Post-Nuclear Zombie Apocalypse
- FleetingDisguises - Disguise time-limits and cool-downs
- DisguiseTester - An advanced entity metadata research tool
- MobDisguisePVPControl - Adds PVP-related disguise handling
- Be Herobrine - Makes the Herobrine disguise more intense
- SimplyVanish - The first invisibility plugin compatible with DisguiseCraft
- FactionsPlus - Undisguise upon entering territories
- CloneCover - Hide in a crowd where everybody looks alike
- CommandPoints MobDisguise Bridge - Let regular users disguise in moderation
- Armor Abilities - Use armor to disguise as a creeper and explode upon death
- Pony Pack - Enter the changelings
- PropHunt - Hide 'n Seek Revolutionized
- Infected - If you liked COD Zombies, you'll love this
- PVPPack - Your new solution to fair combat
- Dwarves vs Zombies - A DvZ plugin in the works
- Ultimate Herobrine - The legend continues
- MobHunting - Disguising is dangerous business
How to negate the disguisecraft.seer node with PermissionsEx
Or, how to make it so that you don't see the nametag of the person inside of the disguise!
- Open up your permissions.yml file
- Add the permission node "-disguisecraft.seer" to the group that is seeing the double disguises!
- Do /pex reload ingame.
Example pex file:
admin: options: rank: '1' permissions: - -disguisecraft.seer - '*'
Project Page Notices: (Please Read)
- Be sure to read our Frequently Asked Questions section.
- Report errors using the ticket system and be sure that you are using this plugin with the CraftBukkit build that it supports. Any error reported in the comment area may be deleted and ignored. Also make sure to check your tickets often and report in when a build or release has fixed the issue.
- We will only release for stable CraftBukkit builds. Do not report errors when using our plugin with a build it was not listed to support. Because we need to recompile for each specific build, you will only ever see versions for CraftBukkit Dev builds in our jenkins.
-
View User Profile
-
Send Message
Posted Jun 27, 2013@redjetsy
Dont Worry about it ;)
-
View User Profile
-
Send Message
Posted Jun 27, 2013@Devil_Boy
Ok cool :), anything I can do to help?
-
View User Profile
-
Send Message
Posted Jun 26, 2013@redjetsy
It really depends on what options you choose, how many players are on the server, and how many people are disguised. The brunt of the data is stored on the clients, so I wouldn't imagine excessive amounts being used on the server.
In the end, however, you start you server (in JVM) with an allocated RAM usage (defaulted to 1 GB?). This means that adding and removing plugins wouldn't change the amount of RAM that your server will use.
-
View User Profile
-
Send Message
Posted Jun 26, 2013Can Someone Plz tell me how much ram this plug in takes up? any exact or close to exact numbers?
-
View User Profile
-
Send Message
Posted Jun 25, 2013@Tomskied
At this point, I think the documentation I've been working off of is just long out of date.
I guess I'll have to recommission DisguiseTester XD
Just need to make it also capable of working with Object Data.
@Stevenpcc
Ah yes, I am aware of this type of leak. BC_Programming recently mentioned to me that he had to fix it in Grief Prevention.
Just did a quick check in DisguiseCraft code to make sure and I don't see any permanent references to World objects. Most of DisguiseCraft's data is stored client-side so I don't think the packet handling would have any memory leaks. If there is a memory leak, however, I would expect it to be from the Player references. Back when we had the dynamic class referencing, we changed some of our Maps to reference the player directly rather than their name (for the sake of speed, however small the gain may be). It could be possible that these Maps are causing memory leaks somewhere... Though it'd most likely be caused by a plugin using DisguiseCraft's API.
-
View User Profile
-
Send Message
Posted Jun 25, 2013Hey there. I run a minigame that uses disguisecraft. It's unloads and reloads worlds to reset maps, but it's been suffering from a serious memory leak. I discovered and reproduced one leak in ProtocolLib. The latest build was released to fix it. No cheat has also just released a build fixing unload world related memory leaks.
What I'm discovering is that many popular plugins have these leaks. All it takes is a world object reference stored somewhere. As player and entity objects have location objects containing references to world objects, these leaks easily happen. I even found a leak like this in my own code (I've since audited all my code for potential leaks like this).
My minigame is still suffering from an unload world leak. It's proving hard to reproduce, as it only seems to happen with a lot of players on. It's also difficult to isolate a cause when multiple plugins may be doing it.
I've been checking through the DisguiseCraft code, trying to see if there's anything that might cause a leak. As you're much more familiar with the codebase, I thought it worth asking if you can think of any areas where this kind of leak may occur?
-
View User Profile
-
Send Message
Posted Jun 25, 2013@Devil_Boy
Oh woops :P Tested that: Crash and Outofbounds 57379.
Parsing that expression gives 57379.
-
View User Profile
-
Send Message
Posted Jun 25, 2013@Byamarro
We'll be reverting back to the original seer system once I find time to work on it.
@Tomskied
I actually just wanted you to parse the expression (filling in the values you used) XD
I guess while we're at it, try this:
See if that turns the disguise into red wool o.o
-
View User Profile
-
Send Message
Posted Jun 25, 2013Is it possible to make visible disguised player nick over him? For example: I disguise player "Notch" as pig. Then I want to see name "Notch" over him.
-
View User Profile
-
Send Message
Posted Jun 25, 2013@Devil_Boy
If you meant something like this:
It no longer causes client crashing, or throws the 16401. Does not display the correct block though, not sure if it was meant to :P
Edit: Just something I noticed while testing that may be of help, Using 35:14 (redwool) then bit shifting does 'display' the wool colour as black, just not visually. Only when I get: DyeColor.getByDyeData(DC.getDisguise(player).getBlockData()); So it seems to be getting the data ok, Black wool is 35:15 iirc?
-
View User Profile
-
Send Message
Posted Jun 24, 2013I love this plugin! I use it to trololololol on my server all the time. My favorite thing to do is to do /d TNTPrimed and just sit and watch.
-
View User Profile
-
Send Message
Posted Jun 24, 2013@stripaminer
ROFL
Well all you need to do is relogin. DisguiseCraft currently does not keep track of dropped disguises. They'll just disappear once you leave the server.
@emericask8ur
Any chance you could make a support ticket and show me some of the code you're using? o.o
@Tomskied
Is ProtocolLib installed on the server you're using? I only ask, because it lets me know what set of code to look at :x
I could just have bit shifted very badly XD
I'll take a closer look...
EDIT: Could you do me a favor and see if the following results in 16401?
<the block ID you're using> | (<the metadata you chose> << 0xC)
-
View User Profile
-
Send Message
Posted Jun 24, 2013@Devil_Boy
Well I used the disguise method and yes, it only says _ disconnected "Illegal Stance 0.0" it so once I'm disguised, it almost immediately kicks me. No its not a conflict with another plugin either. I'm only using this and the one i'm developing this with.
-
View User Profile
-
Send Message
Posted Jun 24, 2013I disguise as the player ''pewdie'' (Wich is pewdiepie's minecraft name) AND IT WORKED! Then,... I did /D drop.. I did it a few times and I made 2 pewdies sticking a stick in eachoters butts... So.. How do I remove them.. Beacuse its kinda akward...
-
View User Profile
-
Send Message
Posted Jun 24, 2013@Devil_Boy
Ye, I've given it a test with a few different values and meta. The crash is due to: Rendering entity in world java.lang.ArrayIndexOutOfBoundsException: 16401 If that helps you out at all. I'm fairly sure FallingBlock & meta should be compliant, I seem to remember Sethbling making something with falling sand disguised as an assortment of coloured wool. Thanks for the quick reply :)
-
View User Profile
-
Send Message
Posted Jun 24, 2013@Tomskied
Hmmm.... Does the client crash with every combination of block and metadata? o.o
It could be possible that the client doesn't support the metadata for a FallingBlock of that type.
But it's also possible that I messed up the packet that needs to be sent.
I'll take a look at the packet creation code when I get the chance. Hopefully I can get back to you soon.
@emericask8ur
Hmm...
What do you mean by it returning "Illegal Stance 0.0" ?
Does this show up in the console immediately after disguising the player? Or does the player need to do something first?
-
View User Profile
-
Send Message
Posted Jun 23, 2013@Devil_Boy
Ah, ok thats great. I just tried it out, causing client crashes all the time though. Here is the disguise:
And code:
Is this right? Every time the player is disguises as the block with blockData, it causes any client that tries to render it to crash.
Thanks
-
View User Profile
-
Send Message
Posted Jun 23, 2013@Devil_Boy when using the API, Disguising a player, it returns in "Illegal Stance 0.0". Whats wrong with this?
-
View User Profile
-
Send Message
Posted Jun 23, 2013@Tomskied
It is possible :)
Use: blockData:<metadata>
So for your situation you would add two metadata strings:
blockID:35
blockData:14
Sorry, I really need to document all the possible disguise metadata values.
If you find yourself looking for more metadata values, just look at Disguise.java's handleData() method.
@funkiben
You'll want to use Disguise.addSingleData("wither") on the skeleton disguise.
-
View User Profile
-
Send Message
Posted Jun 23, 2013How can i see myself in the disguise? Like in MobDisguise.