All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.nukkit.network.process.processor.ResourcePackChunkRequestProcessor Maven / Gradle / Ivy

package cn.nukkit.network.process.processor;

import cn.nukkit.Player;
import cn.nukkit.PlayerHandle;
import cn.nukkit.network.process.DataPacketProcessor;
import cn.nukkit.network.protocol.ProtocolInfo;
import cn.nukkit.network.protocol.ResourcePackChunkDataPacket;
import cn.nukkit.network.protocol.ResourcePackChunkRequestPacket;
import cn.nukkit.resourcepacks.ResourcePack;
import org.jetbrains.annotations.NotNull;
import org.powernukkit.version.Version;

public class ResourcePackChunkRequestProcessor extends DataPacketProcessor {
    @Override
    public void handle(@NotNull PlayerHandle playerHandle, @NotNull ResourcePackChunkRequestPacket pk) {
        Player player = playerHandle.player;
        // TODO: Pack version check
        ResourcePack resourcePack = player.getServer().getResourcePackManager().getPackById(pk.getPackId());
        if (resourcePack == null) {
            player.close("", "disconnectionScreen.resourcePack");
            return;
        }
        int maxChunkSize = player.getServer().getResourcePackManager().getMaxChunkSize();
        ResourcePackChunkDataPacket dataPacket = new ResourcePackChunkDataPacket();
        dataPacket.setPackId(resourcePack.getPackId());
        dataPacket.setPackVersion(new Version(resourcePack.getPackVersion()));
        dataPacket.chunkIndex = pk.chunkIndex;
        dataPacket.data = resourcePack.getPackChunk(maxChunkSize * pk.chunkIndex, maxChunkSize);
        dataPacket.progress = maxChunkSize * (long) pk.chunkIndex;
        player.dataResourcePacket(dataPacket);
    }

    @Override
    public int getPacketId() {
        return ProtocolInfo.toNewProtocolID(ProtocolInfo.RESOURCE_PACK_CHUNK_REQUEST_PACKET);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy