diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bc0353c --- /dev/null +++ b/pom.xml @@ -0,0 +1,50 @@ + + + + 4.0.0 + + com.rsscripting + RS-FasterMinecarts + 0.1.0 + jar + + + 21 + UTF-8 + + + + + papermc + https://repo.papermc.io/repository/maven-public/ + + + + + + io.papermc.paper + paper-api + 1.21.10-R0.1-SNAPSHOT + provided + + + + + RS-FasterMinecarts-0-1-0 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.14.1 + + 21 + + + + + + \ No newline at end of file diff --git a/src/main/java/com/rsscripting/rsfasterminecarts/MinecartListener.java b/src/main/java/com/rsscripting/rsfasterminecarts/MinecartListener.java new file mode 100644 index 0000000..db47886 --- /dev/null +++ b/src/main/java/com/rsscripting/rsfasterminecarts/MinecartListener.java @@ -0,0 +1,66 @@ +package com.rsscripting.rsfasterminecarts; + +import org.bukkit.entity.Minecart; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.vehicle.VehicleEnterEvent; +import org.bukkit.event.vehicle.VehicleExitEvent; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class MinecartListener implements Listener { + + private final RSFasterMinecarts plugin; + private final Map originalSpeeds = new HashMap<>(); + + public MinecartListener(RSFasterMinecarts plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onVehicleEnter(VehicleEnterEvent event) { + + if (!(event.getVehicle() instanceof Minecart minecart)) { + return; + } + + if (!(event.getEntered() instanceof Player)) { + return; + } + + UUID minecartId = minecart.getUniqueId(); + + // Do not multiply an already modified minecart. + if (originalSpeeds.containsKey(minecartId)) { + return; + } + + double originalSpeed = minecart.getMaxSpeed(); + double multiplier = plugin.getConfig().getDouble("max-speed", 3.0); + + originalSpeeds.put(minecartId, originalSpeed); + + minecart.setMaxSpeed(originalSpeed * multiplier); + } + + @EventHandler + public void onVehicleExit(VehicleExitEvent event) { + + if (!(event.getVehicle() instanceof Minecart minecart)) { + return; + } + + UUID minecartId = minecart.getUniqueId(); + + Double originalSpeed = originalSpeeds.remove(minecartId); + + if (originalSpeed == null) { + return; + } + + minecart.setMaxSpeed(originalSpeed); + } +} \ No newline at end of file diff --git a/src/main/java/com/rsscripting/rsfasterminecarts/RSFasterMinecarts.java b/src/main/java/com/rsscripting/rsfasterminecarts/RSFasterMinecarts.java new file mode 100644 index 0000000..e68e0e0 --- /dev/null +++ b/src/main/java/com/rsscripting/rsfasterminecarts/RSFasterMinecarts.java @@ -0,0 +1,24 @@ +package com.rsscripting.rsfasterminecarts; + +import org.bukkit.plugin.java.JavaPlugin; + +public class RSFasterMinecarts extends JavaPlugin { + + @Override + public void onEnable() { + + saveDefaultConfig(); + + getServer().getPluginManager().registerEvents( + new MinecartListener(this), + this + ); + + getLogger().info("RS-FasterMinecarts enabled."); + } + + @Override + public void onDisable() { + getLogger().info("RS-FasterMinecarts disabled."); + } +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..0d469d5 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,4 @@ +# Maximum speed multiplier for player-occupied minecarts. +# 1.0 = normal Minecraft speed +# 3.0 = three times normal speed +max-speed: 3.0 \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..cb51fe6 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,6 @@ +name: RS-FasterMinecarts +version: ${project.version} +main: com.rsscripting.rsfasterminecarts.RSFasterMinecarts +api-version: '1.21' +description: Increases the maximum speed of player-occupied minecarts. +author: RS Scripting \ No newline at end of file diff --git a/target/classes/com/rsscripting/rsfasterminecarts/MinecartListener.class b/target/classes/com/rsscripting/rsfasterminecarts/MinecartListener.class new file mode 100644 index 0000000..acca1ef Binary files /dev/null and b/target/classes/com/rsscripting/rsfasterminecarts/MinecartListener.class differ