Java 类org.bukkit.entity.Minecart 实例源码

项目:Arcadia-Spigot    文件:MusicalMinecartsGame.java   
@EventHandler
public void onMinecartEnter(PlayerInteractEntityEvent event) {
    if(!(event.getRightClicked() instanceof Minecart)) return;
    event.getRightClicked().setGlowing(false);
    event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1f, 1f);
    inMinecarts++;
    if(inMinecarts >= this.getAPI().getGameManager().getPlayersAlive()) {
        new BukkitRunnable() {
            public void run() {
                if(getAPI().getGameManager().getGameState() != GameState.INGAME) return;
                Bukkit.getOnlinePlayers().forEach(player -> {
                    if(getAPI().getGameManager().isAlive(player)) {
                        if(player.getVehicle() == null) getAPI().getGameManager().setAlive(player, false);
                    }
                });
                nextEvent();
            }
        }.runTaskLater(this.getAPI().getPlugin(), 20L);
    }
}
项目:SurvivalAPI    文件:ChunkListener.java   
/**
 * Clean the cache
 */
@Override
public void run()
{
    long currentTime = System.currentTimeMillis();

    List<Map.Entry<Chunk, Long>> temp = new ArrayList<>();
    temp.addAll(this.lastChunkCleanUp.entrySet());

    for (Map.Entry<Chunk, Long> entry : temp)
    {
        Chunk chunk = entry.getKey();

        if (!chunk.isLoaded() || (currentTime - entry.getValue() <= 60000))
            continue;

        for (Entity entity : chunk.getEntities())
            if (!(entity instanceof Item || entity instanceof HumanEntity || entity instanceof Minecart))
                entity.remove();

        this.lastChunkCleanUp.remove(chunk);
    }
}
项目:Skript    文件:MinecartData.java   
@SuppressWarnings("null")
@Override
protected boolean init(final @Nullable Class<? extends Minecart> c, final @Nullable Minecart e) {
    final MinecartType[] ts = MinecartType.values();
    for (int i = ts.length - 1; i >= 0; i--) {
        final Class<?> mc = ts[i].c;
        if (mc == null)
            continue;
        if (e == null ? mc.isAssignableFrom(c) : mc.isInstance(e)) {
            type = ts[i];
            return true;
        }
    }
    assert false;
    return false;
}
项目:PopulationDensity    文件:AfkCheckTask.java   
@Override
public void run() {
    if (!player.isOnline()) return;
    boolean kick = false;
    if (player.getVehicle() instanceof Minecart) {
        if (playerData.wasInMinecartLastRound) kick = true;
        playerData.wasInMinecartLastRound = true;
    } else {
        playerData.wasInMinecartLastRound = false;
    }
    try {
        if (playerData.lastObservedLocation != null && (playerData.lastObservedLocation.distance(player.getLocation()) < 3))
            kick = true;
    } catch (IllegalArgumentException ignored) {}

    int playersOnline = PopulationDensity.inst.getServer().getOnlinePlayers().length;
    if (!Lib.perm(player, "populationdensity.idle") && kick && ConfigData.minimumPlayersOnlineForIdleBoot <= playersOnline) {
        Log.log("Kicked " + player.getName() + " for idling.");
        player.kickPlayer("Kicked for idling, to make room for active players.");
        return;
    }
    playerData.lastObservedLocation = player.getLocation();
    playerData.afkCheckTaskID = PopulationDensity.inst.getServer().getScheduler().scheduleSyncDelayedTask(PopulationDensity.inst, this, 20L * 60 * ConfigData.maxIdleMinutes);
}
项目:GoldRushPlugin    文件:TrainStationLis.java   
/**
 * Controls chest ownership for carts.
 *
 * @param e The {@link InventoryMoveItemEvent} associated with the chest.
 */
@EventHandler
public void onInventoryOpening(InventoryOpenEvent e) {
    Inventory inv = e.getInventory();
    if (e.getPlayer() instanceof Player) {
        Player p = (Player) e.getPlayer();
        if (inv.getHolder() instanceof Minecart) {
            Minecart cart = (Minecart) inv.getHolder();
            MinecartMember<?> toCheck = MinecartMemberStore.getAt(cart.getLocation());
            if (toCheck != null && !toCheck.isDerailed()) {
                CartProperties cp = toCheck.getProperties();
                if (!cp.getOwners().contains(p.getName().toLowerCase())) {
                    p.sendMessage(ChatColor.RED + "You do not own this chest!");
                    e.setCancelled(true);
                }
            }
        }
    }
}
项目:GoldRushMC    文件:TrainStationLis.java   
/**
 * This will facilitate the need to update the {@link TrainFactory#ownerStorage} list, because if the inventory changes, the instance changes.
 * 
 * @param e The {@link InventoryMoveItemEvent} associated with the chest.
 */
