@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())); }
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; } }
@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())); } } }
@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); } } } } } }
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 }
/** * 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); } } } } }
/** * 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; } }