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.
Not working with spigot!
@EncryptedCurse
Mode 2 is the best for hiding the blocks and being fast, mode 5 is the best for hiding the ores, but the slowest, and mode 3 is the fastest but it doesn't hide all of the ores.
Does this consume a ton of RAM like Orebfuscator?
Does this plugin consums RAM like orebfuscator? Im looking with urgency for a plugin like this one!
its not hidding chests or mob spawners, can you please make it do this :)
ps:it does hidde chests but they need to be covered. anyway to make it so it doesnt need this ? just hidde them if its dark. i try messing with the config adding chests no luck
whats the best setting to avoid xrayers? also how can I hidde chest?
Is there a link to a newer version? I dont care if its not for 1.4.6 as long as it works :)
guys, you guys can be sure he has a reason to not upgrade the plugin, changed some codes, and codes are temporary, so do not update the plugin is good now
This plugin looks soooo awesome! Anti-XRay is so crucial to servers nowadays... and this looks to be the best tool to do that with. Please hurry with the updating, TyrOvC! I know how hard it is to update stuff, especially something as complex as this, but nevertheless, the Bukkit world needs you!
Great job!
Please friend, update the plugin or releases the source. This is an essential plugin for many administrators.
give me link download of version 1.9.4.1??
== can someone give me the link to download the 1.4.5 OreToClientObfuscati ==on
Is there a place where we can get developer builds of this for testing, I would really like to get to 1.4.5 or even 1.4.6 on our server. I am willing to provide feedback.
Update to 1.4.6 Please!
Where can I get the 1.4.5 update for this plugin b/c it says 1.2.5...... Also I had just a jar file of this plugin, idk where I got it from it was a long time ago and all I had to do was through it in there and it would work. Anyways could you put a link to the 1.4.5 update of this plugin in?
Where can I find new builds of this?
@archlinux
On it
Would you guys say that this plugin is faster than Orebfuscator ?
They did it again TryOvC :(
OTC does not work with current bukkit builds :\
Could you please take a look ?
@o0AzzA0o
There could be some gains, sure, but at a lot of added code complexity. It would be a tradeoff between cpu and more memory usage too.