From 12eacc3aefbd5f116c07088ba297cf931227daac Mon Sep 17 00:00:00 2001 From: 502647092 Date: Sat, 19 Sep 2015 17:36:22 +0800 Subject: [PATCH] add Bind Time TimeBind and so on... Signed-off-by: 502647092 --- .../ItemMamager/commands/BindCommand.java | 13 +-- .../ItemMamager/event/BindEvent.java | 55 ++++++++++ .../ItemMamager/listen/InventoryListen.java | 62 +++++++++++ .../ItemMamager/listen/PlayerListen.java | 26 +++++ .../ItemMamager/manager/ArmorHandler.java | 28 +++++ .../ItemMamager/manager/InventoryHandler.java | 28 +++++ .../ItemMamager/manager/ItemHandler.java | 33 ++++++ .../runnable/ArmorHandlerTask.java | 5 + .../runnable/InventoryHandlerTask.java | 5 + .../ItemMamager/runnable/ItemHandlerTask.java | 5 + .../citycraft/ItemMamager/utils/ItemUtil.java | 103 ++++++++++++++++++ .../cn/citycraft/ItemMamager/utils/Misc.java | 12 -- 12 files changed, 354 insertions(+), 21 deletions(-) create mode 100644 src/main/java/cn/citycraft/ItemMamager/event/BindEvent.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/listen/InventoryListen.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/manager/ArmorHandler.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/manager/InventoryHandler.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/manager/ItemHandler.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/runnable/ArmorHandlerTask.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/runnable/InventoryHandlerTask.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/runnable/ItemHandlerTask.java create mode 100644 src/main/java/cn/citycraft/ItemMamager/utils/ItemUtil.java delete mode 100644 src/main/java/cn/citycraft/ItemMamager/utils/Misc.java diff --git a/src/main/java/cn/citycraft/ItemMamager/commands/BindCommand.java b/src/main/java/cn/citycraft/ItemMamager/commands/BindCommand.java index 25bf415..34ace0a 100644 --- a/src/main/java/cn/citycraft/ItemMamager/commands/BindCommand.java +++ b/src/main/java/cn/citycraft/ItemMamager/commands/BindCommand.java @@ -8,8 +8,7 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class BindCommand extends BaseCommand { public BindCommand() { - super("imbind"); - // TODO 自动生成的构造函数存根 + super("bind", "b"); } @Override @@ -20,26 +19,22 @@ public class BindCommand extends BaseCommand { @Override public String getDescription() { - // TODO 自动生成的方法存根 - return null; + return "物品绑定"; } @Override public int getMinimumArguments() { - // TODO 自动生成的方法存根 return 0; } @Override public String getPossibleArguments() { - // TODO 自动生成的方法存根 - return null; + return ""; } @Override public boolean isOnlyPlayerExecutable() { - // TODO 自动生成的方法存根 - return false; + return true; } } diff --git a/src/main/java/cn/citycraft/ItemMamager/event/BindEvent.java b/src/main/java/cn/citycraft/ItemMamager/event/BindEvent.java new file mode 100644 index 0000000..d2ed78a --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/event/BindEvent.java @@ -0,0 +1,55 @@ +package cn.citycraft.ItemMamager.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.bukkit.inventory.ItemStack; + +import cn.citycraft.ItemMamager.utils.ItemUtil.BIND; + +public class BindEvent extends PlayerEvent implements Cancellable { + ItemStack itemstack; + BIND bind; + + boolean cancelled; + + public BindEvent(Player player, BIND bind, ItemStack itemstack) { + super(player); + this.itemstack = itemstack; + this.cancelled = false; + } + + public BIND getBind() { + return bind; + } + + @Override + public HandlerList getHandlers() { + return null; + } + + public ItemStack getItemstack() { + return itemstack; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + public void setBind(BIND bind) { + this.bind = bind; + } + + @Override + public void setCancelled(boolean cancel) { + cancelled = cancel; + + } + + public void setItemstack(ItemStack itemstack) { + this.itemstack = itemstack; + } + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/listen/InventoryListen.java b/src/main/java/cn/citycraft/ItemMamager/listen/InventoryListen.java new file mode 100644 index 0000000..ceeb04e --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/listen/InventoryListen.java @@ -0,0 +1,62 @@ +/** + * + */ +package cn.citycraft.ItemMamager.listen; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.enchantment.EnchantItemEvent; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryMoveItemEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.event.inventory.InventoryPickupItemEvent; + +import cn.citycraft.ItemMamager.ItemMamager; + +/** + * @author Administrator + * + */ +public class InventoryListen implements Listener { + ItemMamager plugin; + + /** + * @param timeItem + */ + public InventoryListen(ItemMamager timeItem) { + plugin = timeItem; + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInventoryClick(InventoryClickEvent event) { + + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInventoryMoveItem(InventoryMoveItemEvent event) { + + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInventoryOpen(InventoryOpenEvent event) { + + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInventoryPickupItem(InventoryPickupItemEvent event) { + + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + private void onCraftItem(CraftItemEvent event) { + + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + private void onEnchantItem(EnchantItemEvent event) { + + } + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/listen/PlayerListen.java b/src/main/java/cn/citycraft/ItemMamager/listen/PlayerListen.java index b41d1ac..9087166 100644 --- a/src/main/java/cn/citycraft/ItemMamager/listen/PlayerListen.java +++ b/src/main/java/cn/citycraft/ItemMamager/listen/PlayerListen.java @@ -3,7 +3,14 @@ */ package cn.citycraft.ItemMamager.listen; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerItemConsumeEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; import cn.citycraft.ItemMamager.ItemMamager; @@ -21,4 +28,23 @@ public class PlayerListen implements Listener { plugin = timeItem; } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onDropItem(PlayerDropItemEvent e) { + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInteract(PlayerInteractEvent e) { + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onItemConsume(final PlayerItemConsumeEvent e) { + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onJoin(PlayerJoinEvent e) { + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPickUp(PlayerPickupItemEvent e) { + } } diff --git a/src/main/java/cn/citycraft/ItemMamager/manager/ArmorHandler.java b/src/main/java/cn/citycraft/ItemMamager/manager/ArmorHandler.java new file mode 100644 index 0000000..7f73c7a --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/manager/ArmorHandler.java @@ -0,0 +1,28 @@ +package cn.citycraft.ItemMamager.manager; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public class ArmorHandler { + + public static void handleInventory(Player player) { + // TODO 自动生成的方法存根 + + } + + public static void handleVar(ItemStack itemStack) { + // TODO 自动生成的方法存根 + + } + + public static boolean isExpirable(ItemStack item) { + // TODO 自动生成的方法存根 + return false; + } + + public static boolean isExpired(ItemStack itemStack) { + // TODO 自动生成的方法存根 + return false; + } + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/manager/InventoryHandler.java b/src/main/java/cn/citycraft/ItemMamager/manager/InventoryHandler.java new file mode 100644 index 0000000..87cbd58 --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/manager/InventoryHandler.java @@ -0,0 +1,28 @@ +package cn.citycraft.ItemMamager.manager; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public class InventoryHandler { + + public static void handleInventory(Player player) { + // TODO 自动生成的方法存根 + + } + + public static void handleVar(ItemStack itemStack) { + // TODO 自动生成的方法存根 + + } + + public static boolean isExpirable(ItemStack item) { + // TODO 自动生成的方法存根 + return false; + } + + public static boolean isExpired(ItemStack itemStack) { + // TODO 自动生成的方法存根 + return false; + } + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/manager/ItemHandler.java b/src/main/java/cn/citycraft/ItemMamager/manager/ItemHandler.java new file mode 100644 index 0000000..2199aa4 --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/manager/ItemHandler.java @@ -0,0 +1,33 @@ +package cn.citycraft.ItemMamager.manager; + +import java.util.Date; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import cn.citycraft.ItemMamager.utils.ItemUtil.TAG; + +/** + * 物品处理类 + * + * @author 蒋天蓓 + * + */ +public class ItemHandler { + + public static ItemStack bind(Player player, ItemStack itemStack) { + return TAG.BIND.bind(player, itemStack); + } + + public static boolean bingtime(ItemStack item) { + return bingtime(item, new Date()); + } + + public static boolean bingtime(ItemStack item, Date time) { + return false; + } + + public static boolean unbind(ItemStack itemStack) { + return false; + } +} diff --git a/src/main/java/cn/citycraft/ItemMamager/runnable/ArmorHandlerTask.java b/src/main/java/cn/citycraft/ItemMamager/runnable/ArmorHandlerTask.java new file mode 100644 index 0000000..c0fc860 --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/runnable/ArmorHandlerTask.java @@ -0,0 +1,5 @@ +package cn.citycraft.ItemMamager.runnable; + +public class ArmorHandlerTask { + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/runnable/InventoryHandlerTask.java b/src/main/java/cn/citycraft/ItemMamager/runnable/InventoryHandlerTask.java new file mode 100644 index 0000000..ff830cb --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/runnable/InventoryHandlerTask.java @@ -0,0 +1,5 @@ +package cn.citycraft.ItemMamager.runnable; + +public class InventoryHandlerTask { + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/runnable/ItemHandlerTask.java b/src/main/java/cn/citycraft/ItemMamager/runnable/ItemHandlerTask.java new file mode 100644 index 0000000..a1598e5 --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/runnable/ItemHandlerTask.java @@ -0,0 +1,5 @@ +package cn.citycraft.ItemMamager.runnable; + +public class ItemHandlerTask { + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/utils/ItemUtil.java b/src/main/java/cn/citycraft/ItemMamager/utils/ItemUtil.java new file mode 100644 index 0000000..8a42b4a --- /dev/null +++ b/src/main/java/cn/citycraft/ItemMamager/utils/ItemUtil.java @@ -0,0 +1,103 @@ +/** + * + */ +package cn.citycraft.ItemMamager.utils; + +import java.util.List; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +/** + * 物品绑定类 + * + * @author 蒋天蓓 + * + */ +public class ItemUtil { + public enum BIND { + PICKUP(ChatColor.DARK_RED + "拾取后绑定"), + USE(ChatColor.DARK_RED + "使用后绑定"), + EQUIP(ChatColor.DARK_RED + "装备后绑定"); + + String tag; + + BIND(String tag) { + this.tag = tag; + } + } + + public enum MARK { + BIND("§b§m"), + TIME("§t§m"); + + String tag; + + MARK(String tag) { + this.tag = tag; + } + + public boolean isMark(String lore) { + return lore.startsWith(tag); + } + } + + public enum STONE { + BIND(ChatColor.DARK_RED + "绑定石"), + TIMEBIND(ChatColor.DARK_RED + "限时绑定石"), + UNBIND(ChatColor.DARK_RED + "解绑石"); + + String tag; + + STONE(String tag) { + this.tag = tag; + } + + public int getIndex(List lores) { + return lores.lastIndexOf(tag); + } + + public boolean is(List lores) { + return lores.lastIndexOf(tag) != -1; + } + } + + public enum TAG { + TIME(ChatColor.DARK_RED + "限时物品"), + BIND(ChatColor.DARK_RED + "绑定物品"), + TIMEBIND(ChatColor.DARK_RED + "限时绑定物品"), + NOTRADE(ChatColor.DARK_RED + "不可交易物品"); + + String tag; + + TAG(String tag) { + this.tag = tag; + } + + public ItemStack bind(Player player, ItemStack itemStack) { + if (isBound(itemStack)) + return itemStack; + return itemStack; + } + + public int getIndex(ItemStack itemStack) { + if (!itemStack.hasItemMeta()) + return -1; + ItemMeta itemMeta = itemStack.getItemMeta(); + if (!itemMeta.hasLore()) + return -1; + List lores = itemMeta.getLore(); + return lores.lastIndexOf(tag); + } + + public boolean isBound(ItemStack itemStack) { + for (TAG tag : TAG.values()) + if (tag.getIndex(itemStack) != -1) + return true; + return false; + } + } + +} diff --git a/src/main/java/cn/citycraft/ItemMamager/utils/Misc.java b/src/main/java/cn/citycraft/ItemMamager/utils/Misc.java deleted file mode 100644 index 4abc6c0..0000000 --- a/src/main/java/cn/citycraft/ItemMamager/utils/Misc.java +++ /dev/null @@ -1,12 +0,0 @@ -/** - * - */ -package cn.citycraft.ItemMamager.utils; - -/** - * @author Administrator - * - */ -public class Misc { - public static String TIME_TAG = "\u00A76限时物品"; -}