Orebfuscator
Orebfuscator - Anti X-RAY:
For all releases of 1.9/1.9.1/1.9.2/1.9.4/1.10/1.11/1.12.x/1.13.x: Version 4.4.3
Now with support for CraftBukkit 1.9/1.9.1/1.9.2/1.9.4/1.10/1.11/1.12.x/1.13.x!
This plugin is used to counter X-RAY Client mods.
It modifies data that are sent to clients to hide blocks of your choice, such as Ore, chests, dungeons, etc.
It does not manipulate blocks in the world file, thus is safe to use.
ProximityHider is a feature that hides chests that are far from players.
As of 4.3.3, Proximity Hider has been enhanced to use line-of-sight checks, not just proximity! Upgrade today.
Configuration Guide
https://github.com/lishid/Orebfuscator/wiki/How-to-properly-configure-Orebfuscator
https://github.com/lishid/Orebfuscator/wiki/Configuration-File
FAQ
https://github.com/lishid/Orebfuscator/wiki/FAQ
DOWNLOAD
Please read compatibility information before downloading as not all releases work with all versions of CraftBukkit.
Latest version should be on BukkitDev, or as a release on the Github page: https://github.com/lishid/Orebfuscator/releases
Please also download ProtocolLib and install it in the plugins folder.
- Is compatible only with version 4.0.0 or newer.
- For 1.9.4 support, you must use build 277 or newer of Protocollib 4.0
- For 1.10 support, you must use build 293 or newer of Protocollib 4.0
- For 1.11 support, please use latest stable builds of ProtocolLib for 1.11.
- For 1.12 support, please use ProtocolLib 4.3.0 or newer.
- For 1.13 support, please use ProtocolLib 4.4.0 or newer.
- Download link: https://www.spigotmc.org/resources/protocollib.1997/
- Legacy Link: http://dev.bukkit.org/server-mods/protocollib/
Features
- Advanced algorithm that hides ore, chest and and anything you specify in the configuration
- Spout compatible, but optional
- No modifications to CraftBukkit.jar is needed
- Customize the blocks you want to hide
- HIDES DUNGEONS and other blocks that are in the dark
- Different hiding mode, or scrambling.
- Extensive configuration. Change updating methods depending on your bandwidth and processing speed.
- Hide hidden chests and furnaces until a player is close to it.
- Hide hidden chests and furnaces until a player can see it.
Usage
Install:
- Copy "orebfuscator-4.4.3.jar" to your plugins folder
- If you're upgrading from Orebfuscator.jar, move the contents of the "Orebfuscator3" folder to the "Orebfuscator4" folder
- Restart your server.
Configuration
See this: https://github.com/lishid/Orebfuscator/wiki
Commands
See this: https://github.com/lishid/Orebfuscator/wiki
Permissions
See this: https://github.com/lishid/Orebfuscator/wiki
Source Code
Here you go! (Hosted on Github) - please post issues and requests for help there
Metrics
- This plugin utilizes Hidendra's plugin metrics system, which means that anonymous information of your OS and setup will be collected and sent to mcstats.org
- Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.
Thanks!
- Aleksey_Terzi, single-handedly updating to CraftBukkit 1.9, 1.11, and 1.12!
- DevotedMC for taking over management of the project
- AFFORESS, major help on code optimization and spout support!
- Lishid, for years(!) of maintaining this plugin, and MarioG1 for recent patch support
- raphfrk, helped with packet processing
- Many donators!
Bugs
- See the issues page for any outstanding problems.
TODO
- A command that generates the world cache for the existing chunks.
Changelog
Version 4.4.3
- Support for Minecraft 1.13.2 latest builds (CraftBukkit/Spigot/etc)
Version 4.4.2
- Fixes for reported issues during use -- please update
Version 4.4.1
- Support for Minecraft 1.13 and 1.13x (CraftBukkit/Spigot/etc)
- Some enhancements under the covers, including better support for tile entity hiding and state management
Version 4.3.3
- Includes fixes for portions of #164
- NEW FEATURE: Gaze based proximity hiding. If you can't see it due to blocks in the way, it stays proximity hid, regardless of your physical closeness! For full details, read here: PR#16
- New example configs! Find them here: https://github.com/lishid/Orebfuscator/tree/master/Plugin/src/main/resources/resources
Version 4.3.0
- Support for Minecraft 1.12 (CraftBukkit/Spigot/etc)
Version 4.2.1
- #135 : Resolved issue that plugin doesn't work unless you delete the config and force reload and clear cache after startup
Version 4.2.0
- Support for Minecraft 1.11 (CraftBukkit/Spigot/etc)
- Remove ChunkReloader due to performance issues at scale.
- Addressed #66. Limit Cache retention configuration options added.
- Proximity Hider blocks are by default orebfuscated, if both are active.
- Implemented #62. Per World Configuration -- have unique configurations per world.
- Addressed DevotedMC#8. Allow for unique proximity Y height per material hidden.
- Fixed #113. Item frames sometime disappeared.
- Fixed #124. Glitches when used FastAsyncWorldEdit.
- Fixed #125. Prevent obfuscation for NPC, for ex. NPC from plugin Citizens.
- Fixed #128. EntityChangeBlockEvent was not causing block updates.
Version 4.1.4
- Fixing ChunkLoader error: https://github.com/lishid/Orebfuscator/issues/110
- Improving performance of ChunkReloader
Version 4.1.2
- It is now possible to use Worlds list either as blacklist (i.e. all worlds are subject for obfuscation excluding listed) or as whitelist (i.e. only listed worlds are subject for obfuscation)
- Fixed bug with using ProximityHider and Signs. It is now possible to add WALL_SIGN and SIGN_POST to ProximityHider obfuscation.
- Updated wiki so commands and configuration pages are matching to the current Orebfuscator.
Version 4.1.1
- Various Small fixes
- Fix which might resolves problem described in https://github.com/lishid/Orebfuscator/issues/100
- Config file now supports block names additionally to IDs
Version 4.1.0
- Support for CB 1.10 - thanks Asgarioth!
Version 4.0.14
- Single jar supports all releases of 1.9.x now!
- Some chunk reload issues are corrected (on teleport, etc.)
Version 4.0.12.1
- Add support for 1.9.4 - this release does not support prior versions.
Version 4.0.12
- Fixed entity list reload issue
Version 4.0.11
- Fixed failure to deobfuscate along chunk boundaries under specific conditions.
Version 4.0.10
- Fixed crash for PaperSpigot servers
Version 4.0.9
- Fixed crash when chunk section (16 x 16 x 16) has more than 127 different block types
- Implemented different "transparent block" lists for Engine Mode 1 and Engine Mode 2. For now only difference is with lava block, for mode 1 it is non-transparent, for mode 2 it is transparent.
- Implemented possibility to specify which blocks are transparent and not in the config file, sections: TransparentBlocks and NonTransparentBlocks.
- Fix which may have solved java.util.ConcurrentModificationException
- Fix for phantom blocks (visible after chunk reloaded) when player is digging straight line on the chunk border.
Version 4.0.7-beta
- Corrected transparent block list. For example, lava blocks marked as transparent and therefore adjacent blocks are not obfuscating anymore
- Improved performance of ProximityHider function
Version 4.0.5-alpha
- Fixes teleport / join in the End causing client-side crashes.
- Fixes failure to deobfuscate immediately on join.
Version 4.0.3-alpha
- Updated to MC1.9.
Full release notes: In Github Release
Version 3.0.5
- Updated to MC1.8.3.
Full history: https:github.com/lishd/Orebfuscator/wiki/Version-History
A quick donation is always appreciated :D
Devoted Patreon or General Inquiry
-
View User Profile
-
Send Message
Posted Jun 30, 2012@LordKainzo
It says "Synchronized code got accessed from another thread: com.bergerkiller.bukkit.nolagg.examine.TimedWrapper"
I'm guessing NoLagg is doing something weird to my plugin -_-
-
View User Profile
-
Send Message
Posted Jun 29, 2012Thanks @Lishid - Got some reports
Not sure if this is your sha-bang but it does read about the proximityhider.
http://pastie.org/4175487
cb 258 and on cb
23-
View User Profile
-
Send Message
Posted Jun 29, 2012@LordKainzo
/ofc reload only reloads the configuration file :D
Also, I don't think anything changed since 1.4.5 as far as ProximityHider is concerned.
-
View User Profile
-
Send Message
Posted Jun 29, 2012@Lishid - people complain that even their own chests are hidden until they left or right click - this includes exposed chests and other things like furnaces/tables, etc.
Is there an easy function to revert this back to 1.4.7 standards?
Turns out that the /ofc reload command wasnt fixing the stuff. Restarted worked.
-
View User Profile
-
Send Message
Posted Jun 29, 2012@CVRipley
When the cache files get corrupt, Orebfuscator will automatically create a new one and overwrite on it, so as long as your original world and its chunks are ok, there's nothing to be worried about.
-
View User Profile
-
Send Message
Posted Jun 29, 2012@asofold
OK, will put that in the plans.
@xeNiumw0w
As long as it's a super common block, it would work. Air would work just the same, but since stone is a solid block, if the players have some slight lag, they won't glitch into that block (and get teleported back)
@Veiocity
As far as I know, bandwidth is not a concern for most servers, especially the cost of it. Extra bandwidth means that there's more data needed to be sent to the client, to reveal the correct blocks. It's usually not much unless if the player goes maniac on strip mining, but even that, is not even twice the original data size. You can perform some tests, but I believe that there's not too much bandwidth increase.
@CVRipley
Orebfuscator's cache is generated ONLY when a chunk is being calculated and sent to the player. Here's how it works:
1. Chunk needed to be processed.
2. Check whether the chunk has been previously cached.
3. If the cached chunk has been found, check whether the chunk has changed since the cache was created. This is done by passing the new (raw) chunk into a CRC32 hash and verifying if the hash matches the stored hash (which was computed when the chunk was cached)
4. If the hashes match, then send the cached chunk directly, bypassing the calculations entirely.
5. If either the cache is not found, or the hashes are different (there has been changes to the chunk), re-compute the chunk entirely, and save the new chunk to the cache. Then send it to the client.
-
View User Profile
-
Send Message
Posted Jun 29, 2012I have a question about the cache. The cache really seems to make a big difference on the server and I’m trying to figure out how to harness more potential out of it. From what I understand it stores all the updated blocks so the server does not have to spend extra CPU on redundant calculations. Does it only cache data from updates that the player causes (ie update on break ETC) or does it also include the initial radius?
If it includes update data from the initial range, Im trying to figure out how I could prerender those updates (cache) during downtime / slow time so that normal playing has less impact on the player.
Also i use a ramdisk for the server. The ramdisk regulates when and how the map is saved to the disk so that it is never corrupted on a server crash or improper shutdown. I have sence added the OFC cache into the ramdisk and see huge improvements. Im a little worried that if the server crashes that the cache would get corrupted but i dont know if or how that would impact me. And also since i really dont know what the cache contains i was wondering if it is to my benefit to let this folder grow out of control.
-
View User Profile
-
Send Message
Posted Jun 29, 2012When using orebfuscator in its least bandwidth intensive mode approximately how much extra bandwidth will it use? Bandwidth = money.
-
View User Profile
-
Send Message
Posted Jun 29, 2012ProximityHiderID: 1 (Why you change it to stone? Air is not good?)
-
View User Profile
-
Send Message
Posted Jun 28, 2012@lishid Ok thanks, then it is not an option right now .
I am thinking of the proximity hider which might be a pretty significant overhead in towns with hundreds of chests :)
Hopefully you can bring some chunk-coordinate-based API some time, which then can be used to disable or enable orebfuscator+proximityhider in certain areas - that would be really cool, even if it is not possible to distinguish by player in that case. (Async API calls would be fine!)
-
View User Profile
-
Send Message
Posted Jun 28, 2012@ivankrad
Thanks for the support!
@TnTBass
Thanks for reminding me :D
-
View User Profile
-
Send Message
Posted Jun 28, 2012Thanks for the amazing work!
Our servers would not handle well without your amazing plugin!
- Hungercraft Community
-
View User Profile
-
Send Message
Posted Jun 28, 2012@lishid
Thank you :)
-
View User Profile
-
Send Message
Posted Jun 28, 2012@TnTBass
Done. Look for 1.5.0 (or use the dropbox link).
-
View User Profile
-
Send Message
Posted Jun 28, 2012@TnTBass
In a few hours.
-
View User Profile
-
Send Message
Posted Jun 28, 2012Any chance there is a way to change the location of the Orebfuscator cache?
-
View User Profile
-
Send Message
Posted Jun 28, 2012@broluigi
That's just a nag from NoLagg. Doesn't do anything, though I will figure something out to fix it later on.
Also it's from iLove, not Orebfuscator.
@asofold
Don't use the permission node on anyone other than people you trust. Even if it's just for a region.
The thing is, all chunks are queue'd and processed later on. The permission node is used at the later stage. This means that the player can be walking in an unsafe area, then back into an area where he has the permission, which then means that he will receive the unsafe area de-obfuscated. It's definitely not worth the slight performance increase in my opinion.
-
View User Profile
-
Send Message
Posted Jun 28, 2012How exact is permission use?
Would i profit performance-wise if i gave people the orebfuscator.deobfuscate permission only in a big town region?
Here the point is not accuracy for the edge but to gain some performance, so would this "mixed state" work with Orebfuscator or would it conflict with the cache?
-
View User Profile
-
Send Message
Posted Jun 28, 2012I used iluv and saw this
-
View User Profile
-
Send Message
Posted Jun 28, 2012@FurmigaHumana
I did that specifically for 2 reasons:
1. The player might spawn/login/teleport, which triggers a move event, but with no movement (only looking).
2. Doing a check every time a PlayerMoveEvent is called is VERY expensive since each player will call that event once per tick or so. If there were checks to be done (distance, etc), it would be very consuming.