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 Add | Setzen 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.wakeup | Wakeup * | Setzen, Überprüfen und Entfernen von Aufwachpunkten |
+
+ brewery.cmd.copy | Copy | Kopieren von Tränken per Command |
+
brewery.cmd.reload | Reload | Config 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