Разница между серверным модом и клиентским?

173
1
3
Всем доброго времени суток.
Я довольно неопытен в написании модов и начал заниматься этим недавно, но уже есть желание написать что-то свое с целью игры на сервере с другими игроками, именно чтобы модификация стояла на отдельной машине (а не для игры по локалке).

Но вот я столкнулся с такой проблемой. 
Мод уже что-то в себе имеет, на клиенте это прекрасно работает. И вот решил я протестировать его на сервере, как тот начал вылетать с ошибкой при инициализации мода. Ошибок было много и за решением одной последовательно шла другая.

Хотелось бы услышать от умных людей разъяснение некоторых тем: 
 - Чем конкретно отличаются сервер и клиент? 
 - В каких случаях нужны пакеты?
 - Как вообще влияют на сервер гуи и модельки? Может мод нужно делить на две части?

Заранее спасибо за любую помощь :)
 

timaxa007

Модератор
5,831
409
672
Lobotino написал(а):
 - Чем конкретно отличаются сервер и клиент? 
Разделение на сервер и клиент
[merge_posts_bbcode]Добавлено: 05.06.2016 23:15:53[/merge_posts_bbcode]

Lobotino написал(а):
 - В каких случаях нужны пакеты?
Что-то передать с серверной стороны на клиентскую сторону и обратно с клиенской стороны отправить на серверную сторону.

Lobotino написал(а):
 - Как вообще влияют на сервер гуи и модельки?
Ни как, если их не использовать на серверной стороне. Если не использовать, что-то по сложнее, типа GuiContainer, там вроде как отправляются пакеты для манипуляции со слотами. Сами модели не должны повлиять на серверную сторону.

Lobotino написал(а):
Может мод нужно делить на две части?
Не обязательно, если использовать аннотация @SidedProxy и @SideOnly.

Lobotino написал(а):
Заранее спасибо за любую помощь :)
Пожалуйста.
 
173
1
3
Почему-то у меня ругается именно на регистрацию гуи: 
Код:
11:39:30] [Server thread/INFO]: Starting minecraft server version 1.7.10
[11:39:30] [Server thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
[11:39:30] [Server thread/INFO] [FML]: MinecraftForge v10.13.4.1558 Initialized
[11:39:30] [Server thread/INFO] [FML]: Replaced 183 ore recipies
[11:39:30] [Server thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
[11:39:30] [Server thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[11:39:30] [Server thread/INFO] [FML]: Searching C:\Modding\eclipse\mods for mods
[11:39:36] [Server thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load
[11:39:36] [Server thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, mybestmod] at CLIENT
[11:39:36] [Server thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, mybestmod] at SERVER
[11:39:36] [Server thread/INFO] [FML]: Processing ObjectHolder annotations
[11:39:36] [Server thread/INFO] [FML]: Found 341 ObjectHolder annotations
[11:39:36] [Server thread/INFO] [FML]: Identifying ItemStackHolder annotations
[11:39:36] [Server thread/INFO] [FML]: Found 0 ItemStackHolder annotations
[11:39:36] [Server thread/INFO] [FML]: Configured a dormant chunk cache size of 0
[11:39:36] [Server thread/INFO] [FML]: Applying holder lookups
[11:39:36] [Server thread/INFO] [FML]: Holder lookups applied
[11:39:36] [Server thread/INFO] [FML]: Injecting itemstacks
[11:39:36] [Server thread/INFO] [FML]: Itemstack injection complete
[11:39:36] [Server thread/INFO]: Loading properties
[11:39:36] [Server thread/INFO]: Default game type: SURVIVAL
[11:39:36] [Server thread/INFO]: Generating keypair
[11:39:37] [Server thread/INFO]: Starting Minecraft server on *:25565
[11:39:37] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
[11:39:37] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware.
[11:39:37] [Server thread/WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
[11:39:37] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.properties file.
[11:39:37] [Server thread/INFO] [FML]: Injecting itemstacks
[11:39:37] [Server thread/INFO] [FML]: Itemstack injection complete
[11:39:37] [Server thread/ERROR] [FML]: Fatal errors were detected during the transition from POSTINITIALIZATION to AVAILABLE. Loading cannot continue
[11:39:37] [Server thread/ERROR] [FML]: 
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCHIJ    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJ    FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
    UCHIJ    Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
    UCHIE    mybestmod{1.0} [My Best Mod] (Modding) 
[11:39:37] [Server thread/ERROR] [FML]: The following problems were captured during this phase
[11:39:37] [Server thread/ERROR] [FML]: Caught exception from mybestmod
java.lang.NoClassDefFoundError: net/mybestmod/GUI/GuiManaBar
    at net.mybestmod.Main.postInit(Main.java:112) ~[Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[FMLModContainer.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[LoadController.class:?]
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[LoadController.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) [LoadController.class:?]
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742) [Loader.class:?]
    at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:97) [FMLServerHandler.class:?]
    at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:319) [FMLCommonHandler.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.startServer(DedicatedServer.java:213) [DedicatedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.ClassNotFoundException: net.mybestmod.GUI.GuiManaBar
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_55]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_55]
    ... 33 more
Caused by: java.lang.RuntimeException: Attempted to load class net/mybestmod/GUI/GuiManaBar for invalid side SERVER
    at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:50) ~[forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_55]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_55]
    ... 33 more
[11:39:37] [Server thread/ERROR]: Encountered an unexpected exception
cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/mybestmod/GUI/GuiManaBar

    at cpw.mods.fml.common.LoadController.transition(LoadController.java:163) ~[LoadController.class:?]
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:744) ~[Loader.class:?]
    at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:97) ~[FMLServerHandler.class:?]
    at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:319) ~[FMLCommonHandler.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.startServer(DedicatedServer.java:213) ~[DedicatedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.NoClassDefFoundError: net/mybestmod/GUI/GuiManaBar
    at net.mybestmod.Main.postInit(Main.java:112) ~[Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[FMLModContainer.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[LoadController.class:?]
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[LoadController.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) ~[LoadController.class:?]
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742) ~[Loader.class:?]
    ... 5 more
Caused by: java.lang.ClassNotFoundException: net.mybestmod.GUI.GuiManaBar
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_55]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_55]
    at net.mybestmod.Main.postInit(Main.java:112) ~[Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[FMLModContainer.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[LoadController.class:?]
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[LoadController.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) ~[LoadController.class:?]
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742) ~[Loader.class:?]
    ... 5 more
Caused by: java.lang.RuntimeException: Attempted to load class net/mybestmod/GUI/GuiManaBar for invalid side SERVER
    at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:50) ~[forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_55]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_55]
    at net.mybestmod.Main.postInit(Main.java:112) ~[Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[FMLModContainer.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[LoadController.class:?]
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[LoadController.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_55]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_55]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_55]
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
    at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) ~[LoadController.class:?]
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742) ~[Loader.class:?]
    ... 5 more
[11:39:37] [Server thread/ERROR]: This crash report has been saved to: C:\Modding\eclipse\.\crash-reports\crash-2016-06-06_11.39.37-server.txt
[11:39:37] [Server thread/WARN] [FML]: Can't revert to frozen GameData state without freezing first.
[11:39:37] [Server thread/INFO] [FML]: Applying holder lookups
[11:39:37] [Server thread/INFO] [FML]: Holder lookups applied
[11:39:37] [Server thread/INFO] [FML]: The state engine was in incorrect state ERRORED and forced into state SERVER_STOPPED. Errors may have been discarded.
[11:39:37] [Server thread/INFO] [FML]: The state engine was in incorrect state ERRORED and forced into state AVAILABLE. Errors may have been discarded.

Судя по этой вот строчке можно понять, что ошибка в главном классе Main в строчке 112
Код:
at net.mybestmod.Main.postInit(Main.java:112) ~[Main.class:?]

Вот эта строчка:
Код:
MinecraftForge.EVENT_BUS.register(new GuiManaBar(Minecraft.getMinecraft()));


Есть какие-нибудь идеи?
 

timaxa007

Модератор
5,831
409
672
Lobotino написал(а):
Код:
java.lang.NoClassDefFoundError: net/mybestmod/GUI/GuiManaBar
Не видит GuiManaBar. Лучше использовать прокси и в клиентской прокси писать твой код:
Lobotino написал(а):
Код:
MinecraftForge.EVENT_BUS.register(new GuiManaBar(Minecraft.getMinecraft()));
и подобный клиентский код.
 
173
1
3
Круто, всё работает!

Но есть еще вопрос.
Как работает ТикХандлер по отношению к серверу/клиенту?
 
608
5
15
Тебе лишь стоит понять, что клиент это вся графическая часть, необходимая клиенту.
Разбери игру по составляющим, и тебе сразу станет понятно, что серверу не нужны ни текстуры, ни звуки, ни графические расчёты.
 
173
1
3
Всё равно мало понимаю...
Новая проблема - как только беру игрока в методе предмета OnItemRightClick сервер крашится
Код:
[09:43:18] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.NoSuchMethodError: net.mybestmod.items.weapond.EMPGun.Zalp(Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)V
    at net.mybestmod.items.weapond.EMPGun.onItemRightClick(EMPGun.java:32) ~[EMPGun.class:?]
    at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:164) ~[ItemStack.class:?]
    at net.minecraft.server.management.ItemInWorldManager.tryUseItem(ItemInWorldManager.java:345) ~[ItemInWorldManager.class:?]
    at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:576) ~[NetHandlerPlayServer.class:?]
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?]
    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) ~[DedicatedServer.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]

Вот кусок кода, на который жалуется:
Код:
 @Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player){
Zalp(world,player);

Не понимаю. Он опять же не находит EntityPlayer, но при этом нельзя же регистрировать предмет только на клиенте? Я в тупике :|
 
1,560
86
204
Быстренько расскажу: серверная часть делает всю техническую часть(движение, расчёты и прочее). Клиентская часть делает серверную часть и рендер(показ картинок и прочее).
 
1,137
5
3
А ещё, клиент производит вычисления на ГПУ, рисует, данные с клавиатуры, звук. Сервер же раздает данные всем игрокам и отвечает за мир, данные сохраняет
 
173
1
3
Помогите разобраться с патовой ситуацией :D

Есть предмет, при использовании которого тратится мана (да, это уже всем надоело) и создается EntityThrowable в мире. 

У меня получается так, что энтити создается на клиентской стороне, но при этом мана считывается на серверной. Если же делать проверку !world.isRemote, то сервер вылетает поскольку не находит ману игрока - краш выше. Если же делать обратную проверку world.isRemote, то мана находится, тратится, но при этом энтити никак не контактирует с миром, то есть не взрывается, не касается монстров и т.д.

Вот так это выглядит: 
Код:
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
{
if(PlayerMana.get(player).getMana() >= 15 && world.isRemote) 
{
world.spawnEntityInWorld(new EntityEMP(world, player));

В одиночной игре решалось простым подставлением вместо аргумента player - Minecraft.getMinecraft().thePlayer,
но вот если запускать сервер, то вылетает еще на этапе регистрации предмета
 
1,137
5
3
Надо оперировать с манкой на сервере, спавнить сущность на сервере, синхронизировать манку с клиентом(сервер->игрок)
 
173
1
3
Но каким образом? Никогда не имел дело с синхронизацией :(
 
608
5
15
Lobotino написал(а):
Но каким образом? Никогда не имел дело с синхронизацией :(
Пакеты отправлять -_-
 
2,505
81
397
Там, откуда ты скопипастил PlayerMana, есть вся синхронизация. Просто нужно было грамотно копипастить.P.S. Не уверен на 100%, что скопипастил, но код очень похож.
 
173
1
3
Возможно она там и есть, но я совершенно не могу ничего в ней понять.

Объясните же наконец кто-нибудь, как вообще работают пакеты? Ни одного нормального тутора в интернете я не нашел. Ни на этом форуме, ни на англоязычных. Все люди между собой переговариваются о пакетах как о "само собой разумеющееся", только вот я почему то об этом с рождения не знал и вообще не понимаю где им можно научиться :dizzy:
 
173
1
3
Спасибо, буду разбираться...

Было бы здорово создать в учебнике такую тему, где уже знающие многое деды выкладывали бы полезные документации или англоязычные туториалы и расставляли всё по полочкам: 
Хочешь узнать про гуи - держи, читай. 
Хочешь узнать про пакеты - держи.
Понятно, что переводить на русский язык каждую тему очень долго и никому не нужно, но вот такая мини-справочная помогла бы огромному количеству человек :)

P.S. многие очень плохо дружат с поиском в сети (в том числе и я)
 
Сверху