-
-
Save aikar/b3c7c5556f1d8a5d52e9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Empire/src/main/java/com/empireminecraft/data/items/PromoItems.java b/Empire/src/main/java/com/empireminecraft/data/items/PromoItems.java | |
index 9e1522c..f1d19f3 100644 | |
--- a/Empire/src/main/java/com/empireminecraft/data/items/PromoItems.java | |
+++ b/Empire/src/main/java/com/empireminecraft/data/items/PromoItems.java | |
@@ -2,7 +2,12 @@ package com.empireminecraft.data.items; | |
import com.empireminecraft.features.EmpireVault; | |
import com.empireminecraft.features.horses.Stable; | |
-import com.empireminecraft.features.items.*; | |
+import com.empireminecraft.features.items.ConfirmableUsableItem; | |
+import com.empireminecraft.features.items.CustomItem; | |
+import com.empireminecraft.features.items.EmpireFirework; | |
+import com.empireminecraft.features.items.SpecialProjectile; | |
+import com.empireminecraft.features.items.UsableBowItem; | |
+import com.empireminecraft.features.items.UsableItem; | |
import com.empireminecraft.util.ItemUtil; | |
import com.empireminecraft.util.Util; | |
import org.bukkit.Color; | |
@@ -16,7 +21,8 @@ import org.bukkit.inventory.ItemStack; | |
import org.bukkit.potion.PotionEffectType; | |
public class PromoItems { | |
- public static final UsableItem VAULT_VOUCHER = new UsableItem("VaultVoucher", Material.EMPTY_MAP) { | |
+ public static final UsableItem VAULT_VOUCHER = new ConfirmableUsableItem("VaultVoucher", Material.EMPTY_MAP, | |
+ "&3Gives 1 free vault page increase.") { | |
{ | |
this.consumeOnUse = true; | |
ItemUtil.buildLore(this).setName("&aVault Voucher").makeSoulbound() | |
@@ -31,13 +37,15 @@ public class PromoItems { | |
} | |
@Override | |
- public ItemStack onUse(Player player, ItemStack item) { | |
+ public ItemStack onConfirm(Player player, ItemStack item) { | |
EmpireVault.expandVault(player, player.getName(), true, true); | |
return item; | |
} | |
}; | |
+ | |
public static final UsableItem | |
- STABLE_VOUCHER = new UsableItem("StableVoucher", Material.EMPTY_MAP) { | |
+ STABLE_VOUCHER = new ConfirmableUsableItem("StableVoucher", Material.EMPTY_MAP, | |
+ "&3Permanently raises stables size by 1.") { | |
{ | |
this.consumeOnUse = true; | |
ItemUtil.buildLore(this).setName("&aStable Voucher").makeSoulbound() | |
@@ -49,7 +57,7 @@ public class PromoItems { | |
} | |
@Override | |
- public ItemStack onUse(Player player, ItemStack item) { | |
+ public ItemStack onConfirm(Player player, ItemStack item) { | |
if (!Stable.getStable(player).increaseMaxStables()) { | |
return null; | |
} | |
diff --git a/Empire/src/main/java/com/empireminecraft/features/items/ConfirmableUsableItem.java b/Empire/src/main/java/com/empireminecraft/features/items/ConfirmableUsableItem.java | |
new file mode 100644 | |
index 0000000..8f38daf | |
--- /dev/null | |
+++ b/Empire/src/main/java/com/empireminecraft/features/items/ConfirmableUsableItem.java | |
@@ -0,0 +1,49 @@ | |
+package com.empireminecraft.features.items; | |
+ | |
+import com.empireminecraft.systems.chestui.ChestUI; | |
+import com.empireminecraft.systems.chestui.ConfirmChestInterface; | |
+import com.google.common.base.Predicate; | |
+import org.bukkit.Material; | |
+import org.bukkit.entity.Player; | |
+import org.bukkit.inventory.ItemStack; | |
+ | |
+import javax.annotation.Nullable; | |
+ | |
+public abstract class ConfirmableUsableItem extends UsableItem { | |
+ public String[] loreLines = null; | |
+ public ConfirmableUsableItem(String name, Material type, String... loreLines) { | |
+ super(name, type); | |
+ this.loreLines = loreLines; | |
+ } | |
+ | |
+ public ConfirmableUsableItem(String name, Material type, short durability, String... loreLines) { | |
+ super(name, type, durability); | |
+ this.loreLines = loreLines; | |
+ } | |
+ | |
+ public ConfirmableUsableItem(String name, ItemStack stack, String... loreLines) throws IllegalArgumentException { | |
+ super(name, stack); | |
+ this.loreLines = loreLines; | |
+ } | |
+ | |
+ @Override | |
+ public ItemStack onUse(final Player player, final ItemStack item) { | |
+ final int slot = player.getInventory().getHeldItemSlot(); | |
+ ChestUI.open(player, new ConfirmChestInterface("Confirm Item Use", | |
+ new Predicate<Player>() { | |
+ @Override | |
+ public boolean apply(@Nullable Player input) { | |
+ final ItemStack nowInHand = player.getInventory().getItem(slot); | |
+ if (nowInHand.isSimilar(item) && nowInHand.getAmount() > 0) { | |
+ ItemStack res = onConfirm(player, nowInHand); | |
+ res = UsableItem.postConsumableUse(player, res); | |
+ player.getInventory().setItem(slot, res); | |
+ } | |
+ return true; | |
+ } | |
+ }, loreLines)); | |
+ return null; | |
+ } | |
+ | |
+ public abstract ItemStack onConfirm(Player player, ItemStack item); | |
+} | |
diff --git a/Empire/src/main/java/com/empireminecraft/features/items/UsableItem.java b/Empire/src/main/java/com/empireminecraft/features/items/UsableItem.java | |
index bf4b957..a1a61a9 100644 | |
--- a/Empire/src/main/java/com/empireminecraft/features/items/UsableItem.java | |
+++ b/Empire/src/main/java/com/empireminecraft/features/items/UsableItem.java | |
@@ -101,17 +101,21 @@ public abstract class UsableItem extends CustomItem { | |
player.updateInventory(); | |
} else { | |
if (consumeOnUse) { | |
- item.setAmount(item.getAmount() - 1); | |
- player.setItemInHand(item); | |
event.setCancelled(true); | |
- player.updateInventory(); | |
- | |
- return; | |
+ res = postConsumableUse(player, res); | |
+ player.setItemInHand(res); | |
} | |
+ | |
event.setItem(res); | |
} | |
} | |
+ public static ItemStack postConsumableUse(Player player, ItemStack item) { | |
+ item.setAmount(item.getAmount() - 1); | |
+ player.updateInventory(); | |
+ return item; | |
+ } | |
+ | |
public void onDispense(BlockDispenseEvent event) { | |
ItemStack item = event.getItem(); | |
if (infinite) { | |
diff --git a/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUI.java b/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUI.java | |
index 6583e91..fa51752 100644 | |
--- a/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUI.java | |
+++ b/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUI.java | |
@@ -32,9 +32,16 @@ public class ChestUI extends BukkitUtil.Listener { | |
((ChestInterfaceItem) o).processClick(); | |
} | |
} | |
- public static void open (Player player, Class <? extends ChestUIInterface> ui) { | |
+ public static void open(Player player, Class <? extends ChestUIInterface> ui) { | |
try { | |
- final Inventory inventory = ui.newInstance().initialize(player); | |
+ open(player, ui.newInstance()); | |
+ } catch (Exception e) { | |
+ Util.printException(e); | |
+ } | |
+ } | |
+ public static void open(Player player, ChestUIInterface ui) { | |
+ try { | |
+ final Inventory inventory = ui.initialize(player); | |
inventory.getMeta().put("ChestUI", 1); | |
player.openInventory(inventory); | |
} catch (Exception e) { | |
diff --git a/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUIInterface.java b/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUIInterface.java | |
index 85b0a2c..a3b1072 100644 | |
--- a/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUIInterface.java | |
+++ b/Empire/src/main/java/com/empireminecraft/systems/chestui/ChestUIInterface.java | |
@@ -17,9 +17,9 @@ public abstract class ChestUIInterface { | |
return "ChestUI_Slot_" + slot; | |
} | |
- abstract int getSize(); | |
- abstract String getTitle(); | |
- abstract void init(Player player, Inventory inventory); | |
+ public abstract int getSize(); | |
+ public abstract String getTitle(); | |
+ public abstract void init(Player player, Inventory inventory); | |
protected int slot = 0; | |
protected final Inventory initialize(Player player) { | |
@@ -37,6 +37,9 @@ public abstract class ChestUIInterface { | |
return player; | |
} | |
+ public ChestInterfaceItem add(int slot, Material material, short data) { | |
+ return add(slot, new ItemStack(material, 1, data)); | |
+ } | |
public ChestInterfaceItem add(Material material, short data) { | |
return add(slot, new ItemStack(material, 1, data)); | |
} | |
diff --git a/Empire/src/main/java/com/empireminecraft/systems/chestui/ConfirmChestInterface.java b/Empire/src/main/java/com/empireminecraft/systems/chestui/ConfirmChestInterface.java | |
new file mode 100644 | |
index 0000000..0e00edf | |
--- /dev/null | |
+++ b/Empire/src/main/java/com/empireminecraft/systems/chestui/ConfirmChestInterface.java | |
@@ -0,0 +1,83 @@ | |
+package com.empireminecraft.systems.chestui; | |
+ | |
+import com.empireminecraft.util.ItemUtil; | |
+import com.google.common.base.Predicate; | |
+import org.bukkit.Material; | |
+import org.bukkit.entity.Player; | |
+import org.bukkit.inventory.Inventory; | |
+ | |
+import javax.annotation.Nullable; | |
+ | |
+public class ConfirmChestInterface extends ChestUIInterface { | |
+ | |
+ private final String confirmTitle; | |
+ private final Predicate<Player> onConfirm; | |
+ private final Predicate<Player> onCancel; | |
+ private final String[] lines; | |
+ | |
+ | |
+ public ConfirmChestInterface(String confirmTitle, Predicate<Player> onConfirm, String... lines) { | |
+ this(confirmTitle, onConfirm, null, lines); | |
+ } | |
+ | |
+ public ConfirmChestInterface( | |
+ String confirmTitle, Predicate<Player> onConfirm, Predicate<Player> onCancel, String... lines) { | |
+ this.confirmTitle = confirmTitle; | |
+ this.onConfirm = onConfirm; | |
+ this.onCancel = onCancel; | |
+ this.lines = lines; | |
+ } | |
+ | |
+ @Override | |
+ public int getSize() { | |
+ return 9; | |
+ } | |
+ | |
+ @Override | |
+ public String getTitle() { | |
+ return confirmTitle; | |
+ } | |
+ | |
+ @Override | |
+ public void init(final Player player, Inventory inventory) { | |
+ final ItemUtil.LoreBuilder builder = add(Material.PAPER) | |
+ .setName(confirmTitle); | |
+ | |
+ if (lines != null) { | |
+ for (String line : lines) { | |
+ builder.add(line); | |
+ } | |
+ } | |
+ | |
+ builder | |
+ .empty() | |
+ .add("&eClick on the &2Green Wool&e to confirm.") | |
+ .add("&eClick on the &4Red Wool&e to cancel.") | |
+ .save(); | |
+ | |
+ add(3, Material.WOOL, (short) 13) | |
+ .onClick(new Predicate<Player>() { | |
+ @Override | |
+ public boolean apply(@Nullable Player input) { | |
+ player.closeInventory(); | |
+ return onConfirm.apply(input); | |
+ } | |
+ }) | |
+ .setName("&2Confirm") | |
+ .add("&2Click to Confirm") | |
+ .save(); | |
+ | |
+ add(5, Material.WOOL, (short) 14) | |
+ .onClick(new Predicate<Player>() { | |
+ @Override | |
+ public boolean apply(@Nullable Player input) { | |
+ player.closeInventory(); | |
+ return onCancel == null || onCancel.apply(input); | |
+ } | |
+ }) | |
+ .setName("&4Cancel") | |
+ .add("&4Click to Cancel") | |
+ .save(); | |
+ | |
+ } | |
+} | |
diff --git a/Empire/src/main/java/com/empireminecraft/systems/chestui/EmpireAssistantUI.java b/Empire/src/main/java/com/empireminecraft/systems/chestui/EmpireAssistantUI.java | |
index 9576e84..9ba73a9 100644 | |
--- a/Empire/src/main/java/com/empireminecraft/systems/chestui/EmpireAssistantUI.java | |
+++ b/Empire/src/main/java/com/empireminecraft/systems/chestui/EmpireAssistantUI.java | |
@@ -14,17 +14,17 @@ import javax.annotation.Nullable; | |
public class EmpireAssistantUI extends ChestUIInterface { | |
@Override | |
- int getSize() { | |
+ public int getSize() { | |
return 27; | |
} | |
@Override | |
- String getTitle() { | |
+ public String getTitle() { | |
return "Empire Assistant"; | |
} | |
@Override | |
- void init(final Player player, Inventory inventory) { | |
+ public void init(final Player player, Inventory inventory) { | |
if (Util.isTeleportableLocation(player)) { | |
add(Material.DIAMOND_SWORD) | |
.onClick("frontier") | |
diff --git a/Empire/src/main/java/com/empireminecraft/systems/chestui/ServerSwitcher.java b/Empire/src/main/java/com/empireminecraft/systems/chestui/ServerSwitcher.java | |
index 743f51f..c564d6f 100644 | |
--- a/Empire/src/main/java/com/empireminecraft/systems/chestui/ServerSwitcher.java | |
+++ b/Empire/src/main/java/com/empireminecraft/systems/chestui/ServerSwitcher.java | |
@@ -13,17 +13,17 @@ import javax.annotation.Nullable; | |
public class ServerSwitcher extends ChestUIInterface { | |
@Override | |
- int getSize() { | |
+ public int getSize() { | |
return 27; | |
} | |
@Override | |
- String getTitle() { | |
+ public String getTitle() { | |
return "Server Switcher"; | |
} | |
@Override | |
- void init(Player player, Inventory inventory) { | |
+ public void init(Player player, Inventory inventory) { | |
addServer(Material.WOOL, 0, EmpireServer.SMP1, "This is a Survival Server"); | |
addServer(Material.WOOL, 1, EmpireServer.SMP2, "This is a Survival Server"); | |
addServer(Material.WOOL, 2, EmpireServer.SMP3, "This is a Survival Server"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment