Search in sources :

Example 1 with MessagePlayOutBlockChange

use of org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange in project LanternServer by LanternPowered.

the class CodecPlayOutMultiBlockChange method encode.

@Override
public ByteBuffer encode(CodecContext context, MessagePlayOutMultiBlockChange message) throws CodecException {
    ByteBuffer buf = context.byteBufAlloc().buffer();
    buf.writeInteger(message.getChunkX());
    buf.writeInteger(message.getChunkZ());
    Collection<MessagePlayOutBlockChange> changes = message.getChanges();
    buf.writeVarInt(changes.size());
    for (MessagePlayOutBlockChange change : changes) {
        Vector3i position = change.getPosition();
        buf.writeByte((byte) ((position.getX() & 0xf) << 4 | position.getZ() & 0xf));
        buf.writeByte((byte) position.getY());
        buf.writeVarInt(change.getBlockState());
    }
    return buf;
}
Also used : MessagePlayOutBlockChange(org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange) Vector3i(com.flowpowered.math.vector.Vector3i) ByteBuffer(org.lanternpowered.server.network.buffer.ByteBuffer)

Example 2 with MessagePlayOutBlockChange

use of org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange in project LanternServer by LanternPowered.

the class LanternPlayer method sendBlockChange.

@Override
public void sendBlockChange(Vector3i position, BlockState state) {
    checkNotNull(state, "state");
    checkNotNull(position, "position");
    this.session.send(new MessagePlayOutBlockChange(position, BlockRegistryModule.get().getStateInternalIdAndData(state)));
}
Also used : MessagePlayOutBlockChange(org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange)

Example 3 with MessagePlayOutBlockChange

use of org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange in project LanternServer by LanternPowered.

the class LanternPlayer method resetBlockChange.

@Override
public void resetBlockChange(Vector3i position) {
    checkNotNull(position, "position");
    LanternWorld world = this.getWorld();
    if (world == null) {
        return;
    }
    this.session.send(new MessagePlayOutBlockChange(position, BlockRegistryModule.get().getStateInternalIdAndData(world.getBlock(position))));
}
Also used : MessagePlayOutBlockChange(org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange) LanternWorld(org.lanternpowered.server.world.LanternWorld)

Aggregations

MessagePlayOutBlockChange (org.lanternpowered.server.network.vanilla.message.type.play.MessagePlayOutBlockChange)3 Vector3i (com.flowpowered.math.vector.Vector3i)1 ByteBuffer (org.lanternpowered.server.network.buffer.ByteBuffer)1 LanternWorld (org.lanternpowered.server.world.LanternWorld)1