(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) : ./


  • 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


  • 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 🙂


  • 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


  • 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 😕


  • 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 ._.


  • 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


  • 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 🙂


  • 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 😉


  • 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