MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    [1.14.3] Problème durant la compilation avec ScreenManager.registerFactory()

    Planifier Épinglé Verrouillé Déplacé Résolu 1.14.x
    1.14.4
    4 Messages 2 Publieurs 354 Vues 1 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.
    • EmotionFoxE Hors-ligne
      EmotionFox
      dernière édition par EmotionFox

      Bonjour, j’ai un problème durant l’assemblage du mod et seulement avec l’assemblage (aucun problème quand je lance le serveur dédié ou le client) avec la fonction ScreenManager.registerFactory() invoquée ici :

      public class ClientProxy implements IProxy
      {
      	@Override
      	public void init()
      	{
      		ScreenManager.registerFactory(ContainerTypeRegistry.CRAFTER, (container, playerInventory, title) ->
      		{
      			return new CrafterScreen(container, playerInventory, title);
      		});
      
      		...
              }
      }
      

      Prenant en paramètre le ContainerTypeRegistry.CRAFTER définie au lancement comme-ci :

      public static final ContainerType<CrafterContainer> CRAFTER = IForgeContainerType.create((windowId, inv, data) ->
      {
      	BlockPos pos = data.readBlockPos();
      	return new CrafterContainer(windowId, MainRegistry.proxy.getClientWorld(), pos, MainRegistry.proxy.getClientPlayer());
      });
      

      et d’une nouvelle instance de CrafterScreen qui extends ContainerScreen<CrafterContainer> qui elle-même implements (comme demandé) IHasContainer<CrafterContainer>.

      L’erreur que j’ai dans la console et que je ne comprend pas :

      C:\Emotion's Mod\1.14.3\src\main\java\fr\emotion\emomod\proxy\ClientProxy.java:44: error: incompatible types: cannot infer type-variable(s) M,U
      		ScreenManager.registerFactory(ContainerTypeRegistry.CRAFTER, (container, playerInventory, title) ->
      		                             ^
          (argument mismatch; cannot infer functional interface descriptor for IScreenFactory<CrafterContainer,U>)
        where M,U are type-variables:
          M extends Container declared in method <M,U>registerFactory(ContainerType<? extends M>,IScreenFactory<M,U>)
          U extends Screen,IHasContainer<M> declared in method <M,U>registerFactory(ContainerType<? extends M>,IScreenFactory<M,U>)
      

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

        Si tu met implicitement les types de cette manière, ça marche pas non plus ? :

        ScreenManager.<CrafterContainer, CrafterScreen>registerFactory(....);
        
        1 réponse Dernière réponse Répondre Citer 1
        • EmotionFoxE Hors-ligne
          EmotionFox
          dernière édition par

          Ça à l’air de marcher, merci beaucoup 🙂 Ce serait quoi l’explicitation, que l’assemblage refuse les “lambdas” (j’y comprend rien à ça mais bref) en wildcard ?

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

            Je pense que comme CrafterScreen extends ContainerScreen<CrafterContainer>, le compilateur arrive pas à décider du type à utiliser pour la lambda, alors que le compilateur de ton IDE choisit automatiquement un des deux

            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