FrankHan2004
qazwsxqweasdzx 发表于 2021-10-16 12:26
用Inventory的all()方法?提供物品的material,返回Map,然后遍历每个key去比对,如果特征符合并数量是1就 ...

原版的clear貌似只比对了material

4399123
qazwsxqweasdzx 发表于 2021-10-16 12:26
用Inventory的all()方法?提供物品的material,返回Map,然后遍历每个key去比对,如果特征符合并数量是1就 ...

多谢!我也想到过这个方法的,就不知道有没有更简便的,所以来问问看。谢谢!

Ph-苯
Fabric的映射表下PlayerInventory有一个removeOne方法,可以移除一个物品,但是不知道Forge里这叫什么😂……

FrankHan2004
4399123 发表于 2021-10-16 14:21
多谢!我也想到过这个方法的,就不知道有没有更简便的,所以来问问看。谢谢! ...

不要太寄希望于bukkit把方法都提供好,毕竟bukkit想实现这个也是得遍历,你遍历跟他遍历没太大区别

东少大大
看一下设置那些啥的

miao_xiao_dada
脚本插件!

阿易
qazwsxqweasdzx 发表于 2021-10-16 12:26
用Inventory的all()方法?提供物品的material,返回Map,然后遍历每个key去比对,如果特征符合并数量是1就 ...

巧了 我也和他一样
大佬你看我这样写成吗
  1.                     HashMap<Integer, ItemStack> c = (HashMap<Integer, ItemStack>) inventory.all(itemStack);

  2.                 for (Integer A:c.keySet()){

  3.                     if(c.get(A).isSimilar(itemStack)){
  4.                         if(c.get(A).getAmount() >= 1){

  5.                             int a = c.get(A).getAmount();
  6.                             c.get(A).setAmount(a-1);

  7.                         }else{
复制代码

阿易
微笑大人 发表于 2021-12-3 20:01
巧了 我也和他一样
大佬你看我这样写成吗
  1.                     HashMap<Integer, ItemStack> c = (HashMap<Integer, ItemStack>) inventory.all(itemStack);

  2.                 for (Integer A:c.keySet()){

  3.                     if(c.get(A).isSimilar(itemStack)){
  4.                         if(c.get(A).getAmount() > 1){

  5.                             int a = c.get(A).getAmount();
  6.                             c.get(A).setAmount(a-1);

  7.                         }else{
  8.                             player.getInventory().remove(c.get(A));
  9.                         }
  10.                     }

  11.                 }
复制代码

第一页 上一页 下一页 最后一页