ERROR: java.lang.NoSuchFieldError: world

Версия Minecraft
1.12.2
API
Forge
7
1
0
Я пишу простой мод, который должен по команде из чата найти рядом блок воды и наполнить пузырьки.
Главный класс:
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import org.apache.logging.log4j.Logger;

@Mod(modid = ZMod.MODID, useMetadata=true, clientSideOnly = true)
public class ZMod {
    public static final String MODID = "zmod";

    public static Logger logger;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        logger = event.getModLog();
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        logger.info("Init");
        MinecraftForge.EVENT_BUS.register(new ChatListener(logger));
    }
}
ChatListner::
import net.minecraft.client.Minecraft;
import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.apache.logging.log4j.Logger;


public class ChatListener {
    static Logger logger;

    ChatListener(Logger lg) {
        logger = lg;
    }

    @SubscribeEvent
    public void ClientChatEvent(ClientChatEvent e) {
        logger.info("MESSAGE");
        logger.info(e);
        Minecraft mc = FMLClientHandler.instance().getClient();
        logger.info(mc);
        logger.info(mc.world);
        if (e.getMessage().contains(".find")) {
            logger.info("EEEE");
            e.setCanceled(true);
            BottleFiller bottleFiller = new BottleFiller(logger, mc);
            bottleFiller.scanBlocks();
        }
    }
}
Если запускать клиент с помощью "gradle runClient", то всё работает хорошо. Но если запустить клиент через TLauncher(кинуть .jar в mods) то появляется ошибка:
[18:05:31] [Client thread/ERROR]: Exception caught during firing event net.minecraftforge.client.event.ClientChatEvent@e977f71: java.lang.NoSuchFieldError: world
Я пробовал менять "FMLClientHandler.instance().getClient()" на "Minecraft.getMinecraft()", но это не помогает.
В чём моя ошибка?
 
