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

    escape

    Pail
    The interface for and by the people
    [​IMG]
    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:​

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

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

    Features:
    • 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!
    Commands:
    • Pail - Reopens the Pail GUI through the console
    Screenshots:
    Show Spoiler

    [​IMG]

    [​IMG]
    [​IMG]



    Todo:
    • Support for remote hosted servers (milestone 1.0)
    Credits:

    Pail has been brought to you by
    With contributions by
    Changelog:
    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)
    [​IMG]

    EDIT: removed external links. Please use http://dev.bukkit.org/server-mods/pail/
     
  2. Offline

    feildmaster Retired Staff

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

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

    escape

    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

    Hubok

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

    feildmaster Retired Staff

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

    ohtwo

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

    firemouse13

    I think I made the post too long here is a shorter version
    Code:
    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(SettingsPanel.java:44)
    2011-08-11 13:10:51 [SEVERE]     at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(SettingsPanel.java:31)
    2011-08-11 13:10:51 [SEVERE]     at me.escapeNT.pail.util.ServerReadyListener.publish(ServerReadyListener.java:20)
    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 java.util.logging.Logger.info(Unknown Source)
    2011-08-11 13:10:51 [SEVERE]     at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:153)
    2011-08-11 13:10:51 [SEVERE]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
    2011-08-11 13:10:51 [SEVERE]     at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    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(SettingsPanel.java:44)
        at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(SettingsPanel.java:31)
        at me.escapeNT.pail.util.ServerReadyListener.publish(ServerReadyListener.java:20)
        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 java.util.logging.Logger.info(Unknown Source)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:153)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    that make it easier?
     
  8. Offline

    escape

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

    feildmaster Retired Staff

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

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

    Code:
    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

    dzordo

    when i start up my server about 1/10th of the time pail loads correctly but every other time i get an error.
    Code:
    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] **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
    15:05:03 [WARNING] The server will make no attempt to authenticate usernames. Be
    ware.
    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
    ig(SettingsPanel.java:93)
    15:05:05 [SEVERE] at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(S
    ettingsPanel.java:39)
    15:05:05 [SEVERE] at me.escapeNT.pail.util.ServerReadyListener.publish(Ser
    verReadyListener.java:20)
    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 java.util.logging.Logger.info(Unknown Source)
    15:05:05 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftSe
    rver.java:153)
    15:05:05 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftSer
    ver.java:335)
    15:05:05 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(Sour
    ceFile:422)
    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
    .java:93)
    at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(SettingsPanel.jav
    a:39)
    at me.escapeNT.pail.util.ServerReadyListener.publish(ServerReadyListener
    .java:20)
    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 java.util.logging.Logger.info(Unknown Source)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:153)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    >
    i kept very basic essentials for my server atm to try and get this to work, plz help its a good plugin.
     
  11. Offline

    escape

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

    dzordo

    Thanks
     
  13. Offline

    escape

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

    JonasD

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

    cybernetamd

    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

    escape

    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

    SieniFani

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

    feildmaster Retired Staff

    That will be in advancedpail.
     
  19. Offline

    0xDEADMEAT

    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

    feildmaster Retired Staff

    @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

    thestriker095

    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!

    Code:
    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>(TeleportPlayerView.java:22)
    16:24:26 [SEVERE]     at me.escapeNT.pail.GUIComponents.ServerControlPanel$TeleportListener.actionPerformed(ServerControlPanel.java:247)
    16:24:26 [SEVERE]     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
    16:24:26 [SEVERE]     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
    16:24:26 [SEVERE]     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
    16:24:26 [SEVERE]     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    16:24:26 [SEVERE]     at javax.swing.AbstractButton.doClick(AbstractButton.java:374)
    16:24:26 [SEVERE]     at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:829)
    16:24:26 [SEVERE]     at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:873)
    16:24:26 [SEVERE]     at java.awt.Component.processMouseEvent(Component.java:6268)
    16:24:26 [SEVERE]     at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    16:24:26 [SEVERE]     at java.awt.Component.processEvent(Component.java:6033)
    16:24:26 [SEVERE]     at java.awt.Container.processEvent(Container.java:2045)
    16:24:26 [SEVERE]     at java.awt.Component.dispatchEventImpl(Component.java:4629)
    16:24:26 [SEVERE]     at java.awt.Container.dispatchEventImpl(Container.java:2103)
    16:24:26 [SEVERE]     at java.awt.Component.dispatchEvent(Component.java:4455)
    16:24:26 [SEVERE]     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
    16:24:26 [SEVERE]     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
    16:24:26 [SEVERE]     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
    16:24:26 [SEVERE]     at java.awt.Container.dispatchEventImpl(Container.java:2089)
    16:24:26 [SEVERE]     at java.awt.Window.dispatchEventImpl(Window.java:2517)
    16:24:26 [SEVERE]     at java.awt.Component.dispatchEvent(Component.java:4455)
    16:24:26 [SEVERE]     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
    16:24:26 [SEVERE]     at java.awt.EventQueue.access$000(EventQueue.java:96)
    16:24:26 [SEVERE]     at java.awt.EventQueue$1.run(EventQueue.java:608)
    16:24:26 [SEVERE]     at java.awt.EventQueue$1.run(EventQueue.java:606)
    16:24:26 [SEVERE]     at java.security.AccessController.doPrivileged(Native Method)
    16:24:26 [SEVERE]     at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
    16:24:26 [SEVERE]     at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
    16:24:26 [SEVERE]     at java.awt.EventQueue$2.run(EventQueue.java:622)
    16:24:26 [SEVERE]     at java.awt.EventQueue$2.run(EventQueue.java:620)
    16:24:26 [SEVERE]     at java.security.AccessController.doPrivileged(Native Method)
    16:24:26 [SEVERE]     at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
    16:24:26 [SEVERE]     at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
    16:24:26 [SEVERE]     at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
     
  22. Offline

    Cactus_Master

  23. Offline

    YellowFellow

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

    feildmaster Retired Staff

    what do you mean?
     
  25. Offline

    YellowFellow

    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

    feildmaster Retired Staff

    @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

    YellowFellow

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

    Styx Reborn

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

    feildmaster Retired Staff

  30. Offline

    TheGurw

    @escape I am LOVING this!
     
  31. Offline

    keyosuke

    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