TickEvent.PlayerTickEvent

Версия Minecraft
1.7.10
736
21
373
Хочу сделать так, что-бы если определенный предмет есть в инвентаре, то игроку хилило хп...
Но что-то пошло не так...

micaheal:
public class micaheal {
    public void micaheal1(TickEvent.PlayerTickEvent event) {
        if(event.player instanceof EntityPlayer) {
             EntityPlayer player = (EntityPlayer)event.player;
             if(!player.capabilities.isCreativeMode) {
                 if(player.inventory.hasItem(itemsreg.h2o) == true) {
                            player.heal(4);
                 }
    }
}
    }
}
 
 
сорри что не в тему, но )))
if(player.inventory.hasItem(itemsreg.h2o) == true) {
if(event.player instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.player;
Ну а вообще да, нужно зарегать твой эвент хандлер. MinecraftForge.EVENT_BUS.register(new micaheal());
И аннотацию @SubscribeEvent перед методом поместить
 
Попытался сделать на обычном алм блоке, но безрезультатно
Java:
public class micaheal {
    @SubscribeEvent
    public void micaheal1(TickEvent.PlayerTickEvent event) {
        EntityPlayer player = event.player;
        if(player.inventory.hasItem(Item.getItemById(57))) {
            // if(!event.player.capabilities.isCreativeMode) {
                 player.heal(4);
            // }
        }
       
    }
}

ClientProxy:
 public void preInit() {
      super.preInit();
           MinecraftForge.EVENT_BUS.register(new micaheal());
}
 
Круто, а я не знал, что механика игры на клиенте происходит, оказывается клиент😲.
Со стороны сервера нужно регать, так fml event по-другому FMLCommonHandler.instance().bus().register(new class())
Как-то так, с телефона пишу мог ошибку допустить.
 
Назад
Сверху