mirror of
https://e.coding.net/circlecloud/ProtectItem.git
synced 2025-11-24 23:56:08 +00:00
98
src/main/java/cn/citycraft/ProtectItem/ProtectItem.java
Normal file
98
src/main/java/cn/citycraft/ProtectItem/ProtectItem.java
Normal file
@@ -0,0 +1,98 @@
|
||||
package cn.citycraft.ProtectItem;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import cn.citycraft.ProtectItem.listen.DropItemListen;
|
||||
import cn.citycraft.ProtectItem.listen.PickupItemListen;
|
||||
|
||||
public class ProtectItem extends JavaPlugin {
|
||||
public String servername;
|
||||
public String pluginname;
|
||||
|
||||
public static String getItemName(final ItemStack i) {
|
||||
final String name = i.getType().name();
|
||||
final int dur = i.getDurability();
|
||||
final String dura = i.getMaxStackSize() != 1 ? dur != 0 ? "_" + dur : "" : "";
|
||||
final String iname = name + dura;
|
||||
return iname;
|
||||
}
|
||||
|
||||
public boolean checkevent(final Player p, final ItemStack i, final String type) {
|
||||
if (p.hasPermission("pi.bypass")) {
|
||||
return false;
|
||||
}
|
||||
final String iname = getItemName(i);
|
||||
final Location l = p.getLocation();
|
||||
final World pw = l.getWorld();
|
||||
for (final String protectworld : getConfig().getStringList("ProtectWorld")) {
|
||||
if (pw.getName().equalsIgnoreCase(protectworld)) {
|
||||
for (final String protectitem : getConfig().getStringList("ProtectItem")) {
|
||||
if (iname.equalsIgnoreCase(protectitem)) {
|
||||
p.sendMessage(pluginname + getmessage("Message." + type));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getmessage(final String path) {
|
||||
final String message = getConfig().getString(path).replaceAll("&", "§");
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(final CommandSender sender, final Command cmd, final String string, final String[] args) {
|
||||
final Player p = (Player) sender;
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
final ItemStack item = p.getItemInHand();
|
||||
p.sendMessage("\u00a7a手上物品类型名称为: \u00a76" + getItemName(item));
|
||||
return true;
|
||||
case 1:
|
||||
if (p.hasPermission("pi.bypass")) {
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
this.reloadConfig();
|
||||
p.sendMessage("\u00a7a配置文件已重载...");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
if (getConfig().getBoolean("Protect.Drop", true)) {
|
||||
Bukkit.getPluginManager().registerEvents(new DropItemListen(this), this);
|
||||
}
|
||||
if (getConfig().getBoolean("Protect.Pickup", true)) {
|
||||
Bukkit.getPluginManager().registerEvents(new PickupItemListen(this), this);
|
||||
}
|
||||
// if (getConfig().getBoolean("Protect.Break", true))
|
||||
// Bukkit.getPluginManager().registerEvents(
|
||||
// new BreakBlockListen(this), this);
|
||||
// if (getConfig().getBoolean("Protect.Place", true))
|
||||
// Bukkit.getPluginManager().registerEvents(
|
||||
// new PlaceBlockListen(this), this);
|
||||
getLogger().info("ProtectItem已加载!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
saveDefaultConfig();
|
||||
reloadConfig();
|
||||
servername = getmessage("servername");
|
||||
pluginname = getmessage("pluginname") + " ";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.citycraft.ProtectItem.listen;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import cn.citycraft.ProtectItem.ProtectItem;
|
||||
|
||||
public class DropItemListen implements Listener {
|
||||
ProtectItem plugin;
|
||||
|
||||
public DropItemListen(final ProtectItem main) {
|
||||
plugin = main;
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onDropItem(final PlayerDropItemEvent e) {
|
||||
final Player p = e.getPlayer();
|
||||
final ItemStack i = e.getItemDrop().getItemStack();
|
||||
e.setCancelled(plugin.checkevent(p, i, "Drop"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.citycraft.ProtectItem.listen;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import cn.citycraft.ProtectItem.ProtectItem;
|
||||
|
||||
public class PickupItemListen implements Listener {
|
||||
ProtectItem plugin;
|
||||
|
||||
public PickupItemListen(final ProtectItem main) {
|
||||
plugin = main;
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPickupItem(final PlayerPickupItemEvent e) {
|
||||
final Player p = e.getPlayer();
|
||||
final ItemStack i = e.getItem().getItemStack();
|
||||
e.setCancelled(plugin.checkevent(p, i, "Pickup"));
|
||||
}
|
||||
}
|
||||
34
src/main/resources/config.yml
Normal file
34
src/main/resources/config.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
#<23><><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
servername: ''
|
||||
#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pluginname: '&6[&3<><33>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>&6]&r'
|
||||
|
||||
#<23><>ʾ<EFBFBD><CABE>Ϣ
|
||||
Message:
|
||||
Reload: '&a<><61><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룡'
|
||||
#<23><><EFBFBD>鰲ȫ<E9B0B2><C8AB>ʾ
|
||||
Drop: '&c<><63>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>'
|
||||
Pickup: '&c<><63>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹʰȡ<CAB0><C8A1><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>'
|
||||
# Place: '&c<><63>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>Ʒ<EFBFBD><C6B7>'
|
||||
# Break: '&c<><63>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>'
|
||||
|
||||
#<23>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Protect:
|
||||
Drop: true
|
||||
Pickup: false
|
||||
##Place: false
|
||||
##Break: false
|
||||
|
||||
#<23>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>Сд)
|
||||
ProtectWorld:
|
||||
- world
|
||||
|
||||
#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ(<28><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>Сд)
|
||||
ProtectItem:
|
||||
- XXXX
|
||||
#<23><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,/pishow<6F>鿴<EFBFBD><E9BFB4>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>)
|
||||
# - DIRT
|
||||
# - GRASS
|
||||
# - CHEST
|
||||
# - TRAPPED_CHEST
|
||||
13
src/main/resources/plugin.yml
Normal file
13
src/main/resources/plugin.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
name: ${project.artifactId}
|
||||
description: ${project.description}
|
||||
main: ${project.groupId}.${project.artifactId}.${project.artifactId}
|
||||
version: ${project.version}
|
||||
author: 喵♂呜
|
||||
website: http://ci.citycraft.cn:8800/jenkins/job/${project.artifactId}/
|
||||
commands:
|
||||
pishow:
|
||||
description: 物品保护插件
|
||||
usage: 使用/pishow 查看物品名称!
|
||||
permissions:
|
||||
pi.bypass:
|
||||
default: op
|
||||
Reference in New Issue
Block a user