No X-Ray
No_Xray
Not Coming Back Yet
The author who said they were bringing back this plugin actually just stole Orebfuscator and re-published it. That is NOT going to happen under my watch.
NOTICE: I am officially deprecating this project (4/17/12)
What does this mean?
- I believe that this project is too inefficient, too insecure, and too difficult for me to fix to correct these issues.
Why are you doing this?
- I want to free my time for other projects. No need to be hung up here when better alternatives (for both you and me) are out there!
Where should I go now for anti x-ray?
- Use Orebfuscator. The plugin is far better http://dev.bukkit.org/server-mods/orebfuscator/
Is development over?
- Sort of. I won't be developing this plugin actively. I might come back to it later, either when I want to learn more about anti x-ray, although for a while, I will be spending my time elsewhere. I definitely won't be back till late June, due to exams and travel.
What needs to be done to fix the project?
- Vision needs serious debugging. Sometimes, the vision doesn't calculate right.
- Chunk sending needs to be overridden to hide all non-visible blocks on chunk load.
- The efficiency of the ray tracing and searching algorithms need improvement. Perhaps the search could spider out rather than simply iterating through a cuboid?
- Exposure hiding would be a big plus: hiding based on if a block is exposed to a transparent block.
- Auto-shutdown of plugin if the server is getting too laggy.
Can I take over this project?
- Be my guest! If you have submissions/fixes, please tell me. If you want full control of the development, I can give you/add you to the project.
Summary
No X-Ray by FalseVacuum is, as the name suggests, an anti-X-Ray hack plugin. No X-Ray is unlike some plugins in that it actually uses the line-of-sight of the player (sort of) to decide which blocks to hide. While many anti X-Ray plugins check if the given block is surrounded by opaque blocks, No X-Ray checks 8 different line-of-sight paths to the block. If all 8 paths are blocked at any point by an opaque block, the block's type is changed.
Configuration
There are 3 configuration nodes in config.yml:
- objects.transparent - a list of all transparent (see through, non-opaque) objects (defaults to too many objects to list
- objects.hidden - a list of all objects to hide (defaults to chest, diamond ore, moss stone, monster spawner)
- objects.isactuallyopaque - Is the transparent list actually an opaque list
- verbose - This is for debugging. Don't turn this on unless you're a developer
- search.x, y, z - The x, y, and z search distances. These default to 100 each (search.x, search.y, search.z).
- search.gothreadsafe - Choose to test out the experimental thread-safe method. This puts all changeBlockAt() calls in the main thread.
Commands
- /noxray reload - Reload the configuration of the plugin
- /noxray release - Release (disable) the plugin. This allows you to update the plugin without shutting down the server
Permissions
- vacuum.noxray - Gives access to all noxray commands.
- vacuum.noxray.hide - Give this permission to anyone from whom you want to hide things like chests, etc. This defaults to everyone but ops.
Known issues
No X-Ray occasionally will not determine if the desired block is visible or not. More often, it will decide a block is visible if it is not. This is often due to corners being transparent.
This application may or may not be thread-safe
I spoke with Lishid, author of Orebfuscator. He gave me some great tips, and I will do my best to get them into the next update. This will hopefully alleviate some of the issues with blocks appearing/disappearing when they shouldn't. He also spoke to me about some possible vulnerabilities. Implementing them will be a lot of work, but I will do my best to get this plugin up to speed with what it should be!
Performance
While it may seem appealing to make all diamond blocks (id = 56) hidden, remember that there are many, many diamonds. You might benefit from just searching for chests, monster spawners, and moss stone.
You can also try decreasing the search distances. You probably shouldn't go below 25 for any given direction (this gives a dimension of 50 for the cuboid because it is 25 forward, 25 backward)
Another thing you can try is reducing the number of people that have vacuum.noxray.hide. Set this permission to false on people you trust.
Source
Curious about how this plugin works? Ask in the comments below or dive into the source!
@Click_Me
Yeah, it works. But it's buggy, slow, and there's a security flaw that will allow players to X-Ray even with this plugin, provided the X-Ray maker designs it to break this specific plugin.
Haha... actually this plugin works :)
@CoolOppo
Sorry, Galactic Lord will not be taking over this project.
@CoolOppo
I won't unmark the project as abandonded until the first version is up.
After I've approved the first version, I'll give Galactic_Lord Manager status and the project will no longer be abandoned.
@Galactic_Lord
Cool! You may want to make sure your project isn't marked abandoned. ;-)
Its_Coming_Back
Thank you for the explanation falsevacuum :)
Great work on this plugin, it is a much better way to block people from seeing the ores if it isn't in their field of view rather than just hiding them by proximity like orebfuscator.
@spunkiie
I don't know if it would work or if it would lag it to hell. I simply have not had enough tests. If you decide to give it a try, tell me if it works or it doesn't, either way. If you need anti-X-Ray that's pretty well developed, you can check out Orebfuscator, and while it takes care of X-ray pretty well (both mod and texture pack), this deals with freecam better, in my opinion. Most of my testing was done with chests and moss stone disabled, and when you add diamonds you start hiding a lot more blocks (4-5 times more), I never did any testing about 2 people (me and my brother), so I don't have any success or failure stories from high volume servers.
This basically works by calculating player vision and recalculating it whenever the player moves or a nearby block is modified. It checks each block in the area to see if the player can see it, and, if not, tells the player that the block is air (but doesn't actually change it to air on the server). A similar method is used to reverse the process.
Orebfuscator finds all blocks that are not exposed to air and turns them into something else, like diamond/redstone ore/moss stone. This helps a great deal with X-Ray, because everything is a jumbled mess. However, if something is exposed in a cavern, Orebfuscator will not hide it, but No X-Ray will.
Seems promissing... Do you think it's safe to run it on a 400+ server?
@codemanj94
But you are getting messages telling you that blocks are being hidden and unhidden?
@falsevacuum
Nope that is it. Couldn't tell you anything else wrong.
@codemanj94
Is there anything else after that? A stack trace?
@falsevacuum
Correct. But when I reload the plugin it still says the same thing from that picture.
@codemanj94
Not if you set verbose to false. Some messages should be saying something like "hid block ... at ... for player ..." right?
@falsevacuum
Yes I got a lot of messages. Will it always show those?
@codemanj94
So does everything work? If you set verbose to true, you should be getting a lot of messages on your console.
fhsjfhafaw
@falsevacuum
Alright well /noxray reload works. The folder and config are created fine. I changed that setting to true. I think that one command is broken though. I was just trying to view the commands in game and usually that is the command. Thanks for the help.
@codemanj94
Are there any errors that occur when you type in "/noxray reload"?
Is a noxray folder being created? /plugins/noxray
Is the config file being generated? /plugins/noxray/config.yml
If it is, try setting verbose to "true" and tell me if you get any feedback.