Ore To Client Obfuscation
Current Version: 1.9.4.1
Read below instead of just clicking download in the top right and trying to figure it out on your own.
The Bukkit team does not support modified versions of Craftbukkit. Test with OTCO uninstalled before reporting bugs or crashes to the Bukkit team.
Features:
- Rewrites chunk packets sent to the client to hide unexposed ores
Before:

After (Fake Ore):

Edits the whole chunk data packets before they are sent out to clients. It's not run in the main server thread, so as long as your server is not using up all of its cores, it should cause little performance difference. Either all ore blocks and chests that have no adjacent air, water, lava, or glass, or other transparent block block are sent to the client as stone blocks. When a block is removed next to an ore block or chest, a block update is forced on the client, causing the real block to become visible. Or, all stone blocks can be sent out as ore blocks, then updated to show as stone blocks as a player mines.
This should lower the effectiveness of x-rayers somewhat, hiding a majority of any world's ores, and notably buried chests, from them. To do this efficiently, part of the actual server code had to be modified. The download contains both a plugin, and a class file to patch a server jar with. For it to work with other plugins that edit packets using Spout, you must download and use the Spout specific version instead.
Installation
Installation for CraftBukkit:
- Add rawcritics_ore_obfuscation_installer.jar to your server plugins.
- Start server.
- Let patching finish.
- Remove rawcritics_ore_obfuscation_installer.jar from your plugins folder
- Add rawcritics_ore_obfuscation_plugin.jar to your plugins folder
- If patcher could not rename your server jar, rename "rawcbpatchtemp.jar" to what your server jar should be.
- Start server. If the plugin doesn't send any errors, it worked.
You could also manually copy included "net" and "org" folders and all contained files into your server jar using a utility like 7-zip, if you are comfortable with that. You will have to delete BUKKIT.SF and BUKKIT.RSA from the META-INF directory if you do it manually.
Installation for Versions Older Than 1.7 (CraftBukkit Legacy Versions):
- Use any program that can edit the contents of jar files to copy the included Packet51MapChunk.class and ChunkCompressionThread.class over the old ones, the folders "net" and "org" can simply be added to the jar to do this. You can backup server.jar/net/minecraft/server/Packet51MapChunk.class and server.jar/org/bukkit/craftbukkit/ChunkCompressionThread.class first if you feel the need. Common programs that you could do this with include WinRar and 7-zip.
- Add rawcritics_ore_obfuscation_plugin.jar to your plugins directory
- If it doesn't send any errors when you start your server, it worked
Installation for Spout:
- Copy rawcritics_ore_obfuscation_plugin_spout.jar into your plugins folder
- Must be using Spout
- Do not install the class files from any other version, only use the Spout plugin
Configuration
Example oo-engine-mode.txt Configuration File:
#Choose the obfuscation engine you want to run. #1 Hides all ores and chests that don't have a transparent block next to them. #2 Hides all ores regardless of whether they have a transparent block next to them, and hides chests that don't have a transparent block beside them. Ores reappear when dug, or when they are right clicked on. #3 Only checks light levels for ores and hides them if they are in total darkness. Fastest engine mode. #4 (default) Turns all stone AND ores without adjacent transparent blocks into iron ore above height 20, and diamond ore below. Turns chests without adjacent adjacent transparent blocks to stone. #5 Randomly turns stone without adjacent transparent blocks into Ore. Slighly more process intensive then 4. enginemode=4 #List of block ids to count as transparent, seperated by commas. transparentIds=8,9,10,11,20,27,28,37,38,39,40,44,50,53,55,63,64,65,66,67,68,69,71,75,76,77,78,79,85,96,101,102,104,105,106,107,108,109,113,114,115,131,132,139,140,141,142,143,144,145 #The id of the block the majority of your world's ground consists of. Should be 1 for Stone unless you have a custom worldgen. maingroundblock=1 #Radius around removed blocks that block updates are sent for ores. Higher values use more processing power and bandwith but are nicer for players with bad connections. Default 2, recommended no higher then 4. oreupdateradius=2 #When to send player ore updates. 0 (default) is on block break events. 1 is on block damage, which can make latency slightly less noticable, but uses more processing power in the main server thread. oreupdatemode=0 #Checks for exposed ores after explosions if true. If you have a plugin for disabling block damage from creepers, depending on how the plugin is written in might save processing power to disable this. checkexplosions=true #Hides chests in all engine modes by turning chests without adjacent transparent blocks into stone until uncovered. hidechests=true #If true, Ops (players in ops.txt) will not have the obfuscator ran for them. disableforops=false #If true, then seperate configurations for each world will be used. To make a configuration for a specific world, make a copy of this file and rename it YourWorldName.txt (i.e. World1.txt, World1_Nether.txt, etc.) usemultipleworldconfigurations=false
Engine Modes:
The default ore obfuscation engine is recommended, but you can change which one in the config at \plugins\RawcriticsOreObfuscationPlugin\oo-engine-mode.txt
Mode 1 - Hides all ores and chests that don't have an adjacent transparent block.
Mode 2 - Hides all ores regardless of adjacent block until a block by them is removed or they are right clicked, hides chests if they don't have an adjacent transparent block
Mode 3 - Checks light levels of ores, if an ore block has a light level of 0 it is hidden.
Mode 4 - (Default) Sends all stone and ores without an adjacent transparent block as iron ore above height 20, diamond below. This means even with specific filtering of block types, no ore that isn't exposed in caves can be seen at all, and an xrayer can't tell if iron ore or diamond ore exposed in caves is real or not. Only downside is that any players mining with any latency will have to wait to see whether they're mining real ore or just stone.
Mode 5 - Sends stone as a random ore. Slightly more process intensive than 4.
Other Configuration:
Editing transparentIds=8,9,10,11,20,27,28,37,38,39,40,44,50,53,55,63,64,65,66,67,68,69,71,75,76,77,78,79,85,96,101,102,104,105,106,107,108,109,113,114,115,131,132,139,140,141,142,143,144,145 in the same config file allows you to choose which block ids are counted as transparent. Air always is for performance.
maingroundblock=1 is the id of the main block the ground surrounding your ores consists of. In most worlds, this would be stone (1).
The oreupdateradius option sets the radius around removed blocks that block updates are sent for ores. Higher values use more processing power and bandwith but are nicer for players with bad connections. 2 is the default option, recommended to set it no higher than 4.
If checkexplosions is true, exposed ores are checked for after explosions. If you have a plugin for disabling block damage from creepers, depending on how that plugin is written in might save processing power to disable this.
If hidechests is true, chests without any transparent blocks adjacent to them are hidden as stone until a block next to them is removed (or whichever specific logic is performed by an engine for chests is ran). Might disable if Lockette, etc, is already protecting chests.
If disableforops is true, the obfuscater will not be ran on packets sent to those who are in your ops.txt file.
If usemultipleworldconfigurations=true, then seperate configurations for each world will be used. The settings in oo-engine-mode.txt are used as the defaults for a world without a specific configuration. A configuration for a world is specified by a you_world_name.txt file in the same location as oo-enginemode.txt (So a world called world3 would be world3.txt, a world folder named myminecraftworld_nether would be myminecraftworld_nether.txt, and so forth).
World Specific Configuration File
A world specific configuration file (yourworldname.txt) has the following options:
#Choose the obfuscation engine you want to run. #0 Ore Obfuscation is disabled for this world. #1 Hides all ores and chests that don't have a transparent block next to them. #2 Hides all ores regardless of whether they have a transparent block next to them, and hides chests that don't have a transparent block beside them. Ores reappear when dug, or when they are right clicked on. #3 Only checks light levels for ores and hides them if they are in total darkness. Fastest engine mode. #4 (default) Turns all stone AND ores without adjacent transparent blocks into iron ore above height 20, and diamond ore below. Turns chests without adjacent adjacent transparent blocks to stone. #5 Randomly turns stone without adjacent transparent blocks into Ore. Slighly more process intensive then 4. enginemode=4 #The id of the block the majority of your world's ground consists of. Should be 1 for Stone unless you have a custom worldgen. maingroundblock=1 #Checks for exposed ores after explosions if true. If you have a plugin for disabling block damage from creepers, depending on how the plugin is written in might save processing power to disable this. checkexplosions=true #Hides chests in all engine modes by turning chests without adjacent transparent blocks into stone until uncovered hidechests=true
Commands (Useful for Testing)
All these commands are Op only.
/otco - Lists commands
/otco-reload - Reload the configuration file. Keep in mind that you won't see changes until more chunks are sent to your client!
/otco-configs - Lists loaded configuration files and whether they are being used for a world
/otco-toggleopdisable - Toggle the obfuscation being disable for Ops temporarily. You have to edit the configuration to change it permanently.
/otco-resendmychunk - Resends the chunks around where you are standing to your client.
/otco-reloadmychunk - Saves and reloads the chunk you are standing in.

-
View User Profile
-
Send Message
Posted Feb 1, 2012For those waiting for an update!
You might want to switch over: http://dev.bukkit.org/server-mods/orebfuscator
-
View User Profile
-
Send Message
Posted Jan 31, 2012@GameOverRules
i am also getting the same thing, upon shutting the server down i also get the error as if the class files added to craftbukkit.jar are not in there
the java.lang.NoSuchFieldError: l is directly related to this plugin as i ran a testbed with the latest rb and just this plugin and got the same thing and its always an error with the packet51mapchuck which is what is supposed to be added or replaced in the craftbukkit jar
-
View User Profile
-
Send Message
Posted Jan 31, 2012Update plz :D
-
View User Profile
-
Send Message
Posted Jan 29, 2012Pleeeeease update to the newest RB. I updated to 1.1. And almost everything underground is exposed now.
-
View User Profile
-
Send Message
Posted Jan 28, 2012Please update Spout version? :)
-
View User Profile
-
Send Message
Posted Jan 25, 2012Wow thank you so much for this, has pretty much stopped ALL x-ray on my server, but there seems to be a problem where users see diamond and other ore underneath fences that they put down, then when they mine the fence the ore disappears and its actually just stone, if that could be fixed in the next update to 1818 it would be much appreciated ^_^ thanks for all your hard work and I'm looking forward to the next update so my server doesn't have to deal with x-rayers again :]
-
View User Profile
-
Send Message
Posted Jan 23, 2012Can someone please help, I am running a dev version of bukkit for 1.1 and I installed this plugin and everything worked fine, there was no errors in my server log (right after a restart) but there is when after I join the game. I will even paste it at the end of this so you can double check. But when I go into the game, nothing is there its a big vioid. Here is a picture of what it looks like that description does make sense. And then also I pretty sure the server crashes after i join and leave because I cannot get back in.
HERE IS THE SERVER LOG:
-
View User Profile
-
Send Message
Posted Jan 22, 2012bukkit version 1.1
-
View User Profile
-
Send Message
Posted Jan 18, 2012is it possible to hide other blocks like mossy cobble?
i think the ability to hide other blocks normally found in dungeons or strongholds would also be helpfull
-
View User Profile
-
Send Message
Posted Jan 15, 2012Is there going to be an update for this? It doesn't seems to work for CraftBukkit #1770 or will it be updated when there is a Recommended Build?
-
View User Profile
-
Send Message
Posted Jan 15, 2012I am now working on adding support for this plugin, if the author knows what is wrong, I am interested as well :)
EDIT
Added support for the Spout version in NoLagg version 1.57.7 and 1.57.8. In 1.57.8 you can use this plugin with CB#1769 without the 'field g not declared' errors.
-
View User Profile
-
Send Message
Posted Jan 13, 2012@bazookapooka
It's platform independant... It works on Linux, Windows AND Mac.
-
View User Profile
-
Send Message
Posted Jan 12, 2012will this plugin ever get mac support?
-
View User Profile
-
Send Message
Posted Jan 9, 2012http://pastie.org/3154791
Seeing this come up sometimes on Spout ver of CB 1597
@TyrOvC
-
View User Profile
-
Send Message
Posted Jan 6, 2012Guys. Using this with the NoLagg "ChunkSender" feature will cause this to not work.
-
View User Profile
-
Send Message
Posted Jan 6, 2012@fromgate
spout version is working great for me
-
View User Profile
-
Send Message
Posted Jan 5, 2012+1, any update coming? ):
-
View User Profile
-
Send Message
Posted Jan 4, 2012Will you update this plugin. We tryed to use Orebfuscator, but we gain too much lags with it.
-
View User Profile
-
Send Message
Posted Jan 3, 2012This plugin causes issues for me, as in.. people can x-ray as long as a new block that came in 1.0.0 is existent around those chunks, therefore exposing ALL ores. No way to block it. :/ :(
This needs to update, really bad.
-
View User Profile
-
Send Message
Posted Jan 2, 2012This plugin seemed to be working fine for me. I installed an x-ray mod on my laptop and tested it. Worked perfectly.
But now however one of my users claims this plugin is bugged as he was suddenly able to see all ores without having a mod or anything. It fixed itself after logging in again but had the same thing another time.
Then he installed an xray mod to test it out and was able to see all the real ores. Though when i tested it at the same time it still worked perfectly for me. Now.. i only have his word and seen screenshots he took so i cant give 100% guarantee that this information is correct. However i do trust the person who told me this so.. i dont really know what to think of it now xD