Проверка наличие EntityItem в воде

Версия Minecraft
1.7.10
477
7
51
Привет, нужно проверить если предмет блока находится в воде, какой эвент использовать?
делал так
Java:
    @SubscribeEvent
    public void wordTics(TickEvent.WorldTickEvent event) {
        if(event.world != null) {
            Entity entity = null;
             for (int i = 0; i < event.world.getLoadedEntityList().size(); ++i) {
                   entity = (Entity)event.world.getLoadedEntityList().get(i);
                     if(entity !=null) {
                         ItemStack hot = new ItemStack(MiningConfusionMod.hotwood);
                         EntityItem hotEntity = new EntityItem(event.world, entity.posX, entity.posY, entity.posZ,hot);
                         ItemStack itemStack = hotEntity.getEntityItem();



                                if (hotEntity.isInsideOfMaterial(Material.water)) {
                                    EntityItem entityItem1 = hotEntity;
                                    entityItem1.setEntityItemStack(new ItemStack(Items.diamond, 1));

                                }

                            
                     }
             }
        }
    }
многие эвенты пробовал, не знаю даже что ещё
 
Решение
В любом случае в чем проблему я вижу, ты создаешь полностью новый итем, а собственно chto nahera
если ты хочешь делать по своему то нужно делать так

Java:
@SubscribeEvent
public void worldTicks(TickEvent.WorldTickEvent event) {//первоя ошыбка в нозвании
    if(event.world != null) {//ок
        //Entity entity = null;
        //for (int i = 0; i < event.world.getLoadedEntityList().size(); ++i) {
        //entity = (Entity)event.world.getLoadedEntityList().get(i);
        //меняем на
        for (Object entity : event.world.getLoadedEntityList()) {
            if(entity != null && entity instanceof EntityItem) { //проверка на ненул и совпадение с EntityItem
                if () {//здесь долбани проверку сходные ли предметы у...
3,005
192
592
Посмотри работу кристалов в AE, которые вырастают, когда находятся в воде.
 
3,005
192
592
это айтем а не блок
А когда ты выбрасываешь блок в мир, он остается блоком? А не итемом? O_O_O
А зачем тогда в 1.12 сделали так, что у блока есть 2 модели, одна для блока, одна для предмета?!
А зачем тогда можно получить итем из блока?
А почему в ItemStack хранится ИТЕМ от блока?!
 

jopi

Попрошайка
1,421
30
260
О боже rip оптимизация наверное, вот что я посоветую
на евенте ItemTossEvent создавай копию EntityItem только уже с проверкой на воду, и в эвенте проверяй если выкидывают твой итем, то ты спавнишь свой вариант EntityItem

P.S.
от такого костыля моя жопа превратилась в сгущенку из Atomic Heart
Java:
ItemStack hot = new ItemStack(MiningConfusionMod.hotwood);
EntityItem hotEntity = new EntityItem(event.world, entity.posX, entity.posY, entity.posZ,hot);
 
477
7
51

jopi

Попрошайка
1,421
30
260
В любом случае в чем проблему я вижу, ты создаешь полностью новый итем, а собственно chto nahera
если ты хочешь делать по своему то нужно делать так

Java:
@SubscribeEvent
public void worldTicks(TickEvent.WorldTickEvent event) {//первоя ошыбка в нозвании
    if(event.world != null) {//ок
        //Entity entity = null;
        //for (int i = 0; i < event.world.getLoadedEntityList().size(); ++i) {
        //entity = (Entity)event.world.getLoadedEntityList().get(i);
        //меняем на
        for (Object entity : event.world.getLoadedEntityList()) {
            if(entity != null && entity instanceof EntityItem) { //проверка на ненул и совпадение с EntityItem
                if () {//здесь долбани проверку сходные ли предметы у '((EntityItem)entity).getEntityItem()' и твоего hotwood
                    //если сходные то проверяем материал
                    if (((EntityItem)entity).isInsideOfMaterial(Material.water)) {
                        //если да то назначаем ему другой итем
                        ((EntityItem)entity).setEntityItemStack(new ItemStack(Items.diamond, 1));
                    }
                }
            }
        }
    }
}
p.s. а еще лучше использовать метод обновления существ или упомянутый ItemTossEvent
 
Сверху