Skip to content
This repository has been archived by the owner on Sep 19, 2023. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: DaniFoldi/ProtoGUI
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.1.0
Choose a base ref
...
head repository: DaniFoldi/ProtoGUI
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on May 15, 2021

  1. Finish todo

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    150e8e0 View commit details
  2. Fix #23

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    800e39d View commit details
  3. Added placeholder support

    Closes #24
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    298d386 View commit details
  4. Fix #29

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    00419de View commit details
  5. Improve plugin command

    Closes #12
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    079fc76 View commit details
  6. Add more placeholders

    Closes #32 #31 #30
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    f40e107 View commit details
  7. Added sounds

    closes #14 #18
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    09bba7e View commit details
  8. Play click sounds

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    5fc962c View commit details
  9. Add inventory repeat

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    88f6376 View commit details
  10. Add missing binding

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    fb97364 View commit details
  11. Improve placeholders

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    2f847d4 View commit details
  12. Fix click sound

    closes #41
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    de7c5b9 View commit details
  13. Fix smaller GUI

    closes #37
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    39bba3b View commit details
  14. Add player and target placeholder to data

    implements #39
    DaniFoldi committed May 15, 2021
    Copy the full SHA
    2005ee6 View commit details
  15. Bugfix and readme update

    DaniFoldi committed May 15, 2021
    Copy the full SHA
    8677a69 View commit details

Commits on May 16, 2021

  1. Bugfixes

    DaniFoldi committed May 16, 2021
    Copy the full SHA
    d6cc032 View commit details
  2. Add closeable and bypassTarget

    Closes #43 and #35
    DaniFoldi committed May 16, 2021
    Copy the full SHA
    3a5ac7c View commit details
  3. Added traffic placeholders

    Closes #42
    DaniFoldi committed May 16, 2021
    Copy the full SHA
    b4e8c84 View commit details

Commits on May 17, 2021

  1. Implement #8 and #25

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    5a71c20 View commit details
  2. Added update checker and warning messages

    Closes #26 and #48
    DaniFoldi committed May 17, 2021
    Copy the full SHA
    d056b4d View commit details
  3. Implement #28

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    2d59abb View commit details
  4. Fix #50

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    a7ae4b7 View commit details
  5. Added commands

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    bbd73ee View commit details
  6. Closes #36

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    11a7b74 View commit details
  7. Implement custom sound support

    closes #34
    DaniFoldi committed May 17, 2021
    Copy the full SHA
    4f289fd View commit details
  8. Fix non closable guis

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    ccbc6d2 View commit details
  9. Optimize imports

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    efdf732 View commit details
  10. Optimize imports

    DaniFoldi committed May 17, 2021
    Copy the full SHA
    3d183ca View commit details

Commits on May 18, 2021

  1. Minor bugfixes

    DaniFoldi committed May 18, 2021
    Copy the full SHA
    44e05ca View commit details

Commits on May 19, 2021

  1. Updated readme

    DaniFoldi committed May 19, 2021
    Copy the full SHA
    272f507 View commit details

Commits on May 25, 2021

  1. Create dependabot.yml

    DaniFoldi authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    45f1f54 View commit details
  2. Bump dagger from 2.34 to 2.35.1

    Bumps [dagger](https://github.com/google/dagger) from 2.34 to 2.35.1.
    - [Release notes](https://github.com/google/dagger/releases)
    - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
    - [Commits](google/dagger@dagger-2.34...dagger-2.35.1)
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    9ea07c2 View commit details
  3. Bump protocolize-api from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT

    Bumps protocolize-api from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT.
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    35b6d4b View commit details
  4. Bump protocolize-world from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT

    Bumps protocolize-world from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT.
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    6e0e9e9 View commit details
  5. Merge pull request #53 from DaniFoldi/dependabot/gradle/com.google.da…

    …gger-dagger-2.35.1
    
    Bump dagger from 2.34 to 2.35.1
    DaniFoldi authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ae0dc41 View commit details
  6. Bump dagger-compiler from 2.34 to 2.35.1

    Bumps [dagger-compiler](https://github.com/google/dagger) from 2.34 to 2.35.1.
    - [Release notes](https://github.com/google/dagger/releases)
    - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
    - [Commits](google/dagger@dagger-2.34...dagger-2.35.1)
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    4e20ec2 View commit details
  7. Merge pull request #55 from DaniFoldi/dependabot/gradle/com.google.da…

    …gger-dagger-compiler-2.35.1
    
    Bump dagger-compiler from 2.34 to 2.35.1
    DaniFoldi authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    fe4b3cf View commit details
  8. Merge pull request #54 from DaniFoldi/dependabot/gradle/de.exceptionf…

    …lug-protocolize-api-1.6.8-SNAPSHOT
    
    Bump protocolize-api from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT
    DaniFoldi authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    a7ace2d View commit details
  9. Merge pull request #56 from DaniFoldi/dependabot/gradle/de.exceptionf…

    …lug-protocolize-world-1.6.8-SNAPSHOT
    
    Bump protocolize-world from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT
    DaniFoldi authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ad8250d View commit details
  10. Bump protocolize-inventory from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT

    Bumps protocolize-inventory from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT.
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    701ef1c View commit details
  11. Merge pull request #57 from DaniFoldi/dependabot/gradle/de.exceptionf…

    …lug-protocolize-inventory-1.6.8-SNAPSHOT
    
    Bump protocolize-inventory from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT
    DaniFoldi authored May 25, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    5241b5c View commit details

Commits on May 26, 2021

  1. Bump yaml from 3.6.0 to 3.6.3

    Bumps [yaml](https://github.com/TheElectronWill/Night-Config) from 3.6.0 to 3.6.3.
    - [Release notes](https://github.com/TheElectronWill/Night-Config/releases)
    - [Commits](TheElectronWill/night-config@v3.6.0...v3.6.3)
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ca7950c View commit details
  2. Bump protocolize-items from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT

    Bumps protocolize-items from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT.
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    2c4606f View commit details
  3. Bump waterfall-api from 1.16-R0.4-SNAPSHOT to 1.16-R0.5-SNAPSHOT

    Bumps waterfall-api from 1.16-R0.4-SNAPSHOT to 1.16-R0.5-SNAPSHOT.
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    8c09185 View commit details
  4. Bump dagger from 2.35.1 to 2.36

    Bumps [dagger](https://github.com/google/dagger) from 2.35.1 to 2.36.
    - [Release notes](https://github.com/google/dagger/releases)
    - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
    - [Commits](google/dagger@dagger-2.35.1...dagger-2.36)
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    c2f1444 View commit details
  5. Merge pull request #58 from DaniFoldi/dependabot/gradle/com.electronw…

    …ill.night-config-yaml-3.6.3
    
    Bump yaml from 3.6.0 to 3.6.3
    DaniFoldi authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    5ec932f View commit details
  6. Merge pull request #59 from DaniFoldi/dependabot/gradle/de.exceptionf…

    …lug-protocolize-items-1.6.8-SNAPSHOT
    
    Bump protocolize-items from 1.6.7-SNAPSHOT to 1.6.8-SNAPSHOT
    DaniFoldi authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ea0d859 View commit details
  7. Merge pull request #60 from DaniFoldi/dependabot/gradle/io.github.wat…

    …erfallmc-waterfall-api-1.16-R0.5-SNAPSHOT
    
    Bump waterfall-api from 1.16-R0.4-SNAPSHOT to 1.16-R0.5-SNAPSHOT
    DaniFoldi authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    cc8aab9 View commit details
  8. Merge pull request #61 from DaniFoldi/dependabot/gradle/com.google.da…

    …gger-dagger-2.36
    
    Bump dagger from 2.35.1 to 2.36
    DaniFoldi authored May 26, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    aa76b44 View commit details

Commits on May 27, 2021

  1. Bump dagger-compiler from 2.35.1 to 2.36

    Bumps [dagger-compiler](https://github.com/google/dagger) from 2.35.1 to 2.36.
    - [Release notes](https://github.com/google/dagger/releases)
    - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
    - [Commits](google/dagger@dagger-2.35.1...dagger-2.36)
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored May 27, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    89ec212 View commit details
Showing with 5,377 additions and 1,655 deletions.
  1. +3 −0 .github/renovate.json
  2. +153 −42 README.md
  3. +39 −17 build.gradle
  4. BIN gradle/wrapper/gradle-wrapper.jar
  5. +2 −1 gradle/wrapper/gradle-wrapper.properties
  6. +168 −108 gradlew
  7. +92 −89 gradlew.bat
  8. +1 −1 settings.gradle
  9. +0 −98 src/main/java/com/danifoldi/bungeegui/command/BungeeGuiCommand.java
  10. +0 −20 src/main/java/com/danifoldi/bungeegui/command/ReloadCommand.java
  11. +0 −180 src/main/java/com/danifoldi/bungeegui/gui/GuiGrid.java
  12. +0 −162 src/main/java/com/danifoldi/bungeegui/gui/GuiItem.java
  13. +0 −37 src/main/java/com/danifoldi/bungeegui/inject/BungeeGuiComponent.java
  14. +0 −104 src/main/java/com/danifoldi/bungeegui/main/BungeeGuiAPI.java
  15. +0 −69 src/main/java/com/danifoldi/bungeegui/main/BungeeGuiListener.java
  16. +0 −74 src/main/java/com/danifoldi/bungeegui/main/BungeeGuiLoader.java
  17. +0 −27 src/main/java/com/danifoldi/bungeegui/main/BungeeGuiPlugin.java
  18. +0 −231 src/main/java/com/danifoldi/bungeegui/main/GuiHandler.java
  19. +0 −73 src/main/java/com/danifoldi/bungeegui/util/ConfigUtil.java
  20. +0 −40 src/main/java/com/danifoldi/bungeegui/util/FileUtil.java
  21. +0 −80 src/main/java/com/danifoldi/bungeegui/util/Message.java
  22. +0 −27 src/main/java/com/danifoldi/bungeegui/util/StringUtil.java
  23. +0 −21 src/main/java/com/danifoldi/bungeegui/util/VanishUtil.java
  24. +79 −0 src/main/java/com/danifoldi/protogui/command/CommandManager.java
  25. +163 −0 src/main/java/com/danifoldi/protogui/command/PluginCommand.java
  26. +49 −0 src/main/java/com/danifoldi/protogui/command/grapefruit/GuiMapper.java
  27. +75 −0 src/main/java/com/danifoldi/protogui/command/grapefruit/ProtoPlayerCollectionMapper.java
  28. +76 −0 src/main/java/com/danifoldi/protogui/command/grapefruit/ProtoPlayerMapper.java
  29. +66 −0 src/main/java/com/danifoldi/protogui/command/grapefruit/ProtoServerMapper.java
  30. +109 −0 src/main/java/com/danifoldi/protogui/gui/GuiAction.java
  31. +291 −0 src/main/java/com/danifoldi/protogui/gui/GuiGrid.java
  32. +303 −0 src/main/java/com/danifoldi/protogui/gui/GuiItem.java
  33. +126 −0 src/main/java/com/danifoldi/protogui/gui/GuiSound.java
  34. +18 −0 src/main/java/com/danifoldi/protogui/inject/ProtoGuiBindingModule.java
  35. +39 −0 src/main/java/com/danifoldi/protogui/inject/ProtoGuiComponent.java
  36. +104 −0 src/main/java/com/danifoldi/protogui/main/CommandHandler.java
  37. +487 −0 src/main/java/com/danifoldi/protogui/main/GuiHandler.java
  38. +230 −0 src/main/java/com/danifoldi/protogui/main/PlaceholderHandler.java
  39. +201 −0 src/main/java/com/danifoldi/protogui/main/ProtoGuiAPI.java
  40. +135 −0 src/main/java/com/danifoldi/protogui/main/ProtoGuiLoader.java
  41. +77 −0 src/main/java/com/danifoldi/protogui/platform/PlatformInteraction.java
  42. +67 −0 src/main/java/com/danifoldi/protogui/platform/bungee/CommandWrapper.java
  43. +418 −0 src/main/java/com/danifoldi/protogui/platform/bungee/ProtoGui.java
  44. +86 −0 src/main/java/com/danifoldi/protogui/platform/velocity/CommandWrapper.java
  45. +464 −0 src/main/java/com/danifoldi/protogui/platform/velocity/ProtoGui.java
  46. +60 −0 src/main/java/com/danifoldi/protogui/util/ConditionUtil.java
  47. +203 −0 src/main/java/com/danifoldi/protogui/util/ConfigUtil.java
  48. +44 −0 src/main/java/com/danifoldi/protogui/util/FileUtil.java
  49. +28 −0 src/main/java/com/danifoldi/protogui/util/ListUtil.java
  50. +29 −0 src/main/java/com/danifoldi/protogui/util/MapUtil.java
  51. +173 −0 src/main/java/com/danifoldi/protogui/util/Message.java
  52. +16 −0 src/main/java/com/danifoldi/protogui/util/NumberUtil.java
  53. +12 −2 src/main/java/com/danifoldi/{bungeegui → protogui}/util/Pair.java
  54. +124 −0 src/main/java/com/danifoldi/protogui/util/SlotUtil.java
  55. +98 −0 src/main/java/com/danifoldi/protogui/util/SoundUtil.java
  56. +37 −0 src/main/java/com/danifoldi/protogui/util/StringUtil.java
  57. +90 −0 src/main/java/com/danifoldi/protogui/util/UpdateUtil.java
  58. +91 −0 src/main/java/com/danifoldi/protogui/util/VersionUtil.java
  59. +19 −0 src/main/resources/authors.yml
  60. +4 −3 src/main/resources/bungee.yml
  61. +2 −149 src/main/resources/config.yml
  62. +45 −0 src/main/resources/messages.yml
  63. +38 −0 src/main/resources/servermenu.yml
  64. +77 −0 src/main/resources/sounds.yml
  65. +47 −0 src/main/resources/stats.yml
  66. +19 −0 src/main/resources/test.yml
3 changes: 3 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["github>DaniFoldi/workflows"]
}
195 changes: 153 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,85 @@
# BungeeGUI Plugin for BungeeCord
# ProtoGUI Plugin for BungeeCord and Velocity

## Features

- Open chest GUIs of any size
- 100% configurable commands
- Completely translatable
- Highly customisable GUIs
- Sound support
- Full color support (with RGB where applicable) in all content
- Many placeholders
- Targeted GUIs
- Utility commands that can be used as click actions or separately

## Setup tutorial

Dependencies: **Protocolize** is required. Please make sure you have it installed, or the plugin will fail to load.
Dependencies: [**Protocolize**](https://www.spigotmc.org/resources/63778/) is required. Please make sure you have it installed, or the plugin will fail to load.
Download the latest version from either GitHub or Spigot, put it into the `plugins` folder of your Bungee, and you're done.

Of course, you will probably want to customize the GUIs of the plugin. For that, see the example `config.yml` [here](https://github.com/DaniFoldi/BungeeGUI/blob/main/src/main/resources/config.yml), and below for explanations.
Of course, you will probably want to customize the GUIs of the plugin. For that, see the example `config.yml` [here](https://github.com/DaniFoldi/ProtoGUI/blob/main/src/main/resources/config.yml), and below for explanations.

Optional dependencies: *PremiumVanish*, *LuckPerms*.

---

## Plugin configuration

All data of the plugin is saved in the `config.yml` file of the plugin's folder. You can apply any changes and then `/bguireload` for the plugin to reload the config.
Basic configuration of the plugin is saved in the `config.yml` file of the plugin's folder. You can apply any changes and then `/protogui reload` for the plugin to reload the config.


**messages**

All player-visible messages of the plugin are translatable in the `messages` section.
All player-visible messages of the plugin are translatable in `messages.yml`.

**guis**

_File: test.yml, where test becomes the internal id of the GUI_

```yaml
test: # the name of the gui, used internally and in the API
targeted: true # default: false; do the commands require a target attribute
aliases: # default: []; the commands that open the GUI
- test
- testcommand
permission: 'somepermission.test' # default: bungeegui.gui.<guiname>; overrides the permission required to execute the commands
size: 27 # default: 54; the size of the GUI
title: '&2Test {target}' # default: GUI <guiname>; The title of the GUI displayed on top
selfTarget: false # default: true; can the executing player and the target be the same player
requireOnlineTarget: true # default: false; does the target have to be an online player
ignoreVanished: false # default: true; are vanished players ignored from the target list. NOTE: supports PremiumVanish on Bungee side, and only works if requireOnlineTarget is true
whitelistServers: # default: [*]; the commands will only work on the servers specified below. NOTE: omit or set the first element to `*` to enable on all servers
- server1
- server2
blacklistServers: # default: []; the commands will not work on the servers specified below. NOTE: overrides whitelisted servers.
- server3
- server4
items: # default: []; the items in the GUI
'13': # the slot this item will be displayed in. NOTE: has to be a 'string', eg. '1'. The first slot is indexed 0.
type: 'cobblestone' # default: stone; the material of the item
count: 10 # default: 1; the amount of the item
name: '&5some item' # default: <item name>; the name of the item
lore: # default: []; the lore of the item
- '&5&litem'
- '&5lore'
enchanted: true # default: false; whether the item is glowing as enchanted
data: '' # default: ''; set to owner:<UUID/name> or texture:<texture> to display custom heads. NOTE: only supports `player_head`
commands: # default: []; the commands to be executed. NOTE: prefix a command with `console:` to run it as the Bungee console instead of the player
- 'console:broadcast {target}'
- 'list'
targeted: true # default: false; do the commands require a target attribute
aliases: # default: []; the commands that open the GUI
- test
- testcommand
permission: 'somepermission.test' # default: protogui.gui.<guiname>; overrides the permission required to execute the commands
size: 27 # default: 54; the size of the GUI
title: '&2Test {target}' # default: GUI <guiname>; the title of the GUI displayed on top
selfTarget: false # default: true; can the executing player and the target be the same player
requireOnlineTarget: true # default: false; does the target have to be an online player
ignoreVanished: false # default: true; are vanished players ignored from the target list. NOTE: supports PremiumVanish on Bungee side, and only works if requireOnlineTarget is true
whitelistServers: # default: [*]; the commands will only work on the servers specified below. NOTE: omit or set the first element to `*` to enable on all servers
- server1
- server2
blacklistServers: # default: []; the commands will not work on the servers specified below. NOTE: overrides whitelisted servers
- server3
- server4
placeholdersTarget: true # default: false; if the placeholders should target the {target} or the {player}. NOTE: only works with requireOnlineTarget: true
openSound: # omit to play no sound
sound: entity_piglin_jealous # default: ENTITY_VILLAGER_NO; the sound to play when opening the gui NOTE: see link below for valid sounds
soundCategory: blocks # default: MASTER; the sound channel to play the sound on. NOTE: see link below for valid soundcategories
volume: 0.6 # default: 1.0; the volume to play the sound at
pitch: 1.2 # default 1.0; the pitch to play the sound at
targetBypass: true # default false; whether players with the permission <guiPermission>.bypass can not be targeted
closeable: false # default: true; whether players can press Esc to close the gui, or a command has to be executed. NOTE: see below for how to create a "close" button
notifyTarget: '{player} targeted you with a GUI' # default: ''; the message that will be sent to the target, if they are online. NOTE: omit to send no message
items: # default: []; the items in the GUI
'13': # the slot this item will be displayed in. NOTE: see below for advanced options. Has to be a 'string', eg. '1'. The first slot is indexed 0
type: 'cobblestone' # default: stone; the material of the item
count: 10 # default: 1; the amount of the item
name: '&5some item' # default: <item name>; the name of the item
lore: # default: []; the lore of the item
- '&5&litem'
- '&5lore'
enchanted: true # default: false; whether the item is glowing as enchanted
data: '' # default: ''; set to owner:<UUID/name> or texture:<texture> to display custom heads. NOTE: only supports `player_head`
commands: # default: []; the commands to be executed. NOTE: prefix a command with `console:` to run it as the Bungee console instead of the player
- 'console:broadcast {target}'
- 'list'
clickSound: # omit to play no sound
sound: entity_parrot_imitate_ghast # default: ENTITY_VILLAGER_NO; the sound to play when opening the gui NOTE: see link below for valid sounds
soundCategory: hostile # default: MASTER; the sound channel to play the sound on. NOTE: see link below for valid soundcatetories
volume: 0.6 # default: 1.0; the volume to play the sound at
pitch: 1.2 # default 1.0; the pitch to play the sound at
```
_Tips:_
@@ -59,28 +88,110 @@ All commands, gui titles, item names, lores support the `{player}` and `{target}

Set the `commands` of an item to `['']` to create a _close_ interaction, empty commands are ignored. Omit the `commands` property if you don't want an item to close the GUI.

If a player does not have the permission to run the commands, you can still use the API (see below) to open the GUI for them.
If a player does not have the permission to run the commands, you can still use the API or helper command (see below) to open the GUI for them.

Setting many `owner:<UUID/name>` playerheads will delay the GUI opening, so unless you need it to be dynamic, `texture:<texture>` is recommended.

Show the player their own head by setting the data to `owner:{player}`.

See the example `config.yml` that is auto-generated or in the repository for some GUI ideas.

You can specify multiple slots with one item, and they will be cloned.

- Formatting examples: `row1`, `row4even`, `row6odd`, `row2-9-17`, `column0+column8`, `row3odd+row4even+row5odd`
- You can chain multiple expressions together with commas.
- You can select a row, a column, or a slot.
- You can select only odd or only even slots from a row/column, or all.
- You can add or remove a slot from the list.

Valid sound list: [here](https://github.com/Exceptionflug/protocolize/blob/master/protocolize-world/src/main/java/de/exceptionflug/protocolize/world/Sound.java)
_Note: some sounds are mapped incorrectly, see SoundUtil.java for the fix by this plugin_

Valid soundcategory list: [here](https://github.com/Exceptionflug/protocolize/blob/master/protocolize-world/src/main/java/de/exceptionflug/protocolize/world/SoundCategory.java)

You can send custom sounds with `custom:<soundName>`.

___Expressions are evaluated in order___

**configVersion**

This should say `1`. If there are any breaking config changes, the value will be incremented. The conversion process should be automatic, unless the release notes say otherwise.
This should say `6`. If there are any config changes, the value will be incremented. The conversion process should be automatic, unless the release notes say otherwise.

---

## Commands

The plugin registers the command `/protogui` with many subcommands that contain useful utility functions.
A list of these will be added here shortly. You can view them in-game with instructions on how to use each.

## Placeholders

All messages support the placeholders in the table below. The API can be used to register additional placeholders.

| Placeholder | Description |
| ----------- |------------------------------------------------------------------------------------------------|
|`%protogui%`| ProtoGUI information |
|`%guicount%`| Number of loaded GUIs in ProtoGUI |
|`%placeholdercount%`| Number of placeholders registered in ProtoGUI |
|`%ram_used%`| Amount of RAM used by the proxy |
|`%ram_total%`| Total RAM allocated by the proxy |
|`%proxyname%`| The name of the proxy |
|`%proxyversion%`| The version of the proxy |
|`%plugincount%`| Number of plugins loaded |
|`%servercount%`| Number of servers proxied |
|`%online%`| Total number of players online |
|`%online_visible%`| Number of players online that are not vanished _(PV required)_ |
|`%max%`| Maximum number of online players |
|`%name%`| Player name |
|`%uuid%`| Player UUID |
|`%displayname%`| Player displayname |
|`%locale%`| The locale used by the player |
|`%version%`| The game version used by the player |
|`%ping%`| Latest ping measurement of the player |
|`%vanished%`| Whether the player is vanished or not |
|`%servername%`| The name of the server the player is connected to |
|`%servermotd%`| The MOTD of the server the player is connected to |
|`%luckperms_friendlyname%`| The friendly name of the player as set in LP _(LP required)_ |
|`%luckperms_prefix%`| The prefix of the player _(LP required)_ |
|`%luckperms_suffix%`| The suffix of the player _(LP required)_ |
|`%luckperms_group%`| The primary group of the player _(LP required)_ |
|`%is_online@<servername>%`| Whether the server is online or not _(Updates every 5 seconds)_ |
|`%status@<servername>%`| Returns Online / Offline based on the last ping _(Updates every 5 seconds)_ |
|`%online@<servername>%`| Number of players connected to a server _(Updates every 5 seconds)_ |
|`%online_visible@<servername>%`| Number of players not vanished connected to a server _(Updates every 5 seconds, PV required)_ |
|`%max@<servername>%`| Maximum number of players connected to a server _(Updates every 5 seconds)_ |
|`%version@<servername>%`| Game version of a server _(Updates every 5 seconds)_ |
|`%name@<servername>%`| Name of a server _(Updates every 5 seconds)_ |
|`%motd@<servername>%`| MOTD of a server _(Updates every 5 seconds)_ |
|`%plugin_description@<pluginname>%`| The description of a plugin |
|`%plugin_version@<pluginname>%`| The version of a plugin |
|`%plugin_main@<pluginname>%`| The main class of a plugin |
|`%plugin_author@<pluginname>%`| The author of a plugin |
|`%plugin_depends@<pluginname>%`| The dependencies of a plugin |
|`%plugin_softdepends@<pluginname>%`| The soft-dependencies of a plugin |


## Permissions

The default permission to open a GUI is `bungeegui.gui.<guiname>`. You can override this in the config of each GUI.
The permission to reload the plugin is `bungeegui.command.reload`.
The default permission to open a GUI is `protogui.gui.<guiname>`. You can override this in the config of each GUI.
The permission for each of the utility commands is `protogui.command.<command>`. You can see the complete list in-game by typing `/pgui`.

## API Usage

BungeeGUI provides an API which you can use to open and close GUIs for players and more. You can obtain the API instance with `BungeeGuiAPI.getInstance()`.
As the plugin was previously called BungeeGUI, the old API class had a different package, which is now deprecated, but bridging is provided for a smooth transition until a future version. **The old API class is now deprecated.**

ProtoGUI provides an API which you can use to open and close GUIs for players and more. You can obtain the API instance with `ProtoGuiAPI.getInstance()`.

All available methods have JavaDocs provided in `ProtoGuiAPI.java`. [Click here](https://github.com/DaniFoldi/ProtoGUI/blob/main/src/main/java/com/danifoldi/protogui/main/ProtoGuiAPI.java) to see the available methods and how to use them.

Usage with Gradle:
```groovy
maven { url 'https://repo.danifoldi.com/maven-releases/' }
implementation 'com.danifoldi:ProtoGUI:2.4.1'
```

All available methods have JavaDocs provided in `BungeeGuiAPI.java`. [Click here](https://github.com/DaniFoldi/BungeeGUI/blob/main/src/main/java/com/danifoldi/bungeegui/main/BungeeGuiAPI.java) to see the available methods and how to use them.
Usage with Maven: use Gradle.

## Notes

@@ -90,7 +201,7 @@ What I can guarantee however, is that leaving a 1* review won't get you far. Ple

## License, terms

The plugin is licensed under the GNU GPL v3.0 license. [check here](https://github.com/DaniFoldi/BungeeGUI/blob/main/LICENSE)
The plugin is licensed under the GNU GPL v3.0 license. [check here](https://github.com/DaniFoldi/ProtoGUI/blob/main/LICENSE)

For non-coders:
- don't claim the plugin as yours
Loading