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
      dernière édition par

      Bonjour, j’aimerai coder un item jetable et qui interagi avec le monde (particule et surtous poser des “block” de feux) mais je sais pas comment faire. Une idée ?

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

        c’est a dire ? plus de details stp, et ensuite je veux bien de donner du code mais ce sera du code 1.12+ pas 1.7 🙂

        L 1 réponse Dernière réponse Répondre Citer 0
        • 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