de59059
AKL City ยท akl-city.git
Branches > main > de59059 > files
Clean up Minecarts.java
Commit: de59059babb0f64a3d844549515d45587756fd72
Parent: 09ec71f
1 changed file:
src/main/java/dev/grahp/aklcity/Minecarts.java view file
@@ -2,96 +2,52 @@ import static dev.grahp.aklcity.PlayerUtils.isHoldingFist; -import org.bukkit.event.Listener;-import org.bukkit.event.EventHandler;-import org.bukkit.Material;-import org.bukkit.Location;+import org.bukkit.*;+import org.bukkit.event.*;+import org.bukkit.event.vehicle.*;+import org.bukkit.event.player.PlayerInteractEvent;+import org.bukkit.event.block.Action; import org.bukkit.block.Block;-import org.bukkit.entity.Minecart;-import org.bukkit.entity.Vehicle;-import org.bukkit.entity.Player;-import org.bukkit.event.vehicle.VehicleMoveEvent;-import org.bukkit.util.Vector;-import org.bukkit.Bukkit; import org.bukkit.block.data.Powerable;-import java.util.HashSet;-import java.util.Set;-import java.util.UUID;-import java.util.Map;-import java.util.HashMap;+import org.bukkit.entity.*;+import org.bukkit.util.Vector; import org.bukkit.scheduler.BukkitTask; +import java.util.*;+ import net.kyori.adventure.text.Component; -import org.bukkit.World;--import org.bukkit.event.vehicle.VehicleExitEvent;-import org.bukkit.event.vehicle.VehicleEnterEvent;--import org.bukkit.event.player.PlayerInteractEvent;-import org.bukkit.event.block.Action; // TODO: // - Stops mobs from pathfinding onto rails? Or... Just kill them when they do smiemsie, keep momentum+// Somehow tell whether the player is going the wrong way? public class Minecarts implements Listener {+ private static final Material stopperRailMaterial = Material.DETECTOR_RAIL;+ private static final long timeToWaitForMinecartsToBeKilledAfterBeingDismounted = 5L;+ private static final double minecartVelocityThreshold = 0.001;+ private static final long ticksToStopAtStops = 20L;+ private static final long extraTicksToDismountAfterDeparting = 10L; - // Returns a safe place to dismount the player if there is one, or just the normal position a player would dismount a minecart from.- private Location findSafeDismount(Minecart cart) {- Location base = cart.getLocation();- World world = base.getWorld();-- // for (int dx = -2; dx <= 2; dx++) {- // for (int dz = -2; dz <= 2; dz++) {- //- // Location feet = base.clone().add(dx, 0, dz);- //- // Block ground = feet.clone().subtract(0, 1, 0).getBlock();- // Block feetBlock = feet.getBlock();- // Block headBlock = feet.clone().add(0, 1, 0).getBlock();- //- // boolean solidGround = ground.getType().isSolid();- // boolean clear = feetBlock.isPassable() && headBlock.isPassable();- // boolean notRail =- // !feetBlock.getType().toString().endsWith("RAIL") &&- // !ground.getType().toString().endsWith("RAIL");- //- // if (solidGround && clear && notRail) {- // return feet.add(0.5, 0, 0.5);- // }- // }- // }- //- // Bukkit.broadcastMessage("choosing default");- return base;+ /// Returns whether a player is in a Minecart+ private boolean isPlayerInMinecart(Minecart cart) {+ return !cart.getPassengers().isEmpty() && cart.getPassengers().get(0) instanceof Player; } - private Player playerInMinecart(Minecart cart) {- if (!cart.getPassengers().isEmpty() && cart.getPassengers().get(0) instanceof Player p) {- return p;- }- return null;- }-+ // TODO should find a safe point to dismount the player and tp them there private void dismount(Minecart cart) { cart.eject();- // var p = playerInMinecart(cart);- // if (p != null) {- // p.teleport(findSafeDismount(cart));- // }