Added auto removal of click type after 15 seconds

This commit is contained in:
Eric 2017-06-05 14:20:00 +02:00
parent 8f0d2aaf5f
commit c4e7e5a8ab
4 changed files with 49 additions and 16 deletions

View File

@ -34,6 +34,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -290,7 +291,7 @@ class ShopCommand implements CommandExecutor {
* @param shopType The {@link ShopType}, the shop will have * @param shopType The {@link ShopType}, the shop will have
* @param p The command executor * @param p The command executor
*/ */
private void create(String[] args, ShopType shopType, Player p) { private void create(String[] args, ShopType shopType, final Player p) {
plugin.debug(p.getName() + " wants to create a shop"); plugin.debug(p.getName() + " wants to create a shop");
int amount; int amount;
@ -470,6 +471,14 @@ class ShopCommand implements CommandExecutor {
ClickType.setPlayerClickType(p, new ClickType(EnumClickType.CREATE, product, buyPrice, sellPrice, shopType)); ClickType.setPlayerClickType(p, new ClickType(EnumClickType.CREATE, product, buyPrice, sellPrice, shopType));
plugin.debug(p.getName() + " can now click a chest"); plugin.debug(p.getName() + " can now click a chest");
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_CREATE)); p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_CREATE));
// Remove ClickType after 15 seconds if player has not clicked a chest
new BukkitRunnable() {
@Override
public void run() {
ClickType.removePlayerClickType(p);
}
}.runTaskLater(plugin, 300);
} else { } else {
plugin.debug("Shop pre create event cancelled"); plugin.debug("Shop pre create event cancelled");
} }
@ -479,7 +488,7 @@ class ShopCommand implements CommandExecutor {
* A given player removes a shop * A given player removes a shop
* @param p The command executor * @param p The command executor
*/ */
private void remove(Player p) { private void remove(final Player p) {
plugin.debug(p.getName() + " wants to remove a shop"); plugin.debug(p.getName() + " wants to remove a shop");
ShopPreRemoveEvent event = new ShopPreRemoveEvent(p); ShopPreRemoveEvent event = new ShopPreRemoveEvent(p);
@ -492,13 +501,21 @@ class ShopCommand implements CommandExecutor {
plugin.debug(p.getName() + " can now click a chest"); plugin.debug(p.getName() + " can now click a chest");
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_REMOVE)); p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_REMOVE));
ClickType.setPlayerClickType(p, new ClickType(EnumClickType.REMOVE)); ClickType.setPlayerClickType(p, new ClickType(EnumClickType.REMOVE));
// Remove ClickType after 15 seconds if player has not clicked a chest
new BukkitRunnable() {
@Override
public void run() {
ClickType.removePlayerClickType(p);
}
}.runTaskLater(plugin, 300);
} }
/** /**
* A given player retrieves information about a shop * A given player retrieves information about a shop
* @param p The command executor * @param p The command executor
*/ */
private void info(Player p) { private void info(final Player p) {
plugin.debug(p.getName() + " wants to retrieve information"); plugin.debug(p.getName() + " wants to retrieve information");
ShopPreInfoEvent event = new ShopPreInfoEvent(p); ShopPreInfoEvent event = new ShopPreInfoEvent(p);
@ -511,13 +528,21 @@ class ShopCommand implements CommandExecutor {
plugin.debug(p.getName() + " can now click a chest"); plugin.debug(p.getName() + " can now click a chest");
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_INFO)); p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_INFO));
ClickType.setPlayerClickType(p, new ClickType(EnumClickType.INFO)); ClickType.setPlayerClickType(p, new ClickType(EnumClickType.INFO));
// Remove ClickType after 15 seconds if player has not clicked a chest
new BukkitRunnable() {
@Override
public void run() {
ClickType.removePlayerClickType(p);
}
}.runTaskLater(plugin, 300);
} }
/** /**
* A given player opens a shop * A given player opens a shop
* @param p The command executor * @param p The command executor
*/ */
private void open(Player p) { private void open(final Player p) {
plugin.debug(p.getName() + " wants to open a shop"); plugin.debug(p.getName() + " wants to open a shop");
ShopPreOpenEvent event = new ShopPreOpenEvent(p); ShopPreOpenEvent event = new ShopPreOpenEvent(p);
@ -530,6 +555,14 @@ class ShopCommand implements CommandExecutor {
plugin.debug(p.getName() + " can now click a chest"); plugin.debug(p.getName() + " can now click a chest");
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_OPEN)); p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CLICK_CHEST_OPEN));
ClickType.setPlayerClickType(p, new ClickType(EnumClickType.OPEN)); ClickType.setPlayerClickType(p, new ClickType(EnumClickType.OPEN));
// Remove ClickType after 15 seconds if player has not clicked a chest
new BukkitRunnable() {
@Override
public void run() {
ClickType.removePlayerClickType(p);
}
}.runTaskLater(plugin, 300);
} }
private void removeAll(CommandSender sender, String[] args) { private void removeAll(CommandSender sender, String[] args) {

View File

@ -1039,10 +1039,10 @@ public class LanguageUtils {
messages.add(new LocalizedMessage(LocalizedMessage.Message.AMOUNT_IS_ZERO, langConfig.getString("message.amount-is-zero", "&cAmount must be greater than 0."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.AMOUNT_IS_ZERO, langConfig.getString("message.amount-is-zero", "&cAmount must be greater than 0.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.PRICES_CONTAIN_DECIMALS, langConfig.getString("message.prices-contain-decimals", "&cPrices must not contain decimals."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.PRICES_CONTAIN_DECIMALS, langConfig.getString("message.prices-contain-decimals", "&cPrices must not contain decimals.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_ITEM_IN_HAND, langConfig.getString("message.no-item-in-hand", "&cNo item in hand"))); messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_ITEM_IN_HAND, langConfig.getString("message.no-item-in-hand", "&cNo item in hand")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_CREATE, langConfig.getString("message.click-chest-to-create-shop", "&aClick a chest to create a shop."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_CREATE, langConfig.getString("message.click-chest-to-create-shop", "&aClick a chest within 15 seconds to create a shop.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_REMOVE, langConfig.getString("message.click-chest-to-remove-shop", "&aClick a shop to remove it."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_REMOVE, langConfig.getString("message.click-chest-to-remove-shop", "&aClick a shop within 15 seconds to remove it.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_INFO, langConfig.getString("message.click-chest-for-info", "&aClick a shop to retrieve information."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_INFO, langConfig.getString("message.click-chest-for-info", "&aClick a shop within 15 seconds to retrieve information.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_OPEN, langConfig.getString("message.click-chest-to-open-shop", "&aClick a shop to open it."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.CLICK_CHEST_OPEN, langConfig.getString("message.click-chest-to-open-shop", "&aClick a shop within 15 seconds to open it.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.OPENED_SHOP, langConfig.getString("message.opened-shop", "&aYou opened %VENDOR%'s shop."), Placeholder.VENDOR)); messages.add(new LocalizedMessage(LocalizedMessage.Message.OPENED_SHOP, langConfig.getString("message.opened-shop", "&aYou opened %VENDOR%'s shop."), Placeholder.VENDOR));
messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_BREAK_SHOP, langConfig.getString("message.cannot-break-shop", "&cYou can't break a shop."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_BREAK_SHOP, langConfig.getString("message.cannot-break-shop", "&cYou can't break a shop.")));
messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_SELL_BROKEN_ITEM, langConfig.getString("message.cannot-sell-broken-item", "&cYou can't sell a broken item."))); messages.add(new LocalizedMessage(LocalizedMessage.Message.CANNOT_SELL_BROKEN_ITEM, langConfig.getString("message.cannot-sell-broken-item", "&cYou can't sell a broken item.")));

View File

@ -40,10 +40,10 @@ message.amount-and-price-not-number=&cAnzahl und Preise müssen Zahlen sein.
message.amount-is-zero=&cAnzahl muss größer als 0 sein. message.amount-is-zero=&cAnzahl muss größer als 0 sein.
message.prices-contain-decimals=&cPreise dürfen keine Dezimalen enthalten. message.prices-contain-decimals=&cPreise dürfen keine Dezimalen enthalten.
message.no-item-in-hand=&cKein Item in der Hand. message.no-item-in-hand=&cKein Item in der Hand.
message.click-chest-to-create-shop=&aKlicke auf eine Truhe, um einen Shop zu erstellen. message.click-chest-to-create-shop=&aKlicke innerhalb von 15 Sekunden auf eine Truhe, um einen Shop zu erstellen.
message.click-chest-to-remove-shop=&aKlicke auf einen Shop, um ihn zu entfernen. message.click-chest-to-remove-shop=&aKlicke innerhalb von 15 Sekunden auf einen Shop, um ihn zu entfernen.
message.click-chest-for-info=&aKlicke auf einen Shop, um Informationen über ihn zu bekommen. message.click-chest-for-info=&aKlicke innerhalb von 15 Sekunden auf einen Shop, um Informationen über ihn zu bekommen.
message.click-chest-to-open-shop=&Klicke auf einen Shop, um ihn zu öffnen. message.click-chest-to-open-shop=&Klicke innerhalb von 15 Sekunden auf einen Shop, um ihn zu öffnen.
message.opened-shop=&aDu hast &6%VENDOR%&as Shop geöffnet. message.opened-shop=&aDu hast &6%VENDOR%&as Shop geöffnet.
message.cannot-break-shop=&cDu kannst einen Shop nicht zerstören. message.cannot-break-shop=&cDu kannst einen Shop nicht zerstören.
message.cannot-sell-broken-item=&cDu kannst kein kaputtes Artikel verkaufen. message.cannot-sell-broken-item=&cDu kannst kein kaputtes Artikel verkaufen.

View File

@ -150,16 +150,16 @@ message.prices-contain-decimals=&cPrices must not contain decimals.
message.no-item-in-hand=&cNo item in hand message.no-item-in-hand=&cNo item in hand
# Set the message when the player must click a chest to create a shop. # Set the message when the player must click a chest to create a shop.
message.click-chest-to-create-shop=&aClick a chest to create a shop. message.click-chest-to-create-shop=&aClick a chest within 15 seconds to create a shop.
# Set the message when the player must click a shop to remove it. # Set the message when the player must click a shop to remove it.
message.click-chest-to-remove-shop=&aClick a shop to remove it. message.click-chest-to-remove-shop=&aClick a shop within 15 seconds to remove it.
# Set the message when the player must click a shop to retrieve information. # Set the message when the player must click a shop to retrieve information.
message.click-chest-for-info=&aClick a shop to retrieve information. message.click-chest-for-info=&aClick a shop within 15 seconds to retrieve information.
# Set the message when the player must click a shop to open it. # Set the message when the player must click a shop to open it.
message.click-chest-to-open-shop=&aClick a shop to open it. message.click-chest-to-open-shop=&aClick a shop within 15 seconds to open it.
# Set the message when the player opened a shop. # Set the message when the player opened a shop.
# Usable Placeholders: %VENDOR% # Usable Placeholders: %VENDOR%