@EventHandler
public void onInventoryOpening(InventoryOpenEvent e) {
    Inventory inv = e.getInventory();
    if(e.getPlayer() instanceof Player) {
        Player p = (Player) e.getPlayer();
        if(inv.getHolder() instanceof Minecart) {
            Minecart cart = (Minecart) inv.getHolder();
            MinecartMember<?> toCheck = MinecartMemberStore.getAt(cart.getLocation());
            if(toCheck != null) {
                CartProperties cp = toCheck.getProperties();
                if(!cp.getOwners().contains(p.getName().toLowerCase())) {
                    p.sendMessage(ChatColor.RED + "You do not own this chest!");
                    e.setCancelled(true);
                }
            }
        }
    }
}
项目:MinecartRevolutionTags    文件:TagCommand.java   
@Override
public void execute(Minecart minecart, Object parameter) {

    String data = String.valueOf(parameter);

    if (String.valueOf(parameter).startsWith("+")) {
        TagUtils.addTag(minecart, data.replaceAll("\\+", "").trim());
    } else if (String.valueOf(parameter).startsWith("-")) {
        if (data.replaceAll("-", "").trim().isEmpty()) {
            TagUtils.clearTags(minecart);
        } else {
            TagUtils.removeTag(minecart, data.replaceAll("-", "").trim());
        }
    } else {
        TagUtils.addTag(minecart, data.trim());
    }
}
项目:Arcadia-Spigot    文件:MusicalMinecartsGame.java   
private void killMinecarts() {
    this.getAPI().getMapRegistry().getCurrentWorld().getEntities().forEach(entity -> {
        if(entity instanceof Minecart) {
            entity.setMetadata("allow-exit", new FixedMetadataValue(this.getAPI().getPlugin(), true));
            if(!entity.getPassengers().isEmpty()) entity.eject();
            entity.remove();
        }
    });
}
项目:Arcadia-Spigot    文件:MusicalMinecartsGame.java   
private void spawnMinecarts() {
    int minecarts = this.getAPI().getGameManager().getPlayersAlive();
    if(!enoughMinecarts) minecarts--;
    for(int i=0; i<minecarts; i++) {
        Location location = spawnLocations.get(new Random().nextInt(spawnLocations.size()));
        Minecart minecart = location.getWorld().spawn(location, Minecart.class);
        minecart.getWorld().playSound(minecart.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1f, 1f);
        minecart.setGlowing(true);
    }
    if(enoughMinecarts) enoughMinecarts = false;
}
项目:SurvivalAPI    文件:ChunkListener.java   
/**
 * Save unloaded chunk
 *
 * @param event Event
 */
@EventHandler
public void onChunkUnload(ChunkUnloadEvent event)
{
    for (Entity entity : event.getChunk().getEntities())
        if (!(entity instanceof Item || entity instanceof HumanEntity || entity instanceof Minecart))
            entity.remove();

    //event.setCancelled(true);
}
项目:NeverLag    文件:AntiMinecartPortal.java   
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onEntityPortal(EntityPortalEvent e) {
    if (!cm.isAntiMinecartPortal) {
        return;
    }
    if (e.getEntity() instanceof Minecart) {
        e.setCancelled(true);
    }
}
项目:UselessCode    文件:transportation.java   
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
 if (cmd.getName().equalsIgnoreCase("cartcamera")) {
  sender.sendMessage("ja hoor");
  Player p = (Player) sender;
  Minecart minecart = (Minecart) p.getLocation().getWorld().spawn(p.getLocation(), Minecart.class);
  degree = 0;
  direction = false;
  rotating = false;
  uploopcounter = 0;
  playerpublic = (Player) sender;
  Bukkit.getScheduler().scheduleSyncRepeatingTask(main.getPL(), new Runnable() {
   @Override
   public void run() {
    if (rotating == true) {
     degree++;
     degree++; degree++;
     degree++; degree++;
     degree++;degree++;
     degree++; degree++;
     degree++; degree++;
     degree++;
    }
    if (degree == 360 || degree > 360) {
     degree = 0;
    }
    moveEntity(minecart, degree + 1 * 90);
   }
  }, 0, 1);
 }
 return false;
}
项目:RedProtect    文件:RPGlobalListener.java   
@EventHandler
   public void onPlayerInteract(PlayerInteractEntityEvent e) {
    if (e.isCancelled()) {
           return;
       }

    Player p = e.getPlayer();
       Entity ent = e.getRightClicked();
       Location l = ent.getLocation();
       Region r = RedProtect.get().rm.getTopRegion(l);
       if (r != null){
        return;
    }

       if (ent instanceof ItemFrame || ent instanceof Painting) {
           if (!bypassBuild(p, null, 0)) {
               e.setCancelled(true);
               return;
           }
       } 

       if (ent instanceof Minecart || ent instanceof Boat){
        if (!RPConfig.getGlobalFlagBool(l.getWorld().getName()+".use-minecart") && !p.hasPermission("redprotect.bypass.world")) {
               e.setCancelled(true);
               return;
           }
       } 

       if (!RPConfig.getGlobalFlagBool(l.getWorld().getName()+".interact") && !p.hasPermission("redprotect.bypass.world") && (!(ent instanceof Player))) {
        if (RPConfig.getGlobalFlagList(p.getWorld().getName() + ".if-interact-false.allow-entities").contains(ent.getType().name())){
            return;
        } 
           e.setCancelled(true);
    }
}
项目:parchment    文件:ET.java   
public static Parameter wtfOperation(Parameter dummy, Context ctx, LocationParameter where) {
    org.bukkit.World w = where.asLocation(ctx).getWorld();
    Location l = where.asLocation(ctx);
    l.setPitch(100.0f);
    l.setYaw(45.0f);
    Minecart e = (Minecart)w.spawnEntity(l, EntityType.MINECART);
    e.setPassenger(w.spawnEntity(where.asLocation(ctx), EntityType.SLIME));
    return Parameter.EmptyString;

}
项目:DeinCart    文件:CartManager.java   
public RoutePlayer getPlayerFromMinecart(Minecart minecart) {
    for (RoutePlayer player : this.getRoutePlayers()) {
        if (player.getMinecart() == minecart) {
            return player;
        }
    }
    return null;
}
项目:DeinCart    文件:CartManager.java   
public boolean isDeincartInNear(Location loc) {
    for (RoutePlayer player : this.getRoutePlayers()) {
        Minecart minecart = player.getMinecart();
        Location loc1 = minecart.getLocation();

        if (
            (Math.max(loc.getBlockX(), loc1.getBlockX()) - Math.min(loc.getBlockX(), loc1.getBlockX()) < 6) &&
            (Math.max(loc.getBlockY(), loc1.getBlockY()) - Math.min(loc.getBlockY(), loc1.getBlockY()) < 4) &&
            (Math.max(loc.getBlockZ(), loc1.getBlockZ()) - Math.min(loc.getBlockZ(), loc1.getBlockZ()) < 6)
        ) {
            return true;
        }
    }
    return false;
}
项目:TatsuCraftMod    文件:TFM_Util.java   
private static boolean canWipe(Entity entity, boolean wipeExplosives, boolean wipeVehicles)
{
    if (wipeExplosives)
    {
        if (Explosive.class.isAssignableFrom(entity.getClass()))
        {
            return true;
        }
    }

    if (wipeVehicles)
    {
        if (Boat.class.isAssignableFrom(entity.getClass()))
        {
            return true;
        }
        else if (Minecart.class.isAssignableFrom(entity.getClass()))
        {
            return true;
        }
    }

    Iterator<Class<? extends Entity>> it = WIPEABLES.iterator();
    while (it.hasNext())
    {
        if (it.next().isAssignableFrom(entity.getClass()))
        {
            return true;
        }
    }

    return false;
}
项目:PexelCore    文件:EventProcessor.java   
@EventHandler
private void onVehicleDestroyed(final EntityDamageByEntityEvent event) {
    if (event.getEntity() instanceof Minecart) {
        ProtectedArea area = Areas.findArea(event.getEntity().getLocation());
        if (area != null) {
            if (event.getDamager() instanceof Player) {
                if (!((Player) event.getDamager()).isOp()) {
                    event.setCancelled(true);
                }
            }
        }
    }
}
项目:PexelCore    文件:EventProcessor.java   
@EventHandler
private void onVehicleMove(final VehicleMoveEvent event) {
    if (event.getVehicle() instanceof Minecart) {
        //ProtectedArea area = Areas.findArea(event.getVehicle().getLocation());

    }
}
项目:MinecartRevolutionTags    文件:TagMinecartTerm.java   
@Override
public boolean getResult(Minecart minecart, Direction direction, String term) {

    String tagTerm = term.split("-")[1];
    tagTerm = tagTerm.replaceAll("\\*", ".*");

    for (String tag : TagUtils.getTags(minecart)) {
        if (tag.matches(tagTerm)) {
            return true;
        }
    }

    return false;
}
项目:MinecartRevolutionTags    文件:TagSign.java   
@Override
public void execute(Minecart minecart, String label, Sign sign) {

    for (String line : Arrays.copyOfRange(sign.getLines(), 1, sign.getLines().length)) {
        if (!line.isEmpty()) {
            executeExpression(minecart, "tag " + line);
        }
    }
}
项目:FlyingTub    文件:TubFlightListener.java   
@EventHandler(ignoreCancelled=true)
public final void onVehicleExit(VehicleExitEvent event) {
    Vehicle cart = event.getVehicle();
    if (cart.getType() == EntityType.MINECART) {
        ((Minecart) cart).setFlyingVelocityMod(exitedVelocityMod);
    }
}
项目:Skript    文件:MinecartData.java   
MinecartType(final @Nullable Class<? extends Minecart> c, final String codeName) {
    this.c = c;
    this.codeName = codeName;
}
项目:Skript    文件:MinecartData.java   
@Override
public void set(final Minecart entity) {}
项目:Skript    文件:MinecartData.java   
@Override
public boolean match(final Minecart entity) {
    if (type == MinecartType.NORMAL && type.c == Minecart.class) // pre-1.5
        return !(entity instanceof PoweredMinecart || entity instanceof StorageMinecart);
    return type.c != null && type.c.isInstance(entity);
}
项目:Skript    文件:MinecartData.java   
@Override
public Class<? extends Minecart> getType() {
    return type.c != null ? type.c : Minecart.class;
}
项目:CanaryBukkit    文件:CanaryMinecart.java   
public CanaryMinecart(net.canarymod.api.entity.vehicle.Minecart entity) {
    super(entity);
}
项目:CanaryBukkit    文件:CanaryMinecart.java   
protected net.canarymod.api.entity.vehicle.Minecart getHandle() {
    return (net.canarymod.api.entity.vehicle.Minecart) super.getHandle();
}
项目:AdvancedAchievements    文件:AchieveDistanceRunnable.java   
/**
 * Update distances and store them into server's memory until player disconnects.
 * 
 * @param player
 */
private void validateMovementAndUpdateDistance(Player player) {
    String uuid = player.getUniqueId().toString();
    Location previousLocation = playerLocations.get(uuid);

    // Update new location.
    playerLocations.put(uuid, player.getLocation());

    // If player location not found or if player has changed world, ignore previous location.
    // Evaluating distance would give an exception.
    if (previousLocation == null || !previousLocation.getWorld().getName().equals(player.getWorld().getName())) {
        return;
    }

    // If player is in restricted game mode or is in a blocked world, don't update distances.
    if (!shouldIncreaseBeTakenIntoAccountNoPermissions(player)) {
        return;
    }

    int difference = getDistanceDifference(player, previousLocation);
    // Player has not moved.
    if (difference == 0L) {
        return;
    }

    if (player.getVehicle() instanceof Horse) {
        updateDistance(difference, player, NormalAchievements.DISTANCEHORSE);
    } else if (player.getVehicle() instanceof Pig) {
        updateDistance(difference, player, NormalAchievements.DISTANCEPIG);
    } else if (player.getVehicle() instanceof Minecart) {
        updateDistance(difference, player, NormalAchievements.DISTANCEMINECART);
    } else if (player.getVehicle() instanceof Boat) {
        updateDistance(difference, player, NormalAchievements.DISTANCEBOAT);
    } else if (plugin.getServerVersion() >= 11 && player.getVehicle() instanceof Llama) {
        updateDistance(difference, player, NormalAchievements.DISTANCELLAMA);
    } else if (!player.isFlying() && (plugin.getServerVersion() < 9 || !player.isGliding())) {
        updateDistance(difference, player, NormalAchievements.DISTANCEFOOT);
    } else if (plugin.getServerVersion() >= 9 && player.isGliding()) {
        updateDistance(difference, player, NormalAchievements.DISTANCEGLIDING);
    }
}
项目:RedProtect    文件:RPPlayerListener.java   
@EventHandler(priority = EventPriority.LOWEST)
   public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent e) {
    Player p = null;        

    RedProtect.get().logger.debug("RPLayerListener: Is EntityDamageByEntityEvent event"); 

       if (e.getDamager() instanceof Player){
        p = (Player)e.getDamager();
       } else if (e.getDamager() instanceof Projectile){
        Projectile proj = (Projectile)e.getDamager();
        if (proj.getShooter() instanceof Player){
            p = (Player) proj.getShooter();
        }           
       } 

       if (p != null){
        RedProtect.get().logger.debug("Player: " + p.getName()); 
       } else {
        RedProtect.get().logger.debug("Player: is null"); 
        return;
       }

       RedProtect.get().logger.debug("Damager: " + e.getDamager().getType().name()); 

       //check killaura or freekill
       if (RPConfig.getBool("server-protection.check-killaura-freekill.enable")){
        startCheckRate(p.getName());
       }

       Location l = e.getEntity().getLocation();
       Region r = RedProtect.get().rm.getTopRegion(l);
       if (r == null){
        return;
       }

       if (RedProtect.get().tpWait.contains(p.getName())){
        RedProtect.get().tpWait.remove(p.getName());
        RPLang.sendMessage(p, "cmdmanager.region.tpcancelled");
    }

       if (e.getEntity() instanceof Player && !p.equals(e.getEntity()) && r.flagExists("pvp") && !r.canPVP((Player)e.getEntity(), p)){
        RPLang.sendMessage(p, "entitylistener.region.cantpvp");
           e.setCancelled(true);
       }

       if ((e.getEntity() instanceof Hanging || e.getEntity() instanceof EnderCrystal) && !r.canBuild(p) && !r.canBreak(e.getEntityType())){
        RPLang.sendMessage(p, "playerlistener.region.cantremove");
        e.setCancelled(true);
       }   

       if ((e.getEntity() instanceof Boat || e.getEntity() instanceof Minecart) && !r.canMinecart(p)){
        RPLang.sendMessage(p, "blocklistener.region.cantbreak");
        e.setCancelled(true);
       }    
}
项目:beaconz    文件:BeaconProtectionListener.java   
/**
 * Projects all chests inside triangles or on beacons
 * @param event
 */
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onInventoryOpen(final InventoryOpenEvent event) {
    //getLogger().info("DEBUG: inventory type = " + event.getInventory().getType());
    World world = event.getPlayer().getWorld();
    if (!world.equals(getBeaconzWorld())) {
        return;
    }
    // Check what type of inventory this is
    if (event.getInventory().getType().equals(InventoryType.PLAYER)) {
        return;
    }
    InventoryHolder invHolder = event.getInventory().getHolder();
    Location invLoc = null;
    if (invHolder instanceof Horse) {
        invLoc = ((Horse) invHolder).getLocation();
    } else if (invHolder instanceof Minecart) {
        invLoc = ((Minecart) invHolder).getLocation();
    } else {
        invLoc = event.getInventory().getLocation();
    }
    if (invLoc == null) {
        return;
    }
    Player player = (Player) event.getPlayer();
    Game game = getGameMgr().getGame(player.getLocation());
    if (game != null) {
        Team team = game.getScorecard().getTeam(player);         
        // Check beacon defense            
        BeaconObj beacon = getRegister().getBeaconAt(invLoc);
        if (beacon != null) {
            if (!beacon.getOwnership().equals(team)) {
                player.sendMessage(ChatColor.RED + Lang.triangleThisBelongsTo.replace("[team]", beacon.getOwnership().getDisplayName()));
                event.setCancelled(true);
                return;
            }
        }
        // Check triangle
        /*
        for (TriangleField triangle : getRegister().getTriangle(invLoc.getBlockX(), invLoc.getBlockZ())) {
            if (!triangle.getOwner().equals(team)) {
                player.sendMessage(ChatColor.RED + Lang.triangleThisBelongsTo.replace("[team]", triangle.getOwner().getDisplayName()));
                event.setCancelled(true);
                return;
            }
        }*/
    }
}
项目:DeinCart    文件:RoutePlayer.java   
public RoutePlayer(Player player, Minecart minecart, Route route) {
    this.player = player;
    this.minecart = minecart;
    this.route = route;
}
项目:DeinCart    文件:RoutePlayer.java   
public Minecart getMinecart() {
    return this.minecart;
}
项目:TatsuCraftMod    文件:Command_cartsit.java   
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
    Player targetPlayer = sender_p;

    if (args.length == 1)
    {
        try
        {
            targetPlayer = getPlayer(args[0]);
        }
        catch (PlayerNotFoundException ex)
        {
            sender.sendMessage(ex.getMessage());
            return true;
        }
    }

    if (senderIsConsole)
    {
        if (targetPlayer == null)
        {
            sender.sendMessage("When used from the console, you must define a target player: /cartsit <player>");
            return true;
        }
    }
    else if (targetPlayer != sender_p && !TFM_SuperadminList.isUserSuperadmin(sender))
    {
        sender.sendMessage("Only superadmins can select another player as a /cartsit target.");
        return true;
    }

    if (targetPlayer.isInsideVehicle())
    {
        targetPlayer.getVehicle().eject();
    }
    else
    {
        Minecart nearest_cart = null;
        for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class))
        {
            if (cart.isEmpty())
            {
                if (nearest_cart == null)
                {
                    nearest_cart = cart;
                }
                else
                {
                    if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation()))
                    {
                        nearest_cart = cart;
                    }
                }
            }
        }

        if (nearest_cart != null)
        {
            nearest_cart.setPassenger(targetPlayer);
        }
        else
        {
            sender.sendMessage("There are no empty minecarts in the target world.");
        }
    }

    return true;
}
项目:MinecartRevolutionTags    文件:TagCommand.java   
@Override
public boolean canExecute(Minecart minecart) {

    return true;
}
项目:RoyalSurvivors    文件:ThirstListener.java   
@EventHandler
public void oohYouTouchMyTaLaLa(PlayerMoveEvent e) {
    Player p = e.getPlayer();
    if (!RUtils.isInInfectedWorld(p) || p.getGameMode() == GameMode.CREATIVE) return;
    if (p.getVehicle() != null && p.getVehicle() instanceof Minecart) return; // don't penalize for minecarts
    Location from = e.getFrom();
    Location to = e.getTo();
    if (from.getX() == to.getX() && from.getY() == to.getY() && from.getZ() == to.getZ()) return; // looking around
    PConfManager pcm = PConfManager.getPConfManager(p);
    Float saturation = pcm.getFloat("thirstSaturation");
    if (saturation == null) saturation = (float) Config.thirstSaturationMax;
    if (saturation > 0F) {
        if (p.isSprinting()) saturation -= Config.thirstSprint;
        else if (p.isSneaking()) saturation -= Config.thirstSneak;
        else saturation -= Config.thirstWalk;
        if (to.getY() > from.getY() && !RUtils.isOnLadder(p)) saturation -= Config.thirstJump;
        pcm.set("thirstSaturation", saturation);
        return;
    }
    float thirst = pcm.getFloat("thirst");
    if (!pcm.isSet("thirst")) thirst = 1F;
    thirst *= Config.thirstMax;
    if (p.isSprinting()) thirst -= Config.thirstSprint;
    else if (p.isSneaking()) thirst -= Config.thirstSneak;
    else thirst -= Config.thirstWalk;
    Biome b = p.getLocation().getBlock().getBiome();
    long time = p.getWorld().getTime();
    if ((b == Biome.DESERT || b == Biome.DESERT_HILLS) && (time > 0L && time < 12000L) && !RUtils.isInShade(p))
        thirst -= Config.thirstDesert;
    // jump check (disregard ladders)
    if (to.getY() > from.getY() && !RUtils.isOnLadder(p)) thirst -= Config.thirstJump;
    if (thirst <= 0F) {
        p.sendMessage(ChatColor.BLUE + "You have died of dehydration.");
        p.setLastDamageCause(new EntityDamageEvent(p, EntityDamageEvent.DamageCause.CUSTOM, p.getHealth()));
        p.setHealth(0);
        p.setExp(1F);
        pcm.set("thirst", 1F);
        return;
    }
    thirst /= Config.thirstMax;
    pcm.set("thirst", thirst);
    p.setExp(thirst);
}
项目:FlyingTub    文件:TubFlightListener.java   
private void fixCart(Vehicle cart) {
    if (cart.getType() == EntityType.MINECART) {
           ((Minecart)cart).setFlyingVelocityMod(desiredVelocityMod);
    }
}