Mod Résolu Créer une TNT

Flow Arg

Développeur Java
8 Juin 2019
13
0
2
France
flowarg.github.io
Copie-colle celui de ta version, en l'occurrence il est dans la classe Bootstrap (pareil, deux fois CTRL + N, par contre y'en a plusieurs prend bien celui de net.minecraft.init), puis tu fais rechercher (CTRL + F), Blocks.TNT et normalement si tout ce passe bien tu devrais arriver sur l'enregistrement du comportement vanilla. Tu copies-colles et change la classe de l'entité.

Après le modding si tu veux reprendre quelque chose déjà existant c'est toujours du copier-coller du code source original, si tu cherches comment utiliser un objet le mieux c'est de rechercher les termes (CTRL + F ou H selon l'IDE), comme ça tu verras tous les endroits où cet objet est appelé.

ça a marché mais peut tu réexpliquer un peu plus clairement pour que ce soit la texture de ma tnt au lieu de la texture de la tnt vanilla quand la tnt est amorcé ? Merci de m'avoir aidé jusque là !
 
Dernière édition:

ShE3py

Développeur en autodidacte
26 Septembre 2015
1 322
204
187
17
Mìlhüsa
Je pense que dans ton cas, il te suffit juste de créer une entité qui hérite d'EntityTNTPrimed, une classe qui s'occupe de son rendu qui lui-même hérite de RenderTNTPrimed en changeant juste la texture :
Code:
public class EntityChickenTNTPrimed extends EntityTNTPrimed {
   public EntityChickenTNTPrimed(World world) {
       super(world);
   }
  
   public EntityChickenTNTPrimed(World world, double x, double y, double z, @Nullable EntityLivingBase igniter) {
       super(world, x, y, z, igniter);
   }
}

@SideOnly(Side.CLIENT)
public class RenderChickenTNTPrimed extends RenderTNTPrimed {
   private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation(References.MODID, "chicken_tnt");
  
   public RenderChickenTNTPrimed() {
       super(Minecraft.getInstance().getRenderManager());
   }
  
   @Override
   protected ResourceLocation getEntityTexture(EntityChickenTNTPrimed entity) {
       return TEXTURE_LOCATION;
   }
}

Et bien sûr ne pas oublier d'enregistrer tout ce tralala :
Code:
@SubscribeEvent
public void registerEntities(RegistryEvent.Register<EntityEntry> event) {
    event.getRegistry().register(new EntityEntry(EntityChickenTNTPrimed.class, References.MODID + ":chicken_tnt_primed"));
}

// Dans l'init côté client, le serveur n'a pas besoin de savoir comment dessiner
RenderingRegistry.registerEntityRenderingHandler(EntityChickenTNTPrimed.class, new RenderChickenTNTPrimed());

Bon j'écris au talent, j'espère que ça marchera. Il doit y avoir quelques noms à changer.
 
  • J'aime
Reactions: Flow Arg

Flow Arg

Développeur Java
8 Juin 2019
13
0
2
France
flowarg.github.io
Je pense que dans ton cas, il te suffit juste de créer une entité qui hérite d'EntityTNTPrimed, une classe qui s'occupe de son rendu qui lui-même hérite de RenderTNTPrimed en changeant juste la texture :
Code:
public class EntityChickenTNTPrimed extends EntityTNTPrimed {
   public EntityChickenTNTPrimed(World world) {
       super(world);
   }
 
   public EntityChickenTNTPrimed(World world, double x, double y, double z, @Nullable EntityLivingBase igniter) {
       super(world, x, y, z, igniter);
   }
}

@SideOnly(Side.CLIENT)
public class RenderChickenTNTPrimed extends RenderTNTPrimed {
   private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation(References.MODID, "chicken_tnt");
 
   public RenderChickenTNTPrimed() {
       super(Minecraft.getInstance().getRenderManager());
   }
 
   @Override
   protected ResourceLocation getEntityTexture(EntityChickenTNTPrimed entity) {
       return TEXTURE_LOCATION;
   }
}

Et bien sûr ne pas oublier d'enregistrer tout ce tralala :
Code:
@SubscribeEvent
public void registerEntities(RegistryEvent.Register<EntityEntry> event) {
    event.getRegistry().register(new EntityEntry(EntityChickenTNTPrimed.class, References.MODID + ":chicken_tnt_primed"));
}

// Dans l'init côté client, le serveur n'a pas besoin de savoir comment dessiner
RenderingRegistry.registerEntityRenderingHandler(EntityChickenTNTPrimed.class, new RenderChickenTNTPrimed());

Bon j'écris au talent, j'espère que ça marchera. Il doit y avoir quelques noms à changer.
Salut, voici les résultats :
Code:
@SideOnly(Side.CLIENT)
public class RenderChickenTNTPrimed extends RenderTNTPrimed
{
    private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation(References.MODID, "chicken_tnt");

    public RenderChickenTNTPrimed() {
        super(Minecraft.getInstance().getRenderManager());
    }

    @Override
    protected ResourceLocation getEntityTexture(EntityChickenTNTPrimed entity) {
        return TEXTURE_LOCATION;
    }
}
Le Minecraft.getInstance et le @Override est mal passé.
Et peux tu me dire ou écrire la deuxième partie de code car je pense que c'est dans ModBlock mais je ne sais où. Merci de m'avoir écrit tout ça !
 

ShE3py

Développeur en autodidacte
26 Septembre 2015
1 322
204
187
17
Mìlhüsa
Remplace le getInstance par n'importe quel getXXX, getMinecraft en 1.12 de mémoire.
Dans l'override remplace EntityChickenTNTPrimed par EntityTNTPrimed, j'ai pas fait gaffe au generic. S'il refuse ta classe de rendu remplace l'extend par Render<EntityChickenTNTPrimed>, et copie simplement la méthode doRender de RenderTNTPrimed.

Et pour l'enregistrement la fonction registerEntities est à mettre dans ta classe qui gère les entités, ModEntities par exemple. La ligne toute seule est à mettre dans l'init de ton proxy client.

Bon bref, c'est pas un tuto Java non plus.
 
  • J'aime
Reactions: Flow Arg

Flow Arg

Développeur Java
8 Juin 2019
13
0
2
France
flowarg.github.io
Remplace le getInstance par n'importe quel getXXX, getMinecraft en 1.12 de mémoire.
Dans l'override remplace EntityChickenTNTPrimed par EntityTNTPrimed, j'ai pas fait gaffe au generic. S'il refuse ta classe de rendu remplace l'extend par Render<EntityChickenTNTPrimed>, et copie simplement la méthode doRender de RenderTNTPrimed.

Et pour l'enregistrement la fonction registerEntities est à mettre dans ta classe qui gère les entités, ModEntities par exemple. La ligne toute seule est à mettre dans l'init de ton proxy client.

Bon bref, c'est pas un tuto Java non plus.
Merci beaucoup à toi et à robin, j'ai réussi à résoudre ce problème grâce à vous et en cherchant quelques infos en plus sur un tuto d'un anglais ! J'ai aussi optimisé le code aussi en suivant tes conseils ! Merci beaucoup !
 

Pour voir moins d'annonces créez un compte ou connectez-vous.