PREVENTS cheaters from taking all the good stuff for themselves, without the tremendous overhead of Orebfuscator.
How does it work?
Basically, players are limited in the amount of valuable ores they can mine, based on their play time on the server. Legitimate, non-cheating players probably won't notice because the default limits are generous, but xrayers will be blocked from mining ore too quickly. So cheaters can still cheat, but they can't take more than a non-cheating player's reasonable share of ore. So their only gain is avoiding monsters while digging. They can't mine their first diamonds/"other good stuff" sooner than non-cheating players, and they can't take more total than they could if they weren't cheating.
How does this compare to Orebfuscator?
The trouble with Orebfuscator and similar plugins is that while they're incredibly effective, they're very, very expensive to run. They consume a lot of CPU cycles doing deep packet inspection and manipulation, and they consume a lot of RAM trying to cache the results in memory. Small servers simply can't afford it, and larger servers have to cut back on their max players or other plugins. Any server which doesn't have enough CPU or memory may suffer heavy lag and crashes.
In contrast, Anti-XRay is extremely cheap. It doesn't do any heavy processing, and consumes very little memory. It's true that technically cheaters can still use xray to find ores and dungeon chests (Mojang hasn't really made those worth hiding), but they're limited in how much advantage they get out of it. Basically, you're allowing players to cheat (but only very little!) to save immensely on CPU cycles and RAM.
How does this compare to ore loggers and ratio reporters?
Those simply don't work. Viewing a report to determine who has been x-raying only helps you catch players AFTER they've done permanent damage, removing massive amounts of diamonds so that non-cheating players can't find any. Banning the cheaters doesn't actually solve the problem, because it doesn't put the diamonds back in the ground AND more cheaters will soon replace those guys, so the problem continues. Also, this approach requires administrators to actively work to catch cheaters. An automatic approach would be much better.
Anti X-Ray keeps ores in the ground so that non-cheating players can find them. By placing limits on the amount of valuable resources a player can mine based on his play time on the server, Anti X-Ray guarantees that cheaters don't get greedy. They can still cheat a little, but not to the extreme of ruining the fun of other players. In fact, most new-to-server cheaters just leave the server to find another server where they can cheat without limits, solving your cheating problem very well. Versus ore loggers, you're actually SOLVING the problem, doing it in a fully automated fashion, and saving RAM/CPU.
You can experience this plugin for yourself (as a player) by joining any of these public servers. :) These are maintained by bigscary personally, which helps him catch bugs and spot opportunities for new features and improvements. Have fun!
- Extreme Survival 184.108.40.206:25565
- Tekkit 220.127.116.11:25565
Players have an invisible currency which grows while they play (up to a maximum amount). Players who aren't actively playing (idling) don't gain any. When players break a valuable block, their total is reduced. If they don't have enough to break the block, they get a message explaining that they've reached their limit, and will have to wait X minutes before they can break that block.
Players who have been playing on your server since before you installed this plugin will start maxed-out to make the transition go smoothly.
Players who are NEW to your server after you install this plugin will start with a negative amount. This will prevent players from logging in and immediately x-raying to get valuables like diamond, because they won't have played enough yet to reasonably mine diamonds without cheating.
Yes, it's possible that some players who aren't cheating will run into the limits. It's my goal to adjust the default limits to minimize the chance of impacting legitimate players, while at the same time stopping xrayers from going crazy and taking all the valuable ore for themselves. If a player complains, these are the common scenarios:
- That player is a cheater, and is trying to convince you to disable the plugin or give him permission to bypass it so that he can cheat more.
- That player has "raided" someone else's existing mine instead of exploring on his own, allowing him to find diamond within the first hour of joining the server for the first time. Tell him to stop being lazy and earn his own diamonds.
- The player is EXTREMELY lucky, and managed to survive a reckless cave diving expedition without bothering to grow food or make armor and weapons. This is extremely unlikely - the player is probably cheating.
- That player is "branch mining", which involves tediously mining in long, straight, parallel tunnels near bedrock to collect lots of diamond. Chances are that player has an unhealthy obsession with diamonds, and already has a million more diamonds than he can possibly use. For this case, I recommend advising the player to take a break from mining when he hits the limit. If you give a player like this the bypass permission, he will grab most of the diamond in the area, robbing other players of the opportunity (even though he's not cheating, he's potentially causing a problem).
This plugin will do a good job of preventing cheaters from benefiting from xray. However if you'd also like to actually catch and ban them, there's a configuration option to make a log entry and notify moderators (permission: antixray.monitorxrayers or op) when a player reaches the mining speed limit. This does NOT necessarily mean the player is cheating (read below!), but teleporting to the reported location will often be enough to determine whether the player was cheating or not. Since the 1.3 update, the Vanilla /tp command will accept coordinates, making these investigations very easy even when the player is offline.
What are the indications of a cheater?
It's impossible to know absolutely for certain whether a player is cheating or not unless you're looking over his shoulder while he plays. However all of these are indicators of likely cheating.
- Mines straight down. Xrayers don't fear lava because they can see through the ground.
- Mines in the dark. Xrayers don't need light - most of their blocks are transparent anyway.
- Mines in very long, single-block-wide tunnels (possibly winding), with very few, very short branches. You may notice a distinct lack of any pattern - unlike a "strip miner" who digs straight, parallel tunnels very close together, an xrayer's tunnels "wander". Xrayers don't need a pattern to be efficient, because they can see exactly where all the ore is, and so they can always take the shortest path to the next node.
- Starts mining before he even builds a rudimentary shelter, and without bothering to start even a small farm. Xrayers can see through most blocks, so they see caverns and monsters, and dig around them instead of fightning them.
- Carries very few supplies with him and doesn't wear armor while mining. May not even have a sword. Xrayers can see through most blocks, so they see caverns and monsters, and dig around them instead of fightning them.
- Finds diamonds VERY early after joining the server. Xrayers don't have to look for diamonds. They know exactly where they are and can see the shortest path immediately after logging in.
- Complains frequently, "Why do I have to wait to mine diamonds?!", while other players don't seem to notice the "problem".
- A VERY high ore-to-stone ratio. This plugin doesn't measure that, but you could supplement this with an ore logging plugin if you really want to catch and ban cheaters (this plugin will limit their cheating so that they don't mine more valuables than non-cheating players). Because xrayers can see the shortest path to any ore node, they minimize the number of stone blocks broken as they mine.
Setup and Configuration
Beyond just putting the .jar file in your plugins folder, all of these steps are optional. There is no database required - that is also optional.
Tweaking the Ore-per-Hour Ratio
Please do not adjust the diamond mining rate, starting values, etc, until you have actually tried the defaults for a day or so. Over-thinking them will likely lead to you choosing bad values which either prevent non cheaters from mining, or allow cheaters to cheat too much.
In the config file, you'll find something like this:
- NewPlayerStartingPoints: -400
- PointsEarnedPerHourPlayed: 800
- MaximumPoints: 1600
- DIAMOND_ORE: 100
New player starting points are how many points an entirely new player to your server (meaning he's NEVER been on your server before) will start with. The points are used to break blocks, like DIAMOND_ORE, which by default costs 100 points.
Points earned per hour played is the speed at which players get points. In this example, players get 800 points per hour, so on average, they can mine 8 diamonds per hour indefinitely without ever being temporarily blocked from mining.
Maximum points is the "buffer" players build up. Players don't spend ALL their time mining for diamonds, so this buffer gradually fills up with points. This means players who take breaks from mining will be less likely to encounter the mining speed limit.
In this example, because the starting points setting is much less than the cost of mining a diamond, this means that an entirely new player who has just joined the server can't mine ANY diamonds right away. This helps stop xrayers, who often start xraying right away, and will likely encounter the limit and either quit or complain (the latter helps you catch them).
You can add other ores as well, but generally xrayers don't bother to gobble up non-diamond ores, so those other ores probably aren't worth spending CPU cycles on tracking.
Tekkit: Adding custom precious blocks
Since v1.6.0 there is a new section inside your config.yml looking somehow like this:
1 2 3 4
CustomBlockDefinitions: SomeCustomOre: ID: 123 Sub ID: 0
This will let you define custom, non-default-minecraft blocks by
- a name: you can name your custom ore/block however you want, here it is called "SomeCustomOre"
- an ID: in this example "123"
- a Sub ID: here "0". To tell the plugin to ignore the subid (most common for ores) use a value of "-1" here. Notice that some blocks (like log or stairs) can have different subids depending on the blocks rotation.
You can then use the name of your custom block definition inside the "ProtectedBlockValues"-section of the config to assign it a value. It could then look like this for example:
1 2 3 4
ProtectedBlockValues: DIAMOND_ORE: 100 EMERALD_ORE: 50 SomeCustomOre: 50
Note that you can still use the default block names for standard minecraft blocks and ores (like "DIAMOND_ORE") without the need to define them before. AntiXRay will first check inside your custom block definitions and then in the default blocks list to determine what type of block you are trying to protect.
And note that there are mods this plugin doesn't quite work well for because they introduce new methods of mining which completly bypass plugins.
Where's the Database Option?
By design, there is no database option. This is one of a few cases where using a database is definitely more trouble than it's worth, and possibly detrimental to performance. There's ONE integer value stored per player. That integer is read from file only once per login, and written to file once per logout (or when you shut down the server). There's no need for a database, and besides that, it will slow your boot trying to establish the initial connection.
I used to have database support, and one of the problems was that the database was used so infrequently that the connection would fall asleep. I will not add the database option back in unless in the future, something about the above changes so that there's either a LOT more data, or very frequent changes to data.
Using a Block Ratio Instead
If you'd rather require players to mine more coal or break more stone to earn more valuable ores instead of making them wait an amount of time, you need to do three things. First, set the points per hour to zero. Second, set the "cost" of the other blocks you want players to break to a negative amount. Then when the player breaks those blocks, he will GAIN points, taking him closer to mining. Finally, update your messages.yml to explain that the player must break more stone or other ores (depending on your configuration), instead of telling him he will get more points by waiting. For example, if you wanted to allow players to mine one diamond per 100 stone broken, you'd do this:
- points per hour: 0
- starting points: 0
- DIAMOND_ORE: 100
- STONE: -1
- In messages.yml: "You're finding a lot of diamond! You have to break more stone before you can collect this ore."
'antixray.monitorxrayers' (default: op) -> Notifies the player when a player has reached his mining limits.
'antixray.bypass' -> Allows the player to freely mine anything in any amount without being checked by Anti X-Ray. Usage on own risk..
More Great Plugins by bigscary!
His plugins solve Vanilla problems in ways which minimize impact on servers, administrators, and players, so everybody can enjoy Minecraft without having to learn to play the game in a new way or spend more time administrating than playing. His goals are effectiveness, simplicity, and efficiency. If you like this plugin, check out more of his work:
- Grief Prevention
- Prevents ALL types of grief.
- Easy for players and admins, mostly automatic.
- Players claim land to prevent theft and house wrecking.
- Automatically warn, mute, and kick or ban spammers.
- Blocks dumping lava and setting fire on another player in non-PvP servers.
- Disable fire damage, spread, or both.
- Wipe away ugly builds with a right-click - no database required!
- Automatically prevents spawn camping in PvP servers.
- Prevent damage to the surface by limiting lava and water placement, and TnT damage.
- Automatically clean up hanging tree tops.
- Includes a creative mode for creative worlds.
- Optional siege mode for build-based PvP.
- Population Density
- Automatically assigns new players to wilderness where they'll find other new players and plenty of space, wood, and ore.
- Optional teleportation system which can't be abused by players to escape combat or save them from being lost.
- Login queue to guarantee fairness when the server is full.
- Optional reserved spots for administrators.
- Automatically removes idle players when the server is nearly full.
Donations to the former author
"This amazing plugin stops x-rayers from taking all the diamonds without lagging your server, crashing your server, or bothering your players! Maybe you'd like to buy me a beer ($5) or a pizza ($10)? :) If so, the donation link is blue and at the very top of this page. Thanks very much!"
Table of contents
- 1 How does it work?
- 2 How does this compare to Orebfuscator?
- 3 How does this compare to ore loggers and ratio reporters?
- 4 Official Servers
- 5 The Details
- 6 Catching Cheaters
- 7 Setup and Configuration
- 8 More Great Plugins by bigscary!
- 9 Donations to the former author
- Date created
- Jun 12, 2012
- Last update
- Feb 22, 2013
- Development stage
- All Rights Reserved
- Curse link
- Anti X-Ray
- Recent files