diff --git a/pom.xml b/pom.xml
index 919faf3..b3378a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.26.6-beta
+ 1.26.7-beta
jar
Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java
index 1244e55..97cacd4 100644
--- a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java
+++ b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java
@@ -1,9 +1,11 @@
package cn.lunadeer.dominion.events;
import cn.lunadeer.dominion.Cache;
+import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerDTO;
+import cn.lunadeer.minecraftpluginutils.Teleport;
import io.papermc.paper.event.entity.EntityDyeEvent;
import org.bukkit.GameMode;
import org.bukkit.Location;
@@ -38,7 +40,7 @@ public class PlayerEvents implements Listener {
PlayerDTO player = PlayerDTO.get(bukkitPlayer);
player.onJoin(); // update name
if (!Flag.FLY.getEnable()) {
- if (bukkitPlayer.isOp() || bukkitPlayer.getGameMode()== GameMode.CREATIVE || bukkitPlayer.getGameMode() == GameMode.SPECTATOR) {
+ if (bukkitPlayer.isOp() || bukkitPlayer.getGameMode() == GameMode.CREATIVE || bukkitPlayer.getGameMode() == GameMode.SPECTATOR) {
// do nothing
} else {
bukkitPlayer.setAllowFlight(false);
@@ -511,7 +513,25 @@ public class PlayerEvents implements Listener {
public void onPlayerMove(PlayerMoveEvent event) {
Player player = event.getPlayer();
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
- checkFlag(dom, Flag.MOVE, player, event);
+ if (!checkFlag(dom, Flag.MOVE, player, null)) {
+ Location to = player.getLocation();
+ int x1 = Math.abs(to.getBlockX() - dom.getX1());
+ int x2 = Math.abs(to.getBlockX() - dom.getX2());
+ int z1 = Math.abs(to.getBlockZ() - dom.getZ1());
+ int z2 = Math.abs(to.getBlockZ() - dom.getZ2());
+ // find min distance
+ int min = Math.min(Math.min(x1, x2), Math.min(z1, z2));
+ if (min == x1) {
+ to.setX(dom.getX1() - 1);
+ } else if (min == x2) {
+ to.setX(dom.getX2() + 1);
+ } else if (min == z1) {
+ to.setZ(dom.getZ1() - 1);
+ } else {
+ to.setZ(dom.getZ2() + 1);
+ }
+ Teleport.doTeleportSafely(Dominion.instance, player, to);
+ }
}
@EventHandler(priority = EventPriority.HIGHEST) // place