Как сделать не видимого игрока

Версия Minecraft
1.7.10
38
2
В прошлой теме я спрашива реально ли сделать невидимого игрока когда одиваешь броню.
Мне подскозали использовать этот метод 
Код:
   @Subscribe
      public void onRenderPlayer(RenderPlayerEvent.Pre e){
        if(e.entityPlayer.getCurrentArmor(1) !=null && e.entityPlayer.getCurrentArmor(1).getItem() instanceof Plash){
         
        }
      }

Но когда запускаю майн и одеваю броню. У меня не видимая сам item в руке а не игрок. Что делаю не так?
Я понимаю что где-то не то указано но не знаю где. и что указать.
 
38
2
timaxa007 написал(а):
Оно во-обще должно было что-то сделать твой этот "метод"?

По идее должен сделать не видемым игрока. Но как указать что имено игрок?


Код:
package assets.potter.src;

import com.google.common.eventbus.Subscribe;

import net.minecraft.entity.Entity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderPlayerEvent;

public class Plash extends ItemArmor{
 
  private String texturePath = "mybestmod:textures/model/armor/s";
      
      public Plash(int id, int armorType) {
              super(ArmorMaterial.DIAMOND, id, armorType);
              this.setCreativeTab(ModInfo.pottercraftmc);
              this.setMaxStackSize(1);
              this.setTextureName();
      }

      public void setTextureName ()
      {
              if(armorType == 0||armorType == 1||armorType == 3){
                      this.texturePath += "MyBestArmor_" + 1 + ".png";
              }
              else {
                      this.texturePath += "MyBestArmor_" + 2 + ".png";
              }
      }
      
      @Override
      public String getArmorTexture(ItemStack itemstack, Entity entity, int slot, String type){
              return this.texturePath;
      }
      
      @Subscribe
      public void onRenderPlayer(RenderPlayerEvent.Pre e){
        if(e.entityPlayer.getCurrentArmor(1) !=null && e.entityPlayer.getCurrentArmor(1).getItem() instanceof Plash){
e.setCanceled(true);
         
        }
      }

}
 
7,099
324
1,509
А как на счет регистрации слушателя события?
<EventBus>.register(<PlashInstance>)
Почитай в учебнике про события
 
2,505
81
397
Этот твой "метод" - это обработчик ивента RenderPlayerEvent.Pre. Тебе нужно вынести этот метод в отдельный класс и зарегистрировать его (класс), как слушателя событий. Более подробную инфу ищи в каком-нибудь учебнике здесь на форуме.
 
38
2
Луче уже баньте я из таки людей которые будут доставать


Dahaka написал(а):
Этот твой "метод" - это обработчик ивента RenderPlayerEvent.Pre. Тебе нужно вынести этот метод в отдельный класс и зарегистрировать его (класс), как слушателя событий. Более подробную инфу ищи в каком-нибудь учебнике здесь на форуме.

Спс это уже понял.
 
7,099
324
1,509
38
2
Могу поспорить все-ровно не правильно. 
Но вот регистрирую Event bust: 
@EventHandler 
public void load(FMLInitializationEvent event)
{
   MinecraftForge.EVENT_BUS.register(new EventTest());
}

Перенес свой "метод":
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;

public class EventTest {

@SubscribeEvent
    public void onRenderPlayer(RenderPlayerEvent.Pre e){

      if(e.entityPlayer.getCurrentArmor(1) !=null && e.entityPlayer.getCurrentArmor(1).getItem() instanceof Plash){
       [font=Monaco, Consolas, Courier, monospace]e.setCanceled([/font][font=Monaco, Consolas, Courier, monospace]true[/font][font=Monaco, Consolas, Courier, monospace]);[/font]
     
      }
    }
Не работает
 
38
2
timaxa007 написал(а):
getCurrentArmor(1) - 1 это слот ног, если у тебя этот Plash находиться в слоте для нагружника, то поменяй 1 на 2.

Спс но не помогло.


А не заработало. Я запустил просто в дебаг режиме в прошлый раз. а перезапустил заработало. Всем спосибо что терпели такого тупого как я.


Еще вопрос. Надеюсь на сервере не все игроки станут не видемыми когда один оденет броню?
 
Сверху