Exemplo n.º 1
0
 @EventHandler(priority = EventPriority.HIGHEST)
 public void onFoodLevelChangeEvent(FoodLevelChangeEvent e) {
   if (!(e.getEntity() instanceof Player)) return;
   Player p = (Player) e.getEntity();
   PlayerDetails d = getPlayerDetails(p);
   d.modifyPowerBy(e.getFoodLevel() - p.getFoodLevel());
   e.setFoodLevel(d.getMinecraftFood(d.getPower()));
 }
Exemplo n.º 2
0
  public void a(EntityHuman entityhuman) {
    EnumDifficulty enumdifficulty = entityhuman.world.difficulty;

    this.e = this.foodLevel;
    if (this.exhaustionLevel > 4.0F) {
      this.exhaustionLevel -= 4.0F;
      if (this.saturationLevel > 0.0F) {
        // Alkazia - food
        this.saturationLevel = Math.max(this.saturationLevel - 0.8F, 0.0F);
      } else if (enumdifficulty != EnumDifficulty.PEACEFUL) {
        // CraftBukkit start
        org.bukkit.event.entity.FoodLevelChangeEvent event =
            org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(
                entityhuman, (int) Math.max(this.foodLevel - 0.5D, 0));

        if (!event.isCancelled()) {
          this.foodLevel = event.getFoodLevel();
        }

        ((EntityPlayer) entityhuman)
            .playerConnection.sendPacket(
                new PacketPlayOutUpdateHealth(
                    ((EntityPlayer) entityhuman).getBukkitEntity().getScaledHealth(),
                    this.foodLevel,
                    this.saturationLevel));
        // CraftBukkit end
      }
    }

    if (entityhuman.world.getGameRules().getBoolean("naturalRegeneration")
        && this.foodLevel >= 18
        && entityhuman.bP()) {
      ++this.foodTickTimer;
      if (this.foodTickTimer >= 80) {
        // CraftBukkit - added RegainReason
        entityhuman.heal(
            1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.SATIATED);
        this.a(3.0F);
        this.foodTickTimer = 0;
      }
    } else if (this.foodLevel <= 0) {
      ++this.foodTickTimer;
      if (this.foodTickTimer >= 80) {
        if (entityhuman.getHealth() > 10.0F
            || enumdifficulty == EnumDifficulty.HARD
            || entityhuman.getHealth() > 1.0F && enumdifficulty == EnumDifficulty.NORMAL) {
          entityhuman.damageEntity(DamageSource.STARVE, 1.0F);
        }

        this.foodTickTimer = 0;
      }
    } else {
      this.foodTickTimer = 0;
    }
  }
Exemplo n.º 3
0
 @EventHandler
 public void onEat(FoodLevelChangeEvent event) {
   if (event.getEntity() instanceof Player) {
     if (GameManager.INSTANCE.getSession((Player) event.getEntity()) == null) return;
     Player p = (Player) event.getEntity();
     if (GameManager.INSTANCE.getSession(p) == null) return;
     int old = p.getFoodLevel();
     int newLevel = event.getFoodLevel();
     if (newLevel - old > 0) {
       p.setHealth(Math.min(p.getHealth() + 1, p.getMaxHealth()));
     }
   }
 }
Exemplo n.º 4
0
 @EventHandler(priority = EventPriority.NORMAL)
 public void onPlayerFoodChange(final FoodLevelChangeEvent event) {
   if (event.getEntity() instanceof Player) {
     hungerman = (Player) event.getEntity();
     if (hungerman.getWorld().getName().equalsIgnoreCase(Settings.general_worldName)) {
       if (hungerman.getFoodLevel() > event.getFoodLevel()) {
         if (uSkyBlock.getInstance().playerIsOnIsland(hungerman)) {
           if (VaultHandler.checkPerk(
               hungerman.getName(), "usb.extra.hunger", hungerman.getWorld())) {
             event.setCancelled(true);
           }
         }
       }
     }
   }
 }
Exemplo n.º 5
0
  public void a(ItemFood itemfood, ItemStack itemstack) {
    // CraftBukkit start
    int oldFoodLevel = foodLevel;

    org.bukkit.event.entity.FoodLevelChangeEvent event =
        org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(
            entityhuman, itemfood.getNutrition(itemstack) + oldFoodLevel);

    if (!event.isCancelled()) {
      this.eat(event.getFoodLevel() - oldFoodLevel, itemfood.getSaturationModifier(itemstack));
    }

    ((EntityPlayer) entityhuman)
        .playerConnection.sendPacket(
            new PacketPlayOutUpdateHealth(
                ((EntityPlayer) entityhuman).getBukkitEntity().getScaledHealth(),
                entityhuman.getFoodData().foodLevel,
                entityhuman.getFoodData().saturationLevel));
    // CraftBukkit end
  }
Exemplo n.º 6
0
  /**
   * Monitor FoodLevelChange events.
   *
   * @param event The event to monitor
   */
  @EventHandler(priority = EventPriority.LOW)
  public void onFoodLevelChange(FoodLevelChangeEvent event) {
    if (LoadProperties.herbalismHungerBonus) {
      if (event.getEntity() instanceof Player) {
        Player player = (Player) event.getEntity();
        PlayerProfile PP = Users.getProfile(player);
        int currentFoodLevel = player.getFoodLevel();
        int newFoodLevel = event.getFoodLevel();

        /* Some foods have 3 ranks
         * Some foods have 5 ranks
         * The number of ranks is based on how 'common' the item is
         * We can adjust this quite easily if we find something is giving too much of a bonus
         */

        if (newFoodLevel > currentFoodLevel) {
          Material food = player.getItemInHand().getType();
          int herbLevel = PP.getSkillLevel(SkillType.HERBALISM);
          int foodChange = newFoodLevel - currentFoodLevel;
          int rankChange = 0;

          switch (food) {
            case BREAD:
              /* BREAD RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
              rankChange = 200;
              break;

            case COOKIE:
              /* COOKIE RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
              rankChange = 400;
              break;

            case MELON:
              /* MELON RESTORES  1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
              rankChange = 400;
              break;

            case MUSHROOM_SOUP:
              /* MUSHROOM SOUP RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
              rankChange = 200;
              break;

            default:
              return;
          }

          for (int i = 200; i <= 1000; i += rankChange) {
            if (herbLevel >= i) {
              foodChange++;
            }
          }

          /* Make sure we don't go over the max value */
          newFoodLevel = currentFoodLevel + foodChange;
          if (newFoodLevel > 20) {
            event.setFoodLevel(20);
          } else {
            event.setFoodLevel(newFoodLevel);
          }
        }
      }
    }
  }
Exemplo n.º 7
0
  /**
   * Handle FoodLevelChange events that involve modifying the event.
   *
   * @param event The event to modify
   */
  @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
  public void onFoodLevelChange(FoodLevelChangeEvent event) {
    Entity entity = event.getEntity();

    if (!(entity instanceof Player)) {
      return;
    }

    Player player = (Player) entity;

    if (Misc.isNPCEntity(player)) {
      return;
    }

    int currentFoodLevel = player.getFoodLevel();
    int newFoodLevel = event.getFoodLevel();
    int foodChange = newFoodLevel - currentFoodLevel;

    if (foodChange <= 0) {
      return;
    }

    /*
     * Some foods have 3 ranks
     * Some foods have 5 ranks
     * The number of ranks is based on how 'common' the item is
     * We can adjust this quite easily if we find something is giving too much of a bonus
     */
    switch (player.getItemInHand().getType()) {
      case BAKED_POTATO: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
      case BREAD: /* RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
      case CARROT_ITEM: /* RESTORES 2 HUNGER - RESTORES 4 1/2 HUNGER @ 1000 */
      case GOLDEN_CARROT: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
      case MUSHROOM_SOUP: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
      case PUMPKIN_PIE: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
        if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FARMERS_DIET)) {
          event.setFoodLevel(
              UserManager.getPlayer(player)
                  .getHerbalismManager()
                  .farmersDiet(Herbalism.farmersDietRankLevel1, newFoodLevel));
        }
        return;

      case COOKIE: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
      case MELON: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
      case POISONOUS_POTATO: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
      case POTATO_ITEM: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
        if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FARMERS_DIET)) {
          event.setFoodLevel(
              UserManager.getPlayer(player)
                  .getHerbalismManager()
                  .farmersDiet(Herbalism.farmersDietRankLevel2, newFoodLevel));
        }
        return;

      case COOKED_FISH: /* RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
        if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHERMANS_DIET)) {
          event.setFoodLevel(
              UserManager.getPlayer(player)
                  .getFishingManager()
                  .handleFishermanDiet(Fishing.fishermansDietRankLevel1, newFoodLevel));
        }
        return;

      case RAW_FISH: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
        if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHERMANS_DIET)) {
          event.setFoodLevel(
              UserManager.getPlayer(player)
                  .getFishingManager()
                  .handleFishermanDiet(Fishing.fishermansDietRankLevel2, newFoodLevel));
        }
        return;

      default:
        return;
    }
  }