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 is the worthy successor of my previous project: AntiXray. Like the last one, this plugin aims to protect your server against xray users. In addition to the wonderful features of the previous project, this plugin includes a unique technology (Dynamism) that makes it the best solution against xray users. 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, see below for more details on what makes this plugin so unique. This plugin aims to be highly configurable, efficient and fast by using the power of Mixin, it integrates with Aikar’s timings system to allow you to monitor its performances. 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!

Currently available for:

  • SpongeVanilla (API 7.1.0, Minecraft 1.12.2)
  • SpongeForge (API 7.1.0, Minecraft 1.12.2, Forge build must be >=


Mirage will generate an optimized configuration for each world. 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/worlds/ 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 6 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) is available since version 1.3.0. This technology 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/global.conf.


Mirage can use bStats to collect anonymous statistics, this is disabled by default (since version 1.3.3) but it can be enabled by editing the following file: config/bStats/config.conf. Here is a list of all currently tracked informations:

  • The count of servers using my plugin
  • The count of players on these servers
  • Online mode
  • Minecraft version
  • Plugin version
  • Core count
  • System arch
  • Operating system
  • Server country
  • Java version

If you want to support my work and help me to improve this plugin, please enable it.

Todo list

  • Add async obfuscation
  • Add support for LanternServer

[Request]Need Replacement Plugins! Switching to SpongeForge[1.12.2] from Thermos[1.7.10]

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


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


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.


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.


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.

How to announce when a player finds diamonds?

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


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 https://github.com/Yeregorix/Mirage/issues/15