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

      @‘jglrxavpok’:

      En passant, les multiples textures sont gérées 😄

      Ca m’interesse ❗❗❗


      @‘rafoudiablol’:

      Non, il faut vérifier dans ton update entity qu’elle est sur le bon bloc.
      Et supprimer ton Tilentity à la destruction de ton boc

      Ok, donc faut les supprimer manuellement

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

        Je vais commencer à faire du code que j’ai quelque chose de lisible et utilisable 😄

        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
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          @‘Mugiwaxar’:

          @‘jglrxavpok’:

          En passant, les multiples textures sont gérées 😄

          Ca m’interesse ❗❗❗


          @‘rafoudiablol’:

          Non, il faut vérifier dans ton update entity qu’elle est sur le bon bloc.
          Et supprimer ton Tilentity à la destruction de ton boc

          Ok, donc faut les supprimer manuellement

          Non, elle se supprime automatiquement, tu as sûrement oublié la fonction

          public boolean hasTileEntity(int metadata)
          {
          return true;
          }
          

          Dans la classe de ton bloc.

          Et sinon GG xavpok, tu comptes faire un petit api ? (ou l’intégrer à FFMT lib ? )

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

            Petite API, oui
            Intégration à FFMT Libs ? Oui, mais je ferais aussi une petite API pour ceux qui veulent uniquement cette dernière

            L’API marchera pour les versions de Minecraft suivantes: Float.NEGATIVE_INFINITY à Float.POSITIVE_INFINITY, du moins tant que MC ne change pas pour autre chose que LWJGL 😄

            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

              @‘robin4002’:

              @‘Mugiwaxar’:

              Ok, donc faut les supprimer manuellement

              Non, elle se supprime automatiquement, tu as sûrement oublié la fonction

              public boolean hasTileEntity(int metadata)
              {
              return true;
              }
              

              Dans la classe de ton bloc.

              Voila pourquoi

              Edit: A ba nan, toujours pas 😄

              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

                Ton tile entity est bien enregistré ?
                Sinon envoie la classe de ton bloc.

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

                  
                  package com.yvelis.mworldcraft.blocks;
                  
                  import com.yvelis.mworldcraft.common.Mmain;
                  import com.yvelis.mworldcraft.tileEntity.CraftTileEntity;
                  
                  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.EntityLivingBase;
                  import net.minecraft.entity.player.EntityPlayer;
                  import net.minecraft.item.ItemStack;
                  import net.minecraft.tileentity.TileEntity;
                  import net.minecraft.tileentity.TileEntityFurnace;
                  import net.minecraft.util.Icon;
                  import net.minecraft.util.MathHelper;
                  import net.minecraft.world.World;
                  
                  public class SmeltingBlock extends BlockContainer
                  {
                  private Icon top;
                  private Icon sud;
                  private Icon other;
                  
                  public SmeltingBlock(int id)
                  {
                  super(id, Material.anvil);
                  }
                  
                  @Override
                  public TileEntity createNewTileEntity(World world) {
                  return new CraftTileEntity();
                  }
                  
                  @Override
                  public boolean hasTileEntity(int meta) {
                  return true;
                  }
                  
                  @Override
                  public Icon getIcon(int side, int meta)
                  {
                  return side == 1 ? this.top : (side == 0 ? this.top : (side != meta ? this.other : this.sud));
                  }
                  
                  public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
                  {
                  int l = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
                  
                  if (l == 0)
                  {
                  par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2);
                  }
                  
                  if (l == 1)
                  {
                  par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2);
                  }
                  
                  if (l == 2)
                  {
                  par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2);
                  }
                  
                  if (l == 3)
                  {
                  par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2);
                  }
                  }
                  
                  @Override
                  public void registerIcons(IconRegister register)
                  {
                  top = register.registerIcon("mworldcraft:foundryTop");
                  sud = register.registerIcon("mworldcraft:foundrySud");
                  other = register.registerIcon("mworldcraft:foundryOther");
                  }
                  
                  @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;
                  }
                  }
                  
                  
                  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

                    Dans la classe Block il y ça :

                    public void breakBlock(World par1World, int par2, int par3, int par4, Block par5, int par6)
                    {
                    if (hasTileEntity(par6) && !(this instanceof BlockContainer))
                    {
                    par1World.removeTileEntity(par2, par3, par4);
                    }
                    }
                    

                    Donc vire le extends BlockContainer.

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

                      @‘robin4002’:

                      Heu what

                      Exactement, c’est aussi en train de me rendre fou :huh:

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

                        Pour des codes d’aide pour OpenGL: https://github.com/jglrxavpok/jglrxavpok_lwjgl_utils
                        Pour UNIQUEMENT le .jar pour charger les .obj: https://github.com/jglrxavpok/jglrxavpok_lwjgl_utils/raw/master/glutils.jar

                        Charger un .obj:

                        model = new GLUtils("/cheminVersLeFichierObj");
                        

                        Dessiner un .obj:

                        model.render();
                        

                        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 1
                        • robin4002R Hors-ligne
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                          dernière édition par

                          Je viens de modifier mon poste, en fait enleve le extends BlockContainer et mets un extends Block
                          D’ailleurs utilise plutôt la méthode de forge :
                          public TileEntity createTileEntity(World world, int metadata)
                          pour créer le tile entity.

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

                            Peut importe, je verrais plus tard, je suis devant un plus grand problème

                            Quand je clique sur mon BlockContainer, la fenêtre debug s’ouvre, et m’indique cette ligne

                            
                            return new CraftContainer(player, world, x, y, z);
                            
                            

                            dans le GuiHandler, aucune erreur dans la console :dodgy:

                            Edit: Cool, je vais tester ça___
                            @‘jglrxavpok’:

                            Pour des codes d’aide pour OpenGL: https://github.com/jglrxavpok/jglrxavpok_lwjgl_utils
                            Pour UNIQUEMENT le .jar pour charger les .obj: https://github.com/jglrxavpok/jglrxavpok_lwjgl_utils/raw/master/glutils.jar

                            Charger un .obj:

                            model = new GLUtils("/cheminVersLeFichierObj");
                            

                            Dessiner un .obj:

                            model.render();
                            

                            Super, je vais tester aussi

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

                              En mode debug, l’erreur s’affiche pas tant que tu as pas relancé l’application 😉

                              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

                                @‘jglrxavpok’:

                                En mode debug, l’erreur s’affiche pas tant que tu as pas relancé l’application 😉

                                Je sais bien, mais j’ai quand même pas d’erreur

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

                                  Vérifie que tu as pas de breakpoints (ça affiche un rond dans la colonne de gauche)

                                  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

                                    Si justement, j’en ai un

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

                                      Retire le, alors ^^

                                      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

                                        Jveu bien, mais il se met tout seul 😄

                                        Edit: Bon c’est ok, j’avais un nullPointer dans la classe Container, il me le disais pas je sais pas pourquoi

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

                                          T’es sûr ? o.O

                                          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

                                            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
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 3 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB