1.12.2 Mise à jour de mon mod vers la 1.12.2



  • Bonjour,
    je souhaite migrer un mod que j'ai codé il y a 6 mois en 1.7.10 en un mod en 1.12.2 car les libraires maven ont changé et rendu cette version inutilisable. J'ai donc téléchargé la dernière version de la 1.12.2 de forge (le mdk) et fait l'installation. Mais en l'ouvrant dans eclipse, des centaines d'erreurs apparaissent (je m'y attendait un peu car les méthodes ont changées) mais comment pourrais-je mettre à jour mon mod car même en cherchant d'anciens topic sur le site, je n'ai pas trouvé grand chose pour savoir quelle méthode changer en quelle méthode.

    Merci d'avance de votre aide.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,
    Peux-tu envoyer un échantillon des erreurs que tu as ?



  • Par exemple tous les items que j'ai créés mettent une erreur sur setTextureName.

    Ici j'ai une erreur dans ma classe principale sur la fonction public Item get TabByIcon() (Il n'aime pas que j'ai marqué Item il voudrait marquer ItemStack )

    @SideOnly(Side.CLIENT)
    public Item getTabIconItem() {
    	return Item.getItemFromBlock(BlockMod.elonium_block);
    }
    

    Ensuite j'ai crée des entitées et elles sont elles aussi avec une erreur sur le registerModEntity :

    EntityRegistry.registerModEntity(EntityDynamite.class, "EntityDynamite", 420, Main.instance, 32, 20, false);
    

    J'ai aussi un guiHandler et ya une erreur que je n'arrive pas a corriger :

    TileEntity tile = world.getTileEntity(x, y, z);
    

    Il ne reconnait pas la fonction getTileEntity.

    Bref que des erreurs de ce genre et je ne vois pas comment les résoudre.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Pour les textures -> il faut créer le fichier json, retires complètement la fonction setTextureName

    Pour la table créatif :

    @SideOnly(Side.CLIENT)
    public ItemStack getTabIconItem() {
    	return new ItemStack(BlockMod.elonium_block);
    }
    

    Pour les entités, tu peux détailler l'erreur ?

    Pour tout ce qui utilisait x, y, z il faut des blocspos :

    TileEntity tile = world.getTileEntity(new BlockPos(x, y, z)); 
    


  • @robin4002 a dit dans Mise à jour de mon mod vers la 1.12.2 :

    new BlockPos(x, y, z)

    Merci

    Pour les entités, dans la classe pricipake il me souligne le "registerModEntity" et il ecrit que l'erreur c'est ca : "The method registerModEntity(ResourceLocation, Class<? extends Entity>, String, int, Object, int, int, boolean) in the type EntityRegistry is not applicable for the arguments (Class<EntityBomb>, String, int, Main, int, int, boolean)"

    Je suis en train de remplacer quelques méthodes et je cherche le getBlockMetadata, je n'arrive pas à trouver cette méthode, comme ici :

    if(event.blockMetadata == 7) {
    

    Et je cherche aussi comment envoyer un message à un joueur car ceci ne fonctionne pas :

    e.getPlayer().addChatMessage(new ChatComponentText("Tu n'as pas le niveau necessaire !"));
    

    J'ai encore d'autre erreurs mais je vais tenter de les corriger avant de demander de l'aide si j'ai un problème. Merci d'avance.

    P.S : Je n'ai pas bien compris pour les textures des items et des blocs.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Pour les textures de bloc : https://www.minecraftforgefrance.fr/topic/4102/créer-un-bloc-basique

    Pour registerModEntity il faut mettre en premier le nom, mais avec une location de ressource : EntityRegistry.registerModEntity(new ResourceLocation("modid", "EntityDynamite"), EntityDynamite.class, 420, Main.instance, 32, 20, false);

    Les metadata n'existe plus, ce sont des blocs state maintenant : https://www.minecraftforgefrance.fr/topic/4731/utiliser-les-blockstates
    Pour l'envoie de message : player.sendMessage(new TextComponentString("le texte"));



  • @robin4002 a dit dans Mise à jour de mon mod vers la 1.12.2 :

    EntityRegistry.registerModEntity(new ResourceLocation("modid", "EntityDynamite"), EntityDynamite.class, 420, Main.instance, 32, 20, false);

    Merci pour tout ça.
    Pour les entités j'ai toujours la même erreur je ne comprend pas.

    Je cherche aussi comment récupérer le nombre d'item que le joueur a quand il le récupère dans un four. En 1.7.10 c'était ça :

    e.smelting.stackSize
    

    Mais je ne trouve pas d'équivalent en 1.12.2 à part le getCount() mais je ne suis pas sûr que ce soit ça.

    J'avais aussi des GUIs et j'écrivais des texte mais dans la fonction drawString quelque chose a changé, il s'agit de fontRenderObject et je ne vois pas par quoi il faut remplacer cet argument :

    drawString(fontRendererObj, "Niveau : ", guiLeft + 174, guiTop + 80, Color.CYAN.getRGB());
    

    Et aussi, j'utilisais des effets de potiosn pour des sticks mais il y a une erreur quand je cherche à récupérer l'id de la potion :

    player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 240 , 1));
    

    C'est la partie "moveSpeed" qui est soulignée.
    Erreur : moveSpeed cannot be resolved or is not a field

    Merci



  • Problème réglé pour les effets de potion. Mais je ne sait toujours pas pour le reste. Quelqu'un a une idée ?



  • Salut,
    ce qui marche bien en général pour trouver un équivalent du code qui foire, c'est de regarder à un endroit où il était utilisé, dans l'ancienne version, puis de regarder à ce même endroit (ou + ou - "à côté") dans ta nouvelle version.



  • D'accord merci.


Log in to reply