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

    escape

    What data are you taking about? The previous console content and window position are already loaded after the gui.
     
  3. Offline

    feildmaster

    Not if you reload through the console, or game.. ;)

    ... I am using the latest data right... -looks-
    Yup. That's what's happening.

    (Also, if it's only storing on button reload... there's no need to even store the window position, it's always the ServerControl)
     
  4. Offline

    escape

    Okay so you mean that when you reload the server by any means, the aforementioned data is not saved and the console text is reset and the window goes to the center of the screen?
     
  5. Offline

    feildmaster

    any means other than the "Reload Button"

    and ohh.. THAT position of the screen. Okay. Now I understand. =P (See, I thought you were saving... -thinks- nvm)
    -----
    The new fixes do seem to fix the aforementioned errors. (to get on topic of bug fixes)
     
  6. Offline

    escape

    That's strange, it works for all means of reloading for me.
     
  7. Offline

    feildmaster

    Interesting.
     
  8. Offline

    escape

    If you look at the ServerListener, it does indeed save the state on reload commands.
     
  9. Offline

    mdt7734

    I'd like to say I love this, it is brilliant. Anyone who prefers using a GUI over console would love to configure and create worlds for Multiverse, settings for mcMMO and Vegetation, even PEX could use this interface of awesomeness. Anything with a complex config file could benefit.

    Does your API allow developers to have popup messages on mouse-over for any options they include in the interface?

    Not sure what to do to get it out there but pester the hell out of developers by posting in my favorite plugin threads =)

    The only negative I can think of are doubts to the longevity of this plugin, but if enough developers pile on, and the more it is used, Pail could take on a life of its own.
     
  10. Offline

    feildmaster

    yeah i saw that.

    Well that's strange... It's working now. Hmm...
     
  11. Offline

    mdt7734

    Forgot to mention, will there be a 'plugins that include pail interface' list a some point?
     
  12. Offline

    feildmaster

    They can add tool tips, yes.

    Also, I intend to code a multi-world manager in advanced pail.

    If people post that they've made support for it... possibly. ;)

    @escape : Yes, I do indeed enjoy taking over your thread. ;)

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

    escape

  14. Offline

    cyberdude

    @escape
    Just curious, did you decide not to remote it using RMI? Or whatever happened?

    Edit:
    I also think it would be very plausible (easy if know the details) to hide to the console window (At least in windows) using JNI/JNA and Win32...
     
  15. Offline

    escape

    I'm still working on it, I just haven't had enough time recently to sit down and work through it. Rest assured though, it's at the top of my todo list.
     
    cyberdude likes this.
  16. Offline

    cyberdude

    Starting next month, I will hopefully have a lot of sparetime, and I might be able to join the project and help out. I have forked the github. Will be checking out the code in the next couple of days, and will try to get started in taking part.
     
  17. Offline

    escape

    Updated to 0.4.1 which contains all the recent fixes.
     
  18. Offline

    SuperPyroManiac

    I want to use this so badly, it looks so cool but I get this. And the whole server is dead with it.



    21:04:45 [SEVERE] java.lang.NoSuchMethodError: org.bukkit.Server.getAllowNether()Z
    21:04:45 [SEVERE] at me.escapeNT.pail.GUIComponents.SettingsPanel.loadConfig(SettingsPanel.java:91)
    21:04:45 [SEVERE] at me.escapeNT.pail.GUIComponents.SettingsPanel.<init>(SettingsPanel.java:44)
    21:04:45 [SEVERE] at me.escapeNT.pail.util.ServerReadyListener.publish(ServerReadyListener.java:23)
    21:04:45 [SEVERE] at java.util.logging.Logger.log(Unknown Source)
    21:04:45 [SEVERE] at java.util.logging.Logger.doLog(Unknown Source)
    21:04:45 [SEVERE] at java.util.logging.Logger.log(Unknown Source)
    21:04:45 [SEVERE] at java.util.logging.Logger.info(Unknown Source)
    21:04:45 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:153)
    21:04:45 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
    21:04:45 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    21:04:45 [SEVERE] Unexpected exception
     
  19. Offline

    feildmaster

  20. Offline

    SuperPyroManiac

    Thanks so much! Also Thanks for the super fast reply!
     
  21. Offline

    Feed_Dante

    Can promote OP and demote OP be made context sensitive? In other words only show promote if it's a normal user and only show demote if it's an admin/op.

    My username is in both admin.txt and ops.txt and if I right click on my name in pail I see both promote and demote.
     
  22. Offline

    NinjaGrinch

    Its a shame this doesn't use the native GUI of the OS. :( Would look great on Windows if it did.
     
  23. Offline

    thestriker095

    Hello, I have found some bugs with pail.

    Info:
    CraftBukkit: 1060
    Pail: 0.4.1

    Issue:
    When i use the teleport feature when there is more than one player on it does not work and throws this error

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

    Devian50

    uh is rb1060 needed for the Settings tab? I only have the console tab... :S

    it is actually using the native GUI of the JAVA environment. which I believe is common between OS's

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

    drdanick

    @feildmaster @escape @Zarius
    I should point out that the toolkit APIs are in place for the exact reason of providing plugin developers with access to an established wrapper without necessarily adding any unwanted dependencies for users opting not to use any wrappers - this merely grants wrapper users with functionality they would certainly find indispensable.
     
  26. Offline

    Varrkarus

    Having the same error, was just about to ask about it too.
     
  27. Offline

    feildmaster

    You mean for the web console part? Sure, but then they'd need the toolkit to GET it online. (Also, I've used that toolkit for as long as I can remember, and I thoroughly hate it. :D Just too lazy to remove it)

    The way it's coded now would have to change... But I believe it could be possible. (I'll let escape figure that one out)

    @Devian50 : Yes, you need RB 1060 for the settings tab.

    @thestriker095 and @Varrkarus I'll look into it. That panel is a very sticky territory. Does it do it with any other commands? It might help me narrow it down.

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

    Varrkarus

    Waypoints is the only one I know of causing it. I'll test the rest of the commands and report back to you

    Yep, that seems to be the only thing causing the error as far as I know...

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

    drdanick

    I was referring more to "power management" through the API considering that the API does not support anything more than that at this time. Well, unless you use telnet, which I advise against. The current wrapper restructure, however, will result in a more robust and general API.

    Also: D: ,
    Feedback would be nice :p
     
  30. Offline

    feildmaster

    I'm too lazy to give feedback. :p

    At 'power management' : I've never looked at it. Do tell. :)

    @Varrkarus : that error shouldn't be happening. does it happen the first time? or only after you've used it once?

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

    drdanick

    Well, by power management I refer to control over the server's running state, which is really just the ability to hold, unhold, stop and restart the server (the latter two options can be forced with a SIGKILL). Obviously, holding the server would close this panel, but it shouldn't be hard to write a toolkit module that presents the user with a single JFrame with a button labeled "start server" while the server is held. :p
     

Share This Page