diff --git a/BauSystem_15/src/de/steamwar/bausystem/features/xray/XrayWrapper15.java b/BauSystem_15/src/de/steamwar/bausystem/shared/PlayerMovementWrapper15.java
similarity index 93%
rename from BauSystem_15/src/de/steamwar/bausystem/features/xray/XrayWrapper15.java
rename to BauSystem_15/src/de/steamwar/bausystem/shared/PlayerMovementWrapper15.java
index b48e4de5..67243ebb 100644
--- a/BauSystem_15/src/de/steamwar/bausystem/features/xray/XrayWrapper15.java
+++ b/BauSystem_15/src/de/steamwar/bausystem/shared/PlayerMovementWrapper15.java
@@ -17,14 +17,14 @@
* along with this program. If not, see .
*/
-package de.steamwar.bausystem.features.xray;
+package de.steamwar.bausystem.shared;
import net.minecraft.server.v1_15_R1.EntityPlayer;
import net.minecraft.server.v1_15_R1.PacketPlayInFlying;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
-public class XrayWrapper15 implements XrayWrapper {
+public class PlayerMovementWrapper15 implements PlayerMovementWrapper {
@Override
public void setPosition(Player player, Object object) {
diff --git a/BauSystem_18/src/de/steamwar/bausystem/features/xray/XrayWrapper18.java b/BauSystem_18/src/de/steamwar/bausystem/shared/PlayerMovementWrapper18.java
similarity index 93%
rename from BauSystem_18/src/de/steamwar/bausystem/features/xray/XrayWrapper18.java
rename to BauSystem_18/src/de/steamwar/bausystem/shared/PlayerMovementWrapper18.java
index 3acc74b3..ce1a99fc 100644
--- a/BauSystem_18/src/de/steamwar/bausystem/features/xray/XrayWrapper18.java
+++ b/BauSystem_18/src/de/steamwar/bausystem/shared/PlayerMovementWrapper18.java
@@ -17,14 +17,14 @@
* along with this program. If not, see .
*/
-package de.steamwar.bausystem.features.xray;
+package de.steamwar.bausystem.shared;
import net.minecraft.network.protocol.game.PacketPlayInFlying;
import net.minecraft.server.level.EntityPlayer;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
-public class XrayWrapper18 implements XrayWrapper {
+public class PlayerMovementWrapper18 implements PlayerMovementWrapper {
@Override
public void setPosition(Player player, Object object) {
diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/xray/XrayWrapper19.java b/BauSystem_19/src/de/steamwar/bausystem/shared/PlayerMovementWrapper19.java
similarity index 93%
rename from BauSystem_19/src/de/steamwar/bausystem/features/xray/XrayWrapper19.java
rename to BauSystem_19/src/de/steamwar/bausystem/shared/PlayerMovementWrapper19.java
index 83f5f61c..06f482a3 100644
--- a/BauSystem_19/src/de/steamwar/bausystem/features/xray/XrayWrapper19.java
+++ b/BauSystem_19/src/de/steamwar/bausystem/shared/PlayerMovementWrapper19.java
@@ -17,14 +17,14 @@
* along with this program. If not, see .
*/
-package de.steamwar.bausystem.features.xray;
+package de.steamwar.bausystem.shared;
import net.minecraft.network.protocol.game.PacketPlayInFlying;
import net.minecraft.server.level.EntityPlayer;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
-public class XrayWrapper19 implements XrayWrapper {
+public class PlayerMovementWrapper19 implements PlayerMovementWrapper {
@Override
public void setPosition(Player player, Object object) {
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tpslimit/TPSLimitUtils.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tpslimit/TPSLimitUtils.java
index 8fde0980..8cbced1b 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/tpslimit/TPSLimitUtils.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tpslimit/TPSLimitUtils.java
@@ -19,13 +19,19 @@
package de.steamwar.bausystem.features.tpslimit;
+import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.bausystem.BauSystem;
+import de.steamwar.bausystem.shared.PlayerMovementWrapper;
import de.steamwar.bausystem.utils.NMSWrapper;
+import de.steamwar.bausystem.utils.ProtocolAPI;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.World;
+import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
+import java.util.function.BiFunction;
+
@UtilityClass
public class TPSLimitUtils {
@@ -86,4 +92,20 @@ public class TPSLimitUtils {
currentTPSLimit = d;
tpsLimiter();
}
+
+ private static final Class> position = Reflection.getClass("{nms.network.protocol.game}.PacketPlayInFlying$PacketPlayInPosition");
+ private static final Class> positionLook = Reflection.getClass("{nms.network.protocol.game}.PacketPlayInFlying$PacketPlayInPositionLook");
+ static {
+ BiFunction positionSetter = (player, o) -> {
+ if (currentTPSLimit < 20) {
+ Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
+ PlayerMovementWrapper.impl.setPosition(player, o);
+ }, 1L);
+ return null;
+ }
+ return o;
+ };
+ ProtocolAPI.setIncomingHandler(position, positionSetter);
+ ProtocolAPI.setIncomingHandler(positionLook, positionSetter);
+ }
}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayCommand.java
index 2d3f9503..ec135654 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayCommand.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayCommand.java
@@ -26,6 +26,7 @@ import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.LinkedInstance;
import de.steamwar.bausystem.region.Region;
+import de.steamwar.bausystem.shared.PlayerMovementWrapper;
import de.steamwar.bausystem.utils.ProtocolAPI;
import de.steamwar.command.SWCommand;
import de.steamwar.core.CraftbukkitWrapper;
@@ -115,7 +116,7 @@ public class XrayCommand extends SWCommand implements Listener {
Region region = Region.getRegion(player.getLocation());
if (hidden.containsKey(region) && hidden.get(region).contains(player)) {
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
- XrayWrapper.impl.setPosition(player, o);
+ PlayerMovementWrapper.impl.setPosition(player, o);
}, 1L);
return null;
}
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayWrapper.java b/BauSystem_Main/src/de/steamwar/bausystem/shared/PlayerMovementWrapper.java
similarity index 84%
rename from BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayWrapper.java
rename to BauSystem_Main/src/de/steamwar/bausystem/shared/PlayerMovementWrapper.java
index 243b42e1..66e858af 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/xray/XrayWrapper.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/shared/PlayerMovementWrapper.java
@@ -17,14 +17,14 @@
* along with this program. If not, see .
*/
-package de.steamwar.bausystem.features.xray;
+package de.steamwar.bausystem.shared;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.core.VersionDependent;
import org.bukkit.entity.Player;
-public interface XrayWrapper {
- XrayWrapper impl = VersionDependent.getVersionImpl(BauSystem.getInstance());
+public interface PlayerMovementWrapper {
+ PlayerMovementWrapper impl = VersionDependent.getVersionImpl(BauSystem.getInstance());
void setPosition(Player player, Object object);
}