Supprimer des items de base de minecraft



  • Bonjour à tous!
    Je sais je sais, en ce moment, je fais tous le temps des posts mais bon!

    Je vous explique mon problème!
    J'aimerai supprimer quelques items qui sont déjà inclus à Minecraft pour rentrer le plus possible dans mon thème militaire ! Mais après de nombreuses recherches, impossible de trouver quelqu'un qui en parle!
    Je voulais donc savoir, est-ce possible?
    Et si oui, que faut-il utiliser pour pouvoir le faire! Et est-ce que ca ne pourrait pas poser des problèmes par rapport aux autres mods que j'ai?
    Je pensais qu'un

    Item.itemList[id] = null
    

    fonctionnerait mais on me dit que ca n'existe même pas! Donc, je viens vers vous!

    Cordialement,
    RageAgain



  • tu ma enlevé les mot de la bouche je cherché cette fonctionnalité



  • Je vois donc qu'on cherche tous les 2 la même chose? 😄



  • Ce que tu veux faire là, c'est modifier directement les sources de Minecraft, et aucun mod ne devrait normalement le faire. Après, je ne sais pas comment faire mais je sais que c'est possible.



  • Et je peux pas, alors, fais en sorte qu'il ne soit pas supprimé mais remplacé par autre chose ?



  • Faire cette technique serait du suicide car il provoquerai je-ne-sais-combien d'exception dès qu'il serait appelé, de plus, le système des IDs ne doit plus être utilisé depuis la 1.6 ! Je pense que la meilleure technique serait d'utiliser un événement qui changerait l'itemStack en null, quel est l'item que tu veux enlever ?



  • Je veux en enlever plusieurs! Par exemple, toutes les potions, les livres d'enchantements, la table d'enchantements, les armures, les épées, les outils,….! 🙂



  • tu peut tout simplement enlever les craft



  • C'est déja fait mais j'aimerai vraiment enlever les items quoi! Ca serait plus pratique! Histoire de m'y retrouver…



  • je pense pas que ce soit possible a moins de faire un coremod



  • Pour autant d'item, même faire un coremod serait impossible puisque comme je l'ai dis ça engendrerait beaucoup d'exceptions. Pour les potions, moi j'ai utilisé l'event PotionBrewEvent.Pre qui permet d'empêcher qu'une potion se fasse. Sinon, si tu es côté client, tu peux empêcher que les items soient mis dans l'inventaire, par exemple : empêcher la glowstone de se mettre dans le brewing stand.

    Si tu veux supprimer toutes les potions, tu peux tout autant supprimer le brewing stand ou l'empêcher de se placer.



  • Un coremod? Ca consiste en quoi?
    Zut zut zut n'empeche 😞



  • @'RageAgain':

    Un coremod? Ca consiste en quoi?
    Zut zut zut n'empeche 😞

    Un coremod c'est un mod qui réécrit les classes de base de minecraft sauf que c'est EXTREMEMENT déconseillé. Forge essaie d'éviter les coremods à tout prix, ils conseillent donc d'utiliser les événements.



  • Aaah ouais! Nan mais je veux surtout pas toucher aux classes de base de Minecraft! J'ai déjà eu trop de problèmes avec ça!

    Et donc, un evenement…Il existe un evenement capable de supprimer les items?



  • non je crois pas, il en existe pour supprimer les crafts mais pas pour supprimer des item



  • @'RageAgain':

    Aaah ouais! Nan mais je veux surtout pas toucher aux classes de base de Minecraft! J'ai déjà eu trop de problèmes avec ça!

    Et donc, un evenement…Il existe un evenement capable de supprimer les items?

    Euh… Je ne suis pas sûr que tu comprennes ce qu'est un événement. Imaginons que tu veuilles empêcher le craft du brewing stand, voilà ce que donnerai tes classes :

    Dans le init (il me semble) tu mets :
    MinecraftForge.EVENT_BUS.register(new ClasseDeLEvent());

    puis dans ClasseDeLEvent tu mets :

    
    public class ClasseDeLEvent {
    @SubscribeEvent
    //Je ne me rappelle plus vraiment du nom de l'event
    public void onCraftEvent(CraftEvent event) {
    //Je ne sais pas si tu dois utiliser cette fonction ou event.setResult, je te laisse regarder ça par toi-même
    event.setCanceled(true);
    }
    }
    
    


  • Mais pour les crafts, j'ai déjà fait ça!

    
    public static void removeRecipe(ItemStack stack)
    {
    List <irecipe>recipeList = CraftingManager.getInstance().getRecipeList();
    for(int i = 0; i < recipeList.size(); i++)
    {
    ItemStack output = recipeList.get(i).getRecipeOutput();
    if(output != null && stack.getItem() == output.getItem() && stack.getItemDamage() == output.getItemDamage())
    {
    recipeList.remove(i);
    }
    }
    }
    

    J'ai cette méthode qui fait ça très bien!

    Je me posais juste la question de savoir si il y avait moyen de totalement supprimer un item de sorte à ce qu'il se retrouve même pas dans la CreativeTabs! 😉
    Mais d'après ce que j'ai compris, c'est mort d'avance ;)</irecipe>



  • @'RageAgain':

    Mais pour les crafts, j'ai déjà fait ça!

    
    public static void removeRecipe(ItemStack stack)
    {
    List <irecipe>recipeList = CraftingManager.getInstance().getRecipeList();
    for(int i = 0; i < recipeList.size(); i++)
    {
    ItemStack output = recipeList.get(i).getRecipeOutput();
    if(output != null && stack.getItem() == output.getItem() && stack.getItemDamage() == output.getItemDamage())
    {
    recipeList.remove(i);
    }
    }
    }
    

    J'ai cette méthode qui fait ça très bien!

    Je me posais juste la question de savoir si il y avait moyen de totalement supprimer un item de sorte à ce qu'il se retrouve même pas dans la CreativeTabs! 😉
    Mais d'après ce que j'ai compris, c'est mort d'avance ;)</irecipe>

    Tu peux tenter d'override les creativeTabs aussi.



  • Mais dans ce cas, disons que je veux enlever qu'un seul bloc, je me retrouve avec plus aucun de tout ceux qui étaient dans la même tabs!…



  • @'RageAgain':

    Mais dans ce cas, disons que je veux enlever qu'un seul bloc, je me retrouve avec plus aucun de tout ceux qui étaient dans la même tabs!…

    Ce que je veux dire c'est que soit tu recréer un creativeTab et dedans tu y met seulement les items voulues soit tu réécris les méthodes/variables du creativeTab voulu pour que ça n'affiche que ceux voulues.