AntiBranchMining

AntiBranchMining

4.3k Downloads

Branch-mining, the process of digging out organised tunnels at low levels in order to increase chances of finding valuable ores. A valid technique in most survival games, but in Ultra-Hardcore tournaments its use is often banned due to the ease and safety in which you can gain ores. This has led to a great deal of drama, accusations, lack of understanding of the rules, and time required on the part of the host to police such behaviour.

In an attempt to avoid the problem entirely, I have created this plugin. It is simple, efficient and effective in removing all ores that can only be found by branch-mining while retaining all ores that can be found while caving and exploring underground structures. The practical upshot of this is that all forms of branch-mining become profitless and therefore pointless, and effectively removes branch-mining from the game.

As all ores that could be found by caving are retained, most players will not even notice a difference to the world unless they are tunnelling rather than caving.

This is advantageous to both hosts and players, as hosts will no longer need to worry about monitoring the tunnels of players to see if they are branch-mining, while players will no longer have the confusion about rules, will no longer need to worry about digging straight tunnels for genuine reasons, such as searching for caves.


Features


  • Simple
    • Just download the plugin jar into your plugins folder before generating a new world, no additional setup required
  • Efficient
    • Causes chunk loading to take only 15-20% longer on average, typically a difference of only a few milliseconds per chunk
    • If you pre-generate your arena with AntiBranchMining installed, it need do nothing during play and so causes no lag
    • Fast enough to be used without significant lag in unlimited sized worlds
  • Effective
    • Removes all ores only available through branch-mining, while retaining all of the ores that can be found while caving
    • approx 14,000 gold and 5,000 diamonds remain in a 1600x1600 map available just from caving alone
  • Customisable
    • Exclude certain types of ores from being removed
    • Reduce the max height to check for ores to remove, if you allow branch mining at higher levels
    • Record ore compositions to show how much ore is left in the world afterwards
    • (0.2) Apply different settings or disable AntiBranchMining on a per-world basis from the config.yml
    • (0.3) Change the ore removal factor to optionally retain some percentage of ores that would normally be removed
    • (0.3) Use AntiBranchMining on worlds with radically different terrain generation by settings which block IDs count as ores and what material they should be replaced with

Multi-World Support (Available from v0.2)

In order to provide support for multiple worlds, I have added a some extra options in the config.yml file. Here is an example: config.yml

Customisable Ore Removal Factor (Available from v0.3)

By default, AntiBranchMining will remove 100% of the ores that can only be found through branch-mining. However, in some cases you may only want to encourage caving rather than prevent branch-mining entirely. You can now add a "removal-factor" key with a percentage from 1 to 100 to the default or any given worlds. If you set it to 90 for example, then 90% of the ores would be removed, and only 10% of the ore available only through branch-mining will remain. This works per vein of ore rather than per block, so either the whole vein will remain or the whole vein will be removed. This should maintain the natural vanilla feel of the world.

Custom World Generation Support (Available from v0.3)

In order to better support worlds with other than the normal world generation (e.g. nether and quartz ore?), I have added an "ore-replacement-material" option, this allows you to set what material to replace removed ores with. This default to stone on normal maps, but in the nether for instance you would more likely want it to be netherrack.

I have also added an "ores" option, a list much like "excluded" ores, that allows you to customise which materials should be considered ores for searching purposes. This is useful if you are using a different set of ores to the standard ones e.g. nether quartz instead of coal, iron, gold etc.

This should not be used as a replacement for the "excluded" option as it may have unwanted side-effects. For instance, if you didn't want coal ore to be removed, so you took it out of the list of ores, it would prevent the coal ore from being removed, however it would also mean that if you mine out the coal any other ores behind it would have been removed due to the coal not being considered an ore. The ores list should be considered a list of all known ores for the world, whether you want them removed or not.


Commands


  • /OreStats - Displays the remaining ore composition of the world per chunk and the average time it has taken to remove ores from them. Set debugstats to true in the config.yml before generating the world to see all the information.

Permissions


  • antibranchmining.commands.orestats (defaults to op) - Allows use the /orestats command

Troubleshooting


This plugin uses Java 7

If you get the followed error on starting up the server with this plugin installed "Unsupported major.minor version 51.0". This means you are using an out of date version of Java. If you don't know how to upgrade, please contact your server hosting provider and ask them for help in upgrading to Java 7, or contact Oracle customer support. Mac OS X users require JDK 7 instead of JRE 7.

Compatibility

This is a Bukkit API-compliant plugin. This guarantees that it is compatible with other Bukkit API-compliant plugins, and will continue to work in later versions of Craftbukkit (unless the Bukkit team specifically state that a particular update will break plugins, this has very rarely ever happened).


Donations


If you'd like to contribute towards the continued development, support and maintenance of this project, please consider joining me on Patreon, and making a one-time or recurring pledge.


Help


If you need help you can leave a comment below and I will get back to you as soon as I can. You can also join my IRC chatroom using the following link. Please note, I am not always at my keyboard! http://webchat.esper.net/?channels=XHawk87&prompt=1