Adds an option to disable the movement check.

This commit is contained in:
Malfrador 2019-10-12 17:47:02 +02:00
parent 5546995fec
commit 65322f13b8
3 changed files with 18 additions and 5 deletions

View file

@ -54,5 +54,9 @@ public class GeyserConfiguration {
@JsonProperty("allow-third-party-capes") @JsonProperty("allow-third-party-capes")
private boolean allowThirdPartyCapes; private boolean allowThirdPartyCapes;
@JsonProperty("movement-check")
private boolean movementCheck;
private MetricInfo metrics; private MetricInfo metrics;
} }

View file

@ -31,6 +31,8 @@ import com.nukkitx.math.vector.Vector3f;
import com.nukkitx.protocol.bedrock.packet.MoveEntityAbsolutePacket; import com.nukkitx.protocol.bedrock.packet.MoveEntityAbsolutePacket;
import com.nukkitx.protocol.bedrock.packet.MovePlayerPacket; import com.nukkitx.protocol.bedrock.packet.MovePlayerPacket;
import com.nukkitx.protocol.bedrock.packet.SetEntityDataPacket; import com.nukkitx.protocol.bedrock.packet.SetEntityDataPacket;
import org.geysermc.api.Geyser;
import org.geysermc.connector.GeyserConnector;
import org.geysermc.connector.entity.Entity; import org.geysermc.connector.entity.Entity;
import org.geysermc.connector.entity.PlayerEntity; import org.geysermc.connector.entity.PlayerEntity;
import org.geysermc.connector.entity.type.EntityType; import org.geysermc.connector.entity.type.EntityType;
@ -38,7 +40,9 @@ import org.geysermc.connector.network.session.GeyserSession;
import org.geysermc.connector.network.translators.PacketTranslator; import org.geysermc.connector.network.translators.PacketTranslator;
import org.geysermc.connector.network.translators.block.BlockEntry; import org.geysermc.connector.network.translators.block.BlockEntry;
public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPacket> { public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPacket> {
@Override @Override
public void translate(MovePlayerPacket packet, GeyserSession session) { public void translate(MovePlayerPacket packet, GeyserSession session) {
PlayerEntity entity = session.getPlayerEntity(); PlayerEntity entity = session.getPlayerEntity();
@ -55,11 +59,12 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
session.getUpstream().sendPacketImmediately(moveEntityBack); session.getUpstream().sendPacketImmediately(moveEntityBack);
return; return;
} }
if (((GeyserConnector)Geyser.getConnector()).getConfig().isMovementCheck()) {
if (!isValidMove(session, packet.getMode(), entity.getPosition(), packet.getPosition())) { if (!isValidMove(session, packet.getMode(), entity.getPosition(), packet.getPosition())) {
session.getConnector().getLogger().info("Recalculating position..."); session.getConnector().getLogger().info("Recalculating position...");
recalculatePosition(session, entity, entity.getPosition()); recalculatePosition(session, entity, entity.getPosition());
return; return;
}
} }
double javaY = packet.getPosition().getY() - EntityType.PLAYER.getOffset(); double javaY = packet.getPosition().getY() - EntityType.PLAYER.getOffset();

View file

@ -53,6 +53,10 @@ general-thread-pool: 32
# OptiFine capes, LabyMod capes, 5Zig capes and MinecraftCapes # OptiFine capes, LabyMod capes, 5Zig capes and MinecraftCapes
allow-third-party-capes: true allow-third-party-capes: true
# If Geyser should verify player movement speed. Default: true
# Disabling this might cause issues with players being thrown in the air while logging in.
movement-check: true
# bStats is a stat tracker that is entirely anonymous and tracks only basic information # bStats is a stat tracker that is entirely anonymous and tracks only basic information
# about Geyser, such as how many people are online, how many servers are using Geyser, # about Geyser, such as how many people are online, how many servers are using Geyser,
# what OS is being used, etc. You can learn more about bStats here: https://bstats.org/. # what OS is being used, etc. You can learn more about bStats here: https://bstats.org/.