@EventHandler
public void onRepair(InventoryClickEvent event) {
if(event.isCancelled() || !(event.getWhoClicked() instanceof Player) || !(event.getInventory() instanceof AnvilInventory))
return;
InventoryView view = event.getView();
int rawSlot = event.getRawSlot();
if(rawSlot != view.convertSlot(rawSlot) || rawSlot != 2)
return;
ItemStack item = event.getInventory().getItem(0);
if(!plugin.getAbilityManager().hasAbility(item) || !plugin.getAbilityManager().isTemporaryItem(item))
return;
Ability ability = plugin.getAbilityManager().getAbility(item);
event.getInventory().setItem(0, plugin.getAbilityManager().removeItemLore(item, ability));
event.setCancelled(true);
}
java类org.bukkit.inventory.AnvilInventory的实例源码
AbilityListener.java 文件源码
项目:AsgardAscension
阅读 28
收藏 0
点赞 0
评论 0
ChestKitsListener.java 文件源码
项目:ChestKit
阅读 22
收藏 0
点赞 0
评论 0
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent e) {
// Only looking for anvils
if (!(e.getInventory() instanceof AnvilInventory)) {
return;
}
ItemStack item = e.getCurrentItem();
// Only looking for kits
if (!item.hasItemMeta()) {
return;
}
ItemMeta meta = item.getItemMeta();
if (meta.hasDisplayName() && meta.hasLore() && meta.getDisplayName().startsWith("Kit ")) {
if (meta.getLore().contains(ChestKitsPlugin.LORE_KEY)) {
e.setCancelled(true);
}
}
}
AnvilListener.java 文件源码
项目:MythicDrops
阅读 28
收藏 0
点赞 0
评论 0
@EventHandler(priority = EventPriority.MONITOR)
public void onItemRename(InventoryClickEvent e) {
if (e.isCancelled()) {
return;
}
if (!mythicDrops.getConfigSettings().isRepairingEnabled()) {
return;
}
HumanEntity ent = e.getWhoClicked();
if (!(ent instanceof Player)) {
return;
}
Inventory inv = e.getInventory();
if (!(inv instanceof AnvilInventory)) {
return;
}
ItemStack fis = inv.getItem(0);
ItemStack sis = inv.getItem(1);
if (mythicDrops.getConfigSettings().isAllowRepairingUsingAnvil()) {
preventGems(fis, sis, e);
} else {
preventTiersAndGems(fis, sis, e);
}
}
ExprEventAnvilCost.java 文件源码
项目:SharpSK
阅读 26
收藏 0
点赞 0
评论 0
@Override
@Nullable
protected Number[] get(Event e) {
try {
AnvilInventory a = ((PrepareAnvilEvent) e).getInventory();
return new Number[] { a.getRepairCost() };
} catch (NullPointerException ex) {
return new Number[] { 0 };
}
}
InventoryClickListener.java 文件源码
项目:OmniWorldMCPlugin
阅读 23
收藏 0
点赞 0
评论 0
@EventHandler(priority= EventPriority.LOW, ignoreCancelled=true)
public void canEnchant(InventoryClickEvent event) {
if (!(event.getInventory() instanceof AnvilInventory)) {
return;
}
if (event.getSlotType() != InventoryType.SlotType.RESULT) {
return;
}
ItemStack item = event.getInventory().getItem(0);
ItemStack item2 = event.getInventory().getItem(1);
if (!PowerUtils.isPowerTool(item)) {
return;
}
if (item2 == null) {
return;
}
if (item2.getType() != Material.ENCHANTED_BOOK) {
switch (item2.getType()) {
case LEATHER_HELMET:
case LEATHER_LEGGINGS:
case LEAVES:
return;
}
if (PowerUtils.isPowerTool(item2)) {
if (!item.getEnchantments().isEmpty()) {}
} else {
event.setCancelled(true);
return;
}
}
if (!PowerUtils.checkEnchantPermission((Player) event.getWhoClicked(), item.getType())) {
event.setCancelled(true);
}
}
ClickPortalBlockListener.java 文件源码
项目:PortalBlock
阅读 21
收藏 0
点赞 0
评论 0
@EventHandler(priority = EventPriority.NORMAL)
public void onInventoryChange(InventoryClickEvent e){
Inventory inven = e.getInventory();
if(inven instanceof AnvilInventory){
if(e.getRawSlot() == 2){
ItemStack item = e.getCurrentItem();
if(item != null){
if(item.getType().equals(Material.ENDER_PORTAL_FRAME)){
ItemMeta meta = item.getItemMeta();
if(meta != null){
if(meta.hasDisplayName()){
String displayName = meta.getDisplayName();
PortalFile pf = new PortalFile();
if(pf.contains(displayName)){
e.setCancelled(true);
((Player) e.getWhoClicked()).sendMessage(messageData.get("portalblock.alreadyexist")
.replace("%name%", displayName));
}
}
}
}
}
}
}
}
CraftingListener.java 文件源码
项目:BelovedBlocks
阅读 23
收藏 0
点赞 0
评论 0
/**
* - Workaround to fix the crafting grid being not updated when the item is
* taken from the grid.
* <p>
* - Used to prevent our blocks to be renamed using an anvil.
* <p>
* - Used to allow our tools to be enchanted (ensure the name is kept).
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onInventoryClick(final InventoryClickEvent ev)
{
if (ev.getInventory() instanceof CraftingInventory && ev.getSlot() == 0)
{
InventoryUtils.updateInventoryLater(ev.getInventory());
}
// Disable Anvil overrides if not using item names.
else if (ev.getInventory() instanceof AnvilInventory && BBConfig.USE_ITEM_NAMES_FALLBACK.get())
{
ItemStack item = ev.getInventory().getItem(0);
ItemStack result = ev.getInventory().getItem(2);
if (item == null) return;
BelovedBlock block = BelovedBlocks.getBelovedBlocksManager().getFromItem(item);
// Items cannot be renamed
if(block != null)
{
ev.getInventory().setItem(2, new ItemStack(Material.AIR, 0));
return;
}
BelovedTool tool = BelovedBlocks.getToolsManager().getFromItem(item);
// Players can add enchantments to the tools.
if(tool != null)
{
ItemUtils.setDisplayName(result, tool.getDisplayName());
ev.getInventory().setItem(2, result);
}
}
}
AnvilListener.java 文件源码
项目:EnchantmentAPI
阅读 26
收藏 0
点赞 0
评论 0
private EnchantmentMerger getMerger(final AnvilInventory anvil) {
final ItemStack result = select(anvil.getItem(0), anvil.getItem(1), true).clone();
final ItemStack supplement = select(anvil.getItem(0), anvil.getItem(1), false);
return new EnchantmentMerger()
.merge(result, false)
.merge(supplement, true);
}
AnvilListener.java 文件源码
项目:EnchantmentAPI
阅读 26
收藏 0
点赞 0
评论 0
@EventHandler
public void onClick(InventoryClickEvent event) {
if (event.getInventory().getType() == InventoryType.ANVIL && event.getRawSlot() == 2) {
final AnvilInventory anvil = (AnvilInventory) event.getInventory();
if (anvil.getRepairCost() == 0
&& isPresent(anvil.getItem(2))
&& !isPresent(event.getWhoClicked().getItemOnCursor()) || !event.getAction().name().startsWith("PICKUP")) {
final Player player = (Player)event.getWhoClicked();
if (player.getGameMode() == GameMode.CREATIVE || checkLevels(player, anvil)) {
player.setItemOnCursor(anvil.getItem(2));
anvil.clear();
}
}
}
}
AnvilListener.java 文件源码
项目:EnchantmentAPI
阅读 21
收藏 0
点赞 0
评论 0
private boolean checkLevels(final Player player, final AnvilInventory anvil) {
final EnchantmentMerger merger = getMerger(anvil);
if (player.getLevel() >= merger.getCost()) {
player.setLevel(player.getLevel() - merger.getCost());
return true;
}
return false;
}
AnvilRenameItemEvent.java 文件源码
项目:NucleusFramework
阅读 27
收藏 0
点赞 0
评论 0
/**
* Constructor.
*
* @param player The player.
* @param anvilInventory The anvil inventory.
* @param item The item being renamed.
* @param newName The new name.
* @param oldName The old name.
*/
public AnvilRenameItemEvent(Player player, AnvilInventory anvilInventory,
ItemStack item, String newName, @Nullable String oldName) {
_player = player;
_anvilInventory = anvilInventory;
_item = item;
_newName = newName;
_oldName = oldName;
}
PlayerEvent.java 文件源码
项目:SleepingPlus
阅读 25
收藏 0
点赞 0
评论 0
@EventHandler
public void onPlayerInventoryClick(InventoryClickEvent event)
{
if(plugin.isXpBar())
{
/**
* This part of code, is not by me.(como89)
* Credit : Zelnehlun
*/
if(!event.isCancelled())
{
HumanEntity human = event.getWhoClicked();
if(human instanceof Player)
{
Inventory inv = event.getInventory();
if(inv instanceof AnvilInventory)
{
InventoryView view = event.getView();
int rawSlot = event.getRawSlot();
if(rawSlot == view.convertSlot(rawSlot))
{
if(rawSlot == 2)
{
ItemStack item = event.getCurrentItem();
if(item != null)
{
event.setCancelled(true);
}
}
}
}
}
}
/**
* END part of code
*/
}
}
NoAnvil.java 文件源码
项目:SurvivalPlus
阅读 21
收藏 0
点赞 0
评论 0
@EventHandler
public void onInventoryClick(InventoryClickEvent e)
{
Inventory inv = e.getInventory();
if(inv instanceof AnvilInventory)
{
AnvilInventory anvil = (AnvilInventory)inv;
InventoryView view = e.getView();
int rawSlot = e.getRawSlot();
// compare raw slot to the inventory view to make sure we are in the upper inventory
if(rawSlot == view.convertSlot(rawSlot))
{
// 2 = result slot
if(rawSlot == 2)
{
// item in the left slot
ItemStack item = anvil.getContents()[0];
if(item != null)
{
if
(
item.getType() == Material.GOLD_AXE
|| item.getType() == Material.GOLD_PICKAXE
|| item.getType() == Material.GOLD_SPADE
|| item.getType() == Material.GOLD_HOE
|| item.getType() == Material.GOLD_SWORD
|| item.getType() == Material.WOOD_AXE
|| item.getType() == Material.WOOD_PICKAXE
|| item.getType() == Material.WOOD_SPADE
|| item.getType() == Material.WOOD_HOE
|| item.getType() == Material.WOOD_SWORD
)
{
e.setCancelled(true);
e.getWhoClicked().closeInventory();
e.getWhoClicked().sendMessage(ChatColor.RED + Survival.Words.get("You cannot rename or repair ") + item.getItemMeta().getDisplayName() + ChatColor.RED + Survival.Words.get("period"));
}
}
}
}
}
}
QuestManager.java 文件源码
项目:QuestManager
阅读 24
收藏 0
点赞 0
评论 0
@EventHandler(priority = EventPriority.MONITOR)
public void onInventoryClick(InventoryClickEvent e){
if (e.isCancelled() || !(e.getWhoClicked() instanceof Player)) {
return;
}
if (!(e.getInventory() instanceof AnvilInventory)) {
return;
}
Player p = (Player) e.getWhoClicked();
if (!QuestManagerPlugin.questManagerPlugin.getPluginConfiguration().getWorlds().contains(
p.getWorld().getName())) {
return;
}
AnvilInventory inv = (AnvilInventory) e.getInventory();
int rawSlot = e.getSlot();
if(rawSlot != 2){
return;
}
if (inv.getItem(2) == null) {
return;
}
//trying to finish it. Just compare name from slot 0 to slot 2 and make sure the same
ItemStack left = inv.getItem(0);
ItemStack right = inv.getItem(2);
//first check: left has nothing, right should have nothing
if ( (!left.hasItemMeta() && right.hasItemMeta() && right.getItemMeta().hasDisplayName())) {
e.setCancelled(true);
return;
}
//second check: the name has changed
if (left.hasItemMeta() && left.getItemMeta().hasDisplayName()) { //we odn't need to make sure the right does cause it always will
if (!left.getItemMeta().getDisplayName().equals(right.getItemMeta().getDisplayName())) {
e.setCancelled(true);
return;
}
}
//last check: left has meta, no name but right does
if (left.hasItemMeta() && !left.getItemMeta().hasDisplayName() && right.getItemMeta().hasDisplayName()) {
e.setCancelled(true);
return;
}
}
ExprAnvilPrepareInventoryCost.java 文件源码
项目:Skellett
阅读 20
收藏 0
点赞 0
评论 0
@SuppressWarnings("unchecked")
@Override
public boolean init(Expression<?>[] e, int arg1, Kleenean arg2, ParseResult arg3) {
inventory = (Expression<AnvilInventory>) e[0];
return true;
}
ExprAnvilPrepareInventory.java 文件源码
项目:Skellett
阅读 24
收藏 0
点赞 0
评论 0
@Override
public Class<? extends AnvilInventory> getReturnType() {
return AnvilInventory.class;
}
ExprAnvilPrepareInventory.java 文件源码
项目:Skellett
阅读 22
收藏 0
点赞 0
评论 0
@Override
@Nullable
protected AnvilInventory[] get(Event e) {
return new AnvilInventory[]{((PrepareAnvilEvent)e).getInventory()};
}
JCGEventListener.java 文件源码
项目:NucleusFramework
阅读 23
收藏 0
点赞 0
评论 0
@EventHandler(priority=EventPriority.NORMAL, ignoreCancelled = true)
private void onInventoryClick(InventoryClickEvent event) {
HumanEntity entity = event.getWhoClicked();
if (!(entity instanceof Player))
return;
final Player p = (Player)entity;
Inventory inventory = event.getInventory();
if (!(inventory instanceof AnvilInventory))
return;
final AnvilInventory anvilInventory = (AnvilInventory)inventory;
InventoryView view = event.getView();
int rawSlot = event.getRawSlot();
if (rawSlot != view.convertSlot(rawSlot) || rawSlot != 2)
return;
ItemStack resultItem = anvilInventory.getItem(2);
if (resultItem == null)
return;
ItemStack slot1 = anvilInventory.getItem(0);
ItemStack slot2 = anvilInventory.getItem(1);
ItemStack slot1Clone = slot1 == null ? null : slot1.clone();
ItemStack slot2Clone = slot2 == null ? null : slot2.clone();
// check for rename
String originalName = slot1 != null
? ItemStackUtils.getDisplayName(slot1, DisplayNameOption.OPTIONAL)
: null;
String newName = ItemStackUtils.getDisplayName(resultItem, DisplayNameOption.OPTIONAL);
if (newName != null && !newName.equals(originalName)) {
AnvilRenameItemEvent renameEvent = new AnvilRenameItemEvent(
p, anvilInventory, resultItem, newName, originalName);
Nucleus.getEventManager().callBukkit(this, renameEvent);
if (renameEvent.isCancelled()) {
cancelAnvilEvent(p, anvilInventory, slot1Clone, slot2Clone);
return;
}
ItemStackUtils.setDisplayName(resultItem, renameEvent.getNewName());
}
if (slot2 == null || slot2.getType() == Material.AIR)
return;
if (slot2.getType() == Material.ENCHANTED_BOOK) {
AnvilEnchantItemEvent enchantEvent = new AnvilEnchantItemEvent(p, anvilInventory);
Nucleus.getEventManager().callBukkit(this, enchantEvent);
if (enchantEvent.isCancelled()) {
cancelAnvilEvent(p, anvilInventory, slot1Clone, slot2Clone);
}
}
else {
AnvilRepairItemEvent repairEvent = new AnvilRepairItemEvent(p, anvilInventory, resultItem);
Nucleus.getEventManager().callBukkit(this, repairEvent);
if (repairEvent.isCancelled()) {
cancelAnvilEvent(p, anvilInventory, slot1Clone, slot2Clone);
}
}
}
AnvilRenameItemEvent.java 文件源码
项目:NucleusFramework
阅读 22
收藏 0
点赞 0
评论 0
/**
* Get the anvil inventory.
*/
public AnvilInventory getAnvilInventory() {
return _anvilInventory;
}
AnvilEnchantItemEvent.java 文件源码
项目:NucleusFramework
阅读 21
收藏 0
点赞 0
评论 0
/**
* Get the inventory of the anvil that is repairing the item.
*/
public AnvilInventory getAnvilInventory() {
return _anvilInventory;
}
AnvilRepairItemEvent.java 文件源码
项目:NucleusFramework
阅读 22
收藏 0
点赞 0
评论 0
/**
* Get the inventory of the anvil that is repairing the item.
*/
public AnvilInventory getAnvilInventory() {
return _anvilInventory;
}
AnvilListener.java 文件源码
项目:DirtyArrows
阅读 27
收藏 0
点赞 0
评论 0
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
if (e.getInventory() instanceof AnvilInventory && e.getWhoClicked() instanceof Player) {
Player player = (Player) e.getWhoClicked();
AnvilInventory inv = (AnvilInventory) e.getInventory();
if (e.getSlot() == 2) {
ItemStack item = inv.getItem(2);
if (!item.hasItemMeta()) {
return;
}
if (!item.getItemMeta().hasDisplayName()) {
return;
}
String name = item.getItemMeta().getDisplayName();
String node = "";
if ((node = Util.isBastard(name)) == Util.NONE) {
return;
}
int levels = plugin.getConfig().getInt(node + ".levels");
if (levels < 0) {
return;
}
int required = (player.getGameMode() == GameMode.CREATIVE ? 0 : levels);
if (player.getLevel() < required) {
player.sendMessage(Message.NOT_ENOUGH_LEVELS_1);
player.sendMessage(Message.NOT_ENOUGH_LEVELS_2.replace("%l%", required + ""));
player.playSound(player.getLocation(), Sound.BAT_HURT, 1L, 1L);
e.setCancelled(true);
return;
}
player.setLevel(player.getLevel() - required);
if (player.getGameMode() != GameMode.CREATIVE) {
player.getInventory().addItem(e.getCurrentItem());
inv.setItem(0, null);
player.playSound(player.getLocation(), Sound.ANVIL_USE, 1L, 1L);
player.closeInventory();
}
}
}
}
TypeRepair.java 文件源码
项目:EpicQuest
阅读 22
收藏 0
点赞 0
评论 0
@EventHandler
public static void onInventoryClick(InventoryClickEvent e){
if(e.isCancelled()) return;
HumanEntity ent = e.getWhoClicked();
if(!(ent instanceof Player)) return;
Player player = (Player)ent;
Inventory inv = e.getInventory();
if(!(inv instanceof AnvilInventory)) return;
EpicPlayer epicPlayer = EpicSystem.getEpicPlayer(player.getUniqueId());
List<EpicQuestTask> taskList = epicPlayer.getTasksByType(TaskTypes.REPAIR_ITEM);
for(EpicQuestTask task : taskList){
AnvilInventory anvil = (AnvilInventory)inv;
InventoryView view = e.getView();
int rawSlot = e.getRawSlot();
if(rawSlot == view.convertSlot(rawSlot)){
// 2 = result slot
if(rawSlot != 2) return;
ItemStack[] items = anvil.getContents();
ItemStack item1 = items[0];
ItemStack item3 = e.getCurrentItem();
//if(item1 == null || item2 == null || item3 == null) return;
Material id1 = item1.getType();
Material id3 = item3.getType();
if(id1 != id3) return;
//See if correct item is repaired
if(id3 == Material.matchMaterial(task.getTaskID())){
ItemMeta meta = item3.getItemMeta();
if(meta == null) return;
if(meta instanceof Repairable){
Repairable repairable = (Repairable)meta;
int repairCost = repairable.getRepairCost();
if(player.getLevel() >= repairCost){
task.ProgressTask(1, epicPlayer, true);
}
}
}
}
}
}
AnvilRename.java 文件源码
项目:MinecraftPlugins
阅读 22
收藏 0
点赞 0
评论 0
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
CommonString commonString = new CommonString();
Inventory inventory = event.getClickedInventory();
if (inventory == null) return;
if (inventory instanceof AnvilInventory) {
if (event.getCurrentItem() != null && event.getCurrentItem().hasItemMeta()) {
if (event.getCurrentItem().getItemMeta().hasDisplayName()) {
Set<String> rocketItems = new HashSet<>(Arrays.asList(
"Rocket Boots",
"Rocket Boot Repair Station",
"Rocket Boot Repair Tank",
"Rocket Boot Repair Stand",
"Rocket Boot Control",
"Rocket Boot Fly Zone Controller",
"Rocket Boot Booster",
"Rocket Boot Saddle",
"Rocket Boot Fuel Jacket",
"Rocket Boot Variant",
"Rocket Boot Enhancement"));
ItemStack currentItem = event.getCurrentItem();
if (rocketItems.contains(ChatColor.stripColor(currentItem.getItemMeta().getDisplayName()))) {
if (currentItem.getItemMeta().hasLore()) {
if (!currentItem.getItemMeta().getLore().get(0).equals(ChatColor.YELLOW + "Rocket Level X")) {
Player player = (Player) event.getWhoClicked();
player.closeInventory();
commonString.messageSend(RocketInit.getPlugin(), player, true, RocketLanguage.RB_MOD_ERROR);
}
}
}
}
}
}
}
AnvilEnchantItemEvent.java 文件源码
项目:NucleusFramework
阅读 27
收藏 0
点赞 0
评论 0
/**
* Constructor.
*
* @param player The player
* @param anvilInventory The anvil inventory.
*/
public AnvilEnchantItemEvent(Player player, AnvilInventory anvilInventory) {
_player = player;
_anvilInventory = anvilInventory;
}
AnvilRepairItemEvent.java 文件源码
项目:NucleusFramework
阅读 17
收藏 0
点赞 0
评论 0
/**
* Constructor.
*
* @param player The player
* @param anvilInventory The anvil inventory.
* @param item The item being repaired.
*/
public AnvilRepairItemEvent(Player player, AnvilInventory anvilInventory, ItemStack item) {
_player = player;
_anvilInventory = anvilInventory;
_item = item;
}