org.bukkit.inventory.ItemStack.getEnchantments()方法的使用及代码示例

x33g5p2x  于2022-01-21 转载在 其他  
字(9.8k)|赞(0)|评价(0)|浏览(93)

本文整理了Java中org.bukkit.inventory.ItemStack.getEnchantments()方法的一些代码示例,展示了ItemStack.getEnchantments()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ItemStack.getEnchantments()方法的具体详情如下:
包路径:org.bukkit.inventory.ItemStack
类名称:ItemStack
方法名:getEnchantments

ItemStack.getEnchantments介绍

[英]Gets a map containing all enchantments and their levels on this item.
[中]获取包含此项目上所有附魔及其级别的地图。

代码示例

代码示例来源:origin: GlowstoneMC/Glowstone

private static boolean canEnchant(ItemStack item) {
  Material type = item.getType();
  switch (type) {
    case ENCHANTED_BOOK:
      return false;
    case BOOK:
      return item.getAmount() == 1;
    case FISHING_ROD:
    case BOW:
      return item.getEnchantments().isEmpty();
    default:
      return (isEnchantableTool(type) || isCloth(type) || ToolType.SWORD.matches(type))
        && item.getEnchantments().isEmpty();
  }
}

代码示例来源:origin: Bukkit/Bukkit

Map<Enchantment, Integer> enchantments = item.getEnchantments();
boolean conflicts = false;

代码示例来源:origin: EngineHub/CommandHelper

@Override
public Map<MCEnchantment, Integer> getEnchantments() {
  Map<MCEnchantment, Integer> map = new HashMap<>();
  try {
    for(Map.Entry<Enchantment, Integer> entry : is.getEnchantments().entrySet()) {
      map.put(new BukkitMCEnchantment(entry.getKey()), entry.getValue());
    }
  } catch (NullPointerException npe) {
    // Probably invalid enchantment, always return map
  }
  return map;
}

代码示例来源:origin: artex-development/Lukkit

@Override
  public LuaValue call() {
    return CoerceJavaToLua.coerce(item.getEnchantments());
  }
});

代码示例来源:origin: me.lucko/helper

public ItemStackBuilder clearEnchantments() {
  return transform(itemStack -> itemStack.getEnchantments().keySet().forEach(itemStack::removeEnchantment));
}

代码示例来源:origin: lucko/helper

public ItemStackBuilder clearEnchantments() {
  return transform(itemStack -> itemStack.getEnchantments().keySet().forEach(itemStack::removeEnchantment));
}

代码示例来源:origin: xXKeyleXx/MyPet

public static boolean compareEnchantments(ItemStack i1, ItemStack i2) {
  if (i1 == null || i2 == null) {
    return false;
  }
  if (i1.getEnchantments().size() == i2.getEnchantments().size()) {
    Map<Enchantment, Integer> e1 = i1.getEnchantments();
    Map<Enchantment, Integer> e2 = i2.getEnchantments();
    Enchantment[] e1l = new Enchantment[e1.size()];
    int i = 0;
    for (Enchantment enchantment : e1.keySet()) {
      e1l[i++] = enchantment;
    }
    i = 0;
    for (Enchantment enchantment : e2.keySet()) {
      if (e1l[i].getId() != enchantment.getId()) {
        //MyPetLogger.write("enchantment: " + e1l[i].getId() + "<->" + enchantment.getId());
        return false;
      } else if (!e1.get(e1l[i]).equals(e2.get(enchantment))) {
        //MyPetLogger.write("level: " + e1.get(e1l[i]) + "<->" + e2.get(enchantment));
        return false;
      }
      i++;
    }
    return true;
  }
  //MyPetLogger.write("size: " + i1.getEnchantments().size() + "<->" + i2.getEnchantments().size());
  return false;
}

代码示例来源:origin: eccentricdevotion/TARDIS

private void removeSonicEnchant(PlayerInventory inv) {
  int first = inv.first(sonic);
  if (first < 0) {
    return;
  }
  ItemStack stack = inv.getItem(first);
  if (stack.containsEnchantment(Enchantment.DURABILITY)) {
    stack.getEnchantments().keySet().forEach(stack::removeEnchantment);
  }
}

代码示例来源:origin: NoCheatPlus/NoCheatPlus

/**
 * Checks for illegal enchantments (legacy). Removes enchantments from
 * WRITTEN_BOOK.
 * 
 * @param player
 * @param stack
 * @return True if the check is failed.
 */
public static final boolean checkIllegalEnchantments(final Player player, 
    final ItemStack stack, final IPlayerData pData){
  if (stack == null) {
    return false;
  }
  final Material type = stack.getType();
  // Fastest checks first.
  // TODO: Make stuff configurable.
  if (type == Material.WRITTEN_BOOK){
    final Map<Enchantment, Integer> enchantments = stack.getEnchantments();
    if (enchantments != null && !enchantments.isEmpty() && pData.isCheckActive(instance.type, player)){
      // TODO: differentiate sub checks maybe or add extra permissions, later.
      for (final Enchantment ench : new HashSet<Enchantment>(enchantments.keySet())){
        stack.removeEnchantment(ench);
      }
      // TODO: actions and similar.
      return true;
    }
  }
  return false;
}

代码示例来源:origin: EpicEricEE/ShopChest

public static Map<Enchantment, Integer> getEnchantments(ItemStack itemStack) {
  if (itemStack.getItemMeta() instanceof EnchantmentStorageMeta) {
    EnchantmentStorageMeta esm = (EnchantmentStorageMeta) itemStack.getItemMeta();
    return esm.getStoredEnchants();
  } else {
    return itemStack.getEnchantments();
  }
}

代码示例来源:origin: ChestShop-authors/ChestShop-3

@EventHandler
public static void addEnchantment(ItemInfoEvent event) {
  ItemStack item = event.getItem();
  ItemMeta meta = item.getItemMeta();
  CommandSender sender = event.getSender();
  for (Map.Entry<Enchantment, Integer> enchantment : item.getEnchantments().entrySet()) {
    sender.sendMessage(ChatColor.AQUA + capitalizeFirstLetter(enchantment.getKey().getName(), '_') + ' ' + toRoman(enchantment.getValue()));
  }
  if (meta instanceof EnchantmentStorageMeta) {
    for (Map.Entry<Enchantment, Integer> enchantment : ((EnchantmentStorageMeta) meta).getStoredEnchants().entrySet()) {
      sender.sendMessage(ChatColor.YELLOW + capitalizeFirstLetter(enchantment.getKey().getName(), '_') + ' ' + toRoman(enchantment.getValue()));
    }
  }
}

代码示例来源:origin: marcelo-mason/PreciousStones

/**
 * @param item
 */
public ItemStackEntry(ItemStack item) {
  this.typeId = item.getTypeId();
  this.data = item.getData().getData();
  this.durability = item.getDurability();
  this.enchantments = item.getEnchantments();
  this.amount = item.getAmount();
}

代码示例来源:origin: AddstarMC/Minigames

ret += "dur-" + i.getDurability() + "|";
ret += "c-" + i.getAmount() + "|";
if(!i.getEnchantments().isEmpty()){
  ret += "enc-";
  for(Enchantment e : i.getEnchantments().keySet()){
    ret += "[";
    ret += e.getName() + ",";
    ret += i.getEnchantments().get(e);
    ret += "]";

代码示例来源:origin: TheBusyBiscuit/Slimefun4

/**
   *
   * @param e BlockBreakEvent
   * @since 4.2.0
   */
  @EventHandler
  public void onBlockBreak(BlockBreakEvent e) {
    List<ItemStack> drops = new ArrayList<ItemStack>();
    ItemStack item = e.getPlayer().getInventory().getItemInMainHand();
    int fortune = 1;

    if (item != null) {
      if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) {
        fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1;
        if (fortune <= 0) fortune = 1;
        fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1);
      }

      if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE")) {
        if (Talisman.checkFor(e, SlimefunItem.getByID("MINER_TALISMAN"))) {
          if (drops.isEmpty()) drops = (List<ItemStack>) e.getBlock().getDrops();
          for (ItemStack drop : new ArrayList<ItemStack>(drops)) {
            if (!drop.getType().isBlock()) drops.add(new CustomItem(drop, fortune * 2));
          }
        }
      }
    }
  }
}

代码示例来源:origin: TheBusyBiscuit/Slimefun4

private ItemStack removeEnchantments(ItemStack itemStack) {
    ItemStack strippedItem = itemStack.clone();

    for (Enchantment enchantment : itemStack.getEnchantments().keySet()) {
      strippedItem.removeEnchantment(enchantment);
    }

    if (Slimefun.isEmeraldEnchantsInstalled()) {
      for(ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(itemStack)){
        EmeraldEnchants.getInstance().getRegistry().applyEnchantment(strippedItem, enchantment.getEnchantment(), 0);
      }
    }
    return strippedItem;
  }
}

代码示例来源:origin: mcMMO-Dev/mcMMO

Player player = getPlayer();
Map<Enchantment, Integer> enchants = item.getEnchantments();
Map<Enchantment, Integer> newEnchants = item.getEnchantments();

代码示例来源:origin: eccentricdevotion/TARDIS

void playSonicSound(Player player, long now, long cooldown, String sound) {
  if ((!timeout.containsKey(player.getUniqueId()) || timeout.get(player.getUniqueId()) < now)) {
    ItemMeta im = player.getInventory().getItemInMainHand().getItemMeta();
    im.addEnchant(Enchantment.DURABILITY, 1, true);
    im.addItemFlags(ItemFlag.values());
    player.getInventory().getItemInMainHand().setItemMeta(im);
    timeout.put(player.getUniqueId(), now + cooldown);
    TARDISSounds.playTARDISSound(player.getLocation(), sound);
    plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
      ItemStack is = player.getInventory().getItemInMainHand();
      if (is.hasItemMeta()) {
        ItemMeta im1 = is.getItemMeta();
        if (im1.hasDisplayName() && ChatColor.stripColor(im1.getDisplayName()).equals("Sonic Screwdriver")) {
          player.getInventory().getItemInMainHand().getEnchantments().keySet().forEach((e) -> player.getInventory().getItemInMainHand().removeEnchantment(e));
        } else {
          // find the screwdriver in the player's inventory
          removeSonicEnchant(player.getInventory());
        }
      } else {
        // find the screwdriver in the player's inventory
        removeSonicEnchant(player.getInventory());
      }
    }, (cooldown / 50L));
  }
}

代码示例来源:origin: bitquest/bitquest

ItemStack helmet = inventory.getHelmet();
if (helmet != null && helmet.getType() == Material.PUMPKIN) {
 Map<Enchantment, Integer> enchantments = helmet.getEnchantments();
 for (Map.Entry<Enchantment, Integer> entry : enchantments.entrySet()) {
  if (entry.getKey().equals(Enchantment.BINDING_CURSE)) {

代码示例来源:origin: TheBusyBiscuit/Slimefun4

if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) {
  if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer());

代码示例来源:origin: CitizensDev/CitizensAPI

public static void saveItem(DataKey key, ItemStack item) {
  if (item == null) {
    item = new ItemStack(Material.AIR);
  }
  migrateForSave(key);
  if (SpigotUtil.isUsing1_13API()) {
    key.setString("type_namespace", item.getType().getKey().getNamespace());
    key.setString("type_key", item.getType().getKey().getKey());
  } else {
    key.setString("type", item.getType().name());
  }
  key.setInt("amount", item.getAmount());
  key.setInt("durability", item.getDurability());
  if (item.getData() != null) {
    key.setInt("mdata", item.getData().getData());
  }
  if (item.hasItemMeta()) {
    ItemMeta meta = item.getItemMeta();
    serialiseMeta(key.getRelative("meta"), meta);
  } else {
    key.removeKey("meta");
  }
  serialiseEnchantments(key.getRelative("enchantments"), item.getEnchantments());
}

相关文章