MFF

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

    Load .obj

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    73 Messages 7 Publieurs 26.0k 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.
    • MugiwaxarM Hors-ligne
      Mugiwaxar
      dernière édition par

      C’est résolut(cf:Post Précédent)
      Par contre, j’ai toujours mon problème de TileEntity qui se supprimer pas 😞

      EDIT: Ok, j’ai trouver :), j’avais Override la classe BreakBloc sans faire un super dedans, j’ai honte 😊

      Classe du block:

      
      package com.yvelis.mworldcraft.blocks;
      
      import com.yvelis.mworldcraft.common.Mmain;
      import com.yvelis.mworldcraft.tileEntity.SolarChargerTileEntity;
      
      import cpw.mods.fml.common.network.FMLNetworkHandler;
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockContainer;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.renderer.texture.IconRegister;
      import net.minecraft.entity.item.EntityItem;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemStack;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.Icon;
      import net.minecraft.world.World;
      
      public class SolarChargerBlock extends Block {
      
      private Icon top;
      private Icon other;
      private Icon bottom;
      
      public SolarChargerBlock(int id, int capacity) {
      super(id, Material.glass);
      }
      
      @Override
      public TileEntity createTileEntity(World world, int meta) {
      return new SolarChargerTileEntity();
      }
      
      @Override
      public boolean hasTileEntity(int metadata) {
      return true;
      }
      
      @Override
      public boolean onBlockActivated(World world, int x, int y,
      int z, EntityPlayer player, int par6, float par7,
      float par8, float par9) {
      FMLNetworkHandler.openGui(player, Mmain.m_instance, 0, world, x, y, z);
      return true;
      }
      
      @Override
      public void breakBlock(World world, int x, int y, int z,
      int par5, int par6) {
      
      TileEntity tile = world.getBlockTileEntity(x, y, z);
      ItemStack stack = null;
      
      if(tile instanceof SolarChargerTileEntity )
      stack = ((SolarChargerTileEntity) tile).getStackInSlot(0);
      
      if(stack == null)
      return;
      
      EntityItem item = new EntityItem(world, x, y, z, stack);
      world.spawnEntityInWorld(item);
      }
      
      @Override
      public void registerIcons(IconRegister register) {
      super.registerIcons(register);
      
      top = register.registerIcon("mworldcraft:solarChargerTop");
      other = register.registerIcon("mworldcraft:solarChargerOther");
      bottom = register.registerIcon("mworldcraft:solarChargerBottom");
      
      }
      
      @Override
      public Icon getIcon(int side, int par2) {
      
      if(side == 0)
      return bottom;
      
      if(side == 1)
      return top;
      
      return other;
      }
      
      }
      
      

      classe du tile:

      
      package com.yvelis.mworldcraft.tileEntity;
      
      import com.yvelis.mworldcraft.common.Mmain;
      import com.yvelis.mworldcraft.gui.SolarChargerGui;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.inventory.IInventory;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.network.INetworkManager;
      import net.minecraft.network.packet.Packet;
      import net.minecraft.network.packet.Packet132TileEntityData;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.world.EnumSkyBlock;
      import net.minecraft.world.World;
      
      public class SolarChargerTileEntity extends TileEntity implements IInventory {
      
      private ItemStack m_battery;
      private int m_chargeStat;
      
      public ItemStack getBattery() {
      return m_battery;
      }
      
      public void setBattery(ItemStack battery) {
      this.m_battery = battery;
      }
      
      @Override
      public void readFromNBT(NBTTagCompound tag) {
      
      super.readFromNBT(tag);
      
      m_chargeStat = tag.getInteger("ChargeStat");
      
      NBTTagCompound stackTag = new NBTTagCompound();
      stackTag = (NBTTagCompound) tag.getTag("BatteryItemStack");
      m_battery = ItemStack.loadItemStackFromNBT(stackTag);
      }
      
      @Override
      public void writeToNBT(NBTTagCompound tag) {
      
      super.writeToNBT(tag);
      
      tag.setInteger("ChargeStat", m_chargeStat);
      
      NBTTagCompound stackTag = new NBTTagCompound();
      
      if(m_battery != null)
      m_battery.writeToNBT(stackTag);
      
      tag.setTag("BatteryItemStack", stackTag);
      }
      
      @Override
      public void updateEntity() {
      this.chargeItem();
      super.updateEntity();
      }
      
      private void chargeItem() {
      if(worldObj.isRemote)
      return;
      
      int chargeSpeed = 100;
      int lightLevel = calculLightValue(worldObj, xCoord, yCoord, zCoord);
      
      if(lightLevel > 0)
      chargeSpeed /= lightLevel;
      
      if(m_battery != null && m_battery.itemID == Mmain.m_battery.itemID && m_chargeStat >= chargeSpeed && lightLevel > 0)
      {
      int actualDamage = m_battery.getItemDamage();
      m_battery.setItemDamage(actualDamage - 1);
      m_chargeStat = 0;
      }
      
      m_chargeStat++;
      }
      
      public static int calculLightValue(World world, int posX, int posY, int posZ)
      {
      
      int skyLightValue = (int) world.getSavedLightValue(EnumSkyBlock.Sky, posX, posY + 1, posZ) - world.skylightSubtracted;
      int blockLightValue = (int) world.getSavedLightValue(EnumSkyBlock.Block, posX, posY + 1, posZ);
      
      if(!(world.getWorldTime() % 24000 < 13000))
      skyLightValue = 0;
      
      if(world.isRemote)
      System.out.println("Client time = " + world.getWorldTime());
      else
      System.out.println("Server time = " + world.getWorldTime());
      
      int value = 0;
      
      if(skyLightValue >= 15)
      value = 8;
      
      else if(skyLightValue >= 14)
      value = 7;
      
      else if(skyLightValue >= 10)
      value = 6;
      
      else if(skyLightValue >= 8 || blockLightValue >= 14)
      value = 5;
      
      else if(skyLightValue >= 6 || blockLightValue >= 10)
      value = 4;
      
      else if(skyLightValue >= 4 || blockLightValue >= 8)
      value = 3;
      
      else if(skyLightValue >= 2 || blockLightValue >= 5)
      value = 2;
      
      else if(skyLightValue >= 1 || blockLightValue >= 1)
      value = 1;
      
      return value;
      }
      
      @Override
      public int getSizeInventory() {
      return 1;
      }
      
      @Override
      public ItemStack getStackInSlot(int i) {
      return m_battery;
      }
      
      @Override
      public ItemStack decrStackSize(int i, int j) {
      
      ItemStack item = m_battery.copy();
      m_battery = null;
      
      return item;
      }
      
      @Override
      public ItemStack getStackInSlotOnClosing(int i) {
      System.out.println("Drop");
      return m_battery;
      }
      
      @Override
      public void setInventorySlotContents(int i, ItemStack itemstack) {
      m_battery = itemstack;
      
      }
      
      @Override
      public String getInvName() {
      return "Charger Solaire";
      }
      
      @Override
      public boolean isInvNameLocalized() {
      return false;
      }
      
      @Override
      public int getInventoryStackLimit() {
      return 1;
      }
      
      @Override
      public boolean isUseableByPlayer(EntityPlayer entityplayer) {
      return true;
      }
      
      @Override
      public void openChest() {
      
      }
      
      @Override
      public void closeChest() {
      
      }
      
      @Override
      public boolean isItemValidForSlot(int i, ItemStack itemstack) {
      System.out.println("Test");
      if(itemstack != null && itemstack.getItem().itemID == Mmain.m_battery.itemID)
      return true;
      
      return false;
      }
      
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Ha, je viens de voir pourquoi :

        @Override
        public void breakBlock(World world, int x, int y, int z,
        int par5, int par6) {
        
        TileEntity tile = world.getBlockTileEntity(x, y, z);
        ItemStack stack = null;
        
        if(tile instanceof SolarChargerTileEntity )
        stack = ((SolarChargerTileEntity) tile).getStackInSlot(0);
        
        if(stack == null)
        return;
        
        EntityItem item = new EntityItem(world, x, y, z, stack);
        world.spawnEntityInWorld(item);
        }
        

        Comme tu as ajouté la fonction breakBlock, la fonction dans Block.java n’est plus effectué. Pour résoudre le problème :

        @Override
        public void breakBlock(World world, int x, int y, int z,
        int par5, int par6) {
        
        TileEntity tile = world.getBlockTileEntity(x, y, z);
        ItemStack stack = null;
        
        if(tile instanceof SolarChargerTileEntity )
        stack = ((SolarChargerTileEntity) tile).getStackInSlot(0);
        
        if(stack == null)
        return;
        
        EntityItem item = new EntityItem(world, x, y, z, stack);
        world.spawnEntityInWorld(item);
        super.breakBlock(world, x, y, z, par5, par6);
        }
        
        1 réponse Dernière réponse Répondre Citer 1
        • MugiwaxarM Hors-ligne
          Mugiwaxar
          dernière édition par

          Mdr, j’ai trouver en même temps ^^
          Merci beaucoup quand même !!
          (J’ai éditer mon post 1 seconde avant de voir le tien)

          Edit: Jvai maintenant tester ce que jglrxavpok à fait, j’ai poser mes question ici pour éviter d’ouvrir 10milles posts

          1 réponse Dernière réponse Répondre Citer 0
          • jglrxavpokJ Hors-ligne
            jglrxavpok Modérateurs
            dernière édition par

            @‘Mugiwaxar’:

            Edit: Jvai maintenant tester ce que jglrxavpok à fait, j’ai poser mes question ici pour éviter d’ouvrir 10milles posts

            Je suis en train de préparer un post pour l’API 😉

            Modérateur sur MFF. 
            Mon Github: http://github.com/jglrxavpok
            Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

              Ok terrible !
              Des que je rentre ce soir je test !

              1 réponse Dernière réponse Répondre Citer 0
              • jglrxavpokJ Hors-ligne
                jglrxavpok Modérateurs
                dernière édition par

                Il est prêt: http://www.minecraftforgefrance.fr/showthread.php?tid=584 😄

                Modérateur sur MFF. 
                Mon Github: http://github.com/jglrxavpok
                Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

                  T’es vraiment un chef 😄

                  1 réponse Dernière réponse Répondre Citer 0
                  • jglrxavpokJ Hors-ligne
                    jglrxavpok Modérateurs
                    dernière édition par

                    Merci 😄

                    Modérateur sur MFF. 
                    Mon Github: http://github.com/jglrxavpok
                    Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                    1 réponse Dernière réponse Répondre Citer 0
                    • isadorI Hors-ligne
                      isador Moddeurs confirmés Modérateurs
                      dernière édition par

                      par contre petite question: avec le code de mugiwaxar au tout debut du topic, on peut appliquer ce rendu sur un bloc?

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

                        Bien entendu. Un TESR et voilà 😛

                        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                        ― Jordan B. Peterson

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

                          Ho, perso, j’ai trouvé un moyen simpatique qui marche avec seulement 3 classe:
                          -Un Bloc
                          -Un TileEntity
                          -Un TileEntitySpecialRenderer

                          Tu peux utiliser ce tuto

                          1 réponse Dernière réponse Répondre Citer 0
                          • kevin_68K Hors-ligne
                            kevin_68 Moddeurs confirmés
                            dernière édition par

                            Et la classe principale + Client/Common proxy


                            Mettez à jours vers la dernière version stable (1.8.9 voir même…

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

                              @‘kevin_68’:

                              Et la classe principale + Client/Common proxy

                              Rhooo, voila donc ! Ces classes ne servent à rien !
                              On peut s’en passer pour une fois

                              😄

                              Je part en supposant qu’il est logique d’avoir ces classes par défaut dans ses mods 😉

                              1 réponse Dernière réponse Répondre Citer 0
                              • isadorI Hors-ligne
                                isador Moddeurs confirmés Modérateurs
                                dernière édition par

                                Ok merci pour l’éclaircissement.
                                Car contre pour le rendu 3D on peut utiliser une classe pour tout nos rendu (on précise alors le chemin de la texture et du .obj dans la classe de notre item/block/entité)?

                                1 réponse Dernière réponse Répondre Citer 0
                                • jglrxavpokJ Hors-ligne
                                  jglrxavpok Modérateurs
                                  dernière édition par

                                  Il n’y a aucun problème à faire ça 😉
                                  Mais fait attention que les models soient ‘cohérents’: proportionnés les uns par rapport aux autres

                                  Modérateur sur MFF. 
                                  Mon Github: http://github.com/jglrxavpok
                                  Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

                                    (Bienvenue chez moi)

                                    Et voila ske ça donne 😄

                                    Merci jglrxavpok 🙂

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • isadorI Hors-ligne
                                      isador Moddeurs confirmés Modérateurs
                                      dernière édition par

                                      par contre comme j’ai dit comment faire pour n’utiliser qu’une classe de rendu?

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • jglrxavpokJ Hors-ligne
                                        jglrxavpok Modérateurs
                                        dernière édition par

                                        Sur ce point-là, c’est plus de l’organisation qu’autre chose, tout dépend comment tu veux le faire et quel est ton “style” de code.

                                        Modérateur sur MFF. 
                                        Mon Github: http://github.com/jglrxavpok
                                        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • isadorI Hors-ligne
                                          isador Moddeurs confirmés Modérateurs
                                          dernière édition par

                                          bha des classe d’item tout ce qu’il y a de plus normal et la classe de rendu 3D

                                          
                                          package Mineralherb;
                                          
                                          import org.lwjgl.opengl.GL11;
                                          
                                          import net.minecraft.client.Minecraft;
                                          import net.minecraft.client.renderer.ItemRenderer;
                                          import net.minecraft.item.ItemStack;
                                          import net.minecraft.util.ResourceLocation;
                                          import net.minecraftforge.client.IItemRenderer;
                                          import net.minecraftforge.client.model.AdvancedModelLoader;
                                          import net.minecraftforge.client.model.IModelCustom;
                                          
                                          public class Sword3D implements IItemRenderer {
                                          
                                          private IModelCustom model3D = AdvancedModelLoader.loadModel("/assets/mineralherb/models/weapon/axe_2h_pvphorde_a_01.obj");
                                          private ResourceLocation texture = new ResourceLocation("mineralherb:models/weapon/axe_2h_pvphorde_a_01black.png");
                                          
                                          @Override
                                          public boolean handleRenderType(ItemStack item, ItemRenderType type) {
                                          return true;
                                          }
                                          
                                          @Override
                                          public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
                                          return false;
                                          }
                                          
                                          @Override
                                          public void renderItem(ItemRenderType type, ItemStack item, Object… data) {
                                          
                                          if(type.equals(ItemRenderType.EQUIPPED))
                                          {
                                          GL11.glPushMatrix();
                                          GL11.glScalef(2.0F, 2.0F, 2.0F);
                                          GL11.glRotatef(-60.0F, 1.0F, 0.0F, 0.0F);
                                          GL11.glRotatef(17.0F, 0.0F, 0.0F, 1.0F);
                                          GL11.glTranslatef(0.20F, -0.035F, 0.25F);
                                          Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                                          model3D.renderAll();
                                          GL11.glPopMatrix();
                                          
                                          }
                                          else if (type.equals(ItemRenderType.EQUIPPED_FIRST_PERSON) )
                                          {
                                          GL11.glPushMatrix();
                                          Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                                          GL11.glTranslatef(2.0F, -0.5f, 2.0f);
                                          GL11.glScalef(5.0F, 5.0F, 5.0F);
                                          GL11.glRotatef(70.0F, 0.0F, 1.0F, 0.0F);
                                          GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F);
                                          model3D.renderAll();
                                          GL11.glPopMatrix();
                                          
                                          }
                                          else if (type.equals(ItemRenderType.ENTITY) )
                                          {
                                          GL11.glPushMatrix();
                                          Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                                          GL11.glScalef(0.6F, 0.6F, 0.6F);
                                          GL11.glTranslated(0.0, 0.17, 0.0);
                                          GL11.glRotated(90, 0, 1, 0);
                                          GL11.glRotated(-90, 1, 0, 0);
                                          model3D.renderAll();
                                          GL11.glPopMatrix();
                                          
                                          }
                                          else
                                          {
                                          GL11.glPushMatrix();
                                          Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                                          GL11.glScalef(8.8F, 8.8F, 8.8F);
                                          GL11.glTranslated(1.3, 0.9, 0);
                                          GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
                                          GL11.glRotated(220, 1, 0, 0);
                                          model3D.renderAll();
                                          GL11.glPopMatrix();
                                          
                                          }
                                          
                                          }
                                          }
                                          
                                          
                                          1 réponse Dernière réponse Répondre Citer 0
                                          • jglrxavpokJ Hors-ligne
                                            jglrxavpok Modérateurs
                                            dernière édition par

                                            Dans tu appelles le constructeur de ta classe, ajoutes juste un argument pour donner le modèle+texture 😉

                                            Modérateur sur MFF. 
                                            Mon Github: http://github.com/jglrxavpok
                                            Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 2 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB