ClientboundPlayerAbilitiesPacket.java

net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket

信息

  • 全限定名:net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
  • 类型:public class
  • 包:net.minecraft.network.protocol.game
  • 源码路径:src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerAbilitiesPacket.java
  • 起始行号:L9
  • 实现:Packet
  • 职责:

    TODO

字段/常量

  • STREAM_CODEC

    • 类型: StreamCodec<FriendlyByteBuf,ClientboundPlayerAbilitiesPacket>
    • 修饰符: public static final
    • 源码定位: L10
    • 说明:

      TODO

  • FLAG_INVULNERABLE

    • 类型: int
    • 修饰符: private static final
    • 源码定位: L13
    • 说明:

      TODO

  • FLAG_FLYING

    • 类型: int
    • 修饰符: private static final
    • 源码定位: L14
    • 说明:

      TODO

  • FLAG_CAN_FLY

    • 类型: int
    • 修饰符: private static final
    • 源码定位: L15
    • 说明:

      TODO

  • FLAG_INSTABUILD

    • 类型: int
    • 修饰符: private static final
    • 源码定位: L16
    • 说明:

      TODO

  • invulnerable

    • 类型: boolean
    • 修饰符: private final
    • 源码定位: L17
    • 说明:

      TODO

  • isFlying

    • 类型: boolean
    • 修饰符: private final
    • 源码定位: L18
    • 说明:

      TODO

  • canFly

    • 类型: boolean
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

  • instabuild

    • 类型: boolean
    • 修饰符: private final
    • 源码定位: L20
    • 说明:

      TODO

  • flyingSpeed

    • 类型: float
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • walkingSpeed

    • 类型: float
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ClientboundPlayerAbilitiesPacket(Abilities abilities) @ L24

  • 构造器名:ClientboundPlayerAbilitiesPacket
  • 源码定位:L24
  • 修饰符:public

参数:

  • abilities: Abilities

说明:

TODO

private ClientboundPlayerAbilitiesPacket(FriendlyByteBuf input) @ L33

  • 构造器名:ClientboundPlayerAbilitiesPacket
  • 源码定位:L33
  • 修饰符:private

参数:

  • input: FriendlyByteBuf

说明:

TODO

方法

下面的方法块按源码顺序生成。

private void write(FriendlyByteBuf output) @ L43

  • 方法名:write
  • 源码定位:L43
  • 返回类型:void
  • 修饰符:private

参数:

  • output: FriendlyByteBuf

说明:

TODO

public PacketType<ClientboundPlayerAbilitiesPacket> type() @ L66

  • 方法名:type
  • 源码定位:L66
  • 返回类型:PacketType
  • 修饰符:public

参数:

说明:

TODO

public void handle(ClientGamePacketListener listener) @ L71

  • 方法名:handle
  • 源码定位:L71
  • 返回类型:void
  • 修饰符:public

参数:

  • listener: ClientGamePacketListener

说明:

TODO

public boolean isInvulnerable() @ L75

  • 方法名:isInvulnerable
  • 源码定位:L75
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public boolean isFlying() @ L79

  • 方法名:isFlying
  • 源码定位:L79
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public boolean canFly() @ L83

  • 方法名:canFly
  • 源码定位:L83
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public boolean canInstabuild() @ L87

  • 方法名:canInstabuild
  • 源码定位:L87
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public float getFlyingSpeed() @ L91

  • 方法名:getFlyingSpeed
  • 源码定位:L91
  • 返回类型:float
  • 修饰符:public

参数:

说明:

TODO

public float getWalkingSpeed() @ L95

  • 方法名:getWalkingSpeed
  • 源码定位:L95
  • 返回类型:float
  • 修饰符:public

参数:

说明:

TODO

代码

public class ClientboundPlayerAbilitiesPacket implements Packet<ClientGamePacketListener> {
    public static final StreamCodec<FriendlyByteBuf, ClientboundPlayerAbilitiesPacket> STREAM_CODEC = Packet.codec(
        ClientboundPlayerAbilitiesPacket::write, ClientboundPlayerAbilitiesPacket::new
    );
    private static final int FLAG_INVULNERABLE = 1;
    private static final int FLAG_FLYING = 2;
    private static final int FLAG_CAN_FLY = 4;
    private static final int FLAG_INSTABUILD = 8;
    private final boolean invulnerable;
    private final boolean isFlying;
    private final boolean canFly;
    private final boolean instabuild;
    private final float flyingSpeed;
    private final float walkingSpeed;
 
    public ClientboundPlayerAbilitiesPacket(Abilities abilities) {
        this.invulnerable = abilities.invulnerable;
        this.isFlying = abilities.flying;
        this.canFly = abilities.mayfly;
        this.instabuild = abilities.instabuild;
        this.flyingSpeed = abilities.getFlyingSpeed();
        this.walkingSpeed = abilities.getWalkingSpeed();
    }
 
    private ClientboundPlayerAbilitiesPacket(FriendlyByteBuf input) {
        byte bitfield = input.readByte();
        this.invulnerable = (bitfield & 1) != 0;
        this.isFlying = (bitfield & 2) != 0;
        this.canFly = (bitfield & 4) != 0;
        this.instabuild = (bitfield & 8) != 0;
        this.flyingSpeed = input.readFloat();
        this.walkingSpeed = input.readFloat();
    }
 
    private void write(FriendlyByteBuf output) {
        byte bitfield = 0;
        if (this.invulnerable) {
            bitfield = (byte)(bitfield | 1);
        }
 
        if (this.isFlying) {
            bitfield = (byte)(bitfield | 2);
        }
 
        if (this.canFly) {
            bitfield = (byte)(bitfield | 4);
        }
 
        if (this.instabuild) {
            bitfield = (byte)(bitfield | 8);
        }
 
        output.writeByte(bitfield);
        output.writeFloat(this.flyingSpeed);
        output.writeFloat(this.walkingSpeed);
    }
 
    @Override
    public PacketType<ClientboundPlayerAbilitiesPacket> type() {
        return GamePacketTypes.CLIENTBOUND_PLAYER_ABILITIES;
    }
 
    public void handle(ClientGamePacketListener listener) {
        listener.handlePlayerAbilities(this);
    }
 
    public boolean isInvulnerable() {
        return this.invulnerable;
    }
 
    public boolean isFlying() {
        return this.isFlying;
    }
 
    public boolean canFly() {
        return this.canFly;
    }
 
    public boolean canInstabuild() {
        return this.instabuild;
    }
 
    public float getFlyingSpeed() {
        return this.flyingSpeed;
    }
 
    public float getWalkingSpeed() {
        return this.walkingSpeed;
    }
}

引用的其他类