DonatorJoin+ 2.1.1

Custom messages on join / quit, fully configurable, priority system, ...!

  1. didjee2
    Native Minecraft Version:
    1.13
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    Source Code:
    https://github.com/didjee2/DonatorJoinPlus/
    DonatorJoin+

    Features
    • Disable default join & quit messages.
    • Priorities (if someone has multiple ranks which are set to have a join message, it will only send the highest priority message - priorities can be disabled!)
    • Custom Join message per rank (can be disabled)
    • Custom Quit message per rank (can be disabled)
    • Sound on join / quit (you can find the sounds here)
    • Firework on join / quit
    • Define join / quit messages based on rank OR permission
    • Supports SuperVanish
    • Fully customizable
    • Multiple storage types
    • Ability to toggle donator join messages on/off
    • Per world donator join messages
    • Donator Slots system (read more below)
    Requirements
    • Vault (last version)
    Commands - Permissions
    • /djp reload - donatorjoinplus.reload
    • /djp toggle [player] - donatorjoinplus.toggle & donatorjoinplus.toggle.others
    • /djp enable [player] - donatorjoinplus.toggle & donatorjoinplus.toggle.others
    • /djp disable [player] - donatorjoinplus.toggle & donatorjoinplus.toggle.others
    • /djp setslotgroup (player) (groupname) - donatorjoinplus.setslotgroup
    Example

    [​IMG]

    SlotForcer / Donator Slots
    SlotForcer is a system that allows the server to go over its max player limit by a preset amount.


    For example, when your server is full, and you staff to be able to join still, then this is a perfect tool to do so.

    By making a slotforcer limit for the group "staff" with 10 additional slots, you would allow a server of f.e. 20 slots to go up to 30 slots (with 10 of them guaranteed being staff).

    IMPORTANT:
    Not many permission systems have loaded in player permissions when the PlayerLoginEvent gets fired (which is used for this system), so to use this system, you have to set the slotgroup with /djp setslotgroup (player) (groupname) (with groupname being the name from the limit int he config).

    NOTE:
    • These slots are only being used when the server is FULL.
    • If your hosting service restricts the amount of allowed slots, you should not use this feature, as this might lead into the suspension of your service.

    Discord
    Searching a quick way to get support? Join our Discord where we'll be happy to help!

    [​IMG]
    Support me
    Do you like my work? Please help me by donating, even the smallest amount counts!

    Default Configuration
    Code (YAML):

    ################################################################################################
    #    ____                            _                        _           _                    #
    #   |  _ \    ___    _ __     __ _  | |_    ___    _ __      | |   ___   (_)  _ __      _      #
    #   | | | |  / _ \  | '_ \   / _` | | __|  / _ \  | '__|  _  | |  / _ \  | | | '_ \   _| |_    #
    #   | |_| | | (_) | | | | | | (_| | | |_  | (_) | | |    | |_| | | (_) | | | | | | | |_   _|   #
    #   |____/   \___/  |_| |_|  \__,_|  \__|  \___/  |_|     \___/   \___/  |_| |_| |_|   |_|     #
    #                                                                                              #
    ################################################################################################

    storage
    :
     # Possible storage types: FILE:JSON, FILE:YAML, MYSQL, SQLITE, H2. If using H2 or SQLITE, make sure to set max-pool-size to 1!
      type
    : 'FILE:JSON'

      # FILE only: when set to true, the data will be written to disk every time a toggle happens.
      # THIS CAN BE VERY INEFFICIENT, especially on larger servers.
      # When on false, file only gets saved when server shuts down (data can get lost with f.e. crashes)
      save-per-change
    : false

      # The hostname (IP) to connect to
      hostname
    : '127.0.0.1'
      # Port to be used
      port
    : 3306
      # The database / scheme name
      database
    : 'database'
      # The username, should at least have write & read access to the database above!
      username
    : 'username'
      # The password corresponding to the username above
      password
    : 'password'
      # Should DonatorJoinPlus try to establish a SSL connection? (only for SQL)
      useSSL
    : true

      pool
    :
       # How many connections are allowed to be made?
        # Find more information at:
        # https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
        # Pool sizing SHOULD BE SET TO 1 WHEN USING H2 OR SQLITE
        max-pool-size
    : 5
        # How many idle connections should be maintained?
        # It is recommended to set this to the same value as the max-pool-size
        min-idle
    : 5
        # Maximum lifetime of a connection. Time in seconds.
        max-lifetime
    : 1500
        # How long should DonatorJoinPlus wait before timing out a connection?
        connection-timeout
    : 8

    # Set to false to disable default MC join message.
    joinmessage
    : false

    # Set to false to disable default MC quit message.
    quitmessage
    : false

    # If true, only the highest priority rank will be broadcasted!
    # If false, a broadcast for any found rank will be sent.
    usepriorities
    : true

    # If false, DonatorJoinPlus will use the 'name' you set in the ranks below as group identifiers.
    # People with a group with the same name as the rank will get the join message.
    #
    # If true, DonatorJoinPlus will use the 'permission' you set in the ranks below as identifier.
    # If the user has the permission it will send the highest priority join message,
    # or all if usepriorities is set to false.
    usepermissions
    : false

    messages
    :
      prefix
    : '&e&lDonatorJoin&b&l+ &7» '
      never-joined
    : '&cThat player didn''t join before!'
      no-perm
    : '&cYou are not allowed to do this!'
      reloaded
    : '&aThe plugin has been reloaded successfully!'
      enabled
    : '&aJoin & quit messages are now enabled!'
      enabled-other
    : '&aJoin & quit messages are now enabled for &b{player}!'
      disabled
    : '&cJoin & quit messages are now disabled!'
      disabled-other
    : '&aJoin & quit messages are now enabled for &b{player}!'
      not-for-console
    : '&cThe console cannot use this!'
      usage
    : '&ePlease use &b{usage}&e!'
      group-not-found
    : '&eSlotGroup &b{group} &ewas not found!'
      group-set
    : '&b{player}''s &eslot group has been set to &b{group}&e!'
      error
    : '&cAn error occured, check the console for more info!'

    # Some permission plugins do not load permissions quicky enough for this to work.
    # If your permission plugin seems to be one of them, please use: /djp setslotgroup (player) (groupname / none) instead
    # DO NOTE THAT THIS FEATURE IS EXPERIMENTAL, NOT MUCH TESTING HAS BEEN DONE
    slotforcer
    :
      enabled
    : false

      # This in total would allow the maxplayers on a server to go up with 23 slots.
      # If your hosting service RESTRICTS the max players, then YOU SHOULD NOT USE THIS (as your server can be suspended)
      limits
    :
     # Make sure the name is UNIQUE (this is CASE INSENSITIVE)
      - name
    : 'vip'
        # These are ADDITIONAL slots that can be allocated.
        # For example with maxplayers set to 20, then 5 extra people with a permission can join.
        additional
    : 5
        # The permission to identify the limit with
        permission
    : 'donatorjoin.limit.exceed.vip'
      - name
    : 'mvp'
        additional
    : 8
        permission
    : 'donatorjoin.limit.exceed.mvp'
      - name
    : 'staff'
        additional
    : 10
        permission
    : 'donatorjoin.limit.exceed.staff'

    ranks
    :
      - name
    : 'VIP'
        permission
    : 'djp.vip'
        priority
    : 10
        join
    :
          enabled
    : true
          message
    : '&8(&cServer&8) &7(&aVIP&7) &b%player% &ehas joined the game!'
          sound
    :
            enabled
    : true
            sound
    : ENTITY_IRONGOLEM_DEATH
          firework
    : true
        quit
    :
          enabled
    : true
          message
    : '&8(&cServer&8) &7(&aVIP&7) &b%player% &ehas left the game!'
          sound
    :
            enabled
    : true
            sound
    : ENTITY_IRONGOLEM_DEATH
          firework
    : false
        world
    :
          join
    :
            enabled
    : false
            message
    : '&8(&cServer&8) &7(&aVIP&7) &b%player% &ehas joined the world!'
            sound
    :
              enabled
    : true
              sound
    : ENTITY_IRONGOLEM_DEATH
            firework
    : true
          quit
    :
            enabled
    : false
            message
    : '&8(&cServer&8) &7(&aVIP&7) &b%player% &ehas left the world!'
            sound
    :
              enabled
    : true
              sound
    : ENTITY_IRONGOLEM_DEATH
            firework
    : false
      - name
    : 'MVP'
        permission
    : 'djp.mvp'
        priority
    : 20
        join
    :
          enabled
    : true
          message
    : '&8(&cServer&8) &7(&9MVP&7) &b%player% &ehas joined the game!'
          sound
    :
            enabled
    : true
            sound
    : BLOCK_PORTAL_TRAVEL
          firework
    : true
        quit
    :
          enabled
    : true
          message
    : '&8(&cServer&8) &7(&9MVP&7) &b%player% &ehas left the game!'
          sound
    :
            enabled
    : true
            sound
    : BLOCK_PORTAL_TRAVEL
          firework
    : false
        world
    :
          join
    :
            enabled
    : false
            message
    : '&8(&cServer&8) &7(&9MVP&7) &b%player% &ehas joined the world!'
            sound
    :
              enabled
    : true
              sound
    : BLOCK_PORTAL_TRAVEL
            firework
    : true
          quit
    :
            enabled
    : false
            message
    : '&8(&cServer&8) &7(&9MVP&7) &b%player% &ehas left the world!'
            sound
    :
              enabled
    : true
              sound
    : BLOCK_PORTAL_TRAVEL
            firework
    : false
     

Recent Reviews

  1. JasperWorld
    JasperWorld
    5/5,
    Version: 2.1.1
    Love it, thanks for adding my suggestion too! I will recommend the plugin on my server.
    1. didjee2
      Author's Response
      Thank you for giving me the suggestion!

      I'm glad you like my plugin.
  2. SrGuittar
    SrGuittar
    5/5,
    Version: 2.0.3
    Excellent plugin 100% recommended! Please add join and quit perworld messages! <3
    1. didjee2
      Author's Response
      What do you mean exactly with that? Like a join / quit message when someone joins / leaves a world? You can PM me on Spigot with the answer or join the Discord for a faster response: https://discord.gg/HyszgYr !

      I'm glad you like it btw!

      EDITED: finished the feature already, gonna test it in a few hours on my test server.
  3. JasperWorld
    JasperWorld
    5/5,
    Version: 2.0.3
    I have a suggestion that I kinda need in my server, /djp enable/disable (player) (djp.toggle.others) and /djp enable/disable (djp.toggle)
    PD: Discord link is broken.
    1. didjee2
      Author's Response
      Yes, sorry about the Discord being broken, you can also (for now) use: https://discord.gg/HyszgYr

      Also, I’m glad that you like DJ+! I will look into adding this when I get home in a few hours. (Might be best for you to jump onto the Discord and remind me, as I tend to forget things quickly).
  4. SeptyYTB
    SeptyYTB
    3/5,
    Version: 2.0.2
    ERROR Error at SQL INSERT Query: java.sql.SQLException: database disk image is malformed
    11.07 14:28:21 [Server] ERROR Error at SQL INSERT Query: java.sql.SQLException: database disk image is malformed
    How i can resolve this (My Config File Is Default
    ################################################################################################

    # ____ _ _ _ #

    # | _ \ ___ _ __ __ _ | |_ ___ _ __ | | ___ (_) _ __ _ #

    # | | | | / _ \ | '_ \ / _` | | __| / _ \ | '__| _ | | / _ \ | | | '_ \ _| |_ #

    # | |_| | | (_) | | | | | | (_| | | |_ | (_) | | | | |_| | | (_) | | | | | | | |_ _| #

    # |____/ \___/ |_| |_| \__,_| \__| \___/ |_| \___/ \___/ |_| |_| |_| |_| #

    # #

    ################################################################################################



    # Set to false to disable default MC join message.

    joinmessage: false



    # Set to false to disable default MC quit message.

    quitmessage: false



    # If true, only the highest priority rank will be broadcasted!

    # If false, a broadcast for any found rank will be sent.

    usepriorities: true



    # If false, DonatorJoinPlus will use the 'name' you set in the ranks below as group identifiers.

    # People with a group with the same name as the rank will get the join message.

    #

    # If true, DonatorJoinPlus will use the 'permission' you set in the ranks below as identifier.

    # If the user has the permission it will send the highest priority join message,

    # or all if usepriorities is set to false.

    usepermissions: true



    ranks:
    - name: 'Helper'
    priority: 10
    join:
    enabled: true
    message: '&8(&cServer&8) &7(&aVIP&7) &b%player% &ehas joined the game!'
    sound:
    enabled: true
    sound: BLOCK_SAND_FALL
    firework: true
    quit:
    enabled: true
    message: '&8(&cServer&8) &7(&aVIP&7) &b%player% &ehas left the game!'
    sound:
    enabled: true
    sound: BLOCK_SAND_FALL
    firework: false
    - name: 'Castor'
    priority: 20
    join:
    enabled: true
    message: '&8(&cServer&8) &7(&9MVP&7) &b%player% &ehas joined the game!'
    sound:
    enabled: true
    sound: BLOCK_SAND_FALL
    firework: true
    quit:
    enabled: true
    message: '&8(&cServer&8) &7(&9MVP&7) &b%player% &ehas left the game!'
    sound:
    enabled: true
    sound: BLOCK_SAND_FALL
    firework: false
    1. didjee2
      Author's Response
      Uhm DonatorJoin+ does not use SQL at all. Meaning that it's impossible to be caused by DJP. Could you also please use the thread / PM for questions / bugs.

      PM me with a more detailed log so I am able to help you finding the plugin!
  5. Ver_Elite
    Ver_Elite
    5/5,
    Version: 2.0.2
    The best, and excellent plugin. Thank you man.

    I've like your all plugins for a long time. :) <3
    1. didjee2
      Author's Response
      Glad you like my plugins ;)
  6. Fighter2000
    Fighter2000
    5/5,
    Version: 2.0.2
    best .....................................................................................
    1. didjee2
      Author's Response
      Thank you! I'm glad you like DJP.
  7. SkyAcer009
    SkyAcer009
    5/5,
    Version: 2.0.0
    Perfect and excellent plugin. Thank you very much :)
    I've been looking for such a plugin for a while.
    1. didjee2
      Author's Response
      Amazing that you like it :)
  8. xXBlazeCraftXx
    xXBlazeCraftXx
    3/5,
    Version: 1.0.5
    Good plugin but same as the guy below me shame that this was abandoned! 3123213123213
    1. didjee2
      Author's Response
      My laptop broke back then, and I was too stupid to use Git back then too + didn't have a backup of the finished donatorjoin+, so I would have to recode it.

      I can do that for you, as it's not much work at all. Mostly would take me 10 minutes.
  9. fehni
    fehni
    3/5,
    Version: 1.0.5
    If I player has multiple ranks, the join/quit messages do not work. Meaning, the player can only be in one group at a time (listed in dj+ config) for this to function properly. Defeats the purpose for prison/faction servers where players need both a game rank and a donator rank.
    1. didjee2
      Author's Response
      Should be better now, the project kind of was abandoned back then.
  10. Kostya_1313
    Kostya_1313
    4/5,
    Version: 1.0.5
    [22:11:39] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to DonatorJoinPlus v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.PlayerList.onPlayerJoin(PlayerList.java:333) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.PlayerList.a(PlayerList.java:159) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.LoginListener.b(LoginListener.java:144) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.LoginListener.E_(LoginListener.java:54) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.NetworkManager.a(NetworkManager.java:233) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.ServerConnection.c(ServerConnection.java:140) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:827) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567) [craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
    Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.Sound.CREEPER_DEATH
    at java.lang.Enum.valueOf(Enum.java:238) ~[?:1.8.0_91]
    at org.bukkit.Sound.valueOf(Sound.java:1) ~[craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    at com.dbsoftware.donatorjoin.DonatorJoin.onJoin(DonatorJoin.java:85) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[craftbukkit.jar:git-Spigot-90f61bc-83a9dbd]
    ... 14 more
    1. didjee2