commit 026cd7a91f3997c361ee4688294a3251c8670f20 Author: 502647092 Date: Mon Nov 30 16:11:21 2015 +0800 初始化项目... Signed-off-by: 502647092 diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..bea39b1 --- /dev/null +++ b/.classpath @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7876f5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Eclipse stuff +/.settings + +# netbeans +/nbproject + +# we use maven! +/build.xml + +# maven +/target +/repo + +# vim +.*.sw[a-p] + +# various other potential build files +/build +/bin +/dist +/manifest.mf + +/world + +# Mac filesystem dust +*.DS_Store + +# intellij +*.iml +*.ipr +*.iws +.idea/ + +# Project Stuff +/src/main/resources/Soulbound + +# Atlassian Stuff +/atlassian-ide-plugin.xml \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..e4b8f30 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + MenuProtect + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e4c70b9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,85 @@ + + 4.0.0 + cn.citycraft + MenuProtect + 1.0 + MenuProtect + + ${project.name} + + + src/main/resources + true + + + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + false + true + + + cn.citycraft:PluginHelper + + + + + cn.citycraft.PluginHelper + ${project.groupId}.${project.artifactId} + + + + + + package + + shade + + + + + + + + http://ci.citycraft.cn:8080 + + 1 + UTF-8 + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + citycraft-repo + ${jenkins.url}/plugin/repository/everything/ + + + + + org.spigotmc + spigot-api + jar + 1.8.8-R0.1-SNAPSHOT + + + cn.citycraft + PluginHelper + jar + 1.0 + + + \ No newline at end of file diff --git a/src/main/java/cn/citycraft/MenuProtect/MenuProtect.java b/src/main/java/cn/citycraft/MenuProtect/MenuProtect.java new file mode 100644 index 0000000..cf05b5e --- /dev/null +++ b/src/main/java/cn/citycraft/MenuProtect/MenuProtect.java @@ -0,0 +1,26 @@ +package cn.citycraft.MenuProtect; + +import org.bukkit.Bukkit; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.java.JavaPlugin; + +import cn.citycraft.MenuProtect.listen.ProtectListener; +import cn.citycraft.MenuProtect.utils.MarkUtil; +import cn.citycraft.PluginHelper.config.FileConfig; + +public class MenuProtect extends JavaPlugin { + FileConfig config; + + @Override + public void onEnable() { + final PluginManager pm = Bukkit.getPluginManager(); + pm.registerEvents(new ProtectListener(this), this); + this.getLogger().info("菜单物品保护已开启!"); + } + + @Override + public void onLoad() { + config = new FileConfig(this); + MarkUtil.marks = config.getStringList("MarkList"); + } +} diff --git a/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java b/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java new file mode 100644 index 0000000..f247270 --- /dev/null +++ b/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java @@ -0,0 +1,81 @@ +package cn.citycraft.MenuProtect.listen; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryPickupItemEvent; +import org.bukkit.event.player.PlayerItemHeldEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; + +import cn.citycraft.MenuProtect.MenuProtect; +import cn.citycraft.MenuProtect.utils.MarkUtil; + +public class ProtectListener implements Listener { + + private final MenuProtect plugin; + + public ProtectListener(final MenuProtect plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onInvPickup(final InventoryPickupItemEvent e) { + final ItemStack ci = e.getItem().getItemStack(); + if (MarkUtil.hasMark(ci)) { + e.setCancelled(true); + } + } + + @EventHandler + public void onItemClick(final InventoryClickEvent e) { + final Player p = (Player) e.getWhoClicked(); + final ItemStack ci = e.getCurrentItem(); + final Inventory inv = e.getInventory(); + final int solt = e.getSlot(); + try { + if (MarkUtil.hasMark(ci)) { + inv.setItem(solt, new ItemStack(Material.AIR)); + p.closeInventory(); + } + } catch (final Exception ex) { + } + } + + @EventHandler + public void onPlayerHandlerItem(final PlayerItemHeldEvent e) { + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + final Player p = e.getPlayer(); + final PlayerInventory inv = p.getInventory(); + final ItemStack[] cis = inv.getArmorContents(); + for (int i = 0; i < cis.length; i++) { + final ItemStack itemStack = cis[i]; + if (MarkUtil.hasMark(itemStack)) { + cis[i] = new ItemStack(Material.AIR); + } + } + inv.setArmorContents(cis); + final int newslot = e.getNewSlot(); + final ItemStack newItem = inv.getItem(newslot); + if (MarkUtil.hasMark(newItem)) { + inv.setItem(newslot, new ItemStack(Material.AIR)); + } + } + }); + } + + @EventHandler + public void onPlayerPickup(final PlayerPickupItemEvent e) { + final ItemStack ci = e.getItem().getItemStack(); + if (MarkUtil.hasMark(ci)) { + e.setCancelled(true); + } + } +} diff --git a/src/main/java/cn/citycraft/MenuProtect/utils/MarkUtil.java b/src/main/java/cn/citycraft/MenuProtect/utils/MarkUtil.java new file mode 100644 index 0000000..3883f78 --- /dev/null +++ b/src/main/java/cn/citycraft/MenuProtect/utils/MarkUtil.java @@ -0,0 +1,22 @@ +package cn.citycraft.MenuProtect.utils; + +import java.util.List; + +import org.bukkit.inventory.ItemStack; + +public class MarkUtil { + public static List marks = null; + + public static boolean hasMark(final ItemStack ci) { + try { + for (final String mark : marks) { + if (ci.getItemMeta().getDisplayName().startsWith(mark)) { + return true; + } + } + return false; + } catch (final Exception e) { + return false; + } + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..885d67f --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,3 @@ +MarkList: + - '§m§p§r' + - '§q§s§6[§b快捷商店§6] §c悬浮物品§r' \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..bab8545 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,16 @@ +name: ${project.artifactId} +description: ${project.description} +main: ${project.groupId}.${project.artifactId}.${project.artifactId} +version: ${project.version}-Build#${env.BUILD_NUMBER} +author: 喵♂呜 +website: ${jenkins.url}/job/${project.artifactId}/ +commands: + ${project.artifactId}: + description: ${project.artifactId} + usage: §b使用/${project.artifactId} help 查看帮助! + permission: ${project.artifactId}.reload + permission-message: §c你没有 的权限来执行此命令! +permissions: + ${project.artifactId}.reload: + description: 重新载入插件! + default: op \ No newline at end of file