Краш в собранном моде

Илон Маск

Каменная лига
Сообщения
30
Лучшие ответы
0
Симпатии
0
#1
Версия Minecraft
1.7.10
Подтверждение
Я максимально подробно описал проблему, включая исходный код файлов, краш лог, изображения и другую информацию, которая может помочь пользователям форума решить мой вопрос!
Вообщем в MCP - все окей, но при установке скомпилированного мода на обычный клиент майна - крашит.
Ругает за MinecraftForge.EVENT_BUS.register(new ClientEvent(Minecraft.getMinecraft()));
 

Илон Маск

Каменная лига
Сообщения
30
Лучшие ответы
0
Симпатии
0
#3
а зачем ты это вставляешь ?
Мне в ClientEvent нужно получать класс Minecraft, если я буду тупо так его получать public Minecraft mc = Minecraft.getMinecraft(); - то он в собранном моде один хер крашает за public Minecraft mc = Minecraft.getMinecraft();
 

implicit

Золотая лига
Сообщения
1,648
Лучшие ответы
40
Симпатии
255
#4
Ну так скинь ошибку с которой крашит
 

Илон Маск

Каменная лига
Сообщения
30
Лучшие ответы
0
Симпатии
0
#6
А где тебе нужен mc , то Minecraft.getMinecraft();
Так и обращайся
Ну так скинь ошибку с которой крашит
При таком обращении он крашает собранный мод
Краш-лог:
Caused by: java.lang.NoSuchMethodError: net.minecraft.client.Minecraft.getMinecraft()Lnet/minecraft/client/Minecraft;
    at mod.preInit(ClientProxy.java:13)
    at mod.ModBase.preInit(ModBase.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
 

Илон Маск

Каменная лига
Сообщения
30
Лучшие ответы
0
Симпатии
0
#7
Если делаю так, то он крашает при загрузке мира, ругает за первую же строчку в ClientEvent, в первом же методе. Ругает за int width = event.resolution.getScaledWidth();
 

BestFoxy

Каменная лига
Сообщения
590
Лучшие ответы
14
Симпатии
27
#8

Илон Маск

Каменная лига
Сообщения
30
Лучшие ответы
0
Симпатии
0
#9

BestFoxy

Каменная лига
Сообщения
590
Лучшие ответы
14
Симпатии
27
#10
Я не знаю как ты делаешь, у меня подобное работает.
 

Илон Маск

Каменная лига
Сообщения
30
Лучшие ответы
0
Симпатии
0
#11
Вот весь класс, пожалуйста
Java:
@SideOnly(Side.CLIENT)
public class ClientEventHud {
    private static final ResourceLocation texture = new ResourceLocation("mod", "textures/hud.png");
    private RenderItem itemRenderer = new RenderItem();
    public Minecraft mc = Minecraft.getMinecraft();
     
    @SubscribeEvent
    public void renderHud(RenderGameOverlayEvent event) {
        int width = this.mc.displayWidth;
        int height = this.mc.displayHeight;
        width = event.resolution.getScaledWidth();
        height = event.resolution.getScaledHeight();
        EntityClientPlayerMP player = this.mc.thePlayer;
        if(player != null && (event.type == ElementType.HEALTH || event.type == ElementType.FOOD || event.type == ElementType.ARMOR || event.type == ElementType.HOTBAR || event.type == ElementType.EXPERIENCE)) {
            event.setCanceled(true);
            GL11.glEnable(3042);
            GL11.glBlendFunc(770, 771);
            mc.getTextureManager().bindTexture(texture);
            mc.ingameGUI.drawTexturedModalRect(width - 120, height - 70, 140, 190, 120, 66);
            mc.ingameGUI.drawTexturedModalRect(width - 86, height - 62, 179, 165, (int)(player.getHealth() * 3.45F), 10);
            mc.ingameGUI.drawTexturedModalRect(width - 86, height - 49, 179, 178, (int)(player.getTotalArmorValue() * 3.45F), 5);
            byte foodlevel = 0;
            if(player.getFoodStats().getFoodLevel() < 18 && player.getFoodStats().getFoodLevel() >= 14 && player.getFoodStats().getFoodLevel() != 0) {
                foodlevel = -1;
            } else if(player.getFoodStats().getFoodLevel() < 14 && player.getFoodStats().getFoodLevel() >= 6 && player.getFoodStats().getFoodLevel() != 0) {
                foodlevel = 20;
            } else if(player.getFoodStats().getFoodLevel() < 6 && player.getFoodStats().getFoodLevel() >= 2 && player.getFoodStats().getFoodLevel() != 0) {
                foodlevel = 40;
            } else if(player.getFoodStats().getFoodLevel() < 2) {
                foodlevel = 61;
            }

            if(player.getFoodStats().getFoodLevel() >= 0 && player.getFoodStats().getFoodLevel() <= 18) {
                mc.getTextureManager().bindTexture(texture);
                GuiHelper.drawTexturedModalRect(width - 28, height - 101, 0, foodlevel, 20, 20, 1.05F);
            }
            if(player.inventory.getCurrentItem() != null) {
                this.mc.ingameGUI.drawString(this.mc.fontRenderer, " " + player.inventory.getCurrentItem().stackSize, width - 23, height - 17, 16777215);
                this.renderItem(player.inventory.getCurrentItem(), width - 35, height - 30);
            }

        }
    }

    public void renderItem(ItemStack item, int x, int y) {
        GL11.glPushMatrix();
        GL11.glEnable(3042);
        GL11.glBlendFunc(770, 771);
        this.itemRenderer.renderItemIntoGUI(this.mc.fontRenderer, this.mc.renderEngine, item, x, y);
        RenderHelper.disableStandardItemLighting();
        GL11.glPopMatrix();
     }

}
 

BestFoxy

Каменная лига
Сообщения
590
Лучшие ответы
14
Симпатии
27
#12
Java:
@SideOnly(Side.CLIENT)
public class ClientEventHud {
    private static final ResourceLocation texture = new ResourceLocation("mod", "textures/hud.png");
    private RenderItem itemRenderer = new RenderItem();
      
    @SubscribeEvent
    public void drawText(RenderGameOverlayEvent event) {
        int width = Minecraft.getMinecraft().displayWidth;
        int height = Minecraft.getMinecraft().displayHeight;
        width = event.resolution.getScaledWidth();
        height = event.resolution.getScaledHeight();
        EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
        if(player != null && (event.type == ElementType.HEALTH || event.type == ElementType.FOOD || event.type == ElementType.ARMOR || event.type == ElementType.HOTBAR || event.type == ElementType.EXPERIENCE)) {
            event.setCanceled(true);
            GL11.glEnable(3042);
            GL11.glBlendFunc(770, 771);
            Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
            Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(width - 120, height - 70, 140, 190, 120, 66);
            Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(width - 86, height - 62, 179, 165, (int)(player.getHealth() * 3.45F), 10);
            Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(width - 86, height - 49, 179, 178, (int)(player.getTotalArmorValue() * 3.45F), 5);
            byte foodlevel = 0;
            if(player.getFoodStats().getFoodLevel() < 18 && player.getFoodStats().getFoodLevel() >= 14 && player.getFoodStats().getFoodLevel() != 0) {
                foodlevel = -1;
            } else if(player.getFoodStats().getFoodLevel() < 14 && player.getFoodStats().getFoodLevel() >= 6 && player.getFoodStats().getFoodLevel() != 0) {
                foodlevel = 20;
            } else if(player.getFoodStats().getFoodLevel() < 6 && player.getFoodStats().getFoodLevel() >= 2 && player.getFoodStats().getFoodLevel() != 0) {
                foodlevel = 40;
            } else if(player.getFoodStats().getFoodLevel() < 2) {
                foodlevel = 61;
            }

            if(player.getFoodStats().getFoodLevel() >= 0 && player.getFoodStats().getFoodLevel() <= 18) {
                Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
                GuiHelper.drawTexturedModalRect(width - 28, height - 101, 0, foodlevel, 20, 20, 1.05F);
            }
            if(player.inventory.getCurrentItem() != null) {
                Minecraft.getMinecraft().ingameGUI.drawString(Minecraft.getMinecraft().fontRenderer, " " + player.inventory.getCurrentItem().stackSize, width - 23, height - 17, 16777215);
                this.renderItem(player.inventory.getCurrentItem(), width - 35, height - 30);
            }

        }
    }

    public void renderItem(ItemStack item, int x, int y) {
        GL11.glPushMatrix();
        GL11.glEnable(3042);
        GL11.glBlendFunc(770, 771);
        this.itemRenderer.renderItemIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().renderEngine, item, x, y);
        RenderHelper.disableStandardItemLighting();
        GL11.glPopMatrix();
     }

}
И из реги убери Minecraft.getMinecraft() там просто класс()
 

BestFoxy

Каменная лига
Сообщения
590
Лучшие ответы
14
Симпатии
27
#16
ModBase.PreInit там тоже видимо
 
Сверху