Crash lancement du serveur



  • Bonsoir,

    après avoir lancer mon client pour vérifier tout ce que j'avais fait j'étais content de ne voir aucun crash, aucune erreur, ni dans les débugs ni normalement ^^ J'ai donc décider de lancer le serveur youhouuu et la c'est le drame j'ai un crash que je ne comprend pas car il ne trouve pas la classe "GuiScreen" qui est bien présente 😕

    –-- Minecraft Crash Report ----
    // This is a token for 1 free hug. Redeem at your nearest Mojangsta: [~~HUG~~]
    
    Time: 26/06/17 23:24
    Description: Exception in server tick loop
    
    net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Mod Economy (economy)
    Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiScreen
    at fr.fifou.economy.items.ItemsRegistery.init(ItemsRegistery.java:28)
    at fr.fifou.economy.ModEconomy.preInit(ModEconomy.java:46)
    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 net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:643)
    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 net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:246)
    at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:224)
    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 net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:147)
    at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:628)
    at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:100)
    at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:331)
    at net.minecraft.server.dedicated.DedicatedServer.init(DedicatedServer.java:124)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:508)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiScreen
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    … 34 more
    Caused by: net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerException: Exception in class transformer net.minecraftforge.fml.common.asm.transformers.SideTransformer@724bade8 from coremod FMLCorePlugin
    at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:257)
    at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279)
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176)
    ... 36 more
    Caused by: java.lang.RuntimeException: Attempted to load class net/minecraft/client/gui/GuiScreen for invalid side SERVER
    at net.minecraftforge.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:56)
    at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:253)
    ... 38 more
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- System Details --
    Details:
    Minecraft Version: 1.11.2
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_131, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 923732648 bytes (880 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.38 Powered by Forge 13.20.0.2228 5 mods loaded, 5 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCH minecraft{1.11.2} [Minecraft] (minecraft.jar)
    UCH mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)
    UCH FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.11.2-13.20.0.2228.jar)
    UCH forge{13.20.0.2228} [Minecraft Forge] (forgeSrc-1.11.2-13.20.0.2228.jar)
    UCE economy{0.1} [Mod Economy] (bin)
    Loaded coremods (and transformers):
    Profiler Position: N/A (disabled)
    Is Modded: Definitely; Server brand changed to 'fml,forge'
    Type: Dedicated Server (map_server.txt)
    

    Merci à ceux qui m'aideront et si vous avez besoin d'une classe dites moi 🙂


  • Rédacteurs

    La classe GuiScreen n'existe pas côté serveur, il te manque un @SideOnly(Side.CLIENT) quelque part ( at fr.fifou.economy.items.ItemsRegistery.init(ItemsRegistery.java:28))



  • Cette fonction la ?

    @Override
    public ActionResult <itemstack>onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand hand)
    {
    ItemStack itemStackIn = playerIn.getHeldItem(hand);
    
    if(!playerIn.isSneaking())
    {
    if(worldIn.isRemote)
    {
    if(itemStackIn.hasTagCompound())
    {
    Minecraft.getMinecraft().displayGuiScreen(new GuiItem());
    }
    }
    return new ActionResult(EnumActionResult.SUCCESS, itemStackIn);
    }
    
    if(!worldIn.isRemote)
    {
    if(!itemStackIn.hasTagCompound())
    {
    itemStackIn.setTagCompound(new NBTTagCompound());
    }
    
    if(!itemStackIn.getTagCompound().hasKey("Owner"))
    {
    UUID ownerUUID = playerIn.getUniqueID();
    itemStackIn.getTagCompound().setString("OwnerUUID", ownerUUID.toString());
    itemStackIn.getTagCompound().setString("Owner", playerIn.getDisplayNameString());
    itemStackIn.getTagCompound().setBoolean("Owned", true);
    itemStackIn.getTagCompound().setInteger("Funds", 1000);
    playerIn.playSound(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); //Play a sound that alert everybody that a credit card was created.
    }
    
    }
    
    return new ActionResult(EnumActionResult.SUCCESS, itemStackIn);
    }
    ```</itemstack>


  • Oui celle là.
    Dans ce cas là tu ne peux pas mettre de @SideOnly comme la fonction doit être aussi appelée côté serveur, je te conseille donc t'appeller une fonction de ton proxy pour ouvrir ce gui (ou plus simplement, passer pas le système de Forge dédié à cela).

    PS : oublie pas d'organiser tes imports après, sinon il y aura toujours un Gui dans ceux-ci.



  • @AymericRed:

    Oui celle là.
    Dans ce cas là tu ne peux pas mettre de @SideOnly comme la fonction doit être aussi appelée côté serveur, je te conseille donc t'appeller une fonction de ton proxy pour ouvrir ce gui (ou plus simplement, passer pas le système de Forge dédié à cela).

    PS : oublie pas d'organiser tes imports après, sinon il y aura toujours un Gui dans ceux-ci.

    Merci de ta réponse ! 🙂 Je dois avouer que je ne connais pas du tout le système de forge dédié pour ça 😕



  • C'est le système de GuiHandler (qui est utilisé ici : https://www.minecraftforgefrance.fr/showthread.php?tid=2082 (mais tu n'as pas besoin de la partie block/tile entity/container et du côté serveur comme tu l'ouvres directement côté client)).



  • J'avais déjà fait un GuiHandler :

    package fr.fifou.economy.gui;
    
    import javax.annotation.Nullable;
    
    import org.lwjgl.opengl.GL11;
    
    import fr.fifou.economy.ModEconomy;
    
    import net.minecraft.client.gui.inventory.GuiContainer;
    import net.minecraft.client.resources.I18n;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.common.network.IGuiHandler;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    public class GuiHandler implements IGuiHandler
    {
    public static final int ITEM_CARD_GUI = 0;
    public static final int ITEM_CARD_DELETE = 1;
    
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
    {
    return null;
    }
    
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
    {
    if(ID == ITEM_CARD_GUI)
    {
    return new GuiItem();
    }
    else if(ID == ITEM_CARD_DELETE)
    {
    return new GuiDelete();
    }
    return null;
    }
    
    }
    
    


  • Ah, alors tu n'as juste qu'à l'utiliser.



  • @AymericRed:

    Ah, alors tu n'as juste qu'à l'utiliser.

    C'est la que je ne comprend pas haha, avec player.openGui ?


  • Administrateurs

    Oui.
    player.openGui(ClassePrincipale.instance, GuiHandler.ITEM_CARD_GUI, 0, 0, 0); (pas besoin de s'embêter avec x, y, z).