Торгующий предмет

Версия Minecraft
1.7.10
1,007
36
206
Решил сделать "жителя в бутылке",вроде как даже получилось(GUI открывается, рецепты есть), но при открытии GUI моментально закрывается.
Код:
public ItemStack OnItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer ){
   if(mob==null){ 
   
   
   mob = new EntityGaiaNPCCreeperGirl(world); 
   }
   entityplayer.displayGUIMerchant(mob, texture);
   world.spawnEntityInWorld(mob); 
   mob.setPosition(entityplayer.posX + 0.0D, entityplayer.posY + 0.0D, entityplayer.posZ + 0.0D); 
  
   
   return itemstack;
   }


А теперь GUI не открывается вовсе(
 

timaxa007

Модератор
5,831
409
672
Попробовать открывать Gui после спавна, а так-же координаты позиции моба до спавна самого моба.
Возможно не получается из-за того что:
- На момент открытия GUI расстояния игрока и моба далёкие, так как моб может заспавниться на нулевых координатах.
- А возможно ванильное GUI не может открыться, так как это не подходящий моб.
 
1,007
36
206
Менял местами world.spawnEntityInWorld(mob); и строку открытия Gui, ничего не поменялось, вообще чтобы я щас не делал GUI вообще не открывается, вчера оно хотя бы открывалось и закрывалось сразу же


timaxa007 написал(а):
- На момент открытия GUI расстояния игрока и моба далёкие, так как моб может заспавниться на нулевых

Тоже так думал, но нет, пробовал спавнить нормального моба GUI также мерцало, но моб спавнился в игроке(может из-за этого интерфейс закрывается?)


timaxa007 написал(а):
- А возможно ванильное GUI не может открыться, так как это не подходящий моб.
Вчера открывалось же, а в мобе я сейчас ничего не менял
 
1,007
36
206
Теперь Gui открывается, но проблема та же оно сразу пропадает


Dahaka написал(а):
Ты название метода неправильно написал.
onItemRightClick

Ну я и лох конечно)


Ничего не понимаю... моб рядом с игроком, но если телепортироваться в место где карта не прогружена, то интерфейс работает как часы, пока карта в этом месте не загрузится
 
2,505
81
397
Во-первых, оберни весь свой код в
Код:
if (!world.isRemote) {
    // твой код
}


Во-вторый, попробуй сделать такой порядок
Код:
mob.setPosition(entityplayer.posX + 0.0D, entityplayer.posY + 0.0D, entityplayer.posZ + 0.0D);
world.spawnEntityInWorld(mob);
entityplayer.displayGUIMerchant(mob, texture);


Но даже если это заработает, все сломается, если какой-нибудь второй игрок заюзает предмет. Придется всегда создавать новую entity, а не так, как делаешь ты.
 
1,007
36
206
У меня фейковый моб, его по идее не нужно спавнить
Код:
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer ){
   if(mob==null){ 
   
   
   mob = new EntityGaiaNPCCreeperGirl(world); 
   }
   mob.setPosition(entityplayer.posX + 0.0D, entityplayer.posY + 0.0D, entityplayer.posZ + 0.0D);
   entityplayer.displayGUIMerchant(mob, texture);
    
    
  
   
   return itemstack;
   }


Но тут проблема та же (интерфейс закрывается)
 
Сверху