Skip to content
OmhVN edited this page Apr 29, 2026 · 2 revisions

First installation

  • Download a JPremium.jar file.
  • Navigate to yours plugins directories on your BungeeCord server and all your Spigot servers. Then place the JPremium.jar file in those directories.
  • Fully stop and start your all servers to allow default configurations to be generated. Your server will be probably closed automatically. Please do not pay attention to errors in the console.
  • Configurations will be located at plugins/JPremium/configuration.yml.
  • Open a configuration file on your BungeeCord server.
  • Enter connection data with your database in the storage section and a fully random access token in the accessToken option. The access token have to have 16 chars of length!
  • Enter limbo and main server names in the limboServerNames and mainServerNames options. All server names, you can find in the config.yml file in the directory where you have your BungeeCord server. They are stored in a list, so they have to be between parenthesis, not apostrophes!
  • Open configuration files on all your Spigot servers.
  • Enter the same access token, which you entered in the configuration on your BungeeCord server, in the accessToken option.
  • Select one of your Spigot servers to be as a limbo server and set in the configuration the captchaMapSlot option to the slot number where you want to have captcha maps.
  • Set bungeecord to true in the spigot.yml files on all your Spigot servers.
  • Set ip_forward to true in the config.yml file on your BungeeCord server.
  • Start your servers again.

You always should use a firewall on your Spigot servers. It is only protection which is not bypassable: https://www.spigotmc.org/wiki/firewall-guide/


Data conversion

Please backup your database which you want to convert in order not to lose data! Before converting you have to install correctly the latest JPremium version on your BungeeCord server, so please firstly follow instruction on this wiki page. You have to have default tables and columns names in the database from which you convert! Please remember that converting from AuthMe works only if you have passwords hashed in SHA-256 or Bcrypt and converting from DynamicBungeeAuth works only if you have password hashed in SHA-256 or SHA-512 and you disabled the 'OfflineUUID' option.

  • Download a Converter.jar file from this site.
  • Navigate to your plugins directory on your BungeeCord server. Then place the Converter.jar file in that directory.
  • Fully stop and start your BungeeCord server to allow a default configuration to be generated.
  • The configuration will be located at plugins/Converter/configuration.yml.
  • Open the configuration file on your BungeeCord server.
  • Enter JPREMIUM, AUTHME or DYNAMICBUNGEEAUTH in convertFrom depending which a database you want to convert.
  • Enter connection data with your database, where you storage data from your the latest JPremium version, in the newStorage section.
  • Enter connection data with your database from which you want to convert data in the jpremiumStorage, authmeStorage or dynamicBungeeAuthStorage section. If you convert a local database, please install this plugin on your BungeeCord server.
  • If you convert data from JPremium:
    • Enter the same value (true or false) in fixedUniqueIds which you have in your old JPremium configuration file in the fixed-unique-id option.
  • If you convert data from DynamicBungeeAuth:
    • Set passwordHash to SHA256 or SHA512 depends on which you use in DynamicBungeeAuth.
  • Start your BungeeCord server and wait until converting will finish.
  • After successful converting, remove the Converter.jar file from your BungeeCord server.
  • Start your BungeeCord server again.

Database issues

First of all, please remember that database connection issues are never caused by JPremium. The plugin uses the official driver. Your issues probably are caused by your database or the connection between your database and your BungeeCord server. Here you have the most common solutions.

  • Make sure that you entered correct data connection data with your database the sotrage section in your JPremium configuration on your BungeeCord server.
  • Make sure that you entered an existing database in the storageDatabase option in your JPremium configuration because JPremium does not create a database.
  • If your database is on a remote host, please make sure that the host, where you have your BungeeCord server, has permissions to establishes connection and executes queries with your database.
  • Set storageUseSSL to false in your JPremium configuration file.

Website registration

JPremium has the feature which allows to players register from your website, but if you enable the feature, players can only register on website. Then there is not ability to register on your server!

  • Download JPremium.zip file.
  • Open the Website directory in the zip file and upload index.php and background.jpg files into your website.
  • Register your website on Google re-captcha site to be able to use re-captcha. You have to register re-captcha v2!
  • Open the index.php file on your website.
  • Enter connection data with your database in the storage section, re-captcha data in the Google re-captcha section.
  • Enter the same value which you have in fixedUniqueIds in your JPremium configuration file on your BungeeCord server in the JPremium section.
  • Set the registerOnWebsite option to 1 (registration on server and website) or 2 (registration on website only) in your JPremium configuration file on your BungeeCord server.

Fixed unique ids

Since Minecraft 1.8 all player data is stored using UUIDs (a universally unique identifier), not using nicknames. It was added to premium players can change nicknames without losing data. An example UUID looks like: d2affeb6-96a8-4c71-b4d6-b79f962b6309. All servers in the online mode use online UUIDs (got from Mojang servers) and all servers in the offline mode use offline UUIDs (generated using a player nickname).

JPremium alters all player UUIDs to work correctly and to avoid UUIDs collisions. There are three modes in which JPremium assings UUIDs for players. The three modes are: FIXED, REAL, OFFLINE. Each mode assings different UUIDs and has different restrictions. Please read the below table.

Mode What unique ids players have? Can cracked players with premium nicknames join to the server? Can premium players join to the server after nicknames change? Can players switch account types from cracked to premium and vice versa?
FIXED all players > random Yes Yes Yes
REAL premium players > online; cracked players > offline No Yes No
OFFLINE all players > offline Yes No Yes

When players are already registerd in your JPremium database and you change the fixedUniqueIds option, players will not lose any data, but they will have UUID from the previous configuration. Only new players will have another UUID type.

When you install JPremium on the server where players played before installing, you have to correctly adjust the fixedUniqueIds option to represent UUIDs which players have. If you have a server in the offline mode, you probably should select OFFLINE. If you have a server in the online mode, you proabably should select REAL.

If you convert data from a AuthMe database, you can select FIXED, REAL or OFFLINE. It is not relevant becuase UUIDs are converted from the AuthMe database. It is only relevant for new players.

If you use any plugins which have a protection against UUID spoofing and you select FIXED, you have to disable the UUID spoofing protection or select REAL or OFFLINE! Please alos notice that JPremium has already a protection against UUID spoofing and that protection is a better protection then most of plugins use.


Joining issues

If some players cannot join to your server, those players are probably cracked players with premium nicknames. Please set registerPremiumUsers to false in your JPremium configuration file on your BungeeCord server. Now all new players have to register and login every joining. If new premium players do not want to use the /login command, they can execute the /premium command to auto login the next time.


Commands

All player commands do not require any permissions to use, but all staff commands require permissions. A permission format for staff commands is jpremium.command.<command> (for example: jpremium.command.forceregister). You can edit all command aliases by adding add new values in your JPremium configuration file on your BungeeCord server using this format <command>CommandAliases: [<alias>, <alias>, ...] (for example: registerCommandAliases: [reg]).

Player commands:

  • /login <password>
  • /register <password>
  • /unregister <password>
  • /changepassword <current-password> <new-password>
  • /premium <password>
  • /cracked <password>
  • /startsession <time>
  • /destroysession
  • /changemailaddress <password> <mail-address>
  • /recoverypassword <mail-address>

Staff commands:

  • /forcelogin <nickname>
  • /forceregister <nickname> <password>
  • /forceunregister <nickname>
  • /forcechangepassword <nickname> <password>
  • /forcepremium <nickname>
  • /forcecracked <nickname> <password>
  • /forcestartsession <nickname> <time>
  • /forcedestroysession <nickname>
  • /forcechangemailaddress <nickname> <mail-address>
  • /forcerecoverypassword <nickname>
  • /forceviewuserprofile <nickname>

Developer API

All JPremium events are processed asynchronously to the main server thread and all pre-events are cancellable. To obtain an instance of the App class, call JPremium.getApplication();. API works only on the BungeeCord site.

List of events (com.jakub.premium.event):

  • AsyncUserPreLoginEvent
  • AsyncUserPreRegisterEvent
  • AsyncUserPreUnregisterEvent
  • AsyncUserPostLoginEvent
  • AsyncUserPostRegisterEvent
  • AsyncUserPostUnregisterEvent

Methods of the com.jakub.premium.api.App class:

  • Set<? extends User> getCachedUserProfiles()
  • User getCachedUserProfile(String lastNickname)
  • User getCachedUserProfile(UUID premiumId)
  • void forceLogin(User user) throws FailedException
  • void forceRegister(User user, String password) throws FailedException
  • void forceUnregister(User user) throws FailedException
  • void forceChangePassword(User user, String password) throws FailedException
  • void forcePremium(User user) throws FailedException
  • void forceCracked(User user, String password) throws FailedException
  • void forceStartSession(User user, int time) throws FailedException
  • void forceDestroySession(User user) throws FailedException
  • void forceChangeMailAddress(User user, String mailAddress) throws FailedException
  • void forceRecoveryPassword(User user) throws FailedException

Methods of the com.jakub.premium.api.User class:

  • UUID getUniqueId()
  • UUID getPremiumId()
  • String getLastNickname()
  • String getHashedPassword()
  • String getMailAddress()
  • Timestamp getSessionExpire()
  • String getLastServer()
  • String getLastAddress()
  • Timestamp getLastSeen()
  • String getFirstAddress()
  • Timestamp getFirstSeen()
  • ProxiedPlayer getProxiedPlayer()
  • boolean hasLastNickname()
  • boolean hasMailAddress()
  • boolean hasSession()
  • boolean hasLastServer()
  • boolean hasLastAddress()
  • boolean hasLastSeen()
  • boolean hasFirstAddress()
  • boolean hasFirstSeen()
  • boolean hasAddress(String address)
  • boolean isPremium()
  • boolean isRegistered()
  • boolean isLogged()
  • boolean isOnline()