Add building logic to ClientPlayNetworkHandlerMixin

This commit is contained in:
Kai 2022-10-25 08:03:52 +00:00
parent 32c19e7e73
commit 09561fd55d
2 changed files with 18 additions and 2 deletions

View File

@ -61,6 +61,10 @@ public class Stage1HandshakeBuilder {
return this;
}
public boolean readyToBuild() {
return this.movements.size() >= 24;
}
@Nullable
public Stage1Handshake tryBuild() throws HandshakeException {
if (this.movements.size() < 24) {

View File

@ -5,9 +5,10 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.packet.s2c.play.EntityS2CPacket;
import org.muellerssoftware.openproximitychatfabric.OPCFabric;
import org.muellerssoftware.openproximitychatfabric.connect.HandshakeException;
import org.muellerssoftware.openproximitychatfabric.connect.Stage1Handshake;
import org.muellerssoftware.openproximitychatfabric.connect.Stage1HandshakeBuilder;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@ -24,7 +25,18 @@ public abstract class ClientPlayNetworkHandlerMixin {
if (!OPCFabric.tracked_players.containsKey(player)) {
OPCFabric.tracked_players.put(player, new Stage1HandshakeBuilder().withPlayer(player));
}
OPCFabric.tracked_players.get(player).addDelta(packet.getYaw(), packet.getPitch());
Stage1HandshakeBuilder builder = OPCFabric.tracked_players.get(player);
builder.addDelta(packet.getYaw(), packet.getPitch());
if (builder.readyToBuild()) {
try {
Stage1Handshake handshake = builder.tryBuild();
if (handshake != null) {
OPCFabric.LOGGER.info("Found Stage 1 Handshake for player {}", handshake.getPlayer().getName());
}
} catch (HandshakeException e) {
OPCFabric.LOGGER.info("Caught HandshakeException ({})", e.getMessage());
}
}
}
}
}