Краш-лог
[18:05:31] [Client thread/ERROR]: Exception caught during firing event net.minecraftforge.client.event.ClientChatEvent@e977f71:
java.lang.NoSuchFieldError: world
at com.sergx.zmod.ChatListener.ClientChatEvent(ChatListener.java:25)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_13_ChatListener_ClientChatEvent_ClientChatEvent.invoke(.dynamic)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
at net.minecraftforge.event.ForgeEventFactory.onClientSendMessage(ForgeEventFactory.java:436)
at net.minecraft.client.gui.GuiScreen.func_175281_b(GuiScreen.java:416)
at net.minecraft.client.gui.GuiScreen.func_175275_f(GuiScreen.java:411)
at net.minecraft.client.gui.GuiChat.func_73869_a(SourceFile:81)
at net.minecraft.client.gui.GuiScreen.func_146282_l(GuiScreen.java:558)
at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:512)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
at net.minecraft.client.main.Main.main(SourceFile:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

[18:05:57] [Client thread/ERROR]: Index: 1 Listeners:
[18:05:57] [Client thread/ERROR]: 0: NORMAL
[18:05:58] [Client thread/ERROR]: 1: ASM: com.sergx.zmod.ChatListener@2e8a3f87 ClientChatEvent(Lnet/minecraftforge/client/event/ClientChatEvent;)V
[18:05:61] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 2071ms behind, skipping 41 tick(s)
[18:05:43] [Server thread/INFO]: Stopping server
[18:05:44] [Server thread/INFO]: Saving players
[18:05:47] [Server thread/INFO]: Saving worlds
[18:05:48] [Server thread/INFO]: Saving chunks for level 'Новый мир'/overworld
[18:05:32] [Server thread/INFO]: Unloading dimension 0
[18:05:58] [Server thread/INFO]: Applying holder lookups
[18:05:59] [Server thread/INFO]: Holder lookups applied
[18:05:20] [Client thread/FATAL]: Reported exception thrown!
net.minecraft.util.ReportedException: Updating screen events
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1772)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
at net.minecraft.client.main.Main.main(SourceFile:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.lang.NoSuchFieldError: world
at com.sergx.zmod.ChatListener.ClientChatEvent(ChatListener.java:25)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_13_ChatListener_ClientChatEvent_ClientChatEvent.invoke(.dynamic)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
at net.minecraftforge.event.ForgeEventFactory.onClientSendMessage(ForgeEventFactory.java:436)
at net.minecraft.client.gui.GuiScreen.func_175281_b(GuiScreen.java:416)
at net.minecraft.client.gui.GuiScreen.func_175275_f(GuiScreen.java:411)
at net.minecraft.client.gui.GuiChat.func_73869_a(SourceFile:81)
at net.minecraft.client.gui.GuiScreen.func_146282_l(GuiScreen.java:558)
at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:512)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)
... 9 more
Краш-лог:
[18:05:31] [Client thread/ERROR]: Exception caught during firing event net.minecraftforge.client.event.ClientChatEvent@e977f71:
java.lang.NoSuchFieldError: world
	at com.sergx.zmod.ChatListener.ClientChatEvent(ChatListener.java:25)
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_13_ChatListener_ClientChatEvent_ClientChatEvent.invoke(.dynamic)
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
	at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
	at net.minecraftforge.event.ForgeEventFactory.onClientSendMessage(ForgeEventFactory.java:436)
	at net.minecraft.client.gui.GuiScreen.func_175281_b(GuiScreen.java:416)
	at net.minecraft.client.gui.GuiScreen.func_175275_f(GuiScreen.java:411)
	at net.minecraft.client.gui.GuiChat.func_73869_a(SourceFile:81)
	at net.minecraft.client.gui.GuiScreen.func_146282_l(GuiScreen.java:558)
	at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:512)
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)
	at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
	at net.minecraft.client.main.Main.main(SourceFile:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

[18:05:57] [Client thread/ERROR]: Index: 1 Listeners:
[18:05:57] [Client thread/ERROR]: 0: NORMAL
[18:05:58] [Client thread/ERROR]: 1: ASM: com.sergx.zmod.ChatListener@2e8a3f87 ClientChatEvent(Lnet/minecraftforge/client/event/ClientChatEvent;)V
[18:05:61] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 2071ms behind, skipping 41 tick(s)
[18:05:43] [Server thread/INFO]: Stopping server
[18:05:44] [Server thread/INFO]: Saving players
[18:05:47] [Server thread/INFO]: Saving worlds
[18:05:48] [Server thread/INFO]: Saving chunks for level 'Новый мир'/overworld
[18:05:32] [Server thread/INFO]: Unloading dimension 0
[18:05:58] [Server thread/INFO]: Applying holder lookups
[18:05:59] [Server thread/INFO]: Holder lookups applied
[18:05:20] [Client thread/FATAL]: Reported exception thrown!
net.minecraft.util.ReportedException: Updating screen events
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1772)
	at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
	at net.minecraft.client.main.Main.main(SourceFile:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.lang.NoSuchFieldError: world
	at com.sergx.zmod.ChatListener.ClientChatEvent(ChatListener.java:25)
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_13_ChatListener_ClientChatEvent_ClientChatEvent.invoke(.dynamic)
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
	at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
	at net.minecraftforge.event.ForgeEventFactory.onClientSendMessage(ForgeEventFactory.java:436)
	at net.minecraft.client.gui.GuiScreen.func_175281_b(GuiScreen.java:416)
	at net.minecraft.client.gui.GuiScreen.func_175275_f(GuiScreen.java:411)
	at net.minecraft.client.gui.GuiChat.func_73869_a(SourceFile:81)
	at net.minecraft.client.gui.GuiScreen.func_146282_l(GuiScreen.java:558)
	at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:512)
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)
	... 9 more
Последнее редактирование:
Решение
Ура, я всё починил.
Так как я ленивый, я сделал .sh скрипт который перекидывает .jar из /build/libs в папку mods.
Исполнение этого файла я прописал в gradle. Но привязал я его после метода jar, когда ещё не произошла обфускация.
Теперь я привязал этот скрипт к завершению build, и всё заработало.

NaN

30
5
2
Ладно, не в этом проблема(но называть метод именем какого-то класса это странно)
У тебя при создании экземпляра BottleFiller вылетает ошибка, что поле world не найдено, но при этом при run client всё работает, что за бред, ты не пробовал другие лаунчеры?
 
7
1
0
Ура, я всё починил.
Так как я ленивый, я сделал .sh скрипт который перекидывает .jar из /build/libs в папку mods.
Исполнение этого файла я прописал в gradle. Но привязал я его после метода jar, когда ещё не произошла обфускация.
Теперь я привязал этот скрипт к завершению build, и всё заработало.
 
Сверху