Player/User Object

Most things related to player can be accessed throw users object

CMIUser user = CMI.getInstance().getPlayerManager().getUser(player);

This can return NULL in some rare situations, so perform NPE check.

You can get offline player object from this one by using

Player player = user.getPlayer();

This can be used to access some of the player data information even if he is offline. Keep in mind that this actually loads players information and is highly not recommended to be used to load hundreds or even thousands of players with this method as this will certainly cause some strain on server. You can tho update some of player data but you will need to save it by (ONLY if player is offline) using


or by using


This is more safe approach as player object will be checked for appropriate save.


Quite few things can be accessed throw appropriate managers. They all can be accessed throw basic


method. In example, to access portal manager use



// Item stack used to get worth
ItemStack item;
WorthItem worth = CMI.getInstance().getWorthManager().getWorth(item);
if (worth == null){
// Worthless item so we can return null or 0D, whatever is needed in your case
return null;
// Buy price used in exploit detection
Double buyPrice = worth.getBuyPrice();
// Sell price defines actual worth of the file
Double sellPrice = worth.getSellPrice();
// Item of which worth value we are getting
ItemStack item;

// Worth object
WorthItem worth = CMI.getInstance().getWorthManager().getWorth(item);
if (worth == null){
// If its null then lets create new one
worth = new WorthItem(item);
// Adding worth to cache

// Changing prices

// Lets update values in save file

Custom Events

CMIAfkEnterEvent – Fired when player enters AFK mode.
CMIAfkKickEvent – Fired when player should be kicked from server after being AFK.
CMIAfkLeaveEvent – Fired when players leaves AFK mode.

CMIAnvilItemRenameEvent – Fired on item rename in anvil.
CMIAnvilItemRepairEvent – Fired on item repair action with anvil.

CMIArmorChangeEvent – Fired when player changes items in armor slots.

CMIBossBarHideEvent – Fired when CMI boss bar should be hidden. Can be canceled.

CMIChunkChangeEvent – Fired when player changes chunk.

CMIGuiCloseEvent – Fired when player closed CMI GUI.

CMIIpBanEvent – Fired when IP gets ban.
CMIIpUnBanEvent – Fired when IP gets unban.
CMIPlayerBanEvent – Fired when player gets ban.
CMIPlayerUnBanEvent – Fired when player gets unban.

CMIPlayerFakeEntityInteractEvent – Fired when player interacts with fake entity, in most cases this will be hologram button interaction.

CMIPlayerTeleportEvent – Fired before player teleportation. Includes possible safe location and reason why it could be unsafe. Provides source of teleportation.
CMIPlayerTeleportRequestEvent – Fired after player teleportation.

CMIPlayerVanishEvent – Fired when player enters vanish event.
CMIPlayerUnVanishEvent – Fired when player exits vanish event.

CMIPortalCreateEvent – Fired on nether portal creation event.
CMIPortalUseEvent – Fired on CMI portal use event.

CMIPvPStartEventAsync – Fired on pvpstart event.
CMIPvPEndEventAsync– Fired on pvpend event.

CMIUserBalanceChangeEvent – Fired on user balance change, if CMI Economy is used. Change types include: setBalance, Withdraw, Deposit.