random.nextInt glitch / error I don't know :(

Discussion in 'Plugin Development' started by Eats_Rainbows, Apr 9, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    Eats_Rainbows

    Code:
     @EventHandler(priority = EventPriority.HIGHEST)
      public void onEntityDamageChance(EntityDamageByEntityEvent event){
          if(event.getEntity() instanceof Player && event.getDamager() instanceof Player){
              Player damager = (Player) event.getDamager();
              if(this.pl.chance.contains(damager.getName())){
                  Random r = new Random();
                  int i = r.nextInt(12);
                  if(i == 5){
                      event.setDamage(event.getDamage()*2);
                      damager.sendMessage(ChatColor.YELLOW + "Double Damage!");
                  }
                  if(i == 7){
                      //event.setDamage(event.getDamage()*20);
                      damager.sendMessage(ChatColor.DARK_RED + "Instant Kill!");
                  }
                  if(i == 3){
                      damager.setHealth(damager.getHealth()+event.getDamage());
                      damager.sendMessage(ChatColor.LIGHT_PURPLE + "Health Boost!");
                  }
              }
          }
      }
    I have hit my test player like 500 times and Health Boost has not shown up. I have a feeling I am doing something wrong
     
  2. Offline

    ZeusAllMighty11

    It is random...
     
  3. Offline

    Eats_Rainbows

    I understand that, but I set the int to 1 and I still don't get it.
     
  4. Offline

    ZeusAllMighty11

    Where did you set the int to 1?
     
  5. Offline

    chasechocolate

    Eats_Rainbows is your event getting fired? Are you registering your events in the onEnable()? Might want to put some debug lines to make sure your code is getting to where it should be.
     
  6. Offline

    Eats_Rainbows

    Code:
    Random r = new Random();
                  int i = r.nextInt(1);
                  if(i == 0){
                      event.setDamage(event.getDamage()*2);
                      damager.sendMessage(ChatColor.YELLOW + "Double Damage!");
                  }
                  //if(i == 7){
                      //event.setDamage(event.getDamage()*20);
                      //damager.sendMessage(ChatColor.DARK_RED + "Instant Kill!");
                  //}
                  if(i == 1){
                      damager.setHealth(damager.getHealth()+event.getDamage());
                      damager.sendMessage(ChatColor.LIGHT_PURPLE + "Health Boost!");
                  }
    I have switched somethings around to match that up there, I am getting every Chance, except Health Boost
     
  7. Offline

    Terradominik

    if you do r.nextInt(1); it ever returns 0. This is because .nextInt(int i) returns a new Random value between 0 (included) and i (excluded). So if you want a random 0 or 1 you use r.nextInt(2);
     
  8. Offline

    frymaster

    also, you're creating a new random number generator every time, and only requesting one number from it. Personally, I'd create the random generator during initialisation and keep a reference to it. Not related to your bugs, though
     
Thread Status:
Not open for further replies.

Share This Page