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

cn.nukkit.network.protocol.TrimDataPacket Maven / Gradle / Ivy

package cn.nukkit.network.protocol;

import cn.nukkit.api.DeprecationDetails;
import cn.nukkit.network.protocol.types.TrimMaterial;
import cn.nukkit.network.protocol.types.TrimPattern;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.List;

@Data
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
@ToString(doNotUseGetters = true)
public class TrimDataPacket extends DataPacket {
    public static final int NETWORK_ID = ProtocolInfo.TRIM_DATA;
    private final List patterns = new ObjectArrayList<>();
    private final List materials = new ObjectArrayList<>();

    @Override
    public int packetId() {
        return NETWORK_ID;
    }

    @Deprecated(since = "1.19.70")
    @DeprecationDetails(since = "1.19.70-r1", reason = "pid could be more than 255, so it should be an int",
            replaceWith = "packetId()")
    @Override
    public byte pid() {
        return (byte) 255;
    }

    @Override
    public void decode() {
        int length1 = (int) getUnsignedVarInt();
        for (int i = 0; i < length1; i++) {
            patterns.add(new TrimPattern(getString(), getString()));
        }
        int length2 = (int) getUnsignedVarInt();
        for (int i = 0; i < length2; i++) {
            materials.add(new TrimMaterial(getString(), getString(), getString()));
        }
    }

    @Override
    public void encode() {
        this.reset();
        putUnsignedVarInt(patterns.size());
        patterns.forEach(p -> {
            putString(p.itemName());
            putString(p.patternId());
        });
        putUnsignedVarInt(materials.size());
        materials.forEach(m -> {
            putString(m.materialId());
            putString(m.color());
            putString(m.itemName());
        });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy