コード例 #1
0
  @EventHandler
  public void onFoodLevelChange(FoodLevelChangeEvent event) {
    if (event.isCancelled()) {
      return;
    }

    Entity entity = event.getEntity();
    if (!(entity instanceof Player)) {
      return;
    }

    Player player = (Player) entity;
    String name = player.getName().toLowerCase();

    if (PlayerCache.getInstance().isAuthenticated(name)) {
      return;
    }

    if (!data.isAuthAvailable(name)) {
      if (!Settings.isForcedRegistrationEnabled) {
        return;
      }
    }

    event.setCancelled(true);
  }
コード例 #2
0
ファイル: FoodMetaData.java プロジェクト: DaMarine/Alkazia
  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;
    }
  }
コード例 #3
0
ファイル: VampireListener.java プロジェクト: Borito/Vampire
 @EventHandler(priority = EventPriority.NORMAL)
 public void onFoodLevelChange(FoodLevelChangeEvent event) {
   if (event.isCancelled()) return;
   if (Conf.vampiresLooseFoodNaturally) return;
   Entity entity = event.getEntity();
   if (!(entity instanceof Player)) return;
   Player player = (Player) entity;
   VPlayer vplayer = VPlayers.i.get(player);
   if (!vplayer.isVampire()) return;
   event.setCancelled(true);
 }
コード例 #4
0
ファイル: FoodMetaData.java プロジェクト: DaMarine/Alkazia
  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
  }