mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 08:59:01 +00:00
Brew Drink command to simulate drinking a brew
This commit is contained in:
@@ -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()) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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<Brew, Player> 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<Brew, Player> 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<Brew, Player> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user