Mod Problème code dynamite

10 Août 2017
50
1
17
28
Bonjour, j'ai suivis le code de robin4002 mais mon jeu crash :
Code:
package com.mod.hibonia.projectile;



import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;

import io.netty.buffer.ByteBuf;

import net.minecraft.entity.EntityLivingBase;

import net.minecraft.entity.monster.EntityBlaze;

import net.minecraft.entity.projectile.EntityThrowable;

import net.minecraft.util.DamageSource;

import net.minecraft.util.MovingObjectPosition;

import net.minecraft.world.World;



public class EntityDynamite extends EntityThrowable implements IEntityAdditionalSpawnData

{

    private int fuseTime = 40;

  

   public EntityDynamite(World world)

   {

       super(world);

   }



   public EntityDynamite(World world, EntityLivingBase thrower)

   {

       super(world, thrower);

   }



   public EntityDynamite(World world, double x, double y, double z)

   {

       super(world, x, y, z);

   }



   protected void onImpact(MovingObjectPosition mop)

   {

       this.motionX = 0;

       this.motionY = 0;

       this.motionZ = 0;

       // si tu veux une explosion lors de l'impact dé-commentes les deux lignes de code.



       if (!this.worldObj.isRemote)

       {



          //this.worldObj.newExplosion(this, this.posX, this.posY, this.posZ, 3.0F, false, true);

          // entité, posX, posY, posZ, rayon de l'explosion, flame, fumé

          //this.setDead();

       }

   }

  

   // si tu préfère un timer

  @Override

   public void onUpdate()

   {

       super.onUpdate();

       if(this.fuseTime > 0)

       {

           this.fuseTime --;

       }

       else if(!this.worldObj.isRemote)

       {

           this.worldObj.newExplosion(this, this.posX, this.posY, this.posZ, 4, false, true);

           // entité, posX, posY, posZ, rayon de l'explosion, flame, fumé

           this.setDead();

       }

   }



   @Override

   public void writeSpawnData(ByteBuf buffer)

   {

       buffer.writeInt(this.fuseTime);

   }



   @Override

   public void readSpawnData(ByteBuf additionalData)

   {

       this.fuseTime = additionalData.readInt();

   }

}

Code:
package com.mod.hibonia;

import com.mod.hibonia.init.BlockMod;
import com.mod.hibonia.init.EntityModE;
import com.mod.hibonia.init.ItemDynamite;
import com.mod.hibonia.init.ItemMod;
import com.mod.hibonia.projectile.EntityDynamite;
import com.mod.hibonia.proxy.CommonProxy;
import com.mod.hibonia.world.WorldRegister;

import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;

@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION)

public class ModHibonia
{
    
    @SidedProxy(clientSide = Reference.CLIENT_PROXY, serverSide = Reference.SERVER_PROXY)
    public static CommonProxy proxy;
    @Mod.Instance("hibonia")
    public static ModHibonia instance;
    
    public static Item dynamite;
    
     @EventHandler
     public void preInit(FMLPreInitializationEvent event)
     {
         ItemMod.init();
         ItemMod.register();
         BlockMod.init();
         BlockMod.register();
         WorldRegister.mainRegsitry();
     }
    
     @EventHandler
     public void init(FMLInitializationEvent event)
     {
         proxy.registerRenders();
         EntityModE.init();
         EntityRegistry.registerModEntity(EntityDynamite.class, "dynamite", 0, ModHibonia.instance, 32, 20, true);
     }
    
     @EventHandler
     public void postInit(FMLPostInitializationEvent event)
     {
        
     }
}

Code:
package com.mod.hibonia.init;



import com.mod.hibonia.projectile.EntityDynamite;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.item.Item;

import net.minecraft.item.ItemStack;

import net.minecraft.world.World;



public class ItemDynamite extends Item

{



   public ItemDynamite()

   {

       this.maxStackSize = 64; // a changer si besoin

       this.setCreativeTab(CreativeTabs.tabRedstone);

   }



   // fonctionné exécuté lors du clic droit

   public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)

   {

       if (!player.capabilities.isCreativeMode) // si le joueur n'est pas en créatif

       {

           --stack.stackSize; // on dimini la quantité de 1

       }



       world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));

       //joue un son



       if (!world.isRemote)

       {

           world.spawnEntityInWorld(new EntityDynamite(world, player)); // fait apparaitre l'entité

       }



       return stack;

   }

}