怎么获取所有ItemStack,并从其中随机取一个出来调用(类似Random)
(各位大佬,我是萌新,见谅)
(各位大佬,我是萌新,见谅)
遍历所有物品堆加进List
然后用Random 获取随机数r
list.get(r)
然后用Random 获取随机数r
list.get(r)
雨 发表于 2019-12-2 19:42
遍历所有物品堆加进List
然后用Random 获取随机数r
list.get(r)
能给个具体代码吗大佬,我只会遍历在线玩家
1-9999直接取随机数,判断getitem 有没有这个ID如果为null就重新再取 直到取到物品
本帖最后由 雨 于 2019-12-2 20:00 编辑
List<ItemStack> list = new ArrayList<ItemStack>();
for (ItemStack item : player.getInventory()) {
list.add(item);
}
Random rd = new Random();
int r = rd.nextInt(list.size());
ItemStack RandomItem = list.get(r);
huanmeng_cn 发表于 2019-12-2 19:44
能给个具体代码吗大佬,我只会遍历在线玩家
for (ItemStack item : player.getInventory()) {
list.add(item);
}
Random rd = new Random();
int r = rd.nextInt(list.size());
ItemStack RandomItem = list.get(r);
雨 发表于 2019-12-2 19:59
List list = new ArrayList();
for (ItemStack item : player.getInventory()) {
list.add(item);
万一玩家背包没物品呢(雾)
本帖最后由 粘兽 于 2019-12-2 20:31 编辑
复制代码
不知道空物品会产出null还是AIR 我这边只判断了AIR
- public ItemStack randomItem(Inventory inv){
- List<ItemStack> items = new ArrayList<>();
- inv.forEach(item -> {
- if(!item.getType().equals(Material.AIR)){
- items.add(item);
- }
- });
- return items.isEmpty() ? null : items.get(new Random().nextInt(items.size()));
- }
不知道空物品会产出null还是AIR 我这边只判断了AIR
- public ItemStack randomItem(Inventory inv){
- List<ItemStack> items = new ArrayList<>();
- inv.forEach(item -> {
- if(!item.getType().equals(Material.AIR)){
- items.add(item);
- }
- });
- return items.isEmpty() ? new ItemAir() : items.get(new ThreadLocalRandom().nextInt(items.size()));
- }
还有没获取到貌似是Air不是null