org.dragonet.net.translator.tope.DestroyEntitiesMessageTranslator.java Source code

Java tutorial

Introduction

Here is the source code for org.dragonet.net.translator.tope.DestroyEntitiesMessageTranslator.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.dragonet.net.translator.tope;

import java.util.ArrayList;
import java.util.UUID;
import net.glowstone.entity.GlowPlayer;
import net.glowstone.net.message.play.entity.DestroyEntitiesMessage;
import org.apache.commons.lang.ArrayUtils;
import org.dragonet.net.DragonetSession;
import org.dragonet.net.packet.minecraft.PEPacket;
import org.dragonet.net.packet.minecraft.PlayerListPacket;
import org.dragonet.net.packet.minecraft.RemoveEntityPacket;
import org.dragonet.net.packet.minecraft.RemovePlayerPacket;
import org.dragonet.net.translator.MessageTranslatorToPE;
import org.dragonet.net.translator.Translator_v0_11;

public class DestroyEntitiesMessageTranslator
        extends MessageTranslatorToPE<Translator_v0_11, DestroyEntitiesMessage> {

    public DestroyEntitiesMessageTranslator(Translator_v0_11 translator, DragonetSession session) {
        super(translator, session);
    }

    @Override
    public PEPacket[] handleSpecific(DestroyEntitiesMessage packet) {
        this.getTranslator().cachedEntityIDs.removeAll(packet.ids); //Remove from the list
        int[] ids = ArrayUtils.toPrimitive(packet.ids.toArray(new Integer[0]));
        ArrayList<PEPacket> pkRemoveEntity = new ArrayList<>();
        for (int i = 0; i < ids.length; i++) {
            if (!this.getTranslator().cachedPlayerEntities.contains(ids[i])) {
                PEPacket tmp = new RemoveEntityPacket();
                ((RemoveEntityPacket) tmp).eid = ids[i];
                pkRemoveEntity.add(tmp);
            } else {
                GlowPlayer glow = ((GlowPlayer) this.getSession().getPlayer().getWorld().getEntityManager()
                        .getEntity(ids[i]));
                PEPacket tmp = new RemovePlayerPacket();
                ((RemovePlayerPacket) tmp).uuid = glow.getUniqueId();
                ((RemovePlayerPacket) tmp).eid = ids[i];
                this.getTranslator().cachedPlayerEntities.remove(new Integer(ids[i]));
                PlayerListPacket pl = new PlayerListPacket(
                        new PlayerListPacket.PlayerInfo(glow.getUniqueId(), -1, null, true, true, null));
                pl.isAdding = false;
                pkRemoveEntity.add(tmp);
                pkRemoveEntity.add(pl);
            }
        }
        return pkRemoveEntity.toArray(new PEPacket[0]);
    }

}