Salut,
Je suis en train de faire un mod, et j'aurais besoin d'aide :
Comment je fait pour attribuer un render à une Entitée ?
En faite, j'ai créer un couteau de lancer, mais quand je le lance, c'est un carré blanc qui part. Moi je voudrais que ça soit l'icone de l'arme. Comment je doit faire ?
De plus, j'aurais une autre question :
J'aimerais faire un mod qui permettrais de gagner de l'argent lorsque l'on tue les monstres ( De la même façon que les PX : Quand le monstre meurt, il lâche une ou plusieurs pièce et lorsque le joueurs les ramasse, elles augmentent un compteur. )
Et après, on active un bloc qui ouvre une interface plus ou moins comme celle de l'inventaire, mais qui permet d'acheter les blocs et les objets.
J'ai donc chercher dans les fichiers source que donne MCP, mais impossible de comprendre quelle fichier gère la boule qui spawn à la mort des monstres ...
Je cherche donc un moyen de faire un truc similaire.
( J'avais pensé à regarder le code de EntityItem, j'ai donc fait ça :
Mais l'objet apparaît directement dans l'inventaire, alors qu'il devrais partir comme une flèche( J'les ai fait spawner par un objet similaire à l'arc ( Une dague de lancer ). SI je fait que c'est la dague qui doit partir, ça marche, mais si je fait que c'est mon EntityGold, ça marche pas. ) ...
Voila, donc déjà, si j'arrivais à faire le compteur, avec les entitées qui spawn à la mort des monstres, ça serais cool. J'm'occuperais du bloc marchant en dernier.
Merci d'avance.
Je suis en train de faire un mod, et j'aurais besoin d'aide :
Comment je fait pour attribuer un render à une Entitée ?
En faite, j'ai créer un couteau de lancer, mais quand je le lance, c'est un carré blanc qui part. Moi je voudrais que ça soit l'icone de l'arme. Comment je doit faire ?
De plus, j'aurais une autre question :
J'aimerais faire un mod qui permettrais de gagner de l'argent lorsque l'on tue les monstres ( De la même façon que les PX : Quand le monstre meurt, il lâche une ou plusieurs pièce et lorsque le joueurs les ramasse, elles augmentent un compteur. )
Et après, on active un bloc qui ouvre une interface plus ou moins comme celle de l'inventaire, mais qui permet d'acheter les blocs et les objets.
J'ai donc chercher dans les fichiers source que donne MCP, mais impossible de comprendre quelle fichier gère la boule qui spawn à la mort des monstres ...
Je cherche donc un moyen de faire un truc similaire.
( J'avais pensé à regarder le code de EntityItem, j'ai donc fait ça :
Code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) braces deadcode
package net.minecraft.src;
import java.util.Random;
// Referenced classes of package net.minecraft.src:
// Entity, MathHelper, World, Material,
// AxisAlignedBB, Block, DamageSource, NBTTagCompound,
// ItemStack, EntityPlayer, InventoryPlayer, AchievementList,
// Item, ModLoader
public class EntityGold extends Entity
{
public EntityGold(World world, double d, double d1, double d2)
{
super(world);
age = 0;
health = 5;
field_804_d = (float)(Math.random() * 3.1415926535897931D * 2D);
setSize(0.25F, 0.25F);
yOffset = height / 2.0F;
setPosition(d, d1, d2);
item = new ItemStack(Item.arrow, 1); // itemstack;
rotationYaw = (float)(Math.random() * 360D);
motionX = (float)(Math.random() * 0.20000000298023221D - 0.10000000149011611D);
motionY = 0.20000000298023221D;
motionZ = (float)(Math.random() * 0.20000000298023221D - 0.10000000149011611D);
}
protected boolean canTriggerWalking()
{
return false;
}
public EntityGold(World world)
{
super(world);
age = 0;
health = 5;
field_804_d = (float)(Math.random() * 3.1415926535897931D * 2D);
setSize(0.25F, 0.25F);
yOffset = height / 2.0F;
}
protected void entityInit()
{
}
public void onUpdate()
{
super.onUpdate();
if(delayBeforeCanPickup > 0)
{
delayBeforeCanPickup--;
}
prevPosX = posX;
prevPosY = posY;
prevPosZ = posZ;
motionY -= 0.039999999105930328D;
if(worldObj.getBlockMaterial(MathHelper.floor_double(posX), MathHelper.floor_double(posY), MathHelper.floor_double(posZ)) == Material.lava)
{
motionY = 0.20000000298023221D;
motionX = (rand.nextFloat() - rand.nextFloat()) * 0.2F;
motionZ = (rand.nextFloat() - rand.nextFloat()) * 0.2F;
worldObj.playSoundAtEntity(this, "random.fizz", 0.4F, 2.0F + rand.nextFloat() * 0.4F);
}
pushOutOfBlocks(posX, (boundingBox.minY + boundingBox.maxY) / 2D, posZ);
moveEntity(motionX, motionY, motionZ);
float f = 0.98F;
if(onGround)
{
f = 0.5880001F;
int i = worldObj.getBlockId(MathHelper.floor_double(posX), MathHelper.floor_double(boundingBox.minY) - 1, MathHelper.floor_double(posZ));
if(i > 0)
{
f = Block.blocksList[i].slipperiness * 0.98F;
}
}
motionX *= f;
motionY *= 0.98000001907348633D;
motionZ *= f;
if(onGround)
{
motionY *= -0.5D;
}
field_803_e++;
age++;
if(age >= 6000)
{
setEntityDead();
}
}
public boolean handleWaterMovement()
{
return worldObj.handleMaterialAcceleration(boundingBox, Material.water, this);
}
protected void dealFireDamage(int i)
{
attackEntityFrom(DamageSource.field_35542_a, i);
}
public boolean attackEntityFrom(DamageSource damagesource, int i)
{
setBeenAttacked();
health -= i;
if(health <= 0)
{
setEntityDead();
}
return false;
}
public void writeEntityToNBT(NBTTagCompound nbttagcompound)
{
nbttagcompound.setShort("Health", (byte)health);
nbttagcompound.setShort("Age", (short)age);
nbttagcompound.setCompoundTag("Item", item.writeToNBT(new NBTTagCompound()));
}
public void readEntityFromNBT(NBTTagCompound nbttagcompound)
{
health = nbttagcompound.getShort("Health") & 0xff;
age = nbttagcompound.getShort("Age");
NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("Item");
item = ItemStack.func_35864_a(nbttagcompound1);
if(item == null)
{
setEntityDead();
}
}
public void onCollideWithPlayer(EntityPlayer entityplayer)
{
if(worldObj.multiplayerWorld)
{
return;
}
int i = item.stackSize;
if(delayBeforeCanPickup == 0 && entityplayer.inventory.addItemStackToInventory(item))
{
ModLoader.OnItemPickup(entityplayer, item);
worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((rand.nextFloat() - rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityplayer.onItemPickup(this, i);
if(item.stackSize <= 0)
{
setEntityDead();
}
}
}
public ItemStack item;
private int field_803_e;
public int age;
public int delayBeforeCanPickup;
private int health;
public float field_804_d;
}
Voila, donc déjà, si j'arrivais à faire le compteur, avec les entitées qui spawn à la mort des monstres, ça serais cool. J'm'occuperais du bloc marchant en dernier.
Merci d'avance.