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;
}
}