Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED [Pas Faisable] Rendre un item pêchable

    1.7.x
    1.7.2
    4
    11
    2310
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      Noxon last edited by robin4002

      Re-re-bonjour,
      c’est probablement l’une des dernières question que je viendrai poser, mon projet étant pratiquement abouti.
      Ensuite je vous promets d’arrêter de vous embêter. 😊
      Mais celle-ci est particulièrement difficile, car il ne s’agit pas d’un bug, mais d’un moyen entier.
      Malgré mes recherches dans les sources (sur la canne à pêche, l’item poisson et divers class relative aux fishing) je n’ai toujours pas trouver l’évènement qui permet de conduire un item à l’état “pêchable”.

      Je voulais ajouter d’autres types de poissons avec des spécificités (nyctalopie, apnée, etc.) qui seraient tout aussi pêchables que leurs prédécesseurs. Ayant codés ces “items”, je n’ai néanmoins pas trouver de solution pour les ajouter dans ces eaux.
      Si quelqu’un pouvait m’éclairer sur ce point, je lui serai réellement reconnaissant.

      Nox’

      1 Reply Last reply Reply Quote 0
      • isador
        isador Moddeurs confirmés Modérateurs last edited by

        Je regarde ça dès que je vais sur le pc

        1 Reply Last reply Reply Quote 0
        • robin4002
          robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

          Malheureusement forge ne permet pas ça, il n’y a rien de prévu pour 😕
          La seule solution pour l’instant est de créé une nouvelle canne à pêche.

          1 Reply Last reply Reply Quote 0
          • isador
            isador Moddeurs confirmés Modérateurs last edited by

            ou utiliser la reflexion sur celle existante non?

            1 Reply Last reply Reply Quote 0
            • Gugu
              Gugu last edited by

              @‘robin4002’:

              Malheureusement forge ne permet pas ça, il n’y a rien de prévu pour 😕
              La seule solution pour l’instant est de créé une nouvelle canne à pêche.

              Tu pense que si je code un hook pour ça, forge acceptera le pull request ?

              1 Reply Last reply Reply Quote 0
              • robin4002
                robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                En effet, il y a trois liste dans EntityFishHook (field_146039_d, field_146041_e et field_146041_f) donc ça doit être possible avec la réflexion.

                1 Reply Last reply Reply Quote 0
                • N
                  Noxon last edited by

                  Je pensais pas que ça demanderait tant de chose…

                  1 Reply Last reply Reply Quote 0
                  • Gugu
                    Gugu last edited by

                    @‘Noxon’:

                    Je pensais pas que ça demanderait tant de chose…

                    La pêche, c’est du sérieux bonhomme !

                    1 Reply Last reply Reply Quote 0
                    • N
                      Noxon last edited by

                      Donc du coup je laisse tomber ? x)

                      1 Reply Last reply Reply Quote 0
                      • robin4002
                        robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                        try
                        {
                        List fixedSizeList = ObfuscationReflectionHelper.getPrivateValue(EntityFishHook.class, null, "field_146036_f");
                        List <weightedrandomfishable>fishList = new LinkedList<weightedrandomfishable>(fixedSizeList);
                        System.out.println(fishList.size());
                        fishList.add(new WeightedRandomFishable(new ItemStack(itemTutoriel), 1000));
                        ObfuscationReflectionHelper.setPrivateValue(EntityFishHook.class, null, fishList, "field_146036_f");
                        }
                        catch(Exception ex)
                        {
                        System.err.println("Reflexion error when adding fish");
                        ex.printStackTrace();
                        }
                        
                        Reflexion error when adding fish
                        cpw.mods.fml.relauncher.ReflectionHelper$UnableToAccessFieldException: java.lang.IllegalAccessException: Can not set static final java.util.List field net.minecraft.entity.projectile.EntityFishHook.field_146036_f to java.util.LinkedList
                        at cpw.mods.fml.relauncher.ReflectionHelper.setPrivateValue(ReflectionHelper.java:147)
                        at cpw.mods.fml.common.ObfuscationReflectionHelper.setPrivateValue(ObfuscationReflectionHelper.java:91)
                        at fr.minecraftforgefrance.tutoriel.common.ModTutoriel.init(ModTutoriel.java:102)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                        at java.lang.reflect.Method.invoke(Unknown Source)
                        at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513)
                        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                        at java.lang.reflect.Method.invoke(Unknown Source)
                        at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
                        at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
                        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
                        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
                        at com.google.common.eventbus.EventBus.post(EventBus.java:267)
                        at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:209)
                        at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:188)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                        at java.lang.reflect.Method.invoke(Unknown Source)
                        at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
                        at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
                        at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
                        at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
                        at com.google.common.eventbus.EventBus.post(EventBus.java:267)
                        at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
                        at cpw.mods.fml.common.Loader.initializeMods(Loader.java:677)
                        at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:268)
                        at net.minecraft.client.Minecraft.startGame(Minecraft.java:583)
                        at net.minecraft.client.Minecraft.run(Minecraft.java:890)
                        at net.minecraft.client.main.Main.main(Main.java:112)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                        at java.lang.reflect.Method.invoke(Unknown Source)
                        at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
                        at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
                        Caused by: java.lang.IllegalAccessException: Can not set static final java.util.List field net.minecraft.entity.projectile.EntityFishHook.field_146036_f to java.util.LinkedList
                        at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(Unknown Source)
                        at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(Unknown Source)
                        at sun.reflect.UnsafeQualifiedStaticObjectFieldAccessorImpl.set(Unknown Source)
                        at java.lang.reflect.Field.set(Unknown Source)
                        at cpw.mods.fml.relauncher.ReflectionHelper.setPrivateValue(ReflectionHelper.java:143)
                        … 38 more
                        

                        Impossible avec la réflexion. Faudrait faire un coremods avec un access transformer pour le final et passe le private en static.</weightedrandomfishable></weightedrandomfishable>

                        1 Reply Last reply Reply Quote 0
                        • N
                          Noxon last edited by

                          Okay merci quand même. 🙂
                          Je ferais autrement !

                          1 Reply Last reply Reply Quote 0
                          • 1 / 1
                          • First post
                            Last post
                          Design by Woryk
                          Contact / Mentions Légales / Faire un don

                          MINECRAFT FORGE FRANCE © 2018

                          Powered by NodeBB