Git Product home page Git Product logo

guilds's Introduction

Guilds

Discord

Crowdin

What is Guilds?


The Guilds Project was created to offer a RPG type system to servers. It was inspired by players like you who enjoy creating a fun and exciting environment for your server. Guilds allows players to join interactive groups of other players, forge their own communities on your server, and compete with other guilds for dominance and control.

This plugin is for Minecraft Servers!

For more information, you can check out the wiki!
Looking for the javadocs? You can see them here!

Support


Looking to get support for something? Join the Discord above to get help and discuss with others!

Contributing


Do you want to help the project grow and achieve new goals? You can help us out in many ways!

If you'd like to support our work and buy us a coffee, you could join our Patreon! We totally understand if you can't do that so we have others ways you can help us out too:

  • Are you an active user of the plugin and want to help others with it? Check out the issues page to see if anyone has questions. You could also hop in our Discord and help others out there too!
  • Are you a person who speaks more than one language? Check out our translations page here and see if you can help with your language!
  • Are you a person who also likes to program? If so, you could look through the open issues and see if there's anything you'd ike to PR into the project.

Community Made Addons


Special Thanks

YourKit

YourKit supports open source projects with innovative and intelligent tools
for monitoring and profiling Java and .NET applications.
YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler, and YourKit YouMonitor.

guilds's People

Contributors

bl19 avatar darbyjack avatar dependabot-preview[bot] avatar dependabot[bot] avatar hausergrim avatar igabytm avatar klopotowskip avatar lemmotresto avatar loohp avatar nesroht avatar newzaz avatar prozhong avatar redrield avatar rudde0 avatar simpleauthority avatar vshnv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

guilds's Issues

Be able to accept a pending invite without having to specify the guild name if it is the only pending guild invite you have.

Guilds version 1.7.7-RELEASE

I personally think /guild accept should automatically accept a pending invite if you only have 1 invite from any guild pending. It is a bit silly to force require the guild name to be entered in /guild accept <name> with it being the only invite. Makes sense for a name to be entered if you have multiple invites from various guilds, not so much for just a single guild.


(Random Idea) Maybe in the future, be able to also list all pending invites via /guild check and output it as

  1. Pending invite from Guild1Name
  2. Pending invite from Guild2Name
  3. Pending invite from Guild3Name
  4. Pending invite from Guild4Name

So you can then /guild accept <pendingid>?

NPE whenever someone chats.

Guilds v1.6.6-release.

NPE occurs whenever someone chats publicly in-game.

[04:46:20] [Async Chat Thread - #0/ERROR]: Could not pass event AsyncPlayerChatEvent to Guilds v1.6.6-RELEASE
org.bukkit.event.EventException: null
	at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:46) ~[patched_1.12.jar:git-Paper-1145]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:74) ~[patched_1.12.jar:git-Paper-1145]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.12.jar:git-Paper-1145]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [patched_1.12.jar:git-Paper-1145]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:496) [patched_1.12.jar:git-Paper-1145]
	at net.minecraft.server.v1_12_R1.PlayerConnection.chat(PlayerConnection.java:1339) [patched_1.12.jar:git-Paper-1145]
	at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1254) [patched_1.12.jar:git-Paper-1145]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [patched_1.12.jar:git-Paper-1145]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.lang.NullPointerException
	at me.bramhaag.guilds.listeners.ChatListener.onPlayerChat(ChatListener.java:19) ~[?:?]
	at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor122.execute(Unknown Source) ~[?:?]
	at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) ~[patched_1.12.jar:git-Paper-1145]
	... 12 more

Guild masters are not able to toggle the status of their guild.

Guilds version 1.7.7-RELEASE

Typing /guild status public or /guild status private as the guild leader outputs 'Your role is not high enough to do that!'.

The permission is inherited in the plugin.yml.

  guilds.group.member:
    description: All commands for the Guilds plugin
    children:
      guilds.command.accept: true
      guilds.command.boot: true
      guilds.command.cancel: true
      guilds.command.chat: true
      guilds.command.confirm: true
      guilds.command.create: true
      guilds.command.delete: true
      guilds.command.demote: true
      guilds.command.help: true
      guilds.command.info: true
      guilds.command.invite: true
      guilds.command.leave: true
      guilds.command.prefix: true
      guilds.command.promote: true
      guilds.command.role: true
      guilds.command.version: true
      guilds.command.list: true
      guilds.command.bugreport: true
      guilds.command.home: true
      guilds.command.sethome: true
      guilds.command.inspect: true
      guilds.command.status: true
      guilds.command.vault: true
      guilds.command.ally: true
      guilds.command.transfer: true
      guilds.command.buff: true
      guilds.command.decline: true
      guilds.command.check: true
    default: true

The default config allows guild masters to toggle-guild by default, but this does not function whatsoever.

roles:
  0:
    name: "GuildMaster"
    permissions:
      chat: false
      ally-chat: false
      invite: true
      kick: true
      promote: true
      demote: true
      add-ally: true
      remove-ally: true
      change-prefix: true
      change-home: true
      change-master: true
      remove-guild: true
      toggle-guild: true
      open-vault: false
      transfer-guild: true
      activate-buff: false

  1:
    name: "Officer"
    permissions:
      chat: false
      ally-chat: false
      invite: true
      kick: true
      promote: true
      demote: true
      add-ally: true
      remove-ally: true
      change-prefix: false
      change-home: true
      change-master: false
      remove-guild: false
      toggle-guild: false
      open-vault: false
      transfer-guild: false
      activate-buff: false

  2:
    name: "Veteran"
    permissions:
      chat: false
      ally-chat: false
      invite: true
      kick: false
      promote: false
      demote: false
      add-ally: false
      remove-ally: false
      change-prefix: false
      change-master: false
      remove-guild: false
      toggle-guild: false
      open-vault: false
      transfer-guild: false
      activate-buff: false

  3:
    name: "Member"
    permissions:
      chat: false
      ally-chat: false
      invite: false
      kick: false
      promote: false
      demote: false
      add-ally: false
      remove-ally: false
      change-prefix: false
      change-master: false
      remove-guild: false
      toggle-guild: false
      open-vault: false
      transfer-guild: false
      activate-buff: false

You are able to invite someone multiple times, thus inputting their UUID data into the guilds.json multiple times.

Guilds version 1.7.7-RELEASE

Going through my guilds.json file, I noticed the invitedMembers list had people entered numerous times. I'm assuming because you are able to invite someone multiple times? Fix would be to only allow a person to be invited once by that guild until they either accept or reject the invite (to theoretically remove the data entry to allow for it to be inputted again if not existing as part of the guild).

Alternatively if you can't invite people multiple times (untested), could it be cloning the invited members on restart / load to preserve pending, or re-adding every time someone reconnects while it is still pending?

    "invitedMembers": [
      "c8fc41bd-b759-40ee-b033-e7fd2893561b",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "486bb653-c847-400c-90b3-6a67a5498c00",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "89ffa259-be5e-469b-860e-3cef9316f926",
      "89ffa259-be5e-469b-860e-3cef9316f926",
      "d4abf3f8-ad78-458d-9cbb-d61275440493",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "f5e8d88d-504f-44a4-8381-dcfcccf7819d",
      "2a337e1f-68c3-4b42-891d-6364a9811bb0"
    ],

Multi-Named Guilds

Posting it here as a suggestion/enhancement:

Allowing the naming of Guilds with more than one word, with Spaces.

Instead of "SpigotGuild" you could name it "Spigot Guild" etc.

Command to send a request to join a guild that messages all members who have invite role permissions.

Would it be possible to add a command to send a join request notice to all members online in a guild that have invite role permissions?

i.e.

  • Player is looking through the active guilds list and sees a private guild he wants to join.
  • Player types /guild join <guild> (or another equivalent command) to send a join request to the private guild.
  • All members part of that guild who are in a role that can invite players (Guild Leader / Officer) get a request that the person would like to join their guild.
  • Timeout the request if there is no response so the request is not forever pending.
  • If no one is online in the guild that can invite players, output to the player that no one with invite capability is online at this time or to mail them / something equivalent.

This avoids having a log requests to a file with users forever stuck in it and may avoid people asking in chat if anyone can invite them to that specific guild, assuming it isn't public.

NullPointException on guild decline.

Player had a guild invite, player accepted the guild invite, then player tried /guild decline without specifying anything after.

[21:03:16] [Server thread/INFO]: player issued server command: /guild decline
[21:03:16] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'town' in plugin Guilds v1.7.2-RELEASE
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.jar:git-Paper-1153]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.12.jar:git-Paper-1153]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:670) ~[patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1424) ~[patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1229) ~[patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.jar:git-Paper-1153]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_141]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_141]
	at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:842) [patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) [patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:766) [patched_1.12.jar:git-Paper-1153]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:664) [patched_1.12.jar:git-Paper-1153]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141]
Caused by: java.lang.NullPointerException
	at me.glaremasters.guilds.commands.CommandCancel.execute(CommandCancel.java:22) ~[?:?]
	at me.glaremasters.guilds.commands.base.CommandHandler.onCommand(CommandHandler.java:78) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.jar:git-Paper-1153]
	... 15 more

Option to completely disable the GuildDamageListener.

Guilds version 1.7.7-RELEASE

Despite this setting being turned on, players in the same guild are unable to damage each other in my pvp arenas (Duel, CTF, etc.) in another world (void world) if they are part of the same guild.

# Change this to true if you want to allow players in the same guild to damage each other.
allow-guild-damage: true

Would it be possible to add an option to just completely disable the GuildDamageListener to avoid the Guilds plugin from trying to prevent any damage events whatsoever?

Upon Updating Guilds - Guild database/names all disappear.

Upon updating to the new Guilds, history/information/database(Whatever you're referencing it to): All the Guilds are wiped.

Old Plugin: Had Guild named SpigotGuild, upon updating it to the Guild Banks update, all Guilds in the server were wiped/deleted.

CommandException on '/guild info' command.

Guilds version 1.7.7-RELEASE

/guild info command does not function. Only outputs an internal error occurred in chat with this exception in console.

[02:12:42] [Server thread/INFO]: player issued server command: /guild info
[02:12:42] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'guild' in plugin Guilds v1.7.7-RELEASE
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.1.jar:git-Paper-1172]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.12.1.jar:git-Paper-1172]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:666) ~[patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1425) ~[patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1230) ~[patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.1.jar:git-Paper-1172]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_144]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_144]
	at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:843) [patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424) [patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [patched_1.12.1.jar:git-Paper-1172]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [patched_1.12.1.jar:git-Paper-1172]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.rangeCheck(ArrayList.java:653) ~[?:1.8.0_144]
	at java.util.ArrayList.set(ArrayList.java:444) ~[?:1.8.0_144]
	at me.glaremasters.guilds.commands.CommandInfo.execute(CommandInfo.java:101) ~[?:?]
	at me.glaremasters.guilds.commands.base.CommandHandler.onCommand(CommandHandler.java:81) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.1.jar:git-Paper-1172]
	... 15 more

IOException when loading Guilds without default files existing.

[03:14:50] [Server thread/INFO]: [Guilds] Enabling Guilds v1.7.1-RELEASE
[03:14:50] [Server thread/WARN]: java.io.IOException: The system cannot find the path specified
[03:14:50] [Server thread/WARN]: 	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[03:14:50] [Server thread/WARN]: 	at java.io.File.createNewFile(Unknown Source)
[03:14:50] [Server thread/WARN]: 	at me.glaremasters.guilds.database.databases.json.Json.initialize(Json.java:49)
[03:14:50] [Server thread/WARN]: 	at me.glaremasters.guilds.Main.setDatabaseType(Main.java:304)
[03:14:50] [Server thread/WARN]: 	at me.glaremasters.guilds.Main.onEnable(Main.java:97)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:380)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:329)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:441)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:402)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:340)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:615)
[03:14:50] [Server thread/WARN]: 	at java.lang.Thread.run(Unknown Source)
[03:14:50] [Server thread/WARN]: java.io.IOException: The system cannot find the path specified
[03:14:50] [Server thread/WARN]: 	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[03:14:50] [Server thread/WARN]: 	at java.io.File.createNewFile(Unknown Source)
[03:14:50] [Server thread/WARN]: 	at me.glaremasters.guilds.database.databases.json.Json.initialize(Json.java:60)
[03:14:50] [Server thread/WARN]: 	at me.glaremasters.guilds.Main.setDatabaseType(Main.java:304)
[03:14:50] [Server thread/WARN]: 	at me.glaremasters.guilds.Main.onEnable(Main.java:97)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:380)
[03:14:50] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:329)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:441)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:402)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:340)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290)
[03:14:50] [Server thread/WARN]: 	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:615)
[03:14:50] [Server thread/WARN]: 	at java.lang.Thread.run(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: java.io.FileNotFoundException: plugins\Guilds\data\guilds.json (The system cannot find the path specified)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.io.FileInputStream.open0(Native Method)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.io.FileInputStream.open(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.io.FileInputStream.<init>(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.io.FileReader.<init>(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at me.glaremasters.guilds.database.databases.json.Json.lambda$getGuilds$5(Json.java:102)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at co.aikar.taskchain.TaskChainTasks$FirstTask.run(TaskChainTasks.java:55)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at co.aikar.taskchain.TaskChain$TaskHolder.run(TaskChain.java:1203)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at co.aikar.taskchain.TaskChain$TaskHolder.access$100(TaskChain.java:1157)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at co.aikar.taskchain.TaskChain.lambda$nextTask$19(TaskChain.java:1078)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.util.concurrent.FutureTask.run(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 0/WARN]: 	at java.lang.Thread.run(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: java.io.FileNotFoundException: plugins\Guilds\data\leaderboards.json (The system cannot find the path specified)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.io.FileInputStream.open0(Native Method)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.io.FileInputStream.open(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.io.FileInputStream.<init>(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.io.FileReader.<init>(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at me.glaremasters.guilds.database.databases.json.Json.lambda$getLeaderboards$14(Json.java:160)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at co.aikar.taskchain.TaskChainTasks$FirstTask.run(TaskChainTasks.java:55)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at co.aikar.taskchain.TaskChain$TaskHolder.run(TaskChain.java:1203)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at co.aikar.taskchain.TaskChain$TaskHolder.access$100(TaskChain.java:1157)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at co.aikar.taskchain.TaskChain.lambda$nextTask$19(TaskChain.java:1078)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.util.concurrent.FutureTask.run(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[03:14:50] [TaskChainAsyncQueue Thread 1/WARN]: 	at java.lang.Thread.run(Unknown Source)
[03:14:50] [Server thread/INFO]: [Guilds] Configuration file reloaded!

Be able to accept a guild invite without having to specify the name with '/guild accept' if it is the only pending invite available and implement a command to list all pending invites / turn down invite requests.

I personally think /guild accept should automatically accept a guild invite if you only have 1 pending invite. Otherwise require players to specify a guild to accept if you have multiple pending invites for guilds you can join.

Perhaps also implement a command to see all active pending invites instead of only on login and a command to turn down a guild invite as well so it isn't permanently pending?

Allow '/guild accept' without guild name if it is the only pending invite.

Third time's the charm? Asking again since there wasn't really a definitive answer in the other tickets.
#30
#34

/guild accept should automatically accept a pending invite if you only have 1 invite from any guild pending. It is a bit silly to force the guild name to be entered in /guild accept <name> with it being the only invite. While it makes sense to specify a name when you have multiple invites, it is more tedious for the end user when they only have a single invite.

NullPointerException getSkullsPage on guild list.

Guilds v1.8.4-BETA dev 60

NPE occurs when typing /guilds list. Related to #46 where NPE occurs when it can't find a player by their UUID?

[20:23:46] [Server thread/INFO]: mibby issued server command: /guilds list
[20:23:46] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'town' in plugin Guilds v1.8.4-BETA
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.1.jar:git-Paper-1190]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.12.1.jar:git-Paper-1190]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:672) ~[patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1425) ~[patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1230) ~[patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.1.jar:git-Paper-1190]
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
	at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
	at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:843) [patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424) [patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [patched_1.12.1.jar:git-Paper-1190]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [patched_1.12.1.jar:git-Paper-1190]
	at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
	at java.lang.String.replace(Unknown Source) ~[?:1.8.0_144]
	at me.glaremasters.guilds.commands.CommandList.getSkullsPage(CommandList.java:91) ~[?:?]
	at me.glaremasters.guilds.commands.CommandList.execute(CommandList.java:135) ~[?:?]
	at me.glaremasters.guilds.commands.base.CommandHandler.onCommand(CommandHandler.java:81) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.1.jar:git-Paper-1190]
	... 15 more

Guild leader skulls do not update until after you open the guild list

Guilds dev 73

  • Opened the guild list for the first time since reboot via /guild list
    link
  • All guild leader skulls were default steve / alex except one person (who wasn't even online).
  • Closed the GUI and typed /guild list again, the skulls updated.
    link2

Would it be possible to force update the skulls with the corresponding UUID skin prior to the GUI being opened? Or keep a local guild-skulldata cache that refreshes when the command is ran? i.e.

  • /guild list
  • Skull data gets updated / loads recent update from cache
  • GUI pops up

Rather than have to type the command twice to get heads to display properly.

MySQL not initializing saved guilds in the sql tables at start-up.

Guilds v1.6.1-RELEASE

Guilds do not seem to be loading from the sql database on server restart / initialization. When a guild is created, it is kept in cache and functions fine. As soon as the server restarts and re-initializes, the guild no longer exists and players are no longer part of it despite there being sql tables for it.

Reloading config does not reinitialize changed role settings.

Reloading via /guild reload does not reinitialize changed role permission settings. So you can't enable or disable settings on the fly, i.e. if you wanted to change access to vault from allow to deny.

roles:
  0:
    name: "GuildMaster"
    permissions:
      open-vault: false

Deleted guilds are still registered as active in the cache.

Guilds v1.6.1-RELEASE
MySQL database.

  • Player created a guild named test.
  • It created an sql table with the name test.
  • Player then attempted to delete the guild via /guilds delete
  • It asked to confirm via /guilds confirm.
  • Then it outputted and confirmed via the output test deleted.
  • Player is still part of the guild test per the command /towns info, but the sql tables no longer have the guild 'test' existing. So it is kept in memory / cache as an initialized guild despite being deleted, not refreshing registered guilds and players part of it when deleted?

Ability to remove all hardcoded alias references to allow for renaming.

Guilds v1.6.1-RELEASE

I was also wondering if it was possible to remove all hardcoded references to the word 'guild'. I'm trying to rename things to town instead as I don't want people to mistake Guilds for factions, but it seems to be hardcoded all over the place. Even the prefix didn't change when reloading the config.

English.yml
http://paste.ubuntu.com/25018448/

Config.yml
http://paste.ubuntu.com/25018450/

Plugin.yml
http://paste.ubuntu.com/25018454/

version 1.7.10 kc server Can not load

If you do not understand what I am saying Please use this translation (https://translate.google.com/)

[20:03:41] [Server thread/INFO]: [Guilds] Enabling Guilds v1.8.6-RELEASE
[20:03:41] [Server thread/ERROR]: Error occurred while enabling Guilds v1.8.6-RELEASE (Is it up to date?)
java.lang.NoClassDefFoundError: me/glaremasters/guilds/database/databases/json/Json$1
at me.glaremasters.guilds.database.databases.json.Json.initialize(Json.java:43) ~[?:?]
at me.glaremasters.guilds.Main.setDatabaseType(Main.java:389) ~[?:?]
at me.glaremasters.guilds.Main.onEnable(Main.java:132) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) ~[JavaPlugin.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:368) [JavaPluginLoader.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:410) [SimplePluginManager.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:415) [CraftServer.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:349) [CraftServer.class:1.7.10-R0.1-SNAPSHOT]
at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:507) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:481) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:441) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:353) [lt.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:627) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_102]
Caused by: java.lang.ClassNotFoundException: Failed to remap class me.glaremasters.guilds.database.databases.json.Json$1
at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:493) ~[PluginClassLoader.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:414) ~[PluginClassLoader.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:211) ~[PluginClassLoader.class:1.7.10-R0.1-SNAPSHOT]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_102]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_102]
... 14 more
Caused by: java.lang.NoClassDefFoundError: guava10/com/google/common/reflect/TypeToken
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_102]
at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_102]
at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0_102]
at org.bukkit.plugin.java.PluginClassLoader.remappedFindClass(PluginClassLoader.java:481) ~[PluginClassLoader.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:414) ~[PluginClassLoader.class:1.7.10-R0.1-SNAPSHOT]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:211) ~[PluginClassLoader.class:1.7.10-R0.1-SNAPSHOT]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_102]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_102]
... 14 more`

Enhancement: Guild-Assigned Permission Nodes/Specialties. /cooldown

Guild Master etc, anything in relation to the hierarchy of the Guild is not able to be assigned permission nodes.

Example:

Guild Rank has to be X level to obtain X Specialty in the Guild.

Specialties:(Example, customization allowed in the Config):

At Lv3/rank 3 Guild, "Blacksmith" "Archer" and "Swordsman" subclasses/specialties would be unlocked. These are custom, edited by the admin in the config. (Predetermined, and Guild Members/Leaders have no control over these subclasses/types/classes/etc).

Blacksmith would allow a player to have access to the MCMMO Skills: Fishing, Arcane Salvaging, and Repair. You would assign those permission nodes to the "Blacksmith" specialty/class whatever you wish to refer to it as. So only players placed as a "Blacksmith" in the Guild, would have access to those skills.

Archer, would have access to Alchemy, and obviously Archery Permissions from MCMMO, allowing them to use the skills, and effects they obtain from leveling those skills, but not the skills of the Blacksmith, because they can only have one specialty at a time/class etc/type.

So forth with Swordsman having swords-related permission nodes.

Make it so the player chooses what subclass they join when they join the Guild, so a Guild member can not troll them, causing the Guild member to want to leave the Guild.

Add: Cooldown for when a player can rejoin another Guild, so they can not abuse the above, and rejoin Guilds over and over and over, or remake Guilds over and over just to access specific permission nodes/skills/abilities/benefits.

JSON chat output on guild list GUI click.

With a split message of Join Guild | Inspect Guild to click in chat an option to either join the guild or inspect it for further chat output / info about the guild. So if you had some GUI hover info disabled, you could see the full guild details with member list in chat when clicking on that guild.

Language string for disbanding guild.

Perhaps add a language string when a guild leader disbands the guild rather than just state they left the guild? As it outputs twice that they left.

link

Could not save language.yml because it already exists warning.

Guilds v1.6.3

Is this verbose output / warning necessary at startup?

[15:32:04] [Server thread/WARN]: [Guilds] Could not save english.yml to plugins/Guilds/english.yml because english.yml already exists.
[15:32:04] [Server thread/WARN]: [Guilds] Could not save chinese.yml to plugins/Guilds/chinese.yml because chinese.yml already exists.
[15:32:04] [Server thread/WARN]: [Guilds] Could not save french.yml to plugins/Guilds/french.yml because french.yml already exists.
[15:32:04] [Server thread/WARN]: [Guilds] Could not save dutch.yml to plugins/Guilds/dutch.yml because dutch.yml already exists.
[15:32:04] [Server thread/WARN]: [Guilds] Could not save japanese.yml to plugins/Guilds/japanese.yml because japanese.yml already exists.
[15:32:04] [Server thread/WARN]: [Guilds] Could not save swedish.yml to plugins/Guilds/swedish.yml because swedish.yml already exists.

Should check ticket and avoid setting item air

TicketListener.java#L42
When I have 64 upgrade tickets, all of them will be deleted but my guild levels 1 up

And maybe should check more than ticket's display name, like material type, lore

CommandException: Unhandled exception executing command

Guilds dev 40

[16:58:20] [Server thread/INFO]: player issued server command: /guild admin info Aurora
[16:58:20] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'guild' in plugin Guilds v1.8.2-BETA
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.1.jar:git-Paper-1178]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.12.1.jar:git-Paper-1178]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:672) ~[patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1425) ~[patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1230) ~[patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.1.jar:git-Paper-1178]
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
	at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
	at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:843) [patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424) [patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [patched_1.12.1.jar:git-Paper-1178]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [patched_1.12.1.jar:git-Paper-1178]
	at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
	at java.lang.String.replace(Unknown Source) ~[?:1.8.0_144]
	at me.glaremasters.guilds.message.Message.replace(Message.java:85) ~[?:?]
	at me.glaremasters.guilds.commands.CommandAdmin.execute(CommandAdmin.java:116) ~[?:?]
	at me.glaremasters.guilds.commands.base.CommandHandler.onCommand(CommandHandler.java:78) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.1.jar:git-Paper-1178]
	... 15 more
  "Aurora": {
    "prefix": "AR",
    "members": [
      {
        "uuid": "72c34e55-b89a-49b4-9db0-0a1c8a1a0675",
        "role": 0
      },
      {
        "uuid": "8a6e81b5-22f2-4de4-a6c2-19761a2132f9",
        "role": 1
      },
      {
        "uuid": "cbbb484d-30b6-4f4b-9644-bc5cf37d8317",
        "role": 3
      }
    ],
    "allies": [
      "VilleDuFleur"
    ],
    "invitedMembers": [],
    "pendingAllies": []
  },

Language file resets on server restart.

Guilds v1.6.1-RELEASE

If you make changes to the english.yml language file and reload via /guilds reload, it initializes the changes. However when the server restarts and the plugin reinitializes, the language file resets back to default.

NullPointerException on admin info.

Guilds v1.6.1-RELEASE
Using MySQL database.

NPE due to can't find guild?

[14:58:56] [Server thread/INFO]: player issued server command: /town admin info Andcrew
[14:58:56] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'town' in plugin Guilds v1.6.1-RELEASE
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.jar:git-Paper-1143]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.12.jar:git-Paper-1143]
	at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:669) ~[patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1424) ~[patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1229) ~[patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.jar:git-Paper-1143]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_131]
	at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:842) [patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) [patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:766) [patched_1.12.jar:git-Paper-1143]
	at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:664) [patched_1.12.jar:git-Paper-1143]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.lang.NullPointerException
	at me.bramhaag.guilds.commands.CommandAdmin.execute(CommandAdmin.java:106) ~[?:?]
	at me.bramhaag.guilds.commands.base.CommandHandler.onCommand(CommandHandler.java:74) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.jar:git-Paper-1143]
	... 15 more

Disallow page sorting when no additional pages are needed.

Bit silly to allow people to traverse to page 300 when there aren't even enough guilds to fill up the first page.

May also be nice to update the GUI to display what page you are on at the top of the container with a placeholder if it is possible. I.e. Guild List - %page%

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.