/** * {@inheritDoc} */ @Override public boolean canSpawnVehicleSafely(Vehicle vehicle) { if (this.isBlockAboveAir(vehicle.getLocation())) { return true; } return false; }
@EventHandler(ignoreCancelled = true) public void onVehicleEnter(VehicleEnterEvent event) { if (!event.getVehicle().getPassengers().isEmpty() && needsRestrict()) { event.setCancelled(true); } }
/** * {@inheritDoc} */ @Override public Location getNextBlock(Vehicle v) { Vector vector = v.getVelocity(); Location location = v.getLocation(); int x = vector.getX() < 0 ? vector.getX() == 0 ? 0 : -1 : 1; int z = vector.getZ() < 0 ? vector.getZ() == 0 ? 0 : -1 : 1; return location.add(x, 0, z); } }
public class NavigationService{ private Map map; // a real map with distances between drivable locations ... public void navigateTo(Vehicle v, Destination to){ Location from = v.getLocation(); ...//complex business logic to find best path from current to destination. Directions directions = computeDirections(from, to); //for each step in the directions call low level methods //on vehicle to tell it how to get to destination for(Step step : directions){ v.turn(step.getCardinalDirection()); // i.e. north south east west v.travelFor(step.getDistance()); //perhaps vehicle tracks fuel consumption } } private Directions computeDirections(Location from, Destination to){ ..//use map to find best path } }
@EventHandler (ignoreCancelled = false, priority = EventPriority.MONITOR) @SuppressWarnings("ucd") public void onVehicleEntityCollision(VehicleEntityCollisionEvent event) { final List<Entity> passengers = event.getVehicle().getPassengers(); for(Entity passenger : passengers) { if(passenger.getEntityId() == event.getEntity().getEntityId()) { return; } } speedmap.remove(event.getVehicle().getEntityId()); }
/** * @param event */ @EventHandler(priority = EventPriority.HIGH) public void onVehicleMove(VehicleMoveEvent event) { Vehicle vehicle = event.getVehicle(); if (plugin.getSettingsManager().isBlacklistedWorld(vehicle.getLocation().getWorld())) { return; } List<Entity> passengers = vehicle.getPassengers(); for (Entity passenger : passengers) { if (passenger instanceof Player) { plugin.getPlayerListener().onPlayerMove(new PlayerMoveEvent((Player) passenger, event.getFrom(), event.getTo())); } } }
final EntityType vehicleType = vehicle.getType(); if (!normalVehicles.contains(vehicleType)) { if (worldDataManager.getWorldData(vehicle.getWorld()).isDebugActive(checkType)) { debug(null, "VehicleUpdateEvent fired for: " + vehicleType); if (vehicle.getVehicle() != null) { return; if (vehicle.isDead() || !vehicle.isValid()) { final Location loc = vehicle.getLocation(useLoc1); debug(player, "VehicleUpdateEvent: " + vehicleType + " " + loc); useLoc1.setWorld(null);
@EventHandler public void onVehicleMove(VehicleMoveEvent event) { Vehicle vehicle = event.getVehicle(); if (vehicle.getPassengers().isEmpty()) return; List<LocalPlayer> playerPassengers = vehicle.getPassengers().stream().filter(ent -> ent instanceof Player).map(ent -> plugin.wrapPlayer((Player) ent)).collect(Collectors.toList()); if (playerPassengers.isEmpty()) { return; } World world = vehicle.getWorld(); ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); WorldConfiguration wcfg = cfg.get(BukkitAdapter.adapt(world)); if (wcfg.useRegions) { // Did we move a block? if (Locations.isDifferentBlock(BukkitAdapter.adapt(event.getFrom()), BukkitAdapter.adapt(event.getTo()))) { for (LocalPlayer player : playerPassengers) { if (null != WorldGuard.getInstance().getPlatform().getSessionManager().get(player) .testMoveTo(player, BukkitAdapter.adapt(event.getTo()), MoveType.RIDE)) { vehicle.setVelocity(new Vector(0, 0, 0)); vehicle.teleport(event.getFrom()); return; } } } } } }
if(vehicle.getVelocity().lengthSquared() != 0) if(vehicle.isEmpty() || !(vehicle.getPassenger() instanceof Player)) Material material = world.getBlockAt(vehicle.getLocation()).getType(); if(material != Material.RAILS && material != Material.POWERED_RAIL && material != Material.DETECTOR_RAIL)
if(!GriefPrevention.instance.claimsEnabledForWorld(event.getVehicle().getWorld())) return; Claim claim = this.dataStore.getClaimAt(event.getVehicle().getLocation(), false, cachedClaim);
@EventHandler(priority = EventPriority.LOWEST) public void onVehicleMove(VehicleMoveEvent event) { Location from = event.getFrom(); Location to = event.getTo(); UUID id = event.getVehicle().getUniqueId(); for(Integer threshold : VehicleEvents.GetThresholdList()) { Map<UUID, MCLocation> lastLocations = VehicleEvents.GetLastLocations(threshold); if(!lastLocations.containsKey(id)) { lastLocations.put(id, new BukkitMCLocation(from)); continue; } MCLocation last = lastLocations.get(id); if(!to.getWorld().getName().equals(last.getWorld().getName())) { lastLocations.put(id, new BukkitMCLocation(to)); continue; } BukkitMCLocation movedTo = new BukkitMCLocation(to); if(last.distance(movedTo) > threshold) { BukkitMCVehicleMoveEvent vme = new BukkitMCVehicleMoveEvent(event, threshold, last); EventUtils.TriggerListener(Driver.VEHICLE_MOVE, "vehicle_move", vme); if(!vme.isCancelled()) { lastLocations.put(id, movedTo); } else { event.getVehicle().setVelocity(new Vector(0, 0, 0)); event.getVehicle().teleport(from); } } } }
if (this.getVehicle().getVelocity().equals(new Vector(0,0,0))) { if (((Minecart) this.getVehicle()).getMaxSpeed() == 0) ((Minecart) this.getVehicle()).setMaxSpeed(0.4d); this.getVehicle().setVelocity((new Vector(this.getCardinal().getModX(), this.getCardinal().getModY(), this.getCardinal().getModZ())).multiply(ByteCart.myPlugin.getConfig().getDouble("BC7001.startvelocity"))); this.getVehicle().setVelocity(new Vector(0,0,0)); ((Minecart) this.getVehicle()).setMaxSpeed(0d); ByteCart.myPlugin.getIsTrainManager().getMap().remove(getBlock().getRelative(getCardinal().getOppositeFace(), 2).getLocation());
if (vehicle.getVehicle() != null) { return; if (vehicle.isDead() || !vehicle.isValid()) { final EntityType vehicleType = vehicle.getType(); final IPlayerData pData = DataManager.getPlayerData(player); final MovingData data = pData.getGenericInstance(MovingData.class);
double speed = minecart.getVelocity().length(); minecart.remove(); Entity e = trackLocation.getWorld().spawnEntity(trackLocation, cart); InventoryHolder smc = (InventoryHolder) e;
@Override public void trigger() { org.bukkit.entity.Vehicle vehicle = this.getVehicle(); // we eject the passenger vehicle.eject(); // we drop items if (ByteCart.myPlugin.keepItems()) { org.bukkit.inventory.Inventory inventory; if (vehicle instanceof InventoryHolder) { inventory = ((InventoryHolder) vehicle).getInventory(); World world = this.getBlock().getWorld(); org.bukkit.Location loc = this.getBlock().getRelative(BlockFace.UP, 2).getLocation(); ListIterator<ItemStack> it = inventory.iterator(); while (it.hasNext()) { ItemStack stack = it.next(); if (stack != null) world.dropItem(loc, stack); } } } vehicle.remove(); } }
@EventHandler public void onVehicleEnter(VehicleEnterEvent event) { if (!(event.getEntered() instanceof Player)) return; String playerID = PlayerConverter.getID((Player) event.getEntered()); if (containsPlayer(playerID) && (any || event.getVehicle().getType() == vehicle) && checkConditions(playerID)) { completeObjective(playerID); } }
@Override public void trigger() { if (this.getVehicle() != null) this.getVehicle().eject(); }
/** * @param event */ @EventHandler(priority = EventPriority.HIGH) public void onVehicleEnter(VehicleEnterEvent event) { Vehicle vehicle = event.getVehicle(); if (plugin.getSettingsManager().isBlacklistedWorld(vehicle.getLocation().getWorld())) { return; } List<Entity> passengers = vehicle.getPassengers(); for (Entity passenger : passengers) { if (passenger instanceof Player) { Player player = (Player) passenger; Field field = plugin.getForceFieldManager().getEnabledSourceField(player.getLocation(), FieldFlag.PREVENT_VEHICLE_ENTER); if (field != null) { if (FieldFlag.PREVENT_VEHICLE_ENTER.applies(field, player)) { event.setCancelled(true); } } } } }
ItemStack[] inv = Arrays.copyOf(inventory.getContents(), inventory.getSize()); inventory.clear(); teleportMinecart(minecart, in_out, d, inv, minecart.getType()); shouldPrevent = false;