Mirage - The best solution against xray users

This is a discussion topic for the Ore project, Mirage. View the full project on Ore for downloads and more information.



Mirage protects your server against xray mods and packs. How does it work? Mirage modifies the packets before they are sent to the players to prevent malicious users from viewing hidden ores in your world. In addition to the wonderful features of the project, this plugin includes a unique technology (Dynamism) to make ores appear or disappear depending on the distance to the player. This plugin aims to be highly configurable, efficient and fast. In addition to being a powerful protection, Mirage can be used by developers as a powerful tool to make appear fake giant structures. This feature gave the project its name.

The jar file must be at the root of the mods/ folder, not in mods/plugins/ or any sub folder!


Mirage will generate an optimized configuration for each dimension. These configurations might be modified to disable the plugin in a specific world, to modify the set of ores that will be hidden or even to modify the modifier itself. Configuration files can be found in the config/mirage/configs/ folder and are well documented to help you find your way but for more information, open this page: Configuration.


In this plugin, a modifier is an algorithm used to modify data sent to players. Mirage provides an API to create and register your own modifiers but by default 5 modifiers are included in this plugin. For more information about how to use and configure these modifiers, open this page: Modifiers.


Dynamism (aka dynamic obfuscation) allows the modifiers to specify that some blocks are only visible if the player is close enough. Dynamism is very optimized, this allows to hide small structures like a spawner or very big ones such as a water dungeon without causing lags. For example, if you’re using the default configuration, the water dungeons will gradually appear as the player approaches. The required distance is configured to not impact the gameplay but only xray users.


Mirage automatically connects to the Ore repository to check for updates. By default, the console and all players having the permission mirage.update.notify will be notified when an update is available but it can be disabled by editing the following configuration file: config/mirage/update.conf.

Important notes about your seed!

You should never share your seed to your players. Anyone having the seed of your world can regenerate the exact same world in singleplayer including the exact same ore veins. Once your seed has leaked, there is no anti-xray mod or plugin on earth that can protect you. Some hack mods are able to crack your seed using the position of structures in your world. Mirage slows down the cracking process but cannot indefinitely protect you. The only way to protect your server is to build a custom world or to use a custom generator. I highly recommend to pre-generate your world using the SecureSeed mod.

I can still see ores. What should I do?

By default, Mirage uses the hide_obvious modifier. This hides most ores, but ores that are next to air must stay visible for legit users. That’s why you can see some of them. If you want a stronger protection, you can instead use the random_block modifier by modifying the configuration, however it might affect performance.


Using the default configuration for “obvious” it appears that chests should be within the blocks obfuscated, but clients are able to spot them with chest-finders as well as appear visually.

Also, a bit confusing on the terminology with Ids for modifiers…
An Id usually denotes something unique for the clump of data , but in a normal default world, you’ve got a section for id=obvious for water structures plus one for ores and such.
Stable vanilla beta 33 7.1.0

Is it more a matter of in this case, ID is not for the clump in the config, but rather the MODE of obfuscation to use? Duplicate Ids don’t matter because they aren’t actually Ids?

Hi !
If you think something does not work as expected feel to open issue on the github page, with the more details as possible, such as SpongeForge/SpongeVanilla version, forge version, a copy of the configuration, a screenshot maybe, etc …
About the terminology, initially we could have only one modifier of the same identifier per configuration but since the last update this limit has been removed. I agree that mode or type might be henceforth better than id. I might change this in the future.

A new version has been released for Mirage, it is available for download here.

  • Reorganize few things
  • Remove usage of MixinTrackingUtil
  • Improve containers binding mechanic
  • Improve config loading
  • Update config version

This is using alot of TPS, is there anyway to improve performance?

You can try reducing the dynamic obfuscation distance (dynamism). Warning, this will cause ores to be visible less far. Multiply the number by 16 to obtain an estimation of the visibility distance. Another solution is to totally disable dynamism, but you will lose a level of protection.

# The dynamic obfuscation distance, between 0 and 10

Also, can you send me your timing report ? (Here or in private if you want.) It can help me to diagnose the problem and maybe improve the performances in future versions.

A new version has been released for Mirage, it is available for download here.

  • Add “fakegen” modifier which can generate fake natural veins of ores
  • Improve update checking
1 Like

A new version has been released for Mirage, it is available for download here.

  • Minor changes
  • Fix RandomModifier default config generation in end dimension
  • Disable bStats by default
1 Like

A new version has been released for Mirage, it is available for download here.

  • Modify InternalChunkMap#getDynamismManager to always returns non null (Fixes NPE)

Hey I have this error with spongeforge 2705. :confused:



thread/ERROR] [Sponge]: Could not pass ChangeBlockEvent$Place$Impl to Plugin{id=mirage, name=Mirage, version=1.3.4, description=The best solution against xray users, authors=[Yeregorix], source=E:\UserFiles\NICOLASA\GameServers\TC47136772521640571542732\Minecraft.\mods\plugins\Mirage-1.3.4 .jar}

I need more information to help you. Please open an issue here with the spongeforge version (the full suffix) and a full copy of the logs using a service such as pastebin.

1 Like

Hi, thank you for the quick answer! I open an issue.

xray is active in 10 radius block, how can i set to 0?

The ores in your screenshot are not even covered by stone so there is no reason to any protection plugin to hide these ores otherwise normal players (without xray) would not be able to see any ore. Mirage only hides ores that are not visible to normal players, to make sure that any xray mod or resource pack is useless.

1 Like

those were the blocks I had put there that position!
I send you another screen this is what I see if I look under the ground!

can I hide the blocks that are on the front line?

Using the default modifier few ores are still visible, they are ores within a short distance and directly adjacent to an transparent block and so exposed to the view of normal players. You can either reduce this distance but this might affect gameplay or you can use another modifier such as random or fakegen which generate fake ores to hide the real ones. For more information, you can visit this page: Modifiers.

A new version has been released for Mirage, it is available for download here.

  • Require SpongeAPI 7.1.0 and so SpongeForge/Vanilla 7.1.2 or +.
  • Avoid unnecessary creation of PlayerDynamismManager when possible
  • Improve mixins error detection
  • Add packs system to improve config generation
  • Refactor BlockSet to improve performances
  • Fix isOpaqueCube optimization causing conflict with some mods
  • Update to bStats 1.4
1 Like

Still can not defend this cheating mod.
Below is the official website of cheating mod.

I’ve just tested this mod after seeing your message and Mirage works fine on my side. Can you explain with more details what is your problem ? Description of the problem, sponge version, plugin version, etc …
And by the way, avoid posting such mods on this forum (it’s not allowed), please send me them in private. :slight_smile:

Help please Duplicate of #11 · Issue #15 · Yeregorix/Mirage · GitHub