diff --git a/readme.md b/readme.md index 060eacc..44a2215 100644 --- a/readme.md +++ b/readme.md @@ -64,6 +64,9 @@ Auch hier können anhand der Erklärungen und Beispiele bestehende "Wörter" ver /br [Spieler] [Trunkenheit] [Qualität]Setzen der Spielerwerte. Trunkenheit in %, Qualität von 1-10. + + /br Copy [Anzahl]Kopiert den Trank in der Hand. Optional kann die Anzahl angegeben werden + /br Wakeup AddSetzen eines neuen Aufwachpunktes an die eigene Position @@ -105,6 +108,9 @@ Auch hier können anhand der Erklärungen und Beispiele bestehende "Wörter" ver brewery.cmd.wakeupWakeup *Setzen, Überprüfen und Entfernen von Aufwachpunkten + + brewery.cmd.copyCopyKopieren von Tränken per Command + brewery.cmd.reloadReloadConfig neuladen diff --git a/src/com/dre/brewery/Brew.java b/src/com/dre/brewery/Brew.java index 5d0c1ed..5b4f630 100644 --- a/src/com/dre/brewery/Brew.java +++ b/src/com/dre/brewery/Brew.java @@ -72,16 +72,16 @@ public class Brew { } // returns a Brew by ItemStack -/* public static Brew get(ItemStack item) { - * if (item.getTypeId() == 373) { - * if (item.hasItemMeta()) { - * PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); - * return get(potionMeta); - * } - * } - * return null; - * } - */ + public static Brew get(ItemStack item) { + if (item.getTypeId() == 373) { + if (item.hasItemMeta()) { + PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); + return get(potionMeta); + } + } + return null; + } + // returns UID of custom Potion item public static int getUID(ItemStack item) { @@ -116,6 +116,26 @@ public class Brew { return uid; } + + // Copy a Brew with a new unique ID and return its item + public ItemStack copy(ItemStack item) { + ItemStack copy = item.clone(); + int uid = generateUID(); + clone(uid); + PotionMeta meta = (PotionMeta) copy.getItemMeta(); + meta.addCustomEffect((PotionEffectType.REGENERATION).createEffect((uid * 4), 0), true); + copy.setItemMeta(meta); + return copy; + } + + // Clones this instance with a new unique ID + public Brew clone(int uid) { + Brew brew = new Brew(uid, quality, currentRecipe, ingredients); + brew.distillRuns = distillRuns; + brew.ageTime = ageTime; + return brew; + } + // calculate alcohol from recipe public int calcAlcohol() { if (currentRecipe != null) { diff --git a/src/com/dre/brewery/listeners/CommandListener.java b/src/com/dre/brewery/listeners/CommandListener.java index acb5fa6..5f6546c 100644 --- a/src/com/dre/brewery/listeners/CommandListener.java +++ b/src/com/dre/brewery/listeners/CommandListener.java @@ -6,10 +6,12 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import com.dre.brewery.P; import com.dre.brewery.Wakeup; import com.dre.brewery.BPlayer; +import com.dre.brewery.Brew; public class CommandListener implements CommandExecutor { @@ -64,6 +66,18 @@ public class CommandListener implements CommandExecutor { } } + } else if (cmd.equalsIgnoreCase("copy") || cmd.equalsIgnoreCase("cp")) { + + if (p.permission.has(sender, "brewery.cmd.copy")) { + if (args.length > 1) { + cmdCopy(sender, P.p.parseInt(args[1])); + } else { + cmdCopy(sender, 1); + } + } else { + p.msg(sender, "&cDu hast keine Rechte dies zu tun!"); + } + } else { if (p.getServer().getPlayerExact(cmd) != null || BPlayer.players.containsKey(cmd)) { @@ -113,8 +127,20 @@ public class CommandListener implements CommandExecutor { ArrayList cmds = new ArrayList(); cmds.add("&6/br help &9Zeigt eine bestimmte Hilfeseite an"); - if (p.permission.has(sender, "brewery.cmd.reload")) { - cmds.add("&6/br reload &9Config neuladen"); + if (p.permission.has(sender, "brewery.cmd.player")) { + cmds.add ("&6/br <%Trunkenheit> &9 Setzt Trunkenheit (und Qualität) eines Spielers"); + } + + if (p.permission.has(sender, "brewery.cmd.info")) { + cmds.add ("&6/br Info&9 Zeigt deine aktuelle Trunkenheit und Qualität an"); + } + + if (p.permission.has(sender, "brewery.cmd.copy")) { + cmds.add ("&6/br Copy &9 Kopiert den Trank in deiner Hand"); + } + + if (p.permission.has(sender, "brewery.cmd.infoOther")) { + cmds.add ("&6/br Info &9 Zeigt die aktuelle Trunkenheit und Qualität von an"); } if (p.permission.has(sender, "brewery.cmd.wakeup")) { @@ -126,16 +152,8 @@ public class CommandListener implements CommandExecutor { cmds.add("&6/br Wakeup Remove &9Entfernt einen Aufwachpunkt"); } - if (p.permission.has(sender, "brewery.cmd.player")) { - cmds.add ("&6/br <%Trunkenheit> &9 Setzt Trunkenheit (und Qualität) eines Spielers"); - } - - if (p.permission.has(sender, "brewery.cmd.info")) { - cmds.add ("&6/br Info&9 Zeigt deine aktuelle Trunkenheit und Qualität an"); - } - - if (p.permission.has(sender, "brewery.cmd.infoOther")) { - cmds.add ("&6/br Info &9 Zeigt die aktuelle Trunkenheit und Qualität von an"); + if (p.permission.has(sender, "brewery.cmd.reload")) { + cmds.add("&6/br reload &9Config neuladen"); } return cmds; @@ -253,4 +271,37 @@ public class CommandListener implements CommandExecutor { } + public void cmdCopy(CommandSender sender, int count) { + + if (sender instanceof Player) { + if (count < 1 || count > 36) { + p.msg(sender, "Benutzung:"); + p.msg(sender, "&6/br Copy "); + return; + } + Player player = (Player) sender; + ItemStack hand = player.getItemInHand(); + if (hand != null) { + Brew brew = Brew.get(hand); + if (brew != null) { + while (count > 0) { + ItemStack item = brew.copy(player.getItemInHand()); + if (!(player.getInventory().addItem(item)).isEmpty()) { + P.p.msg(sender, "&6" + count + " &cTränke haben nicht mehr in das Inventar gepasst"); + return; + } + count--; + } + return; + } + } + + p.msg(sender, "&cDas Item in deiner Hand konnte nicht als Trank identifiziert werden"); + + } else { + p.msg(sender, "&cDieser Befehl kann nur als Spieler ausgeführt werden"); + } + + } + } \ No newline at end of file