Map<String,BukkitRunnable> runningCountdown=Collections.synchronizedMap(new HashMap<String,BukkitRunnable());
getServer().getPluginManager().callEvent(new AsyncPlayerChatEvent(boolean async, Player who, String message, Set<Player> players))
Do you think...
You can't just open an inventory when an inventory has just closed, you'll have to wait.
Try use ItemMenu, it solves such problems, grants a...
See if this works for you
I think that the event might be first triggered twice and then in the next tick, handled twice.
Add an int and increase it in the end of the...
I'm not sure, try player.updateInventory() ?
Thanks, I didn't find that.
However I think my plugin do has some features that it doesn't have:p
BTW, do you think this plugin/API will be useful?
I don't know if this simple plugin fits in this place:p
This plugin provides the ability for other plugins to create custom menu for...
I think it may use two InventoryClickEvent, first check left click on coal and add a flag to the player, then check if he clicked an ore in the...
PLUS: thread safety is kind of killing me.
There are thread-safe methods in Bukkit API
Use long every time with time
The first time I found out about that changing package name was when I was trying to do something with books. To deal with it, I made a book util...
try to use CommandExecutor
public class MyCommandExecutor implements CommandExecutor
I see, maybe I should come up with a new poll with some better choices.
Where can I find inspiration~
I believe freedom equals API size plus degrees of complexity the language can achieve. That is why I used Ruby and provided the full bukkit API....
Separate names with a comma.