Résolu Problème avec ma dynamite
-
Bonjour,
Voici deux problèmes que je rencontre avec ma dynamite. D’un la dynamite ne ce lance pas dans la direction que je souhaite elle reste à mes pieds et explose sous mes pieds. L’autre problème est que le model n’apparaît pas lors du lancement de la dynamite c’est un cube blanc sans son model.
Voici les codes :
import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.datafix.DataFixer; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class EntityDynamite extends EntityThrowable { public EntityDynamite(World worldIn) { super(worldIn); } public EntityDynamite(World worldIn, EntityLivingBase throwerIn) { super(worldIn, throwerIn); } @SideOnly(Side.CLIENT) public EntityDynamite(World worldIn, double x, double y, double z) { super(worldIn, x, y, z); } public static void registerFixesDynamite(DataFixer fixer) { EntityThrowable.registerFixesThrowable(fixer, "Dynamite"); } @Override public void onImpact(RayTraceResult result) { if (result.entityHit instanceof Entity) { int i = 1; } if (!world.isRemote) { this.world.createExplosion(this, posX, posY, posZ, 2.0F, true); this.world.setEntityState(this, (byte)1); this.setDead(); } } @Override public void onUpdate() { super.onUpdate(); if (this.world.isRemote && !this.inGround) { this.world.spawnParticle(EnumParticleTypes.LAVA, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, new int[0]); } } }
import org.lwjgl.opengl.GL11; import fr.vesperia.vesperiamod.References; import fr.vesperia.vesperiamod.entity.EntityDynamite; import fr.vesperia.vesperiamod.entity.model.ModelDynamite; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; public class RenderDynamite extends Render<EntityDynamite> { private static final ResourceLocation DYNAMITE = new ResourceLocation(References.MODID + ":textures/entity/dynamite.png"); private ModelDynamite model = new ModelDynamite(); public RenderDynamite(RenderManager renderManager) { super(renderManager); } @Override protected ResourceLocation getEntityTexture(EntityDynamite entity) { return DYNAMITE; } @Override public void doRender(EntityDynamite entity, double x, double y, double z, float entityYaw, float partialTicks) { GL11.glPushMatrix(); bindTexture(DYNAMITE); GL11.glTranslated(x, y, z); GL11.glRotatef(180, 0, 0, 1); model.render(entity, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); } }
public class ModelDynamite extends ModelBase { ModelRenderer e1; public ModelDynamite() { textureWidth = 64; textureHeight = 64; e1 = new ModelRenderer(this, 0, 47); e1.addBox(0F, 0F, -8F, 16, 16, 1); e1.setRotationPoint(0F, 0F, 8F); e1.setTextureSize(64, 64); e1.mirror = false; setRotation(e1, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); e1.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } }
import fr.vesperia.vesperiamod.VesperiaMod; import fr.vesperia.vesperiamod.entity.EntityDynamite; import fr.vesperia.vesperiamod.init.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.stats.StatList; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.SoundCategory; import net.minecraft.world.World; public class ItemDynamite extends Item { public ItemDynamite(String name) { setRegistryName(name); setUnlocalizedName(name); setMaxStackSize(16); setCreativeTab(VesperiaMod.Modtab); ModItems.instance.getItems().add(this); } @Override public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { ItemStack itemstack = playerIn.getHeldItem(handIn); if (!playerIn.capabilities.isCreativeMode) { itemstack.shrink(1); } worldIn.playSound((EntityPlayer)null, playerIn.posX, playerIn.posY, playerIn.posZ, SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); playerIn.getCooldownTracker().setCooldown(this, 20); if (!worldIn.isRemote) { EntityDynamite dynamite = new EntityDynamite(worldIn, playerIn); worldIn.spawnEntity(dynamite); } playerIn.addStat(StatList.getObjectUseStats(this)); return new ActionResult(EnumActionResult.SUCCESS, itemstack); } }
Merci d’avance
-
J’ai déjà réussi à réglé le problème quand je lance ma dynamite, mais il ne reste que le model de la dynamite qui n’apparaît pas.
-
Bonsoir,
En général le rectangle blanc ça veut dire que le rendu n’est pas enregistré (ou pas correctement). -
je crois qu’il faut que tu aille dans le client proxy de ton mod et que tu enregistre le model comme pour les entité
-
Oui c’est bon j’ai réussi à réglé le problème, mais merci de votre aide.
-
de rien
-
@Deans Qu’est ce que c’est la soluce stp ?