Помогите Генерация рандомных чисел

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Как можно зарандомить числа от 1 до 3 и при выпадении каждого из трех чисел отправлять игроку сообщение?
P.S я уже наговнокодил это фуфло, но оно криво работало, полазил немного в гугле - не дало ожидаемых результатов. Помогите плез
 
Как можно зарандомить числа от 1 до 3 и при выпадении каждого из трех чисел отправлять игроку сообщение?
P.S я уже наговнокодил это фуфло, но оно криво работало, полазил немного в гугле - не дало ожидаемых результатов. Помогите плез
Забей в гугле "как сгенерировать рандомное число в java в определенном диапазоне"
 
Пишу по памяти, так что если будут ошибки, извиняйте.

Код:
Player player = **получаем игрока**;
Integer random = (Integer) (Math.random() * 3) + 1;

switch random {
   case 1: {
      player.sendMessage("Выпало 1");
      break;
   }
   case 2: {
      player.sendMessage("Выпало 2");
      break;
   }
   case 3: {
      player.sendMessage("Выпало 3");
      break;
   }
   default: {
      player.sendMessage("Что-то пошло не так и рандомное число не 1, не 2 и не 3. Рандомное число: " + random.toString());
      break;
   }
}
 
Сделал плагин - если игрок тыкает на дверь, генерится рандомное число от 1 до 3 и ему отсылается сообщение.
Я нагуглил и сделал рандом, но почему-то, при клике игроку отсылается 2 сообщения. В чем ошибка?

PHP:
if(clicked.getType().equals(Material.WOODEN_DOOR) || clicked.getType().equals(Material.IRON_DOOR_BLOCK))
         {
                    e.setCancelled(true);
                    int max = 3;
                    int rnd = rnd(max);
                    if(rnd == 1)
                    {
                            p.sendMessage(1+"");
                    }
                    else if(rnd == 2)
                    {
                            p.sendMessage(2+"");
                    }
                    else if(rnd == 3)
                    {
                            p.sendMessage(3+"");
                    }                                      
}
  public static int rnd(double max)
      {
              return (int) (Math.random() * ++max);
      }
 
Сделал плагин - если игрок тыкает на дверь, генерится рандомное число от 1 до 3 и ему отсылается сообщение.
Я нагуглил и сделал рандом, но почему-то, при клике игроку отсылается 2 сообщения. В чем ошибка?

PHP:
if(clicked.getType().equals(Material.WOODEN_DOOR) || clicked.getType().equals(Material.IRON_DOOR_BLOCK))
         {
                    e.setCancelled(true);
                    int max = 3;
                    int rnd = rnd(max);
                    if(rnd == 1)
                    {
                            p.sendMessage(1+"");
                    }
                    else if(rnd == 2)
                    {
                            p.sendMessage(2+"");
                    }
                    else if(rnd == 3)
                    {
                            p.sendMessage(3+"");
                    }                                     
}
  public static int rnd(double max)
      {
              return (int) (Math.random() * ++max);
      }
Смотри выше
 
PHP:
@EventHandler
    public void onClick(PlayerInteractEvent e)
    {
        Player p = e.getPlayer();
        Block clicked = e.getClickedBlock();
        if(!e.getAction().equals(Action.RIGHT_CLICK_AIR) && !e.getAction().equals(Action.LEFT_CLICK_BLOCK) && !e.getAction().equals(Action.LEFT_CLICK_AIR) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        {
            if(p.getInventory().getItemInMainHand().hasItemMeta() && p.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equalsIgnoreCase(Utils.getColor(main.getConfig().getString("settings.hackName"))))
            {
                if(clicked.getType().equals(Material.WOODEN_DOOR) || clicked.getType().equals(Material.IRON_DOOR_BLOCK))
                {
                    e.setCancelled(true);       
                    int random = (int) (Math.random() * 3) + 1;
                    switch(random)
                    {
                       case 1:
                       {
                          p.sendMessage("Выпало 1");
                          break;
                       }
                       case 2:
                       {
                          p.sendMessage("Выпало 2");
                          break;
                       }
                       case 3:
                       {
                          p.sendMessage("Выпало 3");
                          break;
                       }
                       default:
                       {
                          p.sendMessage("Что-то пошло не так и рандомное число не 1, не 2 и не 3. Рандомное число: " + random);
                          break;
                       }
                    }                                                               
                }
            }
        }
    }
 
Заметил странную особенность: Если кликать по деревянной двери - все нормально работает. Если кликать по железной двери - отправляется 2 числа
 
Проверяй руку. Там эвент срабатывает для каждой руки.
А разве эта часть не является проверкой руки и проверкой айтема в ней одновременно??
PHP:
            if(p.getInventory().getItemInMainHand().hasItemMeta() && p.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equalsIgnoreCase(Utils.getColor(main.getConfig().getString("settings.hackName"))))
 
А разве эта часть не является проверкой руки и проверкой айтема в ней одновременно??
PHP:
            if(p.getInventory().getItemInMainHand().hasItemMeta() && p.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equalsIgnoreCase(Utils.getColor(main.getConfig().getString("settings.hackName"))))
if(event.getHand().equals(EquipmentSlot.HAND)) {...

На форуме уже поднимали эту тему много раз.
http://rubukkit.org/threads/proverka-ruki.157507/
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх