首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“我的世界财富”区块

“我的世界财富”区块
EN

Stack Overflow用户
提问于 2016-09-12 02:11:12
回答 1查看 497关注 0票数 1

我正在开发一个插件,当你打破一个块,比如石头,取决于你的镐上有多少财富,取决于它会在你的库存中投入多少。

插件详细信息:

  • 它会自动地在你的库存中放置块和矿石。
  • 它能自动熔炼矿石和块体。

我不太清楚当一个玩家打破一个砖块,比如石头,它会在他们的库存中放置超过一个街区。我想要做的是,如果他们在他们的镐上说财富6,它可能会在他们的库存中放置5-7个街区,但如果他们有财富30,它将在他们的库存中放置10-15个街区。我只是试着摆弄各种选择,看看能不能弄清楚,但我想不出来。我也没有使用hashmap的经验,所以如果我也做错了,我很抱歉。

代码:

代码语言:javascript
复制
@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);
        }
    }
}

如果你需要其他信息告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-12 09:14:00

getEnchantments()

代码语言:javascript
复制
//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);

您可以想象一个像表一样的地图,每个KEY都有自己的value。因此,KEY是独一无二的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39442529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档