Skip to content

Commit 179a7ea

Browse files
committed
Send player abilities packet to ensure the player is flying and can't move
1 parent 29841f5 commit 179a7ea

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

src/main/java/net/lenni0451/miniconnect/server/protocol/LobbyPacketRegistry.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public LobbyPacketRegistry() {
3535
this.registerPacket(MCPackets.S2C_OPEN_BOOK, S2COpenBookPacket::new);
3636
this.registerPacket(MCPackets.S2C_SET_EQUIPMENT, S2CSetEquipmentPacket::new);
3737
this.registerPacket(MCPackets.S2C_CONTAINER_SET_DATA, S2CContainerSetDataPacket::new);
38+
this.registerPacket(MCPackets.S2C_PLAYER_ABILITIES, S2CPlayerAbilitiesPacket::new);
3839
}
3940

4041
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package net.lenni0451.miniconnect.server.protocol.packets.play.s2c;
2+
3+
import io.netty.buffer.ByteBuf;
4+
import lombok.AllArgsConstructor;
5+
import lombok.NoArgsConstructor;
6+
import net.raphimc.netminecraft.packet.Packet;
7+
8+
@NoArgsConstructor
9+
@AllArgsConstructor
10+
public class S2CPlayerAbilitiesPacket implements Packet {
11+
12+
public boolean invulnerable;
13+
public boolean isFlying;
14+
public boolean canFly;
15+
public boolean instabuild;
16+
public float flyingSpeed;
17+
public float walkingSpeed;
18+
19+
20+
@Override
21+
public void read(ByteBuf byteBuf, int i) {
22+
throw new UnsupportedOperationException();
23+
}
24+
25+
@Override
26+
public void write(ByteBuf byteBuf, int i) {
27+
int flags = 0;
28+
if (this.invulnerable) flags |= 0b1;
29+
if (this.isFlying) flags |= 0b10;
30+
if (this.canFly) flags |= 0b100;
31+
if (this.instabuild) flags |= 0b1000;
32+
byteBuf.writeByte(flags);
33+
byteBuf.writeFloat(this.flyingSpeed);
34+
byteBuf.writeFloat(this.walkingSpeed);
35+
}
36+
37+
}

src/main/java/net/lenni0451/miniconnect/server/states/PlayStateHandler.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public PlayStateHandler(final LobbyServerHandler handler, final Channel channel)
2828

2929
private void init() {
3030
this.send(new S2CLoginPacket(0, false, 1, 1, 1, false, false, false, 3, "minecraft:the_end", 0, 3, 0, false, false, null, 0, 0, false));
31+
this.send(new S2CPlayerAbilitiesPacket(true, true, true, false, 0, 0));
3132
this.send(new S2CGameEventPacket(GameEventType.LEVEL_CHUNKS_LOAD_START.ordinal(), 0));
3233
for (int i = 0; i < 9; i++) {
3334
Chunk chunk = new Chunk1_18(i % 3, i / 3, new ChunkSection[ProtocolConstants.CHUNK_SECTION_COUNT], new CompoundTag(), new ArrayList<>());

0 commit comments

Comments
 (0)