Initial commit
This commit is contained in:
8 files changed
+914
No files matched your search
@@ -0,0 +1,41 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'xyz.lncvrt'
|
||||
version = '1.0.0'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly(files('libs/craftbukkit-1.6.4-R2.0.jar'))
|
||||
}
|
||||
|
||||
def targetJavaVersion = 8
|
||||
java {
|
||||
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
||||
sourceCompatibility = javaVersion
|
||||
targetCompatibility = javaVersion
|
||||
if (JavaVersion.current() < javaVersion) {
|
||||
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8'
|
||||
|
||||
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
|
||||
options.release.set(targetJavaVersion)
|
||||
}
|
||||
}
|
||||
|
||||
processResources {
|
||||
def props = [version: version]
|
||||
inputs.properties props
|
||||
filteringCharset 'UTF-8'
|
||||
filesMatching('plugin.yml') {
|
||||
expand props
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package xyz.lncvrt.speedlimitplugin;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public final class SpeedLimitPlugin extends JavaPlugin implements Listener {
|
||||
private final Map<UUID, Location> lastPos = new ConcurrentHashMap<>();
|
||||
private final Map<UUID, Long> lastTime = new ConcurrentHashMap<>();
|
||||
private static final double MAX_SPEED = 75.0;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
getServer().getPluginManager().registerEvents(this, this);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent e) {
|
||||
UUID id = e.getPlayer().getUniqueId();
|
||||
Location to = e.getTo();
|
||||
lastPos.put(id, to);
|
||||
lastTime.put(id, System.currentTimeMillis());
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerMove(PlayerMoveEvent e) {
|
||||
Location to = e.getTo();
|
||||
Location from = e.getFrom();
|
||||
|
||||
UUID id = e.getPlayer().getUniqueId();
|
||||
long now = System.currentTimeMillis();
|
||||
|
||||
if (!to.getWorld().equals(from.getWorld())) {
|
||||
lastPos.put(id, to);
|
||||
lastTime.put(id, now);
|
||||
return;
|
||||
}
|
||||
|
||||
Location lastLocation = lastPos.get(id);
|
||||
Long lastTimestamp = lastTime.get(id);
|
||||
if (lastLocation == null || lastTimestamp == null || !lastLocation.getWorld().equals(to.getWorld())) {
|
||||
lastPos.put(id, to);
|
||||
lastTime.put(id, now);
|
||||
return;
|
||||
}
|
||||
|
||||
double dist = lastLocation.distance(to);
|
||||
double elapsed = (now - lastTimestamp) / 1000.0;
|
||||
if (elapsed <= 0.05) elapsed = 0.05;
|
||||
|
||||
double speed = dist / elapsed;
|
||||
|
||||
if (speed > MAX_SPEED) {
|
||||
e.setCancelled(true);
|
||||
e.getPlayer().teleport(lastLocation);
|
||||
e.getPlayer().sendMessage(ChatColor.RED + "You are going " + (int) speed + "BPS! Please slow down and go below " + (int) MAX_SPEED + " BPS.");
|
||||
return;
|
||||
}
|
||||
|
||||
lastPos.put(id, to);
|
||||
lastTime.put(id, now);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
name: SpeedLimitPlugin
|
||||
version: '${version}'
|
||||
main: xyz.lncvrt.speedlimitplugin.SpeedLimitPlugin
|
||||
Reference in new issue
Block a user