Inactive [ADMN/DEV] Pail v0.7.5 - The simplest and most extensible Bukkit GUI [1.0.1]

Discussion in 'Inactive/Unsupported Plugins' started by escape, Aug 7, 2011.

  1. Offline


    The interface for and by the people
    What is it?
    Pail is a Java swing Graphical User Interface designed specifically for bukkit.
    Why is it different?
    • Pail is written as a plugin, meaning the same, simple drag-and-drop install server owners have come to know.
    • Pail uses pure Java and no external libraries, eliminating the need for any dependencies.
    • Pail is designed for bukkit servers, allowing more control than any vanilla server GUI.
    • Pail is extensible! Other plugins can hook into Pail to add their own interfaces, creating a single place for server admins to manage their server and players.
    • Pail is completely cross-platform.
    What can other plugins do?
    Pail opens up many opportunities for plugin developers to take advantage of. Plugins can be written solely to add functionality to Pail, or Pail support can be integrated easily into existing plugins. Just imagine being able to edit your permissions groups, view server performance, or manage your world's economy all from a single interface!

    For Developers:
    You can start developing for Pail now! The API currently consists of several methods for adding your components to the interface. To add a tab for your plugin to the Pail GUI, pass the title of your plugin's tab and the JPanel containing your interface to:​

    PluginManager pm = this.getServer().getPluginManager();
    ((Pail)pm.getPlugin("Pail")).loadInterfaceComponent("Title", new JPanel());
    For more method descriptions, the JavaDoc is available here.

    Just drop Pail.jar into your plugins folder. That's it!

    • Convenient access to player related functions
    • Interface for editing server settings
    • Command buffer to recall recent console commands by pressing up and down
    • Waypoint system for teleporting players
    • Searchable console (with regular expression support)
    • Much more!
    • Pail - Reopens the Pail GUI through the console
    Show Spoiler



    • Support for remote hosted servers (milestone 1.0)

    Pail has been brought to you by
    With contributions by
    Version 0.7.5
    • Craftbukkit RB1240 support
    • Implemented simple gui api (docs coming soon)
    Version 0.7.4
    • Reimplemented CB1185 support
    Version 0.7.3 (Not promoted)
    • Fixed interface not loading bug
    Version 0.7.2
    • Minecraft 1.8.1 compatability (Craftbukkit RB 1185)
    • Added manual backup option
    • Added "say" option for console input
    • Possible fix for the gui not loading occasionally on server launch
    Show Spoiler

    Version 0.7.1
    • Fixed the 'apple.eawt' bug on startup
    • Added language API
    • Window can now be resized
    Version 0.7
    • Features:
      • 8 new menu options
      • Automatic translations for more than 30 languages via Google translate API
      • Console is now searchable via Find option (ctrl+F)
      • Text from the console can be copied via ctrl+C
      • Mac integration improvments
      • Players' faces are displayed next to their names
      • OP/Deop is context sensitive
      • Player names bolded in the console
      • Minor interface refinements
    • Fixes:
      • Fixed labels being cut off on some systems
      • Give now works properly with non-vanilla items
      • Fixed exceptions starting up when the interface takes too long to load
      • Enable is now thread-safe
    Version 0.6
    • Implemented skin switching in the settings
    • Fixed a bug when giving non-standard items
    • Fixed occasional NPE on startup
    • Maven integration
    Version 0.5.2
    • Added Waypoint API
    • UTF-8 support in the console
    • Interface now matches more closely with the native OS
    Version 0.5.1
    • Color support in the console
    • Fixed a bug when the craftbukkit version can't be determined
    • Autoscrolling now works properly in all situations
    Version 0.5
    • Server stop, reload, and save-all moved to Server menu
    • Added one-click auto update
    • Fixed console not scrolling down when text is added (thanks feildmaster)
    Version 0.4.1_1
    • Patched a bug in the teleport dialog
    Version 0.4.1
    • Fixed several bugs including:
      • Kill command not working
      • Command buffer skipping commands
      • Rare exceptions on disabling or reloading the plugin
    Version 0.4
    • Created waypoint system for teleporting players
    • Added command buffer to reuse recent console commands
    • Message, kick, and ban moved to player menu
    • Optimized the way settings are loaded
    • Several bugfixes and optimizations
    • Support for CB b1060
    Version 0.3.2
    • Bugfixes
    • Server IP is now configurable in settings
    Version 0.3.1
    • Several small bugfixes
    • About window shown by clicking pail version
    Version 0.3
    • Added settings section for hiding/showing tabs by other plugins
    • New API methods
    • Small optimizations and bugfixes
    Version 0.2
    • Added graphical item chooser
    • Added getInterfaceComponent to API
    • Refactoring and bugfixes
    Version 0.1
    • Preview release

    Download Pail 0.7.5 beta
    Latest dev build (unstable)

    EDIT: removed external links. Please use
  2. Offline


    It's not loading max-players correctly for you.

    @escape : You should load the values through getServer().
  3. Offline


    im away right now so I won't be able to code until Sunday so if everyone could create bug reports on github it'll allow me to get to it faster when I get back.
  4. Offline


    Does max-players=24 in work? Or do I need something else to fix that?
  5. Offline


    @Hubok : It's supposed to work, let me see if I can make heads or tails of the config to patch it.
  6. Offline


    Is there a list of any plugins that currently use this?
  7. Offline


    I think I made the post too long here is a shorter version
    2011-08-11 13:10:51 [SEVERE] java.lang.StringIndexOutOfBoundsException: String index out of range: -5
    2011-08-11 13:10:51 [SEVERE]     at java.lang.String.substring(Unknown Source)
    2011-08-11 13:10:51 [SEVERE]     at me.escapeNT.pail.GUIComponents.SettingsPanel.parseCraftVersion(
    2011-08-11 13:10:51 [SEVERE]     at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(
    2011-08-11 13:10:51 [SEVERE]     at me.escapeNT.pail.util.ServerReadyListener.publish(
    2011-08-11 13:10:51 [SEVERE]     at java.util.logging.Logger.log(Unknown Source)
    2011-08-11 13:10:51 [SEVERE]     at java.util.logging.Logger.doLog(Unknown Source)
    2011-08-11 13:10:51 [SEVERE]     at java.util.logging.Logger.log(Unknown Source)
    2011-08-11 13:10:51 [SEVERE]     at Source)
    2011-08-11 13:10:51 [SEVERE]     at net.minecraft.server.MinecraftServer.init(
    2011-08-11 13:10:51 [SEVERE]     at
    2011-08-11 13:10:51 [SEVERE]     at
    2011-08-11 13:10:51 [SEVERE] Unexpected exception
    java.lang.StringIndexOutOfBoundsException: String index out of range: -5
        at java.lang.String.substring(Unknown Source)
        at me.escapeNT.pail.GUIComponents.SettingsPanel.parseCraftVersion(
        at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(
        at me.escapeNT.pail.util.ServerReadyListener.publish(
        at java.util.logging.Logger.log(Unknown Source)
        at java.util.logging.Logger.doLog(Unknown Source)
        at java.util.logging.Logger.log(Unknown Source)
        at Source)
        at net.minecraft.server.MinecraftServer.init(
    that make it easier?
  8. Offline


    It's because your craftbukkit version is "null". are you using rb 1000?
  9. Offline


    @escape : Okay, I'm going crazy. How did you get
    private me.escapeNT.pail.GUIComponents.TabActivationPanel tabActivationPanel;

    Every one of my attempts to do that, besides the dreaded "edit in notepad," seems to produce this for me:

    plugins = new PluginsPanel();
    private JPanel plugins;
    (only have been able to set equals)

    EDIT: I guess you manually modified the file. I got it now. ^^

    On a good note, I put a couple issues on git. (One of them is a discussion)

    I also applied a few patches (that I have tested on my pail).

    EDIT: By the way, you can delete "build" from git as well. (Not needed)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 18, 2016
  10. Offline


    when i start up my server about 1/10th of the time pail loads correctly but every other time i get an error.
    15:05:03 [INFO] Starting minecraft server version Beta 1.7.3
    15:05:03 [INFO] Loading properties
    15:05:03 [INFO] Starting Minecraft server on *:25565
    15:05:03 [WARNING] The server will make no attempt to authenticate usernames. Be
    15:05:03 [WARNING] While this makes the game possible to play without internet a
    ccess, it also opens up the ability for hackers to connect with any username the
    y choose.
    15:05:03 [WARNING] To change this, set "online-mode" to "true" in the server.set
    tings file.
    15:05:03 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-945-
    g73697a4-b1000jnks (MC: 1.7.3)
    15:05:03 [INFO] [Permissions] (Yeti) was initialized.
    15:05:03 [INFO] [Pail] Pail 0.3.1 Enabled
    15:05:03 [INFO] [Permissions] version [3.1.6] (Yeti) loaded
    15:05:03 [INFO] Preparing level "world"
    15:05:04 [INFO] Preparing start region for level 0 (Seed: 3850433055)
    15:05:05 [INFO] Preparing spawn area: 89%
    15:05:05 [INFO] ServerReloader has been enabled.
    15:05:05 [INFO] Server permissions file permissions.yml is empty, ignoring it
    15:05:05 [INFO] Done (0.126s)! For help, type "help" or "?"
    15:05:05 [SEVERE] java.lang.NumberFormatException: For input string: ""
    15:05:05 [SEVERE] at java.lang.NumberFormatException.forInputString(Unknow
    n Source)
    15:05:05 [SEVERE] at java.lang.Integer.parseInt(Unknown Source)
    15:05:05 [SEVERE] at java.lang.Integer.parseInt(Unknown Source)
    15:05:05 [SEVERE] at me.escapeNT.pail.GUIComponents.SettingsPanel.loadConf
    15:05:05 [SEVERE] at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(S
    15:05:05 [SEVERE] at me.escapeNT.pail.util.ServerReadyListener.publish(Ser
    15:05:05 [SEVERE] at java.util.logging.Logger.log(Unknown Source)
    15:05:05 [SEVERE] at java.util.logging.Logger.doLog(Unknown Source)
    15:05:05 [SEVERE] at java.util.logging.Logger.log(Unknown Source)
    15:05:05 [SEVERE] at Source)
    15:05:05 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftSe
    15:05:05 [SEVERE] at
    15:05:05 [SEVERE] at
    15:05:05 [SEVERE] Unexpected exception
    java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at me.escapeNT.pail.GUIComponents.SettingsPanel.loadConfig(SettingsPanel
    at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(SettingsPanel.jav
    at me.escapeNT.pail.util.ServerReadyListener.publish(ServerReadyListener
    at java.util.logging.Logger.log(Unknown Source)
    at java.util.logging.Logger.doLog(Unknown Source)
    at java.util.logging.Logger.log(Unknown Source)
    at Source)
    at net.minecraft.server.MinecraftServer.init(
    i kept very basic essentials for my server atm to try and get this to work, plz help its a good plugin.
  11. Offline


    @dzordo There will be a fix for this in the new version coming out later today.
  12. Offline


  13. Offline


    0.3.2 is now out and addresses the bugs brought up in the last few days.
  14. Offline


    Hey. I like that :) Could u add a config file to change the layout? Thanks :)
  15. Offline


    Excellent plugin for a GUI mate. I just switched from Crafty 0.7.5 to this version of yours, very lean and efficient. Keep the the good work. :)

    Also had one suggestion, can you make a config where you can tell the GUI where the spawn is, instead of the default map spawn. So when I teleport people, they go to the spawn I choose with X Y Z instead of the vanilla spawn. :) Let me know what you think.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 18, 2016
  16. Offline


    If you use another plugin to set the world's spawn it should send them there but if you need to send them to a specific position, I'm thinking of adding a system where you could add your own predefined waypoints to the list to choose from.
  17. Offline


    Awesome plugin!!!! ;) Great job! [stick][stick][diamond][diamond][diamond]
  18. Offline


    That will be in advancedpail.
  19. Offline


    I have Pail on my Bukkit server (v.1000) and i see you run a Mac and a screenshot shows that you have a "Server Control" tab AND a "Settings" tab. I run Windows XP and I don't see a "Settings" tab, only a "Server Control" tab. Otherwise, though this works great, and it is so much better than the command prompt. it even integrates with CraftBukkitUpToDate!! Amazing GUI man!
  20. Offline


    @0xDEADMEAT : Please include errors. (Though I kind of know what happens)

    try reloading/restarting a couple times. The settings does have a way of messing up sometimes.
  21. Offline


    hello im just wondering what the teleport function is for when you right click on a player because when i use it i get this error!

    16:24:26 [SEVERE] Exception in thread "AWT-EventQueue-0"
    16:24:26 [SEVERE] java.lang.NullPointerException
    16:24:26 [SEVERE]     at me.escapeNT.pail.GUIComponents.TeleportPlayerView.<init>(
    16:24:26 [SEVERE]     at me.escapeNT.pail.GUIComponents.ServerControlPanel$TeleportListener.actionPerformed(
    16:24:26 [SEVERE]     at javax.swing.AbstractButton.fireActionPerformed(
    16:24:26 [SEVERE]     at javax.swing.AbstractButton$Handler.actionPerformed(
    16:24:26 [SEVERE]     at javax.swing.DefaultButtonModel.fireActionPerformed(
    16:24:26 [SEVERE]     at javax.swing.DefaultButtonModel.setPressed(
    16:24:26 [SEVERE]     at javax.swing.AbstractButton.doClick(
    16:24:26 [SEVERE]     at javax.swing.plaf.basic.BasicMenuItemUI.doClick(
    16:24:26 [SEVERE]     at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(
    16:24:26 [SEVERE]     at java.awt.Component.processMouseEvent(
    16:24:26 [SEVERE]     at javax.swing.JComponent.processMouseEvent(
    16:24:26 [SEVERE]     at java.awt.Component.processEvent(
    16:24:26 [SEVERE]     at java.awt.Container.processEvent(
    16:24:26 [SEVERE]     at java.awt.Component.dispatchEventImpl(
    16:24:26 [SEVERE]     at java.awt.Container.dispatchEventImpl(
    16:24:26 [SEVERE]     at java.awt.Component.dispatchEvent(
    16:24:26 [SEVERE]     at java.awt.LightweightDispatcher.retargetMouseEvent(
    16:24:26 [SEVERE]     at java.awt.LightweightDispatcher.processMouseEvent(
    16:24:26 [SEVERE]     at java.awt.LightweightDispatcher.dispatchEvent(
    16:24:26 [SEVERE]     at java.awt.Container.dispatchEventImpl(
    16:24:26 [SEVERE]     at java.awt.Window.dispatchEventImpl(
    16:24:26 [SEVERE]     at java.awt.Component.dispatchEvent(
    16:24:26 [SEVERE]     at java.awt.EventQueue.dispatchEventImpl(
    16:24:26 [SEVERE]     at java.awt.EventQueue.access$000(
    16:24:26 [SEVERE]     at java.awt.EventQueue$
    16:24:26 [SEVERE]     at java.awt.EventQueue$
    16:24:26 [SEVERE]     at Method)
    16:24:26 [SEVERE]     at$1.doIntersectionPrivilege(
    16:24:26 [SEVERE]     at$1.doIntersectionPrivilege(
    16:24:26 [SEVERE]     at java.awt.EventQueue$
    16:24:26 [SEVERE]     at java.awt.EventQueue$
    16:24:26 [SEVERE]     at Method)
    16:24:26 [SEVERE]     at$1.doIntersectionPrivilege(
    16:24:26 [SEVERE]     at java.awt.EventQueue.dispatchEvent(
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpOneEventForFilters(
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEventsForFilter(
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEventsForHierarchy(
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEvents(
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEvents(
    16:24:26 [SEVERE]     at
  22. Offline


  23. Offline


    Do i have to run both of the GUI?
  24. Offline


    what do you mean?
  25. Offline


    I mean do i have to use the Run.bat and Pail
    Edit: Sorry didn't know what it was called. My question is can i use Pail without the console open
  26. Offline


    @YellowFellow Yes you have to use your run.bat

    Or you could set it up so the bat runs virtually... But I wouldn't recommend that. (Nor will I tell you how) :)
  27. Offline


    haha thanks for the info nice plugin easy to use:)
  28. Offline

    Styx Reborn

    ;D Now to actually make it work before school starts. Then I have to complete AC: Brotherhood. DAmn my weekends suck.
  29. Offline


  30. Offline


    @escape I am LOVING this!
  31. Offline


    I agree that depending on remote toolkit would be bad for the future, and since it's a wrapper and a plugin, might be bad for your design, but I wonder if there isn't some way to tap into rtoolkit if its around, but ignore it if it's not around or becomes incompatible. If not, I wonder if there can be an addon wrapper/plugin combo that does nothing but remove the server console and put its console into a tab in your plugin. That would keep the best feature of this, which is that it's a plugin, but allow it to act like it's not a plugin for the one thing a wrapper would be better at. Cool plugin!

Share This Page