Example 1: Broadcast warning if player is driving too fast
This code will broadcast a waning to everyone with the permission myplugin.staff if someone drives more than 80 km/h. There is a cooldown of 5 seconds, so that there is no spam.
privatefinalWeakHashMap<UUID,LocalDateTime> cooldown =newWeakHashMap<>();@EventHandlerpublicvoidonSendKey(SendKeyEvent e) {/* STEP 1: Get the driver */Player driver =e.getDriver();/* STEP 2: Convert Entity to SpawnedVehicle */Entity seatArmorstand =e.getRiding();if (!seatArmorstand.hasMetadata("PART_DATA")) return; //It's not a part? Skip for now.Part part = (Part) seatArmorstand.getMetadata(NBTDataType.PART_DATA.name()).get(0).value(); //Convert to a Partif (part ==null) return; //The part is null? Skip for now.SpawnedVehicle v =part.getOwningVehicle();/* STEP 3: Check speed */if (v.getCurrentSpeedInKm() >80) {/* STEP 4: Check if driver has no cooldown, and send speedwarning */ if (!hasCooldown(driver)) Bukkit.broadcast(ChatColor.GOLD + driver.getName() + ChatColor.WHITE + " drives too fast! Current speed: " + ChatColor.GOLD + v.getCurrentSpeedInKm(), "myplugin.staff");
}}privatebooleanhasCooldown(Player driver) {boolean hasCooldown =false;if (cooldown.containsKey(driver.getUniqueId())) {LocalDateTime past =LocalDateTime.now();LocalDateTime now =cooldown.get(driver.getUniqueId());int seconds = (int) ChronoUnit.SECONDS.between(now, past);if (seconds >5) {cooldown.remove(driver.getUniqueId()); } } else {cooldown.put(driver.getUniqueId(),LocalDateTime.now()); hasCooldown =true; }return hasCooldown;}