Ошибка с Эвентом! Краш!

Версия Minecraft
1.7.10
269
8
19
Хочу сделать партикл крови из текстуры красного камня! при ударе по человеку! Можно ли его сделать вот так?
Почему при ударе крашит игру! Вот код
Java:
   @SubscribeEvent
   public void onAttack(AttackEntityEvent event) {


         World world = event.entityLiving.worldObj;
         double x = event.entityLiving.posX;
         double y = event.entityLiving.posY + (double)event.entityLiving.getEyeHeight();
         double z = event.entityLiving.posZ;
         Block block = Blocks.redstone_block;

         String particle ="blockcrack";
         if(particle.equalsIgnoreCase("blockcrack")) {
            particle = "blockcrack_" + Block.getIdFromBlock(block) + "_";
         }

         for(int i = 0; (float)i < 8.0F * 1; ++i) {
            world.spawnParticle(particle, x, y, z, 0.0D, 0.0D, 0.0D);
         }
      }
 
Решение
Спарсить не может что-то. Возможно из-за некорректного названия партикла.
Вот тут вообще не знаю что происходит:
String particle ="blockcrack"; if(particle.equalsIgnoreCase("blockcrack")) { particle = "blockcrack_" + Block.getIdFromBlock(block) + "_"; }
это все можно заменить на :
Java:
          double x = event.entityLiving.posX;
         double y = event.entityLiving.posY + (double)event.entityLiving.getEyeHeight();
         double z = event.entityLiving.posZ;
  
         for(int i = 0; i < 8; ++i) {
            world.spawnParticle("reddust", x, y, z, 0.0D, 0.0D, 0.0D);
         }
Вроде так. На 1.7.10 уже давно не пишу, так что могу где-то ошибиться

Eifel

Модератор
1,624
79
611
Потому что партиклы надо спавнить только на клиентской стороне. А этот эвент срабатывает на обеих если я не ошибаюсь. Оберни в if(world.isRemote) и попробуй. А так не плохо было бы краш посмотреть, ибо можно только догадываться
 
269
8
19
Потому что партиклы надо спавнить только на клиентской стороне. А этот эвент срабатывает на обеих если я не ошибаюсь. Оберни в if(world.isRemote) и попробуй. А так не плохо было бы краш посмотреть, ибо можно только догадываться
Если вот так то крашится!
Java:
   @SubscribeEvent
   public void onAttack(AttackEntityEvent event) {
       World world = event.entityLiving.worldObj;
       if(world.isRemote){

         double x = event.entityLiving.posX;
         double y = event.entityLiving.posY + (double)event.entityLiving.getEyeHeight();
         double z = event.entityLiving.posZ;
         Block block = Blocks.redstone_block;

         String particle ="blockcrack";
         if(particle.equalsIgnoreCase("blockcrack")) {
            particle = "blockcrack_" + Block.getIdFromBlock(block) + "_";
         }

         for(int i = 0; (float)i < 8.0F * 1; ++i) {
            world.spawnParticle(particle, x, y, z, 0.0D, 0.0D, 0.0D);
         }
      }
   }
 

Eifel

Модератор
1,624
79
611
Спарсить не может что-то. Возможно из-за некорректного названия партикла.
Вот тут вообще не знаю что происходит:
String particle ="blockcrack"; if(particle.equalsIgnoreCase("blockcrack")) { particle = "blockcrack_" + Block.getIdFromBlock(block) + "_"; }
это все можно заменить на :
Java:
          double x = event.entityLiving.posX;
         double y = event.entityLiving.posY + (double)event.entityLiving.getEyeHeight();
         double z = event.entityLiving.posZ;
  
         for(int i = 0; i < 8; ++i) {
            world.spawnParticle("reddust", x, y, z, 0.0D, 0.0D, 0.0D);
         }
Вроде так. На 1.7.10 уже давно не пишу, так что могу где-то ошибиться
 
Последнее редактирование:
269
8
19
Спарсить не может что-то. Возможно из-за некорректного названия партикла.
Вот тут вообще не знаю что происходит:
String particle ="blockcrack"; if(particle.equalsIgnoreCase("blockcrack")) { particle = "blockcrack_" + Block.getIdFromBlock(block) + "_"; }
это все можно заменить на :
Java:
          double x = event.entityLiving.posX;
         double y = event.entityLiving.posY + (double)event.entityLiving.getEyeHeight();
         double z = event.entityLiving.posZ;
 
         for(int i = 0; i < 8; ++i) {
            world.spawnParticle("reddust", x, y, z, 0.0D, 0.0D, 0.0D);
         }
Вроде так. На 1.7.10 уже давно не пишу, так что могу где-то ошибится
Партиклы спавнятся надо мной! Хотя другой чел стойт от меня 4-6 блоков
 

Вложения

  • 1516800772593.png
    1516800772593.png
    171.6 KB · Просмотры: 11
269
8
19
5,024
47
786
Спарсить не может что-то. Возможно из-за некорректного названия партикла.
Вот тут вообще не знаю что происходит:
String particle ="blockcrack"; if(particle.equalsIgnoreCase("blockcrack")) { particle = "blockcrack_" + Block.getIdFromBlock(block) + "_"; }[/QUOTE]
Что тут непонятного. Он зарегистрировал партклы как блок))
 
Последнее редактирование:
Сверху