1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Рандомизация инвентаря игрока.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Grazy, 18 окт 2017.

  1. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Вот нахимичил такой код.
    Код:
        public void Chest(Player p){
            ArrayList<ItemStack[]> list = new ArrayList<ItemStack[]>();                
            list.add(p.getInventory().getContents());
            Collections.shuffle(list);
            p.getInventory().clear();
            for(int i=0;i < list.size();i++) {
            Нужно как-то перебрать все слоты инвентаря игрока, и расставить предметы в рандомном месте.
            }
          }
        }
    
     
    Последнее редактирование: 18 окт 2017
  2. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    А теперь объясни что ты хочешь
     
  3. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    В идеале это должно происходить так. Игрок который оказался в нужном радиусе от босса перемешиваються все предметы в инвентаре, то есть у игрока в инвентаре будут разбросаны все его вещи. Но так как я привык работать по большой части с готовым кодом, я смог только написать тот код что выше.
     
  4. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    По сути в твоем коде ты кидаешь в список 1 инвентарь, потом перемешиваешь все инвентари (1) и с фором перебираешь все инвентари. Тебе нужно взять контент с инвентаря, преобразовать в список, перемешать, а потом уже расставлять фором. Вот примерно так:
    Код:
    public void Chest(Player p) {
            ArrayList<ItemStack> list = Arrays.asList(p.getInventory().getContents());
            Collections.shuffle(list);
            p.getInventory().clear();
            for (int i = 0; i < list.size(); i++) {
                    p.getInventory().setItem(i, list.get(i));
            }
    }
     
  5. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    p.getInventory().setItem(i, list.get(i)); Сможет расставить предмет не поочередно а рандомно, оставляя иногда пустые слоты?
     
  6. Slavkaa

    Slavkaa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ну используй рандом, в чем проблема? Вместо i, у тебя будет new Random().nextInt(number)
     
  7. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ой хреново чето каждый раз рандом юзать проверять не занят ли слот. Не легче так?
    Код:
            List<Integer> indexes = new ArrayList<>();
            for (int i = 0; i < inv.getSize(); i++) {
                indexes.add(i);
            }
            Collections.shuffle(indexes);
            Iterator<Integer> iter = indexes.iterator();
     

Поделиться этой страницей