update 5.04
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package io.izzel.taboolib.common.event;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
@@ -11,8 +12,7 @@ public class PlayerJumpEvent extends Event implements Cancellable {
|
||||
private boolean isCancelled;
|
||||
private Player player;
|
||||
|
||||
public PlayerJumpEvent(boolean b, Player player) {
|
||||
this.isCancelled = false;
|
||||
public PlayerJumpEvent(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,11 @@ public class PlayerJumpEvent extends Event implements Cancellable {
|
||||
return this.player;
|
||||
}
|
||||
|
||||
public PlayerJumpEvent call() {
|
||||
Bukkit.getPluginManager().callEvent(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return this.isCancelled;
|
||||
|
||||
@@ -1,52 +1,40 @@
|
||||
package io.izzel.taboolib.common.listener;
|
||||
|
||||
import io.izzel.taboolib.module.inject.TListener;
|
||||
import io.izzel.taboolib.common.event.PlayerJumpEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import io.izzel.taboolib.module.inject.TInject;
|
||||
import io.izzel.taboolib.module.inject.TListener;
|
||||
import io.izzel.taboolib.util.lite.cooldown.Cooldown;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@TListener
|
||||
public class ListenerPlayerJump implements Listener {
|
||||
|
||||
public HashMap<Player, Long> cooldown = new HashMap<>();
|
||||
@TInject
|
||||
private static Cooldown cooldown = new Cooldown("taboolib:jump", 350);
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onJump(PlayerMoveEvent event) {
|
||||
if ((!event.getPlayer().isFlying()) && (event.getPlayer().getGameMode() != GameMode.CREATIVE) && (event.getFrom().getY() + 0.5D != event.getTo().getY()) && (event.getFrom().getY() + 0.419D < event.getTo().getY())) {
|
||||
Location loc = event.getFrom();
|
||||
loc.setY(event.getFrom().getY() - 1.0D);
|
||||
if (loc.getBlock().getType() != Material.AIR) {
|
||||
if (!this.cooldown.containsKey(event.getPlayer())) {
|
||||
this.cooldown.put(event.getPlayer(), System.currentTimeMillis() + 350L);
|
||||
PlayerJumpEvent evt = new PlayerJumpEvent(event.isCancelled(), event.getPlayer());
|
||||
Bukkit.getPluginManager().callEvent(evt);
|
||||
if (evt.isCancelled()) {
|
||||
event.setTo(event.getFrom());
|
||||
}
|
||||
} else if (this.cooldown.get(event.getPlayer()) <= System.currentTimeMillis()) {
|
||||
this.cooldown.put(event.getPlayer(), System.currentTimeMillis() + 350L);
|
||||
PlayerJumpEvent evt = new PlayerJumpEvent(event.isCancelled(), event.getPlayer());
|
||||
Bukkit.getPluginManager().callEvent(evt);
|
||||
if (evt.isCancelled()) {
|
||||
event.setTo(event.getFrom());
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onJump(PlayerMoveEvent e) {
|
||||
// 不是飞行
|
||||
if (!e.getPlayer().isFlying()
|
||||
// 生存或冒险模式
|
||||
&& (e.getPlayer().getGameMode() == GameMode.SURVIVAL || e.getPlayer().getGameMode() == GameMode.ADVENTURE)
|
||||
// 坐标计算
|
||||
&& (e.getFrom().getY() + 0.5D != e.getTo().getY())
|
||||
&& (e.getFrom().getY() + 0.419D < e.getTo().getY())
|
||||
// 不在冷却
|
||||
&& !cooldown.isCooldown(e.getPlayer().getName())) {
|
||||
|
||||
PlayerJumpEvent event = new PlayerJumpEvent(e.getPlayer()).call();
|
||||
if (event.isCancelled()) {
|
||||
// 返回位置
|
||||
e.setTo(e.getFrom());
|
||||
// 重置冷却
|
||||
cooldown.reset(e.getPlayer().getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent event) {
|
||||
this.cooldown.remove(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user