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

    Solved Bloc TESR avec blockstates

    1.8.x
    1.8
    2
    9
    1500
    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.
    • Snowy_1803
      Snowy_1803 last edited by

      Bonjour, donc je suis en 1.8 et j’ai créé un bloc TESR avec plusieurs blockstates, mais la méthode onTileEntityRendered n’est jamais appelé 😢

      Le bloc :

      
      public class WindMillSupportBlock extends Block {
      
          public static final PropertyEnum VARIANT = PropertyEnum.create("type", EnumSupportType.class);
      
          protected WindMillSupportBlock() {
              super(Material.wood);
              setUnlocalizedName("windmillSupport");
              setCreativeTab(ModElemental.eUtils);
              setDefaultState(getDefaultState().withProperty(VARIANT, EnumSupportType.TUBE));
              setBlockBounds(0.3F, 0F, 0.3F, 0.7F, 1F, 0.7F);
              setHarvestLevel("axe", 0);
              setHardness(8.0F);
              setResistance(17.0F);
          }
      
          public TileEntity createTileEntity(World world, IBlockState state) {
              if(state.getValue(VARIANT) == EnumSupportType.FOOT) {
                  return new TileEntityWindMillFoot();
              } else if(state.getValue(VARIANT) == EnumSupportType.TUBE) {
                  return new TileEntityWindMillTube();
              } else if(state.getValue(VARIANT) == EnumSupportType.UPPER) {
                  return new TileEntityWindMillUpper();
              }
              System.out.println("ERROR : this is not an existing blockstate");
              return null;
          }
      
          public boolean hasTileEntity() {
              return true;
          }
      
          public boolean isOpaqueCube() {
              return false;
          }
      
          public boolean isNormalCube() {
              return false;
          }
      
          @SideOnly(Side.CLIENT)
          public int getRenderType() {
              return -1;
          }
      
          public IBlockState getStateFromMeta(int meta) {
              return getDefaultState().withProperty(VARIANT, EnumSupportType.getStateFromMeta(meta));
          }
      
          public int getMetaFromState(IBlockState state) {
              return ((EnumSupportType) state.getValue(VARIANT)).getMetadata();
          }
      
          protected BlockState createBlockState() {
              return new BlockState(this, new IProperty[]{VARIANT});
          }
      
          public String getUnlocalizedName(int meta) {
              return super.getUnlocalizedName() + "." + EnumSupportType.getStateFromMeta(meta);
          }
      
          public  static enum EnumSupportType implements IStringSerializable {
              FOOT(0, "foot"),
              TUBE(1, "tube"),
              UPPER(2, "upper");
      
              private static final EnumSupportType[] METADATA = new EnumSupportType[values().length];
              private final String name;
              private final int metadata;
      
              private EnumSupportType(int meta, String name) {
                  this.metadata = meta;
                  this.name = name;
              }
      
              @Override
              public String getName() {
                  return name;
              }
      
              public int getMetadata() {
                  return metadata;
              }
      
              public String toString() {
                  return name;
              }
      
              public static EnumSupportType getStateFromMeta(int meta) {
                  if(meta < 0 || meta >= METADATA.length) {
                      meta = 0;
                  }
                  return METADATA[meta];
              }
      
              static {
                  EnumSupportType[] v = values();
                  for(int i = 0; i < v.length; i++) {
                      METADATA[v*.getMetadata()] = v*;
                  }
              }
          }
      }
      
      

      **Mon ClientProxy :
      **```java
      public class ClientProxy extends CommonProxy {

      public static KeyBinding keybindShowPower;
          private SpecialRendererWindMillSupportTileEntity tesrWMS = new SpecialRendererWindMillSupportTileEntity();

      public ClientProxy() {
              FMLCommonHandler.instance().bus().register(this);
              keybindShowPower = new KeyBinding(“keybind.showPowerBar”, Keyboard.KEY_RCONTROL, “key.categories.misc”);
              ClientRegistry.registerKeyBinding(keybindShowPower);
          }

      @SubscribeEvent
          public void keyInput(KeyInputEvent e) {
              if(keybindShowPower.isPressed()) {
                  PowerOverlay.instance.setShowing(!PowerOverlay.instance.isShowing());
              }
          }

      @Override
          public void registerRender() {
              RenderingRegistry.registerEntityRenderingHandler(EntitySnowBoss.class,
                      new RenderSnowBoss(Minecraft.getMinecraft().getRenderManager(), new ModelPlayer(0.0F, false), 0.5F));
              ClientRegistry.bindTileEntitySpecialRenderer(WindLiftTileEntity.class, new SpecialRendererWindLiftTileEntity());
              ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWindMillFoot.class, tesrWMS);
              ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWindMillTube.class, tesrWMS);
              ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWindMillUpper.class, tesrWMS);
          }

      @Override
          protected void registerItemTexture(Item item, int metadata, String name) {
              ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
              mesher.register(item, metadata, new ModelResourceLocation(“elementalmod:” + name, “inventory”));
          }

      @Override
          protected void registerItemTexture(Item item, String name) {
              registerItemTexture(item, 0, name);
          }

      @Override
          protected void registerBlockTexture(Block block, int metadata, String name) {
              registerItemTexture(Item.getItemFromBlock(block), metadata, name);
          }

      @Override
          protected void registerBlockTexture(Block block, String name) {
              registerBlockTexture(block, 0, name);
          }
      }

      Et mon TESR (qui n'est pas appelé) :
      **```java
      public class SpecialRendererWindMillSupportTileEntity extends
              TileEntitySpecialRenderer {
      
          public static WindMillFootModel model1 = new WindMillFootModel();
          public static WindMillTubeModel model2 = new WindMillTubeModel();
          public static WindMillUpperModel model3 = new WindMillUpperModel();
          public static ResourceLocation texture = new ResourceLocation("elementalmod",
                  "textures/models/blocks/wind_mill_support.png");
      
          @Override
          public void renderTileEntityAt(TileEntity tile, double posX,
                  double posY, double posZ, float partialRenderTick, int par6) {
              System.out.println("Special rendering…");
              GL11.glPushMatrix();
              GL11.glTranslated(posX + 0.5, posY + 1.5, posZ + 0.5);
              GL11.glRotatef(180F, 0F, 0F, 1F);
              bindTexture(texture);
              if(tile instanceof TileEntityWindMillTube) {
                  model2.renderAll();//Tube
              } else if(tile instanceof TileEntityWindMillUpper) {
                  model3.renderAll();//Haut
              } else {
                  model1.renderAll();//Pied
              }
              GL11.glPopMatrix();
              System.out.println("Special rendered.");
          }
      
      }
      
      

      Merci d’avance.

      Moddeur 1.8

      Développeur Java

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

        Salut,
        Ta fonction hasTileEntity n’est pas bonne. Regardes dans la classe bloc, il faut ajouter block state en argument.

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

          OK, c’est bon la méthode est appelée. Mais toujours pas de rendu… 😢

          Moddeur 1.8

          Développeur Java

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

            Ton
            System.out.println(“Special rendering…”);
            S’affiche dans la console mais tu n’as aucun affichage en jeu ?

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

              C’est ça

              Moddeur 1.8

              Développeur Java

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

                Peut-être un problème au niveau du modèle ?

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

                  Ah oui, j’avais oublié de déplacer le mirror sur deux des trois modèles !
                  EDIT : En fait ça change rien…

                  Moddeur 1.8

                  Développeur Java

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

                    À mon avis utiliser le même TileEntitySpecialRenderer pour trois TileEntity différent n’est pas une bonne idée.

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

                      Ok, ça fonctionne 🙂

                      Moddeur 1.8

                      Développeur Java

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

                      MINECRAFT FORGE FRANCE © 2018

                      Powered by NodeBB