diff --git a/resources/languages/de.yml b/resources/languages/de.yml index 37042f2..6f98c70 100644 --- a/resources/languages/de.yml +++ b/resources/languages/de.yml @@ -30,6 +30,8 @@ CMD_Configname_Error: '&cDu hast kein Item in der Hand' CMD_UnLabel: '&aDas Label wurde entfernt' CMD_Static: '&aTrank ist nun unveränderlich und kann nicht weiter gereift oder destilliert werden.' CMD_NonStatic: '&eTrank ist wieder veränderlich und kann normal gereift oder destilliert werden' +CMD_Drink: '&aDu trinkst &v1' +CMD_DrinkOther: '&a&v1 trinkt &v2' # Error Error_ConfigUpdate: 'Unbekannte Brewery Config Version: v&v1, Config wurde nicht geupdated!' @@ -73,7 +75,8 @@ Help_WakeupRemove: '&6/brew Wakeup Remove &9Entfernt einen Aufwachpunkt' Help_Static: '&6/brew Static &9Trank unveränderlich machen -> Kein weiteres reifen oder destillieren möglich' Help_Create: '&6/brew Create [Qualität] [Spieler] &9Erstellt einen Trank mit optionaler Qualität (1-10)' Help_Give: '&6/brew give [Qualität] [Spieler] &9Alias für /brew create' -Help_Puke: '&6/brew puke [Spieler] [Menge] &9Bringt dich, oder [Player] zum erbrechen' +Help_Puke: '&6/brew puke [Spieler] [Menge] &9Bringt [Spieler] zum erbrechen' +Help_Drink: '&6/brew drink [Qualität] [Spieler] &9Simuliert das Trinken eines Trankes bei [Spieler]' # Permission Perms_NoBarrelCreate: '&cDu hast keine Rechte Fässer zu erstellen!' diff --git a/resources/languages/en.yml b/resources/languages/en.yml index a05f93c..e1724aa 100644 --- a/resources/languages/en.yml +++ b/resources/languages/en.yml @@ -30,6 +30,8 @@ CMD_Configname: '&aName for the Config is: &f&v1' CMD_Configname_Error: '&cCould not find item in your hand' CMD_Static: '&aPotion is now static and will not change in barrels or brewing stands.' CMD_UnLabel: '&aLabel removed!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Error Error_ConfigUpdate: 'Unknown Brewery config version: v&v1, config was not updated!' @@ -74,6 +76,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9Teleports to the wakeup p Help_WakeupList: '&6/brew wakeup list [World]&9 Lists all wakeup points of ' Help_WakeupRemove: '&6/brew wakeup remove &9Removes the wakeup point with ' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Perms Perms_NoBarrelCreate: '&cYou don''t have permissions to create barrels!' diff --git a/resources/languages/es.yml b/resources/languages/es.yml index 4073554..7e09418 100644 --- a/resources/languages/es.yml +++ b/resources/languages/es.yml @@ -31,6 +31,8 @@ CMD_Configname: '&aEl nombre de la configuración es: &f&v1' CMD_Configname_Error: '&cNo se pudo encontrar el artículo en tu mano' CMD_Static: '&aLa poción ahora es estática y no cambiará en barriles o puestos de elaboración.' CMD_UnLabel: '&aEtiqueta eliminada!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Error Error_ConfigUpdate: 'Versión de configuración de Brewery desconocida: v&v1, ¡la configuración no se actualizó!' @@ -75,6 +77,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9Teletransporta al punto d Help_WakeupList: '&6/brew wakeup list [Mundo]&9 Enumera todos los puntos de activación del ' Help_WakeupRemove: '&6/brew wakeup remove &9Elimina el punto de activación con ' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Perms Perms_NoBarrelCreate: '&c¡No tienes permisos para crear barriles!' diff --git a/resources/languages/fr.yml b/resources/languages/fr.yml index 783c9f2..91c20d6 100644 --- a/resources/languages/fr.yml +++ b/resources/languages/fr.yml @@ -30,6 +30,8 @@ CMD_Configname: '&aName for the Config is: &f&v1' CMD_Configname_Error: '&cN´a pas pu trouver d´objet dans votre main' CMD_Static: '&aLa boisson est maintenant statique et ne changera pas dans les barils ou les stands d´alchimie.' CMD_UnLabel: '&aLabel supprimé!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Erreurs Error_ConfigUpdate: 'La version de la configuration de Brewery est inconnue: v&v1, la config n´a pas été mise à jour !' @@ -74,6 +76,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9Téléportation vers le p Help_WakeupList: '&6/brew wakeup list [World]&9 Affiche une liste de tous les points de réveil de [world]' Help_WakeupRemove: '&6/brew wakeup remove &9Enlève le point de réveil avec l´ID ' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Permissions Perms_NoBarrelCreate: '&cVous n´avez pas la permission de créer des barils !' diff --git a/resources/languages/it.yml b/resources/languages/it.yml index 6900c2c..e7d9b28 100755 --- a/resources/languages/it.yml +++ b/resources/languages/it.yml @@ -30,6 +30,8 @@ CMD_Configname: '&aName for the Config is: &f&v1' CMD_Configname_Error: '&cCould not find item in your hand' CMD_Static: '&aLa pozione è ora statica e non cambierà né nei barili né negli alambicchi.' CMD_UnLabel: '&aEtichetta rimossa!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Errori Error_ConfigUpdate: 'Versione della configurazione di Brewery sconosciuta: v&v1, la configurazione non è stato aggiornata!' @@ -74,6 +76,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9Ti teletrasporta al punto Help_WakeupList: '&6/brew wakeup list &9 Elenca tutti i punti di risveglio di ' Help_WakeupRemove: '&6/brew wakeup remove &9Rimuove il punto di risveglio con id ' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Permessi Perms_NoBarrelCreate: '&cNon hai il permesso di costruire barili!' diff --git a/resources/languages/ru.yml b/resources/languages/ru.yml index 1609642..acb8968 100644 --- a/resources/languages/ru.yml +++ b/resources/languages/ru.yml @@ -30,6 +30,8 @@ CMD_Configname: '&aName for the Config is: &f&v1' CMD_Configname_Error: '&cНет предмета в руке.' CMD_Static: '&aБражка заморожена и не будет портиться в бочках.' CMD_UnLabel: '&aLabel removed!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Error Error_ConfigUpdate: 'Неизвестная версия конфига Brewery: v&v1, конфиг не обновлён!' @@ -74,6 +76,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9Телепортация Help_WakeupList: '&6/brew wakeup list [World]&9 Список всех точек пробуждения в ' Help_WakeupRemove: '&6/brew wakeup remove &9Удаление всех точек пробуждения с айди ' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Perms Perms_NoBarrelCreate: '&cУ тебя нет прав на создание бочек!' diff --git a/resources/languages/tw.yml b/resources/languages/tw.yml index 61cea74..8898846 100644 --- a/resources/languages/tw.yml +++ b/resources/languages/tw.yml @@ -30,6 +30,8 @@ CMD_Configname: '&aName for the Config is: &f&v1' CMD_Configname_Error: '&cCould not find item in your hand' CMD_Static: '&a藥水現在是靜止的,不會在桶或釀造台上變化.' CMD_UnLabel: '&a標籤已刪除!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Error Error_ConfigUpdate: '未知 釀酒 設定檔版本: v&v1,設定檔沒有更新!' @@ -74,6 +76,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9使用傳送到喚醒 Help_WakeupList: '&6/brew wakeup list <頁數> [World]&9 列出的所有喚醒點' Help_WakeupRemove: '&6/brew wakeup remove &9使用刪除喚醒點' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Perms Perms_NoBarrelCreate: '&c您沒有權限創建釀造桶!' diff --git a/resources/languages/zh.yml b/resources/languages/zh.yml index 9edea35..8bd0c37 100644 --- a/resources/languages/zh.yml +++ b/resources/languages/zh.yml @@ -30,6 +30,8 @@ CMD_Configname: '配置文件中&aName的名字是: &f&v1' CMD_Configname_Error: '&c无法找到物品名称' CMD_Static: '&a饮品已被静滞, 现在其无法被蒸馏或进行木桶熟成.' CMD_UnLabel: '&a标签已被去除!' +CMD_Drink: '&aYou drank one &v1' +CMD_DrinkOther: '&a&v1 drinks one &v2' # Error Error_ConfigUpdate: '未知的配置版本:v&v1, 插件配置未更新!' @@ -74,6 +76,7 @@ Help_WakeupCheckSpecific: '&6/brew wakeup check &9传送至指定苏醒处. Help_WakeupList: '&6/brew wakeup list <页数> [世界] &9列出该世界所有的苏醒处.' Help_WakeupRemove: '&6/brew wakeup remove <页数> &9移除指定id的苏醒处.' Help_Puke: '&6/brew puke [Player] [Amount] &9Makes you or [Player] puke' +Help_Drink: '&6/brew drink [Quality] [Player] &9Simulates [Player] drinking a Brew' # Perms Perms_NoBarrelCreate: '&c你没有权限创造木桶!' diff --git a/src/com/dre/brewery/BPlayer.java b/src/com/dre/brewery/BPlayer.java index 711f717..1e03e20 100644 --- a/src/com/dre/brewery/BPlayer.java +++ b/src/com/dre/brewery/BPlayer.java @@ -161,12 +161,14 @@ public class BPlayer { bPlayer = addPlayer(player); } BrewDrinkEvent drinkEvent = new BrewDrinkEvent(brew, meta, player, bPlayer); - P.p.getServer().getPluginManager().callEvent(drinkEvent); - if (drinkEvent.isCancelled()) { - if (bPlayer.drunkeness <= 0) { - bPlayer.remove(); + if (meta != null) { + P.p.getServer().getPluginManager().callEvent(drinkEvent); + if (drinkEvent.isCancelled()) { + if (bPlayer.drunkeness <= 0) { + bPlayer.remove(); + } + return false; } - return false; } if (brew.hasRecipe()) { diff --git a/src/com/dre/brewery/Brew.java b/src/com/dre/brewery/Brew.java index 1a580e5..0174dfb 100644 --- a/src/com/dre/brewery/Brew.java +++ b/src/com/dre/brewery/Brew.java @@ -779,7 +779,7 @@ public class Brew implements Cloneable { * @param recipe Recipe is required if the brew doesn't have a currentRecipe * @return The created Item, null if the Event is cancelled */ - public ItemStack createItem(BRecipe recipe) { + public ItemStack createItem(@Nullable BRecipe recipe) { return createItem(recipe, true); } @@ -791,7 +791,7 @@ public class Brew implements Cloneable { * @return The created Item, null if the Event is cancelled */ @Contract("_, false -> !null") - public ItemStack createItem(BRecipe recipe, boolean event) { + public ItemStack createItem(@Nullable BRecipe recipe, boolean event) { if (recipe == null) { recipe = getCurrentRecipe(); } diff --git a/src/com/dre/brewery/listeners/CommandListener.java b/src/com/dre/brewery/listeners/CommandListener.java index 31d699c..d729850 100644 --- a/src/com/dre/brewery/listeners/CommandListener.java +++ b/src/com/dre/brewery/listeners/CommandListener.java @@ -7,6 +7,7 @@ import com.dre.brewery.recipe.BRecipe; import com.dre.brewery.recipe.Ingredient; import com.dre.brewery.recipe.RecipeItem; import com.dre.brewery.utility.BUtil; +import com.dre.brewery.utility.Tuple; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -16,6 +17,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Locale; @@ -140,6 +142,10 @@ public class CommandListener implements CommandExecutor { cmdPuke(sender, args); + } else if (cmd.equalsIgnoreCase("drink")) { + + cmdDrink(sender, args); + } else { if (p.getServer().getPlayerExact(cmd) != null || BPlayer.hasPlayerbyName(cmd)) { @@ -214,6 +220,10 @@ public class CommandListener implements CommandExecutor { cmds.add(p.languageReader.get("Help_Give")); } + if (sender.hasPermission("brewery.cmd.drink") || sender.hasPermission("brewery.cmd.drinkOther")) { + cmds.add(p.languageReader.get("Help_Drink")); + } + if (sender.hasPermission("brewery.cmd.reload")) { cmds.add(p.languageReader.get("Help_Configname")); cmds.add(p.languageReader.get("Help_Reload")); @@ -615,13 +625,35 @@ public class CommandListener implements CommandExecutor { } public void cmdCreate(CommandSender sender, String[] args) { - if (args.length < 2) { p.msg(sender, p.languageReader.get("Etc_Usage")); p.msg(sender, p.languageReader.get("Help_Create")); return; } + Tuple brewForPlayer = getFromCommand(sender, args); + + if (brewForPlayer != null) { + if (brewForPlayer.b().getInventory().firstEmpty() == -1) { + p.msg(sender, p.languageReader.get("CMD_Copy_Error", "1")); + return; + } + + ItemStack item = brewForPlayer.a().createItem(null); + if (item != null) { + brewForPlayer.b().getInventory().addItem(item); + p.msg(sender, p.languageReader.get("CMD_Created")); + } + } + + } + + @Nullable + public Tuple getFromCommand(CommandSender sender, String[] args) { + if (args.length < 2) { + return null; + } + int quality = 10; boolean hasQuality = false; String pName = null; @@ -647,7 +679,7 @@ public class CommandListener implements CommandExecutor { if (!(sender instanceof Player) && player == null) { p.msg(sender, p.languageReader.get("Error_PlayerCommand")); - return; + return null; } if (player == null) { @@ -675,22 +707,13 @@ public class CommandListener implements CommandExecutor { } name = name.replaceAll("\"", ""); - if (player.getInventory().firstEmpty() == -1) { - p.msg(sender, p.languageReader.get("CMD_Copy_Error", "1")); - return; - } - BRecipe recipe = BRecipe.getMatching(name); if (recipe != null) { - ItemStack item = recipe.create(quality); - if (item != null) { - player.getInventory().addItem(item); - p.msg(sender, p.languageReader.get("CMD_Created")); - } + return new Tuple<>(recipe.createBrew(quality), player); } else { p.msg(sender, p.languageReader.get("Error_NoBrewName", name)); } - + return null; } public void cmdPuke(CommandSender sender, String[] args) { @@ -728,7 +751,37 @@ public class CommandListener implements CommandExecutor { count = 20 + (int) (Math.random() * 40); } BPlayer.addPuke(player, count); - return; + } + + public void cmdDrink(CommandSender sender, String[] args) { + if (!sender.hasPermission("brewery.cmd.drink") || !sender.hasPermission("brewery.cmd.drink")) { + p.msg(sender, p.languageReader.get("Error_NoPermissions")); + return; + } + + if (args.length < 2) { + p.msg(sender, p.languageReader.get("Etc_Usage")); + p.msg(sender, p.languageReader.get("Help_Drink")); + return; + } + + Tuple brewForPlayer = getFromCommand(sender, args); + if (brewForPlayer != null) { + Player player = brewForPlayer.b(); + if ((!sender.equals(player) && !sender.hasPermission("brewery.cmd.drinkOther")) || + (sender.equals(player) && !sender.hasPermission("brewery.cmd.drink"))) { + p.msg(sender, p.languageReader.get("Error_NoPermissions")); + } else { + Brew brew = brewForPlayer.a(); + String brewName = brew.getCurrentRecipe().getName(brew.getQuality()); + BPlayer.drink(brew, null, player); + + p.msg(player, p.languageReader.get("CMD_Drink", brewName)); + if (!sender.equals(player)) { + p.msg(sender, p.languageReader.get("CMD_DrinkOther", player.getDisplayName(), brewName)); + } + } + } } }