java - 我的世界财富 block

标签 java minecraft bukkit

我正在开发一个插件,当你打破石头等方 block 时,取决于你的镐的财富等级取决于它会放入你的库存中的数量。

插件详细信息:

  • 它会自动将方 block 和矿石放入您的库存中

  • 它自动熔炼矿石和方 block

我不太确定当玩家打破石头等方 block 时如何做到这一点,它会在他们的库存中放置超过 1 个方 block 。我想做的是,如果他们的镐上有财富 6,那么他们的库存中可能会放置 5 - 7 个方 block ,但如果他们有财富 30,它会在他们的库存中放置 10 - 15 个方 block 。我只是尝试摆弄选项,看看是否能弄清楚,但我无法弄清楚。我也没有任何使用 HashMap 的经验,所以如果我也做错了,我很抱歉。

代码:

@EventHandler
public void fortuneBlock(BlockBreakEvent e) {
    Player p = (Player) e.getPlayer();
    Block b = (Block) e.getBlock();

    ItemStack DP = new ItemStack(Material.DIAMOND_PICKAXE);

    if (p.getInventory().contains(DP)) {
        if (DP.containsEnchantment(Enchantment.LOOT_BONUS_BLOCKS)) {
            HashMap<Enchantment, Integer> pickaxe = p.getInventory().getItem(Material.DIAMOND_PICKAXE);
        }
    }
}

如果您需要任何其他信息,请告诉我。

最佳答案

getEnchantments()

//Map containing all enchantments of the ItemStack
//The Map looks like: [KEY,VALUE]
//  [Enchantment.DURABILITY,2],
//  [Enchantment.LOOT_BONUS_BLOCKS,4]
HashMap<Enchantment, Integer> enchantmentMap = YourItemStack.getEnchantments();
//Check if this map contains the wanted Enchantment
if(enchantmentMap.containsKey(Enchantment.LOOT_BONUS_BLOCKS))
//Get VALUE of KEY which is the enchantLevel "4"
Integer enchantmentLevel = enchantmentMap.get(Enchantment.LOOT_BONUS_BLOCKS);

你可以把Map想象成一张 table ,每个KEY都有自己的value。因此 KEY 是唯一的。

关于java - 我的世界财富 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39442529/

相关文章:

java - 测试类不认为我的 ArrayList 是 ArrayList

java - 使用 SYSTEM 帐户的 Windows 服务调用的 java 更新 Windows 注册表

java - 用 Java 读取 Outlook .msg 文件的最佳库是什么?

http - 将 HTTP 和游戏服务器流量分离到同一地址

Java EventHander 限制(时间)

java - 调平系统不工作

java - 文本文件数组

java - Minecraft 实体注册表在服务器加载时失败

java - Minecraft 插件 scheduleSyncDelayedTask 错误

java - IllegalArgumentException:在scheduleSyncDelayedTask方法中插件不能为null