• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Block extends BlockIce

    Anciennes versions
    1.6.4
    3
    5
    2331
    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.
    • Kanar
      Kanar dernière édition par

      Bonsoir,

      Voilà, je code actuellement un bloc qui reprend les mêmes fonctions que le bloc de glace ainsi j’ai décidé d’utiliser ceci :

      public class BlockIceBrick extends BlockIce
      

      en pensant bien à y ajouter l’import. (Bien obligé à dire vrai pour éviter les erreurs.)

      import net.minecraft.block.BlockIce;
      

      En jeu, mon bloc utilise bel et bien les même fonctions mais par la même occasion… La texture du bloc de glace, tout en gardant le nom que je lui ai donné.

      :::

      :::

      Pourtant j’utilise la même méthode pour un autre bloc et lui garde sa texture. Une idée du pourquoi ?

      Voici la classe principale de mon mod ainsi que du bloc en question

      package iglooCraft.common;
      
      import iglooCraft.block.*;
      import iglooCraft.proxies.ICraftCommonProxy;
      import net.minecraft.block.Block;
      import cpw.mods.fml.common.Mod;
      import cpw.mods.fml.common.Mod.EventHandler;
      import cpw.mods.fml.common.SidedProxy;
      import cpw.mods.fml.common.event.FMLInitializationEvent;
      import cpw.mods.fml.common.event.FMLPostInitializationEvent;
      import cpw.mods.fml.common.event.FMLPreInitializationEvent;
      import cpw.mods.fml.common.network.NetworkMod;
      import cpw.mods.fml.common.registry.GameRegistry;
      
      @Mod(modid = "KIC", name = "IglooCraft", version = "1.0.0")
      @NetworkMod(clientSideRequired = true, serverSideRequired = false)
      
      public class IglooCraft
      {
      @SidedProxy(clientSide = "iglooCraft.proxies.ICraftClientProxy", serverSide = "iglooCraft.proxies.ICraftCommonProxy")
      public static ICraftCommonProxy proxy;
      
      public static Block ice_brick, snow_brick;
      
      @EventHandler
      public void PreInit(FMLPreInitializationEvent event)
      {
      ice_brick = new BlockIceBrick(3421);
      snow_brick = new BlockSnowBrick(3422);
      
      GameRegistry.registerBlock(snow_brick, "snow_brick");
      GameRegistry.registerBlock(ice_brick, "ice_brick");
      
      }
      
      @EventHandler
      public void Init(FMLInitializationEvent event)
      {
      proxy.registerRender();
      }
      
      @EventHandler
      public void PostInit(FMLPostInitializationEvent event)
      {
      
      }
      }
      
      package iglooCraft.block;
      
      import net.minecraft.block.BlockIce;
      import net.minecraft.block.material.Material;
      import net.minecraft.creativetab.CreativeTabs;
      
      public class BlockIceBrick extends BlockIce
      {
      public BlockIceBrick(int id)
      {
      super(id);
      this.setCreativeTab(CreativeTabs.tabBlock);
      this.setHardness(0.1F);
      this.setStepSound(soundGlassFootstep);
      this.setUnlocalizedName("ice_brick");
      this.func_111022_d("kic:ice_brick");
      }
      }
      

      Merci d’avance. 😊

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Dans Block.java il y a ça :

        public Block func_111022_d(String par1Str)
        {
        this.field_111026_f = par1Str;
        return this;
        }
        
        @SideOnly(Side.CLIENT)
        protected String func_111023_E()
        {
        return this.field_111026_f == null ? "MISSING_ICON_TILE_" + this.blockID + "_" + this.unlocalizedName : this.field_111026_f;
        }
        
        @SideOnly(Side.CLIENT)
        public void registerIcons(IconRegister par1IconRegister)
        {
        this.blockIcon = par1IconRegister.registerIcon(this.func_111023_E());
        }
        

        En fait quand tu utilise func_111022_d(“kic:ice_brick”), le String “field_111026_f” prend la valeur kic:ice_brick. Ensuite la fonction func_111023_E() vérifie que la texture n’est pas null, si elle est null ça devient un MISSING_ICON, si elle est ok, la fonction registerIcons enregistre l’icône.

        Le problème est que la glace est extends BlockBreakable, dans BlockBreakable.java je vois ça :

        public void registerIcons(IconRegister par1IconRegister)
        {
        this.blockIcon = par1IconRegister.registerIcon(this.breakableBlockIcon);
        }
        

        Donc tu ne peux pas utiliser .func_111022_d(modid:texture) si ton bloc est extends BlockBreakable ou qu’il est extends d’une classe qui est elle même extends BlockBreakable.
        Voila l’explication de pourquoi ça ne marche pas.

        Pour corriger ce problème, ajoute dans ta classe :

        public void registerIcons(IconRegister iconRegister)
        {
        this.blockIcon = iconRegister.registerIcon("kic:ice_brick");
        }
        
        1 réponse Dernière réponse Répondre Citer 1
        • Kanar
          Kanar dernière édition par

          Merci à toi, je n’avais pas pensé à ça. Problème réglé ! 😄

          1 réponse Dernière réponse Répondre Citer 0
          • utybo
            utybo dernière édition par

            Euh… J’ai rien compris 😞

            Moddeur à la retraite et développeur de trucs en Java.

            J'aide les gens comme je peux, alors si mon message v…

            1 réponse Dernière réponse Répondre Citer 0
            • Kanar
              Kanar dernière édition par

              Tu n’as pas comprit quoi ? ^^

              1 réponse Dernière réponse Répondre Citer 0
              • 1 / 1
              • Premier message
                Dernier message
              Design by Woryk
              Contact / Mentions Légales

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB