Newer
Older
void-pack-super-server / work / nms.old.1585251758016 / minecraft / server / EntityPainting.java
package net.minecraft.server;

import com.google.common.collect.Lists;
import java.util.Iterator;
import java.util.List;
import javax.annotation.Nullable;

public class EntityPainting extends EntityHanging {

    public Paintings art;

    public EntityPainting(EntityTypes<? extends EntityPainting> entitytypes, World world) {
        super(entitytypes, world);
        // CraftBukkit start - generate a non-null painting
        List<Paintings> list = Lists.newArrayList(Paintings.a);
        this.art = (Paintings) list.get(this.random.nextInt(list.size()));
        // CraftBukkit end
    }

    public EntityPainting(World world, BlockPosition blockposition, EnumDirection enumdirection) {
        super(EntityTypes.PAINTING, world, blockposition);
        List<Paintings> list = Lists.newArrayList();
        int i = 0;
        Iterator iterator = IRegistry.MOTIVE.iterator();

        Paintings paintings;

        while (iterator.hasNext()) {
            paintings = (Paintings) iterator.next();
            this.art = paintings;
            this.setDirection(enumdirection);
            if (this.survives()) {
                list.add(paintings);
                int j = paintings.getWidth() * paintings.getHeight();

                if (j > i) {
                    i = j;
                }
            }
        }

        if (!list.isEmpty()) {
            iterator = list.iterator();

            while (iterator.hasNext()) {
                paintings = (Paintings) iterator.next();
                if (paintings.getWidth() * paintings.getHeight() < i) {
                    iterator.remove();
                }
            }

            this.art = (Paintings) list.get(this.random.nextInt(list.size()));
        }

        this.setDirection(enumdirection);
    }

    @Override
    public void b(NBTTagCompound nbttagcompound) {
        nbttagcompound.setString("Motive", IRegistry.MOTIVE.getKey(this.art).toString());
        super.b(nbttagcompound);
    }

    @Override
    public void a(NBTTagCompound nbttagcompound) {
        this.art = (Paintings) IRegistry.MOTIVE.get(MinecraftKey.a(nbttagcompound.getString("Motive")));
        super.a(nbttagcompound);
    }

    @Override
    public int getHangingWidth() {
        return this.art == null ? 1 : this.art.getWidth();
    }

    @Override
    public int getHangingHeight() {
        return this.art == null ? 1 : this.art.getHeight();
    }

    @Override
    public void a(@Nullable Entity entity) {
        if (this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS)) {
            this.a(SoundEffects.ENTITY_PAINTING_BREAK, 1.0F, 1.0F);
            if (entity instanceof EntityHuman) {
                EntityHuman entityhuman = (EntityHuman) entity;

                if (entityhuman.abilities.canInstantlyBuild) {
                    return;
                }
            }

            this.a((IMaterial) Items.PAINTING);
        }
    }

    @Override
    public void playPlaceSound() {
        this.a(SoundEffects.ENTITY_PAINTING_PLACE, 1.0F, 1.0F);
    }

    @Override
    public void setPositionRotation(double d0, double d1, double d2, float f, float f1) {
        this.setPosition(d0, d1, d2);
    }

    @Override
    public Packet<?> L() {
        return new PacketPlayOutSpawnEntityPainting(this);
    }
}