Рендер модели игрока

Версия Minecraft
1.7.10
586
1
2
Всем привет.Недавно решил изменить модель игрока,при помощи эффекта.Полазив по интернету нашел этот гайд.
Сделал по нём и заменил на Зомби(ModelZombie).Добавил проверку на эффект.Моделька заменилась.Но когда эффект пропадает получается от такая фигня:
[attachment=63]
Кто знает как починить модель игрока без эффекта?
 

Вложения

  • 2016-09-09_22.28.02.png
    2016-09-09_22.28.02.png
    402.7 KB · Просмотры: 118
586
1
2
Dahaka написал(а):
В чем проблема-то, не пойму? Сэйви в игрока id модели и рендери в зависимости от этого id.
Не забудь, что этот id нужно будет раздать всем игрокам, а не только владельцу!!


",но тогда крашило сервак."
Что пишет? Как сервак вообще связан с моделью? Ты попробовал для начала всем игрокам заменить модель?



Упростим задачу.У человека допустим эффект скорости и я при помощи евента рендера меняю модель(только у одного!). На сервере я все равно вижу Стива.
Краш происходит если евент не зарегать в клиент прокси...(это до меня доперло только щас).
 
2,505
81
397
Не пользовался ивентом RenderLivingEvent, но из названия понятно, что он онли клиентский и соответственно регать нужно ТОЛЬКО ClientProxy. Над обработчиком должна висеть SideOnly(Side.CLIENT). С этим проблем вообще не должно возникать.
Как можно менять модель "только у одного"? Можно поменять у EntityPlayer, т.е. у всех игроков.
 
586
1
2
Dahaka написал(а):
Не пользовался ивентом RenderLivingEvent, но из названия понятно, что он онли клиентский и соответственно регать нужно ТОЛЬКО ClientProxy. Над обработчиком должна висеть SideOnly(Side.CLIENT). С этим проблем вообще не должно возникать.
Как можно менять модель "только у одного"? Можно поменять у EntityPlayer, т.е. у всех игроков.
Эм...Ну как бы она меняется у тех у кого есть эффект ...
 
7,099
324
1,510
Dahaka написал(а):
Как можно менять модель "только у одного"? Можно поменять у EntityPlayer, т.е. у всех игроков.
Когда модель меняется, сервер отправляет всем игрокам, что модель у такого-то поменялась.
На клиенте перехватывается событие рендера, отменяется, вместо этого рисуется что-то в зависимости от данных, полученных с сервера. Таким образом поменять модель только у одного вполне реально.
 
586
1
2
hohserg написал(а):
Dahaka написал(а):
Как можно менять модель "только у одного"? Можно поменять у EntityPlayer, т.е. у всех игроков.
Когда модель меняется, сервер отправляет всем игрокам, что модель у такого-то поменялась.
На клиенте перехватывается событие рендера, отменяется, вместо этого рисуется что-то в зависимости от данных, полученных с сервера. Таким образом поменять модель только у одного вполне реально.

Вы предлагаете отправить серверу пакет о изменение модели?А такое возможно?
 
586
1
2
hohserg написал(а):
Сервер должен отправить клиенту

Хорошо.И что он должен оправлять клиенту(кроме чёртового пакета)? :huh:
Точнее что должно входить в пакет.
Просто вся загвостка в том что в пакете я же не напишу прорисовку игрока...
 
7,099
324
1,510
id модели, которую нужно рисовать


А еще говоришь, что все продумал
 
586
1
2
hohserg написал(а):
id модели, которую нужно рисовать


А еще говоришь, что все продумал


Если я вот так рисую(там если что ещё один метод снизу который отменяет прорисовку модели),то я должен отправить block?Или что вы подразумеваете под id?
Код:
@SubscribeEvent
 public void onRenderPlayer(RenderPlayerEvent.Post event) {
 EntityPlayer player = event.entityPlayer;
BlockModel block = new  BlockModel();
 
  if(event.entityPlayer.isPotionActive(MainRegistry.potionTobi.id)){
  Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation(RefStrings.MODID+":textures/entity/block.png"));
  GL11.glPushMatrix();
  GL11.glTranslatef(0F, -0.265F, 0F);
 
  GL11.glNormal3f(0.0F, 1.0F, 0.0F);

  GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F); // Edinisa NICE
  GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
 
//  GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);

    block.render(event.entity, 0F, 0F, 0F, 0F, 0F, 0.0625F);
  GL11.glPopMatrix();
 
  }
}
Я пытался продумать .... ((((99((
 
2,505
81
397
hohserg написал(а):
Dahaka написал(а):
Как можно менять модель "только у одного"? Можно поменять у EntityPlayer, т.е. у всех игроков.
Когда модель меняется, сервер отправляет всем игрокам, что модель у такого-то поменялась.
На клиенте перехватывается событие рендера, отменяется, вместо этого рисуется что-то в зависимости от данных, полученных с сервера. Таким образом поменять модель только у одного вполне реально.
Меня опять неправильно поняли :( Вырвал фразу из контекста :)


В пакете должен отправляться id игрока и id модели


Пакет должен отправляться всем, когда игрок заходит на сервер и когда модель меняется. Где ты меняешь модель - нам неизвестно.
 
586
1
2
Dahaka написал(а):
hohserg написал(а):
Dahaka написал(а):
Как можно менять модель "только у одного"? Можно поменять у EntityPlayer, т.е. у всех игроков.
Когда модель меняется, сервер отправляет всем игрокам, что модель у такого-то поменялась.
На клиенте перехватывается событие рендера, отменяется, вместо этого рисуется что-то в зависимости от данных, полученных с сервера. Таким образом поменять модель только у одного вполне реально.
Меня опять неправильно поняли :( Вырвал фразу из контекста :)


В пакете должен отправляться id игрока и id модели


Пакет должен отправляться всем, когда игрок заходит на сервер и когда модель меняется. Где ты меняешь модель - нам неизвестно.



Стопе,id модели?Это как ?
Меняю я постом выше.
 
7,099
324
1,510
"все это"
Тебе нужно с сервера получать сам модели(не id), чтоли?
 
Сверху