Освещение вокруг игрока

Версия Minecraft
1.7.10
929
30
66
Всем привет.
Хочу освещать вокруг игрока когда есть эффект,но при запуске краш , в чём тут мб проблема?
Java:
@SubscribeEvent
   public void flight(TickEvent.PlayerTickEvent event) {
          if(this.mc.thePlayer.isPotionActive(Potion.fireResistance)) {
          }
       world.setLightValue(EnumSkyBlock.Block, (int) entity.posX, (int) entity.posY, (int) entity.posZ, 15);
       world.updateLightByType(EnumSkyBlock.Block, (int) entity.posX+1, (int) entity.posY, (int) entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) entity.posX-1, (int) entity.posY, (int) entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) entity.posX, (int) entity.posY+1, (int) entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) entity.posX, (int) entity.posY-1, (int) entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) entity.posX, (int) entity.posY, (int) entity.posZ+1);
       world.updateLightByType(EnumSkyBlock.Block, (int) entity.posX, (int) entity.posY, (int) entity.posZ-1);
   }
   }
 
Последнее редактирование:

Eifel

Модератор
1,624
79
609
Крашит наверное что-то другое. Этот ивент вообще не должен прокать по логике. Там должен быть только 1 параметр TickEvent.PlayerTickEvent event. А само освещение мне кажется совсем по другому надо делать.
 
1,007
36
206
Попробуй так(мир как-нибудь сам попробуй получить)
Java:
@SubscribeEvent
   public void flight(TickEvent.PlayerTickEvent event) {
          if(event.entity.isPotionActive(Potion.fireResistance)) {
       world.setLightValue(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY, (int) event.entity.posZ, 15);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX+1, (int) event.entity.posY, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX-1, (int) event.entity.posY, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY+1, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY-1, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY, (int) event.entity.posZ+1);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY, (int) event.entity.posZ-1);
   }
   }
 
929
30
66
Попробуй так(мир как-нибудь сам попробуй получить)
Java:
@SubscribeEvent
   public void flight(TickEvent.PlayerTickEvent event) {
          if(event.entity.isPotionActive(Potion.fireResistance)) {
       world.setLightValue(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY, (int) event.entity.posZ, 15);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX+1, (int) event.entity.posY, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX-1, (int) event.entity.posY, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY+1, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY-1, (int) event.entity.posZ);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY, (int) event.entity.posZ+1);
       world.updateLightByType(EnumSkyBlock.Block, (int) event.entity.posX, (int) event.entity.posY, (int) event.entity.posZ-1);
   }
   }
А entity ?
 
5,021
47
784
В динамик лайте просто вокруг игрока ставятся блоки с setLightLevel, вот и все. Ну, раньше так было, по крайней мере, когда я смотрел код последний раз.
 
5,021
47
784
делаешь блок extends BlockAir сетаешь ему свет. if(эффектТру) { получить коры игрока , вокруг него поставить блоки}
Костыльно, но это проще всего.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
В динамик лайте просто вокруг игрока ставятся блоки с setLightLevel, вот и все. Ну, раньше так было, по крайней мере, когда я смотрел код последний раз.
Нет. Не делайте лагодром.
 
5,021
47
784

tox1cozZ

aka Agravaine
8,456
598
2,893
А иначе никак. Только свой свет.
Исходники на гитхабе. Там нет никаких блоков. Там сделано методом как у ТС, только намного грамотнее и оптимизированнее.
 
5,021
47
784
Там сделано методом как у ТС, только намного грамотнее и оптимизированнее
Хм, не знал... заюзаем. А ТС себе взял задачку не по зубам, ведь он даже не знает, как эвенты работают, раз пишет такую чушь, как в первом сообщении.
Своровал откуда то код, даже примерно не представляя как он работает....
 
Сверху