Prison Documents - Table of Contents

Prison Known Issues and To Do’s

This document is intended to keep track of known issues and also provide for a short list of To Do’s. This list is intended to help work through known issues, and/or to serve as items that should be added, or fixed.

To Do Items

NOT an Issue: OfficiallyGuo — Today at 5:41 AM [19:34:33 INFO]: | Prison | Spigot18Blocks.getBlockType() : Spigot block cannot be mapped to a prison BlockType : CONCRETE id = 251 data = 11 BlockType = null Should I worry about this? Prison Version: 3.2.5. Even tho I get this message, there aren’t any actual errors happening in-game. NOTE: This is not an issue. OfficiallyGuo is running spigot 1.12.2 and trying to use concrete. More of a reason to use the new block model.

DONE: * Warning if using /mines set area and volume is over 20k in size. Could possibly be an error.

DONE * TP warm ups - for /mines tp

DONE * Issue with /ranks autoConfigure if Mines module is disabled. Gets a NPE, which is not surprising. Note: line number is from v3.2.4 so does not match source anymore. [21:00:38 WARN]: Caused by: java.lang.NullPointerException [21:00:38 WARN]: at tech.mcprison.prison.spigot.SpigotPlatform.getModuleElementCount( [21:00:38 WARN]: at tech.mcprison.prison.ranks.commands.RanksCommands.autoConfigureRanks( [21:00:38 WARN]: … 28 more

DONE: Look at sellall and XMAteral’s use of parse. Needs to handle it with an item stack.

Personal mines. Work in conjunction with a plot world?

Auto features not working outside of the mines.

Review the chat hander in the spigot module. It was rewritten a few weeks ago to fix some issues and to optimize how things are handled. The issue is that the new code (way of handling things) needs to be extended to other areas. So review the SpigotPlaceholders class and see how it can be updated. Then end result will be less code and less potential issues.

Not sure if the following is fixed? old block model - block constraint - excludeTop - not allowing block counts to be shown

  1. Done: Create core classes for new block types. String based so 100% flexible. Names based upon XMaterial enums so easy mapping to XMaterial then to system version dependency.

  2. Done: Available blocks based upon XMateral and spigot version they are running. Create the initial list to be used for block searches.

  3. Done: Needs Review: Disable MineData.getBlocks() and use that to write all the main parallel code. Reenable.

  4. Disable BlockType and write parallel code. Reenable.

  5. Hookup block search.

Enable zero block counts for parent mines. if 100% block type of IGNORE, then after reset do an full mine air count so zero block reset works. :)

To Do Items - Post v3.2.1

Major tasks

Just had this idea… What if for these main commands, for configuration purposes, the player would have to be in game. When they run these commands we TP the admin to the mines’ spawn point, then run them through the console on behalf of that player? That way WE and WG could get the world from the on line player. But this will not work for mine resets… :(

  Note: May be spread out over multiple releases.
  1. New Block handling if not fully apart of v3.2.1.
  2. New Multi-language support.
  3. New Wizard Configuration support.
     A. Basic Prison functions. 
     B. Basic Mine behaviors
     C. Basic Rank and Ladder behaviors
     D. Basic prestige behaviors
  4.Creation of new scripting language for automation tied to wizards
     A. When creating a mine perform scripted actions to configure each one
     B. When creating a rank perform scripted actions to configure each rank
     C. Create the permission group within the permission plugin selected
     D. Add perms for that permission group, including warp support (prison/warps)
     E. Auto generate rank commands to add and remove group perms from each rank


Higher Priority TO DO Items

To consider - Lower priority

Not knowing what “range” of WorldGuard behaviors are supported through the API, or if they are even the same, the initial range of supported integrations for WorldGuard will be very limited until it can be fully tested to see where those limits are.

List of features that could be nice to have, ordered from easiest to most difficult to implement, with the possibility of never being able to do any of these:

Offers for translation: Italian : Gabryca Greek : NerdTastic German: DeadlyKill ?? Did not ask, but a possibility? French: LeBonnetRouge Portuguese: 1Pedro ?


Not sure if it’s possible, but an hook with worldguard on mine making, like a region where the mine region’s made automatically with basic permissions’d be neat


Gabryca… yes. I think a “clean” integration in to WorldGuard regions and WorldEdit selection tools would be a great improvement. I’ve been wanting to do this from day one actually. But I’m not 100% sure how much “automation” can be done here.

I guess if the first thing you do when you activate prison, is to “confirm” that you want prison that you want to “link” prison to WorldGuard and your Permission plugin (assuming supported ones exist), then auto generate all of the “step” that are outlined in the document that I create on github for WorldGuard. That would really help everyone setup their basic servers.

A lot of work there…. but it would be VERY beneficial for sure. It could be the foundation of an automated setup where prison “proactively” works with other plugins to help build and configure the server.

Areas of possibilities in “Auto-Configure Prison Environment”:

I think those few integrations could really provide a huge bootstrap to getting the basics of a prison server up and running.

Features recently added:

DONE: [Plugin Prison - To be able to manage at which layer such or such block appears]


DeadlyKill: This what he needs ita Papi Hook Plugin They have those expansions which hook other plug-ins

The /prestige command does not show the cost. The cost must be shown, along with a warning that the player’s balance will be set to zero.

Since the player loses their balance, which may be far more than what the prestige may cost, there really must be a confirmation added confirming the cost, and the player’s balance. It should also identify that the excess amount of money the player will lose.

Must change the cancel button lore. It’s grammatically incorrect with a double negative. Should only be: “Cancel Prestige”. Likewise the confirmation button should just be “Confirm Prestige” since the colon is grammatically ambiguous.

Done! Parameterize Sort order for /mines list.
Default sort order should probably be alphabetical.
Currently it is alphabetical with most active mines since restart at the top of the list, based upon blocks mined.

NOTE this was added: the new ones are playermines and there are a total of 24 new ones. Will work great with scoreboards.

Could be done through other perms and then checking to see if they have access t

that mine. Perm: (all mines) or

If the world is checked after the server is running, they will be available. Put in a class variable that identifies if the world was verified, and if not, then check.

Problem is that at startup time, we won’t know if there is a problem with missing worlds.

Goal: Something to consider. See if it can work with 1.15.x. This would provide a solution for prison servers to use with the full range of our supported platform versions. Intentions of pushing changes back in to the main project and not maintaining a new project.

QuickSell has be abandoned, but could be very useful for prison to provide a simplified integration of features.

Quickly reviewed code and it looks fairly good and probably has very low maintenance. Base initial support could be updating dependencies within Maven. Goal to get QuickSell to work with all supported versions of Prison and all supported versions of spigot.

Explicit support going forward would be directly related to Prison. If a support issue has to do with another 3rd party plugin, then support “could” be refused or unsupported 3rd party plugins could be removed. Primary focus would be for the support of Prison and to provide a QuickSell feature to users of the Prison plugin. Currently 15 forks. Activity unknown.

Current system is based upon enumerations which are static and may not reflect the actual run time environment. Prison is compiled with 1.9.4, but yet the list may not include all blocks for all versions of bukkit/spigot/minecraft

If the new block handling system gets all blocks from org.bukkit.Material.values(), then it should reflect what’s available on the server version that is running. If the server owner decides to upgrade, or down grade, their server version, then they will be responsible for “correcting” any block name that is no longer supported. This would be the negative for such a system

The benefits would be less to manage within prison; attitude of do what you want to do, instead of micro managing the list of blocks. Dynamic to support newest blocks available on minecraft/bukkit/spigot, or another platform. Ability to pickup custom blocks if they have been injected in to the Material enumeration

Currently there is a HUGE problem. Upon testing, I have determined that although a block exists within the server’s org.bukkit.Material enum, Prison cannot select it. I do not know why. It could be related to the fact that prison is built with Gradle using spigot v1.9.4 and that imposes restrictions upon what enumerations can be accessed at runtime? That makes no sense since no artifacts of org.bukkit.Material should be carried over outside of the compile time instance. Until this issue can be addressed, there will be no work around or implmentation.

On startup, gather all currencies that are defined within the Ranks, confirm there is a economy that supports it, and then print the list with the ranks module.

Known Issues - v3.2.1-alpha.9 - 2020-04-26

To fix this problem, you must manually add Multiverse-core as a hard dependency.

NOTICE the line that starts with depend: since that line does not exist in the normal config.yml file.

softdepend: [Essentials, Vault, LuckPerms, Multiverse-Core, Multiworld, MVdWPlaceholderAPI, PlaceholderAPI, GemsEconomy, WorldEdit, WorldGuard, ProtocolLib, PerWorldInventory, Multiverse-SignPortals, Multiverse-NetherPortals ]
depend: [Multiverse-Core]

Prison v3.2.0 only has one chat placeholder and it is {PRISON_RANK}, which must be in all uppercase.

The only Prison integrations supported with this version are PlaceholderAPI and MVdWPlaceholder.

The placeholders supported by PlaceholderAPI are prison_rank, prison_rankup_cost, and prison_rankup_rank. Supported case is unknown, so use lowercase.

The actual placeholders for MVdWPlaceholder is actually unknown, but may be the same as listed for PlaceholderAPI, but I cannot confirm it.

The best way to find the available placeholders is to use the command /prison version. Keep in mind that any placeholder that ends with minename will be expanded for each mine, substituting the mine name for the suffix minename. For example, if there are 30 mines, then Prison will register 30 placeholders for each listed placeholder under /prison version.

The placeholders will be registered as shown, in lowercase. They actually are case insensitive, but since they are registered in lowercase, the various placeholder APIs may only recognize lowercase entries. Also Prison’s placeholders are registered without any brackets. Most placeholder tools use {} and a few others use %%; refer to the placeholder’s documentation on correct usage.

Prison’s Ranks has a chat handler that now supports all placeholders.

Support for PlaceholderAPI is through the prefix of “prison”, of which it will route all placeholders with prefixes of “prison” through prison. When PlaceholderAPI makes calls to Prison, it strips the prefix. Therefore, Prison’s placeholders will respond to the full placeholder, or the the placeholder minus the prefix. The list of all existing placeholders within Prison are not pre-registered.

The MVdWPlaceholder api requires all placeholders be registered.

There is a sponge module, but there is so little code that has been written, that it does not appear to be hooked up. There is no way it could have ever worked correctly since so many core components needed for the functionality of prison are dependent upon Spigot internals, of which those same function calls under Sponge’s API are just empty or returning null values.

For example, getScheduler() and dispatchCommand() both are empty, but they are currently heavily used in both the mine reset process and also for ranking up.

It would be a really major effort to hook up the missing parts. I don’t even think anyone is trying to run it under sponge. Maybe best in the long run to eliminate the sponge module and just focus on making prison better overall. I think if I do get around to disabling it, it will just be commented out of the gradle build such that the source will still be there, but it will be excluded from the build. Otherwise as new features are added, and existing ones under go major changes, then the Sponge components will have to be revisited and would be wasting resources (and time) for no reasonable purpose.