类org.bukkit.event.enchantment.EnchantItemEvent源码实例Demo

下面列出了怎么用org.bukkit.event.enchantment.EnchantItemEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: BetonQuest   文件: EnchantObjective.java
@EventHandler(ignoreCancelled = true)
public void onEnchant(EnchantItemEvent event) {
    String playerID = PlayerConverter.getID(event.getEnchanter());
    if (!containsPlayer(playerID))
        return;
    if (!item.compare(event.getItem()))
        return;
    for (EnchantmentData enchant : enchantments) {
        if (!event.getEnchantsToAdd().keySet().contains(enchant.getEnchantment())
                || event.getEnchantsToAdd().get(enchant.getEnchantment()) < enchant.getLevel()) {
            return;
        }
    }
    if (checkConditions(playerID)) {
        completeObjective(playerID);
    }
}
 
源代码2 项目: Slimefun4   文件: Talisman.java
private static Player getPlayerByEventType(Event e) {
    if (e instanceof EntityDeathEvent) {
        return ((EntityDeathEvent) e).getEntity().getKiller();
    }
    else if (e instanceof BlockBreakEvent) {
        return ((BlockBreakEvent) e).getPlayer();
    }
    else if (e instanceof PlayerEvent) {
        return ((PlayerEvent) e).getPlayer();
    }
    else if (e instanceof EntityEvent) {
        return (Player) ((EntityEvent) e).getEntity();
    }
    else if (e instanceof EnchantItemEvent) {
        return ((EnchantItemEvent) e).getEnchanter();
    }

    return null;
}
 
源代码3 项目: Quests   文件: EnchantingTaskType.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEnchant(EnchantItemEvent e) {
    Player player = e.getEnchanter();

    QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId(), true);
    QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();

    for (Quest quest : super.getRegisteredQuests()) {
        if (questProgressFile.hasStartedQuest(quest)) {
            QuestProgress questProgress = questProgressFile.getQuestProgress(quest);

            for (Task task : quest.getTasksOfType(super.getType())) {
                TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());

                if (taskProgress.isCompleted()) {
                    continue;
                }

                int enchantsNeeded = (int) task.getConfigValue("amount");

                int progressEnchant;
                if (taskProgress.getProgress() == null) {
                    progressEnchant = 0;
                } else {
                    progressEnchant = (int) taskProgress.getProgress();
                }

                taskProgress.setProgress(progressEnchant + 1);

                if (((int) taskProgress.getProgress()) >= enchantsNeeded) {
                    taskProgress.setCompleted(true);
                }
            }
        }
    }
}
 
源代码4 项目: AdditionsAPI   文件: EnchantItem.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemEnchant(EnchantItemEvent event) {
	if (event.isCancelled() || !AdditionsAPI.isCustomItem(event.getItem()))
		return;
	ItemStack item = event.getItem();
	CustomItemStack cStack = new CustomItemStack(item);
	Map<Enchantment, Integer> eToAdd = event.getEnchantsToAdd();
	Set<Enchantment> eSet = eToAdd.keySet();
	List<Enchantment> e = new ArrayList<Enchantment>(eSet);
	CustomItem cItem = cStack.getCustomItem();
	/*
	 * Non Enchantable Items
	 */
	if (!cItem.isEnchantable()) {
		event.setCancelled(true);
	} else {
		/*
		 * Forbidden Enchantments
		 */
		List<Enchantment> eInvalid = cItem.getForbidenEnchantments();
		for (Enchantment eToCheck : e) {
			if (eInvalid.contains(eToCheck)) {
				if (eToAdd.containsKey(eToCheck)) {
					eToAdd.remove(eToCheck);
				}
				if (eToAdd.isEmpty()) {
					event.setCancelled(true);
					return;
				}
			}
		}
	}
	cStack.updateLore(eToAdd);
}
 
源代码5 项目: ce   文件: Main.java
public void initializeListener() {
    if (listener != null)
        HandlerList.unregisterAll(listener);

    listener = new CEListener();

    // Register the events
    getServer().getPluginManager().registerEvents(listener, this);

    // Unregister unused events

    // EnchantItemEvent may be used
    if (!getConfig().getBoolean("Global.Enchantments.CEnchantmentTable"))
        EnchantItemEvent.getHandlerList().unregister(listener);
}
 
源代码6 项目: MineTinker   文件: EnchantingListener.java
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onTableEnchant(EnchantItemEvent event) {
	if (!MineTinker.getPlugin().getConfig().getBoolean("ConvertEnchantmentsOnEnchant", true)) return;
	if (!ToolType.ALL.contains(event.getItem().getType())) { //Something different (like a book)
		return;
	}
	if (!(modManager.isToolViable(event.getItem()) || modManager.isWandViable(event.getItem())
			|| modManager.isArmorViable(event.getItem()))) { //not a MineTinker Tool
		return;
	}

	boolean free = !MineTinker.getPlugin().getConfig().getBoolean("EnchantingCostsSlots", true);

	Map<Enchantment, Integer> enchants = event.getEnchantsToAdd();
	HashSet<Enchantment> toremove = new HashSet<>();

	for (Map.Entry<Enchantment, Integer> entry : enchants.entrySet()) {
		Modifier modifier = modManager.getModifierFromEnchantment(entry.getKey());

		// The modifier may be disabled
		if (modifier != null && modifier.isAllowed()) {
			for (int i = 0; i < entry.getValue(); i++) {
				//Adding necessary slots
				if (free)
					modManager.setFreeSlots(event.getItem(), modManager.getFreeSlots(event.getItem()) + modifier.getSlotCost());
				if (!modManager.addMod(event.getEnchanter(), event.getItem(), modifier,
						false, false, true)) {
					//Remove slots as they were not needed
					if (free)
						modManager.setFreeSlots(event.getItem(), modManager.getFreeSlots(event.getItem()) - modifier.getSlotCost());
					if (MineTinker.getPlugin().getConfig().getBoolean("RefundLostEnchantmentsAsItems", true)) {
						for (; i < entry.getValue(); i++) { //Drop lost enchantments due to some error in addMod
							if (event.getEnchanter().getInventory().addItem(modifier.getModItem()).size() != 0) { //adds items to (full) inventory
								event.getEnchanter().getWorld().dropItem(event.getEnchanter().getLocation(), modifier.getModItem());
							} // no else as it gets added in if-clause
						}
					}
					break;
				}
			}
			toremove.add(entry.getKey());
		}
	}

	toremove.forEach(enchants::remove);
	if (enchants.size() == 0) { //This Map should never be empty as the
		enchants.put(fakeEnchant, 1);
		Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> event.getItem().removeEnchantment(fakeEnchant), 1);
	}
}
 
源代码7 项目: civcraft   文件: CustomItemManager.java
@EventHandler(priority = EventPriority.NORMAL)
public void onEnchantItemEvent(EnchantItemEvent event) {
	CivMessage.sendError(event.getEnchanter(), "Items cannot be enchanted with enchantment tables.");
	event.setCancelled(true);
}
 
源代码8 项目: ce   文件: CEListener.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void EnchantItemEvent(EnchantItemEvent e) {
    if (e.getExpLevelCost() == 30)
        if (Tools.random.nextInt(100) < (Float.parseFloat(Main.config.getString("Global.Enchantments.CEnchantingProbability"))))
            CEventHandler.handleEnchanting(e);
}
 
 类所在包
 类方法
 同包方法