PlayerHider
PlayerHider
PlayerHider is a plugin that shows players further than a configurable distance as sneaking to make underground bases harder to spot. It also (as of 0.4) features Line of Sight hiding for players within the configured distance. This is done via Packet Manipulation through ProtocolLib which shouldn't trigger any Anti-Cheating Measures or interfere with other plugins.
It uses code from Sneaky:
Sneaky (C) 2013 Kristian S. Stangeland, Licensed under the GNU GPL2, available at http://dev.bukkit.org/server-mods/sneaky/ It also uses (as of 0.5) Plugin-Metrics by Hidendra, available here: https://github.com/Hidendra/Plugin-Metrics
Dependencies
This plugin requires ProtocolLib to function!
Features
- Shows players further than the specified distance away from a player as sneaking to that player
- If LoS is turned on, shows players within that distance as sneaking if they are behind objects
- Can be hidden for operators, admins, moderators...
Planned Features
- Currently no planned features in the near future. Let me know if you want anything.
Commands
There are no commands, currently.
Permissions
- playerhider.hide.autosneak: Hides the autosneaking for that player, everyone appears normal to them.
Config
Very easy to configure, disable and reeanble the plugin for changes to take effect:
- updatecooldown: The plugins tickrate in milliseconds, from 0 for as often as possible (only use this for v0.5 or newer and on servers running at a good tickrate) up to technically infinity (though I recommend 1000 for once a second as a default for weak servers). This affects both LoS and distance based hiding.
- sneakdistance: Players further apart than this distance (in blocks) are shown as sneaking to each other. If LoS is active players who are within that distance from each other are checked for visibility and are shown as sneaking if they are not visible to each other. You can set this pretty high, but this will increase server load if many players are within the distance from each other. This should be a negligible on any servers maintaining the deafult tickrate but might be a concern on weaker servers.
- LoS: This turns Line of Sight hiding on or off, default off, set true to turn it on.
Using on CB 1.7.2. Seems a slight bit buggy but no errors. Using citizens2. It's VERY buggy and produces errors with my NPCs. This plugin is the only one of its kind and I'd really like to see it updated/worked on.
@redinzane
Great to hear, thank you very much for your work Redinzane :)
My friends keep discovering my secret hidden places when I'm in there so this plugin would be ideal to thwart their plans to steal all my treasures!
Good luck with your uni studies, keep up the hard work :D
@inviktus
I'll be looking into that but haven't worked on 1.7 compatibility yet (slammed with work from Uni). It working at all with 1.7 surprises me actually (I figured it would break completely) and as soon as there's a proper release I'll get it up to date. Will also have basic LoS features then...
@Ryex95
I would say that is decidedly not working fine.
The plugin seems to work fine sometimes (players are usually hidden but sometimes they are not), and in the console i'm getting some errors.
http://gyazo.com/af9a466cb5b11068c9102b200f6f10a7.png
Is this working with current builds of CB?
If not.. please update this plugin.. I've always hated the stupid nameplate thing. :D
Thanks a bunch. Diamonds for you.
@aritturlt
Hi, Have you tried updating to the newest version of ProtocolLib and see if that fixes the error?
Updated ticket :-)
I got error with 1.6.2 R1.0... [SEVERE] Could not pass event PlayerMoveEvent to PlayerHider v0.3 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:227) at net.smart.moving.NetServerHandler.a(NetServerHandler.java:28) at net.minecraft.server.v1_6_R2.Packet10Flying.handle(SourceFile:136) at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source) at sun.reflect.UnsafeObjectFieldAccessorImpl.get(Unknown Source) at java.lang.reflect.Field.get(Unknown Source) at com.comphenix.protocol.reflect.FieldUtils.readField(FieldUtils.java:281) at com.comphenix.protocol.injector.EntityUtilities.getEntityTrackers(EntityUtilities.java:138) at com.comphenix.protocol.injector.PacketFilterManager.getEntityTrackers(PacketFilterManager.java:836) at io.github.redinzane.playerhider.PlayerHiderListener.updatePlayer(PlayerHiderListener.java:73) at io.github.redinzane.playerhider.PlayerHiderListener.onPlayerMove(PlayerHiderListener.java:160) at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 15 more 2013-10-04 21:54:28 [SEVERE] Could not pass event PlayerMoveEvent to PlayerHider v0.3 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:227) at net.smart.moving.NetServerHandler.a(NetServerHandler.java:28) at net.minecraft.server.v1_6_R2.Packet10Flying.handle(SourceFile:136) at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source) at sun.reflect.UnsafeObjectFieldAccessorImpl.get(Unknown Source) at java.lang.reflect.Field.get(Unknown Source) at com.comphenix.protocol.reflect.FieldUtils.readField(FieldUtils.java:281) at com.comphenix.protocol.injector.EntityUtilities.getEntityTrackers(EntityUtilities.java:138) at com.comphenix.protocol.injector.PacketFilterManager.getEntityTrackers(PacketFilterManager.java:836) at io.github.redinzane.playerhider.PlayerHiderListener.updatePlayer(PlayerHiderListener.java:73) at io.github.redinzane.playerhider.PlayerHiderListener.onPlayerMove(PlayerHiderListener.java:160) at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 15 more
@RossGosling
Sorry, as I have never used Multicraft, I have basically no idea what the issue could be. It seems to work fine with vanilla bukkit.
@RossGosling
Just upload it through an FTP Client such as FileZilla?
With Multicraft's plugin install and updating system when I try to install this plugin it says 'Failed to install plugin: Malformed plugin info playerhider::' and cannot be installed through Multicraft.
Time for the monthly check :-)
Any progress yet?
My assumption is that the server sends to the client the location of any players within a client's view distance, regardless of whether obscured by terrain or even sneaking. If that's so, how difficult would it be to prevent that location data from being sent until players are within a configurable radius (eg. 4 chunks) of each other, and then keep them visible to each other until the radius exceeds some distance (eg. 10 chunks)?
I could be wrong in my original assumption of course.
@redinzane
Oh no. That's terrible. Hope you had good backups. And good luck with the exams :-)
@pilvimaa
Sorry, my PC broke and took my HDD with it. I'll definitely work on updating this when I get a new one (by the end of the week) but since I have exams coming up (and CS exams are hard) expect mainly performance optimizations and no mechanics changes on this one. Except maybe realtime updates and some scaling stuff instead of the timeframe hack I'm using now.
Development has been slowed by my laptop breaking a few weeks ago. I should have a new PC by the end of the week, but with that kind of loss of code and time and exams coming up, the next update will likely only include performance and code readability optimizations, with a commissioned (pro bono) plugin coming afterwards, and then big mechanics changes to this one.
Any news on the developement of this plugin? I've been keeping tabs on this regularly and I'm very interested in hearing your musings.
@ravand
Wait it does? That's odd, but I won't complain :D
AMAZING DUDE! THis plugin even bypasses the nodus player finder!