(MCPC+) Serveur qui crash au lancement



  • Salut McNanotech !
    Voila, j'ai posté une demande sur Ironcraft pour un problème, mais des personnes y ont répondus et ont finit pas abandonné… Alors je m'en remet à vous, car vous avez l'air d'en connaitre sous Forge 😄 !

    Voici le sujet tel qu'il était sur Ironcraft.

    Version : .1.5.2
    API utilisée(s) : .MCPC+
    Recherche(s) effectuée(s) : .Dans mon cas, pas besoin de recherche
    Explication détaillé du problème : .J'ai crée un serveur de test sur mon ordi avec mcpc + pour justement tester un serveur avec mes mods. Le serveur crash
    Explication(s) complémentaire(s) liée(s) au problème : .Il me dit qu'il ne trouve pas la classe civilcraft.civilcraft.common.civilcraft ; mais ce n'est pas logique car elle y est belle est bien !
    Code erreur : .Crashlog :

    –-- Minecraft Crash Report ----
    // You should try our sister game, Minceraft!
    
    Time: 23/07/13 00:40
    Description: Exception in server tick loop
    
    cpw.mods.fml.common.LoaderException: java.lang.ClassNotFoundException: civilcraft.civilcraft.common.civilcraft
    at cpw.mods.fml.common.LoadController.transition(LoadController.java:147)
    at cpw.mods.fml.common.Loader.loadMods(Loader.java:514)
    at cpw.mods.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:85)
    at cpw.mods.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:350)
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:94)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:574)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
    Caused by: java.lang.ClassNotFoundException: civilcraft.civilcraft.common.civilcraft
    at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:273)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at cpw.mods.fml.common.ModClassLoader.loadClass(ModClassLoader.java:56)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:425)
    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.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:192)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:172)
    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.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:103)
    at cpw.mods.fml.common.Loader.loadMods(Loader.java:504)
    ... 5 more
    Caused by: java.lang.NullPointerException
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- System Details --
    Details:
    Minecraft Version: 1.5.2
    Operating System: Windows 8 (amd64) version 6.2
    Java Version: 1.7.0_21, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 894320808 bytes (852 MB) / 1029046272 bytes (981 MB) up to 1029046272 bytes (981 MB)
    JVM Flags: 2 total; -Xmx1G -Xms1G
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Suspicious classes: FML and Forge are installed
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    CraftBukkit Information:
    Running:
    Failed to handle CraftCrashReport:
    java.lang.NullPointerException
    at org.bukkit.Bukkit.getName(Bukkit.java:72)
    at org.bukkit.craftbukkit.v1_5_R3.CraftCrashReport.call(CraftCrashReport.java:19)
    at net.minecraft.crash.CrashReportCategory.func_71500_a(CrashReportCategory.java:106)
    at net.minecraft.crash.CrashReport.func_71504_g(CrashReport.java:59)
    at net.minecraft.crash.CrashReport.<init>(CrashReport.java:41)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:630)
    at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
    
    FML: MCP v7.51 FML v5.2.23.738 Minecraft Forge 7.8.1.738 4 mods loaded, 4 mods active
    mcp{7.51} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed
    FML{5.2.23.738} [Forge Mod Loader] (coremods) Unloaded->Constructed
    Forge{7.8.1.738} [Minecraft Forge] (coremods) Unloaded->Constructed
    civilcraft{1.0.0} [CivilCraft] (civilcraft) Unloaded->Errored
    Profiler Position: N/A (disabled)
    Is Modded: Definitely; Server brand changed to 'mcpc,craftbukkit,fml,forge'
    Type: Dedicated Server (map_server.txt)
    

    Code(s) : ./
    Screen(s) : ./


  • Moddeurs confirmés Rédacteurs Administrateurs

    Tu as essayé avec un serveur vanille forge ?
    Tu peux m'envoyer l'archive du mod sinon ?



  • J'ai essayé avec un serveur MCPC +
    Je t'envoie en MP l'archive du mod


  • Moddeurs confirmés Rédacteurs Administrateurs

    Je viens de tester le mod sur un serveur Forge, il y a le même problème donc ça ne vient pas d'une incompatibilité avec mcpc plus.
    Le mod fonctionne au moins en solo ?
    Je pense que tu as mal compilé le mod, déjà tu as fait un .rar à la place d'un .zip, donc il n'est pas détecté dans le dossier mods, j'ai du le recompresser.

    Sur eclipse, le mod fonctionnait ?



  • C'est possible que tu ais oublié de recompiler avec reobfuscate_srg.bat

    Sinon, une classe placée dans la partie client et hop, c'est la misère 😞

    Vérifie bien 😉



  • robin :

    Le mod fonctionne effectivement sur Eclipse et sur le mod solo 🙂

    Gugu42 :

    Sa fais longtemps que je me pose cette question :
    A quoi sert reobfuscate_srg ?

    Au niveau des class mal placées, j'ai juste ma classe principal qui est dans mon package common, mais c'est tout 🙂


  • Moddeurs confirmés Rédacteurs Administrateurs

    Vérifie que le serveur ce lance sur eclipse

    Si tu as un NoClassDefFound net/minecraft/client/quelquechose c'est que tu as oublié un SideOnly

    Le reobfuscate_srg permet de compiler en utilisant le nom srg, celui évite à forge de deobf ton mod au lancement, il sera donc changé plus vite et aura une meilleur compatibilité entre les différente maj de minecraft.



  • Je lance le serveur et j'ai en effet une NoClassDefFoundError

    Le lien est : net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer

    On peut savoir ou j'ai oublie le SideOnly ?___
    Sachant que j'ai un block qui utilise les TileEntity


  • Moddeurs confirmés Rédacteurs Administrateurs

    Soit en haut de ta classe extends TileEntitySpecialRenderer, soit il faut déplacer les ClientRegistry.bindTileEntitySpecialRenderer dans le client proxy



  • J'ai pris mon code de ma class principale :

    ModLoader
    .registerTileEntity(TileEntityBlockJumpEntity.class,
    "TileEntitytrampoline",
    new TileEntityBlockJumpEntityRenderer());
    

    je l'ai placé dans clientproxy et ça marche !

    Juste un problème : Ducoup je rebondis sur ce bloc juste en solo 😕


  • Moddeurs confirmés Rédacteurs Administrateurs

    En même temps si tu utilise du modloader …
    Dans ta classe principale, la où tu avais ce code modloader mets :

    GameRegistry.registerTileEntity(TileEntityBlockJumpEntity.class, "TileEntitytrampoline");
    

    Et dans ton clientProxy, à la place de la où tu as ton code modloader actuel :

    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlockJumpEntity.class, new TileEntityBlockJumpEntityRenderer());
    


  • Marche pas ._.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Je peux avoir tes codes de : la classe principale, le clientProxy, le commonProxy, TileEntityBlockJumpEntity, TileEntityBlockJumpEntityRenderer, et ton bloc tranmpoline ?
    (paste bin pour éviter le spam)



  • Class principal :

    http://pastebin.com/xLYYLDEw

    Le reste je peux te le mettre sous spoiler sans que ça spam 🙂

    ClientProxy :

    package civilcraft.civilcraft.client;
    
    import net.minecraft.src.ModLoader;
    import net.minecraftforge.client.MinecraftForgeClient;
    import civilcraft.civilcraft.common.CommonProxy;
    import civilcraft.civilcraft.entity.TileEntityBlockJumpEntity;
    import civilcraft.civilcraft.entity.TileEntityBlockJumpEntityRenderer;
    import civilcraft.civilcraft.tick.ClientTickHandler;
    import cpw.mods.fml.client.registry.ClientRegistry;
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import cpw.mods.fml.common.registry.TickRegistry;
    import cpw.mods.fml.relauncher.Side;
    
    public class ClientProxy extends CommonProxy {
    public static int renderBlockChaiseID;
    public static int renderBlockEtagereID;
    public static String BlockTexture = "/CivilCraft/Block/";
    public static String ItemTexture = "/CivilCraft/Item/";
    
    /**
    * C'est ici que l'on va enregistrer tout ce qui concerne UNIQUEMENT le
    * Client comme les RenderBlocks,… et dans notre exemple, l'enregistrement
    * d'un fichier de texture.
    */
    @Override
    public void registerRenderThings() {
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlockJumpEntity.class, new TileEntityBlockJumpEntityRenderer());
    TickRegistry.registerTickHandler(new ClientTickHandler(), Side.CLIENT);
    }
    
    @Override
    public void registerTextures() {
    MinecraftForgeClient.preloadTexture(this.BlockTexture);
    MinecraftForgeClient.preloadTexture(this.ItemTexture);
    }
    
    }
    

    CommonProxy :

    package civilcraft.civilcraft.common;
    
    import net.minecraft.src.ModLoader;
    import civilcraft.civilcraft.entity.TileEntityBlockJumpEntity;
    import civilcraft.civilcraft.entity.TileEntityBlockJumpEntityRenderer;
    
    public class CommonProxy {
    
    /**
    * ici nous enregistrerons tout ce qui concerne la partie "serveur" et
    * commun avec le client (un peu comme le Load() mais ici il n'y aura pas
    * grand chose)
    */
    public void registerRenderThings() {
    
    }
    
    public void registerTextures() {
    }
    
    }
    

    TileEntityBlockJumpEntity :

    package civilcraft.civilcraft.entity;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.tileentity.TileEntity;
    
    public class TileEntityBlockJumpEntity extends TileEntity {
    }
    

    TileEntityBlockJumpEntityRenderer :

    package civilcraft.civilcraft.entity;
    
    import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
    import net.minecraft.tileentity.TileEntity;
    
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class TileEntityBlockJumpEntityRenderer extends
    TileEntitySpecialRenderer {
    
    private ModelBlockJumpEntityRenderer model = new ModelBlockJumpEntityRenderer();
    
    public void renderTileEntityAt(TileEntity tileEntity, double x, double y,
    double z, float par8) {
    GL11.glPushMatrix();
    GL11.glTranslatef((float) x + .5F, (float) y + .5F, (float) z + .5F);
    this.bindTextureByName("/civilcraft/Block/jump.png");
    GL11.glPopMatrix();
    }
    }
    

    Jump bloc :

    package civilcraft.civilcraft.block;
    
    import java.util.Random;
    
    import cpw.mods.fml.client.ITextureFX;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    import civilcraft.civilcraft.client.ClientProxy;
    import civilcraft.civilcraft.entity.TileEntityBlockJumpEntity;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockContainer;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IconRegister;
    import net.minecraft.client.texturepacks.ITexturePack;
    import net.minecraft.entity.Entity;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.Icon;
    import net.minecraft.world.World;
    
    public class BlockJumpEntity extends BlockContainer {
    
    public BlockJumpEntity(int id) {
    super(id, Material.cake);
    }
    
    public boolean isOpaqueCube() {
    return false;
    }
    
    public int getRenderBlockPass() {
    return 1;
    }
    
    private Entity tentity;
    private float tfall;
    @SideOnly(Side.CLIENT)
    private Icon field_94393_a;
    @SideOnly(Side.CLIENT)
    private Icon field_94392_b;
    
    public void onFallenUpon(World world, int x, int y, int z, Entity entity,
    float par6) {
    if (tentity == null) {
    tentity = entity;
    tfall = entity.fallDistance;
    } else
    world.scheduleBlockUpdate(x, y, z, blockID, 1);
    
    entity.fallDistance = 0;
    }
    
    public void updateTick(World world, int x, int y, int z, Random random) {
    if (tentity != null) {
    float step = 0;
    if (tentity.isSneaking())
    step = tfall / 6;
    if (step > 1)
    step = tfall / 10;
    if (step > 3)
    step = tfall / 15;
    if (step > 6)
    step = tfall / 20;
    tentity.motionY = .5F + step;
    tentity = null;
    }
    }
    
    @Override
    public TileEntity createNewTileEntity(World var1) {
    return new TileEntityBlockJumpEntity();
    }
    
    @SideOnly(Side.CLIENT)
    /**
    * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
    */
    public Icon getIcon(int par1, int par2) {
    return par1 == 0 ? this.field_94392_b : (par1 == 1 ? this.field_94393_a
    : this.blockIcon);
    }
    
    @SideOnly(Side.CLIENT)
    /**
    * When this method is called, your block should register all the icons it needs with the given IconRegister. This
    * is the only chance you get to register icons.
    */
    public void registerIcons(IconRegister par1IconRegister) {
    this.blockIcon = par1IconRegister.registerIcon("jump_cote");
    this.field_94393_a = par1IconRegister.registerIcon("jump_haut");
    this.field_94392_b = par1IconRegister.registerIcon("piston_bottom");
    }
    
    }
    

    Dis moi ce que tu cherches sur ma class principale car elle fais plus de mille pages !
    Je relance car sous MCPC+, le mod ne marche pas 😕

    Toujours le même crash-report


  • Moddeurs confirmés Rédacteurs Administrateurs

    Étrange que le trampoline ne marche pas en smp. Même chose, si ça fonctionne en serveur sur eclipse ça devrait fonctionner sous mcpc plus …
    Au pire tu peux me faire un zip des sources (si ça te dérange pas) ?



  • Oui mais je te l'envoie en MP 🙂


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bon le problème est que … tu ne sais pas compiler un mod !
    J'ai rien toucher au code, j'ai juste compiler le mod et c'est bon (par contre il y a pas les textures)
    Du coup, refais un tour ici : https://www.minecraftforgefrance.fr/topic/55/compiler-votre-mod



  • Ok, j'ai fais ce que le tuto m'a indiqué et ça marche !!!
    Merci :D___
    … sauf pour le trampo 😉


  • Moddeurs confirmés Rédacteurs Administrateurs

    Le trampo il faudrait que tu revois le code, essaye de réduire la collision et d'utiliser onEntityIntract (ou un truc comme ça)
    Regarde le code de la soul sand.



  • Ok 🙂
    Mais je le ferais plus tard, pour je te préviens quand je commence 😛


Log in to reply