McMines icon

McMines -----

Fully Configurable | Mine Hologram | Custom Placeholders | Developer API



Proof Ownership
proof.png

McMines is a highly customizable complex prison mine generator plugin. It contains amazing and high-tech features such as Timed Resets, Percent Resets, Holograms, and more. Without a big clunky confusing GUI, this plugin gets straight to the point. With one of the most customizable configurations on the market, this plugin will be truly unique for your server. The possibilities are endless.
With a highly active plugin author, whether its new features, bug fixes, or something else, the plugin will be staying active! McMines is one of the strongest prison mine generator plugins currently on the market!
Features
  • Highly Customizable Configuration File
  • Reset Prisons Based on Mine Percent Left
  • Reset Prisons Based on Timer
  • Multiple Easy-to-Use Mine Holograms
  • Add Blocks to Mine with Decimal Precision
  • Custom Placeholders, Including Progress Bar
  • Edit Mines via Commands
  • Edit Mines via Files
  • Many Permissions
  • Many Commands
  • Teleport Player on Reset
  • Notify Player on Reset (with Radius)
  • Developer API
  • Support for HolographicDisplays
  • Highly Active Author
Dependencies

HolographicDisplays (Optional)
[ World Guard & World Edit] (Optional)

Commands & Permissions
  • /mine - mcmine.command.mine.*
  • /mine create [name] - mcmine.command.mine.create
  • /mine delete [name] - mcmine.command.mine.delete
  • /mine add [name] [material] [chance] - mcmine.command.mine.add
  • /mine remove [name] [material] - mcmine.command.mine.remove
  • /mine rename [old name] [new name] - mcmine.command.mine.rename
  • /mine reset [name] - mcmine.command.mine.reset
  • /mine option [name] [option] [value] - mcmine.command.mine.option
  • /mine warp [name] - mcmine.command.warp.MINENAME
  • /mine reload - mcmine.command.mine.reload
  • /mine version - mcmine.command.mine.version
  • /mine info [name] - mcmine.command.mine.info
  • /mine hologram [name] [hologram] [command] [value] - mcmine.command.mine.hologram
  • mcmine.interact.MINENAME
Code (YAML):
#
#
#+------------------------------+
#|                              |
#|          Messages            |
#|                              |
#+------------------------------+

# Message Key
# < > = Mandatory, must use at least one option
# [ ] = Mandatory, must enter some custom input
# ( ) = Optional,  may or may not enter some input
# { } = Placeholder

#   Description
#   message: "value"
    # {placeholder} - definition
messages
:
    #Prefix of every message
    prefix
: "&aMcMines &7| &r"

    #When the command sender doesn't have the required permission
    command-no-permission
: "&cYou have no permission to do this."

    #When the player doesnt permission to interact with the mine
    interact-no-permission
: "&cYou don't have permission to interact with Mine &4{mine_name}&c."

    #Called when player tries to create duplicate mine
    mine-already-exists
: "&4&lERROR &cMine &4{mine_name} &calready exists."

    #Called when player tries to create duplicate hologram
    hologram-already-exists
: "&4&lERROR &cHologram &4{holo_name} &calready exists."

    #When hologram is not found
    hologram-not-found
: "&6&lWARNING &eCannot find hologram &c{holo_name}&e."

    #When hologram is not found
    hologram-line-not-found
: "&6&lWARNING &eCannot find hologram line &c#{holo_line_number}&e."

    #When player tries to reference a material that isnt valid or isnt a block
    material-not-found
: "&6&lWARNING &6{material}&e is not a valid block."

    #When mine referenced was not found
    mine-not-found
: "&6&lWARNING &eCannot find mine &c{mine_name}&e."

    #When player tries to remove a block thats not in the mine
    block-in-mine-not-found
: "&6&lWARNING &eMine &6{mine_name} &edoes not contain &6{material}&e."

    #Sent to console if command requires player
    must-be-player
: "&cYou must be a player to do this."

    #Sent to player if command requires console
    must-be-console
: "&cYou must be the console to do this."

    #Sent when mine is created with a name longer than one word
    name-too-long
: "&4&lERROR &cThe name &4{mine_name} &cis too long."

    #Sent when command is incorrectly entered
    mine-command-usage
: "&4&lUSAGE &c/mine [create, delete, rename, add, remove, reset, version, reload, option, warp]"

    #Sent when command is finished executing
    mine-create-command-completed
: "&fCreated the mine &e{mine_name}&f."

    #Sent when command is incorrectly entered
    mine-create-command-usage
: "&4&lUSAGE &c/mine create [Name]"

    #Sent when command is finished executing
    mine-delete-command-completed
: "&fDeleted the mine &e{mine_name}&f."

    #Sent when command is incorrectly entered
    mine-delete-command-usage
: "&4&lUSAGE &c/mine delete [Name]"

    #Sent when command is finished executing
    mine-rename-command-completed
: "&fRenamed the mine &e{mine_old_name}&f to &e{mine_name}&f."

    #Sent when command is incorrectly entered
    mine-rename-command-usage
: "&4&lUSAGE &c/mine rename [Old Name] [New Name]"

    #Sent when command is finished executing
    mine-add-command-completed
: "&fAdded &e{material}&f the mine &e{mine_name}&f, with a &e{chance}%&f chance."

    #Sent when command is incorrectly entered
    mine-add-command-usage
: "&4&lUSAGE &c/mine add [Name] [Material] [Chance]"

    #Sent when command is finished executing
    mine-remove-command-completed
: "&fRemoved &e{material}&f from the mine &e{mine_name}&f."

    #Sent when command is incorrectly entered
    mine-remove-command-usage
: "&4&lUSAGE &c/mine remove [Name] [Material]"

    #Sent when command is finished executing
    mine-reset-command-completed
: "&fReset mine &e{mine_name}&f."

    #Sent when command is incorrectly entered
    mine-reset-command-usage
: "&4&lUSAGE &c/mine reset [Name]"

    #Sent when command is finished executing
    mine-option-command-completed
: "&fSet &e{option}&f for mine &e{mine_name}&f to &e{value}&f."

    #Sent when command is incorrectly entered
    mine-option-command-usage
: "&4&lUSAGE &c/mine option [Name] [Option] [Value]"

    #Sent when command is incorrectly entered
    mine-warp-command-usage
: "&4&lUSAGE &c/mine warp [Name]"

    #Sent when command is finished executing
    mine-warp-command-completed
: "&fYou have been teleported to mine &e{mine_name}&f."

    #Sent when command is incorrectly entered
    mine-info-command-usage
: "&4&lUSAGE &c/mine info [Name]"

    #Sent when command is finished executing
    mine-info-command-completed
: "&b&lINFO &eMine {mine_name}&f: \n&7 - Percent Mined: &e{percent_mined} \n&7 - Next Reset: &e{next_reset} \n&7 - Last Reset: &e{last_reset} &7\n - Children: &e{children}"

    #Sent when command is incorrectly entered
    mine-version-command-usage
: "&4&lUSAGE &c/mine version"

    #Sent when command is incorrectly entered
    mine-reload-command-usage
: "&4&lUSAGE &c/mine reload"

    #Sent when command is finished executing
    mine-reload-command-completed
: "&aPlugin has been reloaded."

    #Sent when command is incorrectly entered
    mine-hologram-command-usage
: "&4&lUSAGE &c/mine hologram [Name] [Create, Remove, Teleport, Edit]"

    #Sent when command is incorrectly entered
    mine-hologram-create-command-usage
: "&4&lUSAGE &c/mine hologram [Name] create [Name]"

    #Sent when command is finished executing
    mine-hologram-create-command-completed
: "&fHologram &e{holo_name}&f has been added to the mine &e{mine_name}&f. Edit with: &6/mine hologram {mine_name} addline {holo_name} {line}&f."

    #Sent when command is incorrectly entered
    mine-hologram-delete-command-usage
: "&4&lUSAGE &c/mine hologram [Name] delete [Name]"

    #Sent when command is finished executing
    mine-hologram-delete-command-completed
: "&fHologram &e{holo_name}&f has been removed from the mine &e{mine_name}&f"

    #Sent when command is incorrectly entered
    mine-hologram-addline-command-usage
: "&4&lUSAGE &c/mine hologram [Name] addline [Name] [Line]"

    #Sent when command is finished executing
    mine-hologram-addline-command-completed
: "&fThe line &e{holo_line}&f has been added to the hologram &e{holo_name}&f."

      #Sent when command is incorrectly entered
    mine-hologram-setline-command-usage
: "&4&lUSAGE &c/mine hologram [Name] setline [Name] [Line#] [Line]"

    #Sent when command is finished executing
    mine-hologram-setline-command-completed
: "&fLine has been set to &e{holo_line}&f for hologram &e{holo_name}&f."

    #Sent when command is incorrectly entered
    mine-hologram-teleport-command-usage
: "&4&lUSAGE &c/mine hologram [Name] teleport [Name]"

    #Sent when command is finished executing
    mine-hologram-teleport-command-completed
: "&fTeleported the hologram &e{holo_name}&f to your location."

    #Sent when player is in mine creation mode
    mine-creation-mode-enabled
: "&b&LINFO &fMine creation mode has been &aenabled&f."

    #Sent when player leaves mine creation mode
    mine-creation-mode-disabled
: "&b&LINFO &fMine creation mode has been &cdisabled&f."

    #Sent when player selects a mine location
    mine-creation-set-location
: "&b&LINFO &fMine &e{mine_name}&f's {location_type} has been set to &eX: {x}, Y: {y}, Z: {z}&f."

    #Sent when player tries to save the locations set, but they didn't set them all.
    mine-creation-not-enough-locations
: "&4&LERROR &cYou did not set all three locations for the mine."

mine
:
  item
: CARROT_ON_A_STICK

Developer API

First Steps

To add the plugin to your code, you must add it by jar. There currently is not a maven repository (coming soon). Once you have added the jar file, you must edit your plugin.yml to include depend: [McMines] or softdepend: [McMines] depending if the hook is optional or not.
Usage

To begin with the API, first declare the api object, McMinesAPI mineAPI = new McMinesAPI((McMines) getServer().getPluginManager().getPlugin("McMines"); Now you can view all the available functions by looking at the autocomplete with minesAPI.(usage).
Events

McMines throws a few custom events,
  • MineBlockBreakEvent - Thrown when a block inside a mine has been broken
  • MineResetEvent - Thrown when a mine has been reset
  • MineCreateEvent - Thrown when a mine has been created
World Guard Setup

It is highly recommended to have World Guard installed on your server. If you do not have it installed, please continue to First Steps.
Begin by accessing the region wand, from World Edit by typing //wand To make it so players can't break through the walls of your mine, you will want to select the "container" of your mine. This is the exterior of your mine that will be holding all the blocks.

Figure 1 - Container of Mine

68747470733a2f2f692e696d6775722e636f6d2f4d6233436e70642e6a706567.jpg

Once your region is selected, you will want to define it as such, /region define [mine_name]_exterior (e.g. "A_exterior") This creates a region around our mine that is protected from players being able to break your mine & mine container. Next, select the interior of the container, where the blocks would go, using the same wand. Once your region is selected, you will want to define it as such, /region define [min ename] (e.g. "A") This creates a region in our mind, that we can allow players to interact with. To allow players to break blocks inside our mine, we first need to add the correct flag using /region flag [mine name] block-break allow. This flag allows the player to be able to break blocks in our mine. Finally, give the player the required permission to interact with the mine mcmine.interact.[mine name] (e.g. "mcmine.interact.A"). You now have your basic mine setup!

First Steps

To begin creating your mine, make sure your main hand is empty. Start with the command /mine create [mine name] (e.g. "/mine create A"). Mine names must not contain any spaces. Once this command has been executed, you will receive an item in your hand called the "Mine Creation Tool". Begin by left clicking on the first corner of where your mine will be (inclusive). Then, right click on the other corner of where your mine will be (inclusive). While holding shift, left click on the block you want the players to warp to. Finally, while holding shift, right click and you will exit creation mode. If you get an error, you must have done something wrong.

Adding Blocks

When your mine first starts out, it will be with 100% stone blocks. To change this, you will first want to remove all the stone using the command /mine remove [mine name] STONE. Once your stone is removed, you can add any block in the game to your mine using this command /mine add [mine name] [material] [chance] (e.g. "/mine add A DIAMOND_ORE 10.50"). Chances can be any number from 0 to near infinity, and with a few decimal places of precision. All block chances do not need to total to 100%, but they are weighted, so the higher the chance, the higher the block count of that type will be.

Editing Mine's Options

Each mine comes with some default options that you may want changed. To do this, the base command /mine option [mine name] [option] [value] must be used. For example, say we want the mine to reset every hour. This is an option that comes with each mine. To enable this option we first must use the following command /mine option [mine name] Reset-Timer true. This enables the mine reset timer option. Now we can edit the frequency of the resets by using the command /mine option [mine name] Reset-Delay 00:00:01:00:00. Lets break this one down. The first set of zeros is the weekly frequency, or how many weeks to wait for each reset. The next set of zeros is the daily frequency, or how many days to wait for each reset, the same rules apply to the next "01" as hours, then minutes, and then seconds. These numbers can be set to anything. With this being set, the mine will now reset every hour. Each option available to you is listed in the tab-completer. See Figure 2 Each value for each option is also previewed in the tab-completer.

Figure 2 - Tab Completer

68747470733a2f2f692e696d6775722e636f6d2f6737484d31624d2e706e67.png

If we wanted the mine to reset when 75% of the mine has been mined, when can enable this option by using the command /mine option [mine name] Reset-When-%-Empty 75, or, if you only want a timed reset, you can just disable this feature by doing the command /mine option [mine name] Reset-When-%-Empty 0.
Each mine also supports "children" or "submines". To attach a child mine to your mine, you will need to execute the command /mine option [mine name] child [child mine name]. This will then set that mine as a child. A child mine simply resets when the parent mine resets.

Adding Holograms

If you are using HolographicDisplays, you will have access to using holograms. We first need to enable them using commands. /mine option [mine name] holograms-enabled true. This enables the hologram option. Next we can add our first hologram. We can create a hologram using the command /mine hologram [mine name] [hologram name]. Hologram names must not contain spaces. This will create an empty hologram at our location. Don't worry too much about the location now, as we can change that later! Now, lets add a line to our hologram using /mine hologram [mine name] addline [hologram name] [line]. The value of [line] can be anything you would like. It even can contain some placeholders! See Using Hologram Placeholders to use those. If for whatever reason you want to edit the line you just made, use the command /mine hologram [mine name] setline [hologram name] [line#] [line]. The line numbers start at 0 and go from the top down. To remove a line from your hologram, we actually just use the same command, but in a different way. /mine hologram [mine name] setline [hologram name] [line#] null. Using the "null" keyword acts as a delete button. Finally to delete a hologram, just use the command /mine holograms [mine name] delete [hologram name].

Hologram Placeholders

This is a little bit of a tricky area, so try to stay with me. For each hologram, you can add as my placeholders as you want. Unlike other placeholders, each hologram placeholder is unique and has its mine name attached to it.
Here are the list of placeholders
General
  • {mine_name} - Mine's name
Specific
Replace MINENAME with the name of your mine (case-sensitive) You can also use {mine_name} as a nested placeholder (e.g. "{block_count_{mine_name}}")
  • {block_count_MINENAME} - Total blocks, when full, in mine
  • {holo_name_MINENAME} - Name of mine
  • {last_reset_MINENAME} - The date of the mines last reset
  • {mine_percent_empty_MINENAME} - The percent of the mine that has been mined
  • {next_reset_date_MINENAME} - The date of the next reset
  • {next_reset_time_MINENAME} - The next reset date broken down into its components (x Weeks x Days x Hours x Minutes x Seconds)
  • {blocks_mined_MINENAME} - The amount of blocks that have been mined
  • {blocks_left_MINENAME} - The amount of blocks that have yet to be mined
  • {progress_bar_MINENAME} - A progress bar made up of 25 points, each representing ~ 4%
Figure 3 - Progress Bar

68747470733a2f2f692e696d6775722e636f6d2f504762327a4e462e706e67.png



For support, please use only resource discussion

Terms of Service
By using this plugin, you agree to the following terms, which may be updated by the author at any time.
  • All payments are final and non-refundable.
  • Redistribution or resale of this plugin is prohibited.
  • You are not permitted to modify, decompile, or extract any part of the plugin's source code.
  • Support is provided exclusively to legitimate customers. We cannot offer support for plugins obtained through unauthorized or illegal means.
Resource Information
Author:
----------
Total Downloads: 1
First Release: Dec 13, 2024
Last Update: Apr 12, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings