Load .obj
-
En mode debug, l’erreur s’affiche pas tant que tu as pas relancé l’application

-
@‘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
-
Vérifie que tu as pas de breakpoints (ça affiche un rond dans la colonne de gauche)
-
Si justement, j’en ai un
-
Retire le, alors ^^
-
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
-
T’es sûr ? o.O
-
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; } } -
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); } -
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
-
@‘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

-
Ok terrible !
Des que je rentre ce soir je test ! -
-
T’es vraiment un chef

-
Merci

-
par contre petite question: avec le code de mugiwaxar au tout debut du topic, on peut appliquer ce rendu sur un bloc?
-
Bien entendu. Un TESR et voilà

-
Ho, perso, j’ai trouvé un moyen simpatique qui marche avec seulement 3 classe:
-Un Bloc
-Un TileEntity
-Un TileEntitySpecialRendererTu peux utiliser ce tuto
-
Et la classe principale + Client/Common proxy
-
@‘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

