Skip to content

Frequently Asked Questions

Maurice Eisenblätter edited this page Jun 15, 2024 · 25 revisions

Why use Orebfuscator over Paper's built-in anti-xray?

  • Orebfuscator offers a two level cache for already obfuscated chunks to safe on computing power
  • Orebfuscator provides more advanced configuration to tune every little detail to your liking
  • Orebfuscator adds the proximity hider which is able to hide surface blocks and reveal them should a player be close enough to them
    • Support for multiple deobfuscation check such as distance, direction, frustum culling and ray cast culling
    • Less invasive obfuscation thanks to the block below obfuscation mode
  • Orebfuscator is designed to run in the main game thread as little as possible (which will lessen its impact on TPS)
  • Orebfuscator can hide Tile-/Block-Entities (chest, furnace, etc.) correctly without leaving them in chunk packets

What is the proximity hider?

The proximity hider obfuscates surface-level blocks and reveals them to nearby players. This can be helpful since an anit-xray only obfuscates below surface-level blocks to create the illusion for non-xray players that their is no anti-xray. Once a player gets close enough to a block that is proximity hidden it is automatically revealed for said player.

What is frustum culling and how does it work?

This is strongly simplified. We calculate the players view frustum (camera view) every proximity update and check if a proximity block is inside the cameras view if it isn't it won't get deobfuscated. The frustum uses the players position, rotation, aspect ratio of 16:9 and the configured FOV to calculate the exact camera view the player would have if he had the same FOV and aspect ratio. This will force x-ray players to spin like crazy if the want to deobfuscate proximity blocks. The frustum culling is just another "bonus" check after the distance check passes meaning the player still has to be close to block for it to appear. (here is the proximity code: https://github.com/Imprex-Developme...ebfuscator/proximity/ProximityWorker.java)

What is ray cast checking?

Ray cast checking is a process used to determine if a player can see a proximity block within range without any obstructions. This operation is computationally intensive, so it is not enabled by default.

To enhance performance, we offer the onlyCheckCenter option. When enabled, this option checks only if the center of a block is visible, rather than checking all edges and corners. This improves performance per block but reduces accuracy. Despite the decrease in accuracy, we recommend enabling this option when using ray cast checks for better performance.

How does maxMillisecondPerTick work?

Every time we need to load neighboring chunks we have to do it in the servers main thread. To limit the amount of performance impact on the main thread we try to limit the amount of time we take every tick to get those chunks. The way it works is we check every four chunks we loaded how much time it took and stop loading chunks if the threshold is reached. That would mean that Orebfuscator shouldn't under normal circumstances take more time then the set limit (default 10ms).

What is layerObfuscation and what are its use cases?

If the layerObfuscation option is enabled for a world, Orebfuscator will consistently utilize the same random block for obfuscation within each y-layer per chunk. This results in smaller packet sizes and better compression rates for chunk data, which leads to reduced network traffic. While this feature may occasionally improve FPS (frames per second) on older systems that struggle with small random air gaps in chunks, its primary purpose is to lessen the strain on your server's network. It's important to note that layerObfuscation should primarily be utilized for this purpose and not for other gameplay-related reasons because it is unknown if sophisticated hacking clients could abuse this feature. Below is an example demonstrating how layerObfuscation might appear in action: layerObfuscation example

Why do we obfuscate bedrock in the default config?

Certain sophisticated hacking clients possess the capability to deduce the world seed by analyzing the bedrock arrangement within your world. Once obtained, this seed can be exploited to recreate the world within the client and pinpoint the locations of valuable blocks such as ores. To counteract this vulnerability, we have implemented bedrock obfuscation in all recent versions of the plugin.

Clone this wiki locally