MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Moddage item [1.7]

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.7.10
    14 Messages 3 Publieurs 823 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • L Hors-ligne
      Le_Vrai_GG @SpyMan
      dernière édition par

      @SpyMan je voudrais faire un coktail molotov j’ai déjà l’item et la texture mais je sais pas comment faire pour qu’on puisse le jeter au sol (comme une potion) et que lorsque on le lance il y aie du feux sur le sol (comme avec un briquet mais sur plusieurs blocs) avec peut-être des particule de fumée lorsqu’on le lance

      1 réponse Dernière réponse Répondre Citer 0
      • SpyManS Hors-ligne
        SpyMan
        dernière édition par SpyMan

        ha cest ez a faire ca, si tu veux je peut te faire du code en quelque minutes x), sauf que ce sera uniquement du code compatible 1.12+

        1 réponse Dernière réponse Répondre Citer 0
        • A Hors-ligne
          arinonia
          dernière édition par arinonia

          En gros c’est un peu comme une dynamite ton truc, tu as juste as faire
          Un Item ou dans la methode onItemRightClick tu met

          if (!player.capabilities.isCreativeMode){
                  stack.stackSize--;
              }
           if (!world.isClient) {
                  world.spawnEntityInWorld(new TonEntity(world, player));
               }
          

          Ceci permet de faire spawn ton entity quand tu fais un clique droit avec l’item dans la main, ensuite tu fais l’entity
          donc une class qui va extends EntityThrowable et implements IEntityAdditionalSpawnData de tête, tu fais spawn tes blocks de feu dans la méthode onImpact je crois.
          Ensuite dans ClientProxy tu register le rendu (tu peux utiliser celui de la snowball ou créer le tiens c’est comme tu veux)

                  RenderingRegistry.registerEntityRenderingHandler(TonEntity.class, new RenderSnowball(TaClass.tonItem));
          

          La tu as vraiment juste une petite base mais pour faire ce que tu veux c’est un bon début ^^

          L 2 réponses Dernière réponse Répondre Citer 0
          • L Hors-ligne
            Le_Vrai_GG @arinonia
            dernière édition par

            @arinonia merci c’est super clair le seul problème qu’il me reste c’est que je sais pas faire spawn un block

            1 réponse Dernière réponse Répondre Citer 0
            • L Hors-ligne
              Le_Vrai_GG @arinonia
              dernière édition par

              @arinonia et dans ce code il me dit qu’il trouve pas la class isclient tu sais pourquoi?

              package ch.gonin.guillaume.zombiecubefree.common.items;
              
              import ch.gonin.guillaume.zombiecubefree.common.entity.fireLaunch;
              import net.minecraft.entity.player.EntityPlayer;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              import net.minecraft.world.World;
              
              public class CocktailMolotov extends Item {
              
              	@Override
              	public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
              		if (!player.capabilities.isCreativeMode) {
              
              			stack.stackSize--;
              
              		}
              
              		if (!world.isClient) {
              
              			world.spawnEntityInWorld(new fireLaunch(world, player));
              
              		}
              		return super.onItemRightClick(stack, world, player);
              	}
              
              }
              1 réponse Dernière réponse Répondre Citer 0
              • SpyManS Hors-ligne
                SpyMan
                dernière édition par SpyMan

                yo, deja les noms de class en Java doivent avoir une maj a cahque mot exemple : CeciEstUneClass donc rename cette class fireLaunch en EntityFireLaunch mettre aussi le Entity devant va te permettre de savoir que c’est une entity sans avoir besoin de regardé le code de la class

                Ensuite pour faire pop un block rien de plus simple, dans la class World il y a la fonction World#setBlockState(BlockPos, IBlockState)

                ex : world.setBlockState(pos, Blocks.DIRT.getDefaultState())

                attention l’interaction avec le monde doit se faire uniquement coté serveur, donc oubli pas de mettre le check if (!word.isRemote) sinon cela posera problème

                1 réponse Dernière réponse Répondre Citer 0
                • A Hors-ligne
                  arinonia
                  dernière édition par arinonia

                  Je me suis fail isClient c’est pour mcp ^^’
                  Et pour faire spawn un Block je t’ai dis tu utilises la methode onImpact tu met :

                   this.worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ,Blocks.fire);
                  
                  L 1 réponse Dernière réponse Répondre Citer 0
                  • L Hors-ligne
                    Le_Vrai_GG @arinonia
                    dernière édition par Le_Vrai_GG

                    @arinonia je crois que l’objet se lance mais il se passe rien aprés pas de feu en tous cas

                    L 1 réponse Dernière réponse Répondre Citer 0
                    • L Hors-ligne
                      Le_Vrai_GG @Le_Vrai_GG
                      dernière édition par

                      @Le_Vrai_GG je confirme que sa se lance mais pas d’entité crée ou alors pas de posage de block

                      1 réponse Dernière réponse Répondre Citer 0
                      • A Hors-ligne
                        arinonia
                        dernière édition par

                        Déjà tu as fais le renderer et tout ?

                        L 1 réponse Dernière réponse Répondre Citer 0
                        • L Hors-ligne
                          Le_Vrai_GG @arinonia
                          dernière édition par

                          @arinonia
                          Je te donne tous le code:
                          Mon item:

                          package ch.gonin.guillaume.zombiecubefree.common.items;
                          
                          import ch.gonin.guillaume.zombiecubefree.common.entity.EntityFireLaunch;
                          import net.minecraft.entity.player.EntityPlayer;
                          import net.minecraft.item.Item;
                          import net.minecraft.item.ItemStack;
                          import net.minecraft.world.World;
                          
                          public class CocktailMolotov extends Item {
                          
                          	@Override
                          	public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
                          		if (!player.capabilities.isCreativeMode) {
                          
                          			stack.stackSize--;
                          
                          		}
                          
                          		if (!world.isRemote) {
                          
                          			world.spawnEntityInWorld((new EntityFireLaunch(world, player)));
                          
                          		}
                          		return super.onItemRightClick(stack, world, player);
                          	}
                          
                          }
                          

                          Mon entitée:

                          package ch.gonin.guillaume.zombiecubefree.common.entity;
                          
                          import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
                          import io.netty.buffer.ByteBuf;
                          import net.minecraft.entity.player.EntityPlayer;
                          import net.minecraft.entity.projectile.EntityThrowable;
                          import net.minecraft.init.Blocks;
                          import net.minecraft.util.MovingObjectPosition;
                          import net.minecraft.world.World;
                          
                          public class EntityFireLaunch extends EntityThrowable implements IEntityAdditionalSpawnData {
                          
                          	World world;
                          
                          	public EntityFireLaunch(World world, EntityPlayer player) {
                          		super(world);
                          		this.world = world;
                          		// TODO Auto-generated constructor stub
                          	}
                          
                          	@Override
                          	public void writeSpawnData(ByteBuf buffer) {
                          		// TODO Auto-generated method stub
                          
                          	}
                          
                          	@Override
                          	public void readSpawnData(ByteBuf additionalData) {
                          		// TODO Auto-generated method stub
                          
                          	}
                          
                          	@Override
                          	protected void onImpact(MovingObjectPosition position) {
                          		if (!world.isRemote) {
                          			this.worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ,Blocks.gold_block); 
                          		}
                          
                          	}
                          
                          }
                          
                          

                          Mon ClientProxy

                          package ch.gonin.guillaume.zombiecubefree.proxy;
                          
                          import ch.gonin.guillaume.zombiecubefree.common.TilesEntity.TileEntityTeleSpecialRenderer;
                          import ch.gonin.guillaume.zombiecubefree.common.entity.EntityFireLaunch;
                          import ch.gonin.guillaume.zombiecubefree.common.items.CocktailMolotov;
                          import ch.gonin.guillaume.zombiecubefree.common.TilesEntity.TileEntityTele;
                          import cpw.mods.fml.client.registry.ClientRegistry;
                          import cpw.mods.fml.client.registry.RenderingRegistry;
                          import net.minecraft.client.renderer.entity.RenderSnowball;
                          import net.minecraft.item.Item;
                          
                          public class ClientProxy extends CommonProxy {
                          
                          	@Override
                          
                          	public void registerRender()
                          
                          	{
                          
                          		System.out.println("méthode côté client");
                          		ClientRegistry.bindTileEntitySpecialRenderer(
                          				ch.gonin.guillaume.zombiecubefree.common.TilesEntity.TileEntityTele.class,
                          				new TileEntityTeleSpecialRenderer());
                          		RenderingRegistry.registerEntityRenderingHandler(EntityFireLaunch.class,
                          				new RenderSnowball(new CocktailMolotov()));
                          
                          	}
                          
                          }
                          

                          PS: J’ai rien rajouter dans la classe principale. tu peux me dire si il y a besoin de rajouter qqch (pour l’entitée par exemple)?

                          L 1 réponse Dernière réponse Répondre Citer 0
                          • L Hors-ligne
                            Le_Vrai_GG @Le_Vrai_GG
                            dernière édition par

                            @Le_Vrai_GG je ferme se sujet car j’ai trouver un tuto comment faire et je vais poser la question sous se tutoriel

                            1 réponse Dernière réponse Répondre Citer 0
                            • 1 / 1
                            • Premier message
                              Dernier message
                            Design by Woryk
                            ContactMentions Légales

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB