Поиск предмета в округе

Версия Minecraft
1.10.2
В общем, у меня есть предмет, который должен производить некоторое действие относительно координат каждого предмета в некой области.
Говоря простыми словами, он должен подсветить/частицы/надпись/ещехзчто все ПРЕДМЕТЫ в некоем радиусе, к примеру, в 35 блоков от игрока.

Код:
@SubscribeEvent
    public void LivingUpdateEvent(LivingEvent.LivingUpdateEvent event) {
        if (event.getEntity() instanceof EntityPlayerMP) {
            EntityPlayerMP player = (EntityPlayerMP) event.getEntity();
            InventoryPlayer inventory = player.inventory;

            EntityItem[] items = (EntityItem[]) event.getEntity().worldObj.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(event.getEntity().posX - 35, event.getEntity().posY - 35, event.getEntity().posZ - 35, event.getEntity().posX + 35, event.getEntity().posY + 35, event.getEntity().posZ + 35)).toArray();

            if (inventory.hasItemStack(new ItemStack(ItemsRegister.vassago_talisman)))
            {
                for (int i = 0; i < items.length; i++)
                {
                    player.worldObj.spawnParticle(EnumParticleTypes.FLAME, items[i].posX, items[i].posY, items[i].posZ, 0.25, 0.25, 0.25);
                }
            }
        }
    }


По-идее это должно сработать правильно, но почему-то крашит. Типа, что этот массив это просто Object[], а не EntityItem[], и типа их нельзя сопоставлять и т.д. и т.п.
Как это исправить?
 
Thunder написал(а):
Я юзаю List для таких дел например

И да, насчет листа. Лист-то конечно можно, но вот только как получить из листа именно определенный  EntityItem, а не просто какой-то левый Object?
Или их можно уравнять при помощи (EntityItem)?..
 

Eifel

Модератор
1,623
78
608
Пример:
Код:
List list = player.worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox((float) (player.posX -5), (float) (player.posY - 5), (float) (player.posZ - 5), (float) (player.posX + 5), (float) (player.posY + 5), (float) (player.posZ + 5)));
 if(!list.isEmpty()){
 for(int i = 0; i < list.size(); i++)
 {
//делаем что хотим
 }
 }
P.s. на работоспособность не пробовал
 
Спасибо всем, но почему-то сейчас вот этот код:
Код:
@SubscribeEvent
    public void LivingUpdateEvent(LivingEvent.LivingUpdateEvent event) {
        if (event.getEntity() instanceof EntityPlayerMP) {
            EntityPlayerMP player = (EntityPlayerMP) event.getEntity();
            InventoryPlayer inventory = player.inventory;

            List<EntityItem> items = event.getEntity().worldObj.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(event.getEntity().posX - 35, event.getEntity().posY - 35, event.getEntity().posZ - 35, event.getEntity().posX + 35, event.getEntity().posY + 35, event.getEntity().posZ + 35));

            if (inventory.hasItemStack(new ItemStack(ItemsRegister.vassago_talisman)))
            {
                for (int i = 0; i < items.toArray().length; i++)
                {
                    player.worldObj.spawnParticle(EnumParticleTypes.FLAME, items.get(i).posX, items.get(i).posY, items.get(i).posZ, 0.25, 0.25, 0.25);
                }
            }
        }
    }

не хочет срабатывать, но и не крашит. Он просто не спавнит частицы, может с ними что не так?


Нет, все чудесно, заменил EntityPlayerMP на EntityPlayerSP и все. Только я вообще хз, что же на сервере делать...
 
Dahaka написал(а):
EntityPlayer
Код:
if (inventory.hasItemStack(new ItemStack(ItemsRegister.vassago_talisman)))
Ищи итем, а не стак. Не стоит каждый тик создавать новый стак. Да и вообще странно, что это работает.

Кстати, я сделал свои партиклы, а у них нет текстуры. Каким образом это исправить?
Код:
public ResourceLocation texture = new ResourceLocation("moc", "particle/vassagoparticle");
Код:
public ResourceLocation texture = new ResourceLocation("moc", "particle/vassagoparticle.png");
Код:
public ResourceLocation texture = new ResourceLocation("moc", "vassagoparticle");
Код:
public ResourceLocation texture = new ResourceLocation("moc", "textures/particle/vassagoparticle");
Код:
public ResourceLocation texture = new ResourceLocation("moc", "textures/particle/vassagoparticle.png");
Или как-то еще иначе?..
 
Сверху