Résolu Render block invisible
-
bonjour j’ai , comme d’habitude , un problème j’ai crée un block avec un model techne dans ma main il s’affiche parfaitement mais quand je le pose je vois la hite box mais pas le bloc
la classe du blocpackage com.mathiasetampes.entreprise.common; import com.mathiasetampes.entreprise.proxy.ClientProxy; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class Moniteur extends Block { protected Moniteur() { super(Material.rock); //Mettez le material qui convient this.setResistance(8.0F); this.setHarvestLevel("pickaxe", 2); //Outil pour casser le bloc, pour le chiffre : 0=bois, 1=pierre, 2=fer, 3=diamant } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitx, float hity, float hitz) { if (world.isRemote) { return true; } else { System.out.println("machin"); return true; } } public TileEntity createNewTileEntity(World world, int metadata) //Instancie le TileEntity { return new TileEntityMoniteur(); } @Override public boolean hasTileEntity(int metadata) //Permet de savoir si le bloc a un TileEntity { return true; } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } public int getRenderType() { return ClientProxy.tesrRenderId; } public void registerBlockIcons(IIconRegister iiconRegister) { this.blockIcon = iiconRegister.registerIcon("minecraft:stone"); } }
du model
// Date: 15/05/2015 21:11:40 // Template version 1.1 // Java generated by Techne // Keep in mind that you still need to fill in some blanks // - ZeuX package com.mathiasetampes.entreprise.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class MonitorModel extends ModelBase { //fields ModelRenderer Shape1; ModelRenderer Shape2; ModelRenderer Shape3; public MonitorModel() { textureWidth = 128; textureHeight = 64; Shape1 = new ModelRenderer(this, 0, 0); Shape1.addBox(0F, 0F, 0F, 9, 0, 5); Shape1.setRotationPoint(-4F, 23F, -3F); Shape1.setTextureSize(128, 64); Shape1.mirror = true; setRotation(Shape1, 0F, 0F, 0F); Shape2 = new ModelRenderer(this, 15, 22); Shape2.addBox(0F, 0F, 0F, 1, 6, 1); Shape2.setRotationPoint(0F, 17F, 0F); Shape2.setTextureSize(128, 64); Shape2.mirror = true; setRotation(Shape2, 0F, 0F, 0F); Shape3 = new ModelRenderer(this, 45, 27); Shape3.addBox(0F, 0F, 0F, 13, 9, 1); Shape3.setRotationPoint(-6F, 11F, -1F); Shape3.setTextureSize(128, 64); Shape3.mirror = true; setRotation(Shape3, 0F, 0F, 0F); } public void render() { Shape1.render(0.0625F); Shape2.render(0.0625F); Shape3.render(0.0625F); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } }
du TESRinventoryRenderer
package com.mathiasetampes.entreprise.client; import org.lwjgl.opengl.GL11; import com.mathiasetampes.entreprise.common.Entreprise; import com.mathiasetampes.entreprise.proxy.ClientProxy; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; public class TESRInventoryRenderer implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { if(block == Entreprise.distributeur) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityDistributeurSpecialRenderer.texture); TileEntityDistributeurSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } else if(block == Entreprise.moniteur) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityMoniteurSpecialRenderer.texture); TileEntityMoniteurSpecialRenderer.model.render(); GL11.glPopMatrix(); } } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { return false; } @Override public boolean shouldRender3DInInventory(int modelId) { return true; } @Override public int getRenderId() { return ClientProxy.tesrRenderId; } }
et du TESR
package com.mathiasetampes.entreprise.client; import org.lwjgl.opengl.GL11; import com.mathiasetampes.entreprise.client.model.ATMModel; import com.mathiasetampes.entreprise.client.model.MonitorModel; import com.mathiasetampes.entreprise.common.Entreprise; import com.mathiasetampes.entreprise.common.TileEntityDistributeur; import com.mathiasetampes.entreprise.common.TileEntityMoniteur; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; public class TileEntityMoniteurSpecialRenderer extends TileEntitySpecialRenderer { public static MonitorModel model = new MonitorModel(); public static ResourceLocation texture = new ResourceLocation(Entreprise.MODID, "textures/blocks/monitor.png"); public TileEntityMoniteurSpecialRenderer() // TileEntityTutorielSpecialRenderer dans mon cas, c'est la classe que nous avons fait dans la partie précédente { this.func_147497_a(TileEntityRendererDispatcher.instance); } @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float partialRenderTick) { this.renderTileEntityMoniteurAt((TileEntityMoniteur)tile, x, y, z, partialRenderTick); // j'appelle ma fonction renderTileEntityTutorielAt en castant TileEntityTutoriel à l'argument tile } private void renderTileEntityMoniteurAt(TileEntityMoniteur tile, double x, double y, double z, float partialRenderTick) // ma propre fonction { GL11.glPushMatrix(); // ouvre une matrix GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D); // déplace le bloc sur les coordonnés et le centre GL11.glRotatef(180F, 0.0F, 0.0F, 0.0F); // met droit le bloc (par défaut il est à l'envers) this.bindTexture(texture); // affiche la texture model.render(); // rend le modèle GL11.glPopMatrix(); // ferme la matrix } }
-
Ton rendu est enregistré ? Ton tile entity est enregistré ? (classe principale + proxys)
-
classe principale , attention je déclare beaucoup de chose
package com.mathiasetampes.entreprise.common; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; import com.mathiasetampes.entreprise.client.GuiHandlerTutorial; import com.mathiasetampes.entreprise.common.item.AmpouleLed; import com.mathiasetampes.entreprise.common.item.CarteBleu; import com.mathiasetampes.entreprise.common.item.CarteGraphic; import com.mathiasetampes.entreprise.common.item.Cent; import com.mathiasetampes.entreprise.common.item.Cinq; import com.mathiasetampes.entreprise.common.item.CinqCent; import com.mathiasetampes.entreprise.common.item.Cinquante; import com.mathiasetampes.entreprise.common.item.Core; import com.mathiasetampes.entreprise.common.item.Deux; import com.mathiasetampes.entreprise.common.item.DeuxCent; import com.mathiasetampes.entreprise.common.item.Dix; import com.mathiasetampes.entreprise.common.item.Ecran; import com.mathiasetampes.entreprise.common.item.GraphicCore; import com.mathiasetampes.entreprise.common.item.Led; import com.mathiasetampes.entreprise.common.item.Oil; import com.mathiasetampes.entreprise.common.item.Plaquettes; import com.mathiasetampes.entreprise.common.item.Plastique; import com.mathiasetampes.entreprise.common.item.Processeur; import com.mathiasetampes.entreprise.common.item.Socle; import com.mathiasetampes.entreprise.common.item.TigeDeFer; import com.mathiasetampes.entreprise.common.item.Un; import com.mathiasetampes.entreprise.common.item.Ventilateur; import com.mathiasetampes.entreprise.common.item.Vingt; import com.mathiasetampes.entreprise.common.item.System; import com.mathiasetampes.entreprise.proxy.CommonProxy; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; 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.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @Mod(modid = "entreprise",name="Entreprise",version="1.0.0") public class Entreprise { @Instance("entreprise") public static Entreprise instance; public static final String MODID = "entreprise"; @SidedProxy(clientSide = "com.mathiasetampes.entreprise.proxy.ClientProxy", serverSide = "com.mathiasetampes.entreprise.proxy.CommonProxy") public static CommonProxy proxy; public static Item un; public static Item deux; public static Item cinq; public static Item dix; public static Item vingt; public static Item cinquante; public static Item cent; public static Item deuxCent; public static Item cinqCent; public static Item carteBleu; public static Item oil; public static Item plastique; public static Item ecran; public static Item tigeDeFer; public static Item plaquettes; public static Item led; public static Item ampouleLed; public static Item socle; public static Item core; public static Item graphicCore; public static Item processeur; public static Item system; public static Item ventilateur; public static Item carteGraphic; public static Block distributeur; public static Block moniteur; public static SimpleNetworkWrapper network; @EventHandler public void preInit(FMLPreInitializationEvent event) { un = new Un().setUnlocalizedName("un").setTextureName(Entreprise.MODID + ":un").setCreativeTab(CreativeTabs.tabMaterials); deux = new Deux().setUnlocalizedName("deux").setTextureName(Entreprise.MODID + ":deux").setCreativeTab(CreativeTabs.tabMaterials); cinq = new Cinq().setUnlocalizedName("cinq").setTextureName(Entreprise.MODID + ":cinq").setCreativeTab(CreativeTabs.tabMaterials); dix = new Dix().setUnlocalizedName("dix").setTextureName(Entreprise.MODID + ":dix").setCreativeTab(CreativeTabs.tabMaterials); vingt = new Vingt().setUnlocalizedName("vingt").setTextureName(Entreprise.MODID + ":vingt").setCreativeTab(CreativeTabs.tabMaterials); cinquante = new Cinquante().setUnlocalizedName("cinquante").setTextureName(Entreprise.MODID + ":cinquante").setCreativeTab(CreativeTabs.tabMaterials); cent = new Cent().setUnlocalizedName("cent").setTextureName(Entreprise.MODID + ":cent").setCreativeTab(CreativeTabs.tabMaterials); deuxCent = new DeuxCent().setUnlocalizedName("deuxCent").setTextureName(Entreprise.MODID + ":deuxCent").setCreativeTab(CreativeTabs.tabMaterials); cinqCent = new CinqCent().setUnlocalizedName("cinqCent").setTextureName(Entreprise.MODID + ":cinqCent").setCreativeTab(CreativeTabs.tabMaterials); carteBleu = new CarteBleu().setUnlocalizedName("carteBleu").setTextureName(Entreprise.MODID + ":carteBleu").setCreativeTab(CreativeTabs.tabMaterials); oil = new Oil().setUnlocalizedName("oil").setTextureName(Entreprise.MODID + ":oil").setCreativeTab(CreativeTabs.tabMaterials); plastique = new Plastique().setUnlocalizedName("plastique").setTextureName(Entreprise.MODID + ":plastique").setCreativeTab(CreativeTabs.tabMaterials); ecran = new Ecran().setUnlocalizedName("ecran").setTextureName(Entreprise.MODID + ":ecran").setCreativeTab(CreativeTabs.tabMaterials); tigeDeFer = new TigeDeFer().setUnlocalizedName("tigeDeFer").setTextureName(Entreprise.MODID + ":tige").setCreativeTab(CreativeTabs.tabMaterials); plaquettes = new Plaquettes().setUnlocalizedName("plaquettes").setTextureName(Entreprise.MODID + ":plaquettes").setCreativeTab(CreativeTabs.tabMaterials); led = new Led().setUnlocalizedName("led").setTextureName(Entreprise.MODID + ":led").setCreativeTab(CreativeTabs.tabMaterials); ampouleLed = new AmpouleLed().setUnlocalizedName("ampouleLed").setTextureName(Entreprise.MODID + ":ampouleLed").setCreativeTab(CreativeTabs.tabMaterials); socle = new Socle().setUnlocalizedName("socle").setTextureName(Entreprise.MODID + ":socle").setCreativeTab(CreativeTabs.tabMaterials); core = new Core().setUnlocalizedName("core").setTextureName(Entreprise.MODID + ":core").setCreativeTab(CreativeTabs.tabMaterials); graphicCore = new GraphicCore().setUnlocalizedName("graphicCore").setTextureName(Entreprise.MODID + ":graphicCore").setCreativeTab(CreativeTabs.tabMaterials); processeur = new Processeur().setUnlocalizedName("processeur").setTextureName(Entreprise.MODID + ":processeur").setCreativeTab(CreativeTabs.tabMaterials); system = new System().setUnlocalizedName("system").setTextureName(Entreprise.MODID + ":system").setCreativeTab(CreativeTabs.tabMaterials); ventilateur = new Ventilateur().setUnlocalizedName("ventilateur").setTextureName(Entreprise.MODID + ":ventilateur").setCreativeTab(CreativeTabs.tabMaterials); carteGraphic = new CarteGraphic().setUnlocalizedName("carteGraphic").setTextureName(Entreprise.MODID + ":carteGraphic").setCreativeTab(CreativeTabs.tabMaterials); distributeur = new Distributeur().setBlockName("distributeur").setCreativeTab(CreativeTabs.tabRedstone); moniteur = new Moniteur().setBlockName("moniteur").setCreativeTab(CreativeTabs.tabRedstone); GameRegistry.registerItem(un, "un"); GameRegistry.registerItem(deux, "deux"); GameRegistry.registerItem(cinq, "cinq"); GameRegistry.registerItem(dix, "dix"); GameRegistry.registerItem(vingt, "vingt"); GameRegistry.registerItem(cinquante, "cinquante"); GameRegistry.registerItem(cent, "cent"); GameRegistry.registerItem(deuxCent, "deuxCent"); GameRegistry.registerItem(cinqCent, "cinqCent"); GameRegistry.registerItem(carteBleu, "carteBleu"); GameRegistry.registerItem(oil, "oil"); GameRegistry.registerItem(plastique, "plastique"); GameRegistry.registerItem(ecran, "ecran"); GameRegistry.registerItem(tigeDeFer, "tigeDeFer"); GameRegistry.registerItem(plaquettes, "plaquettes"); GameRegistry.registerItem(led, "led"); GameRegistry.registerItem(ampouleLed, "ampouleLed"); GameRegistry.registerItem(socle, "socle"); GameRegistry.registerItem(core, "core"); GameRegistry.registerItem(graphicCore, "graphicCore"); GameRegistry.registerItem(processeur, "processeur"); GameRegistry.registerItem(system, "system"); GameRegistry.registerItem(ventilateur, "ventilateur"); GameRegistry.registerItem(carteGraphic, "carteGraphic"); GameRegistry.registerBlock(distributeur, "distributeur"); GameRegistry.registerBlock(moniteur, "moniteur"); GameRegistry.addShapelessRecipe(new ItemStack(core),new Object[]{ new ItemStack(tigeDeFer), new ItemStack(plaquettes)}); GameRegistry.addShapelessRecipe(new ItemStack(tigeDeFer,2),new Object[]{new ItemStack(Items.iron_ingot)}); GameRegistry.addShapelessRecipe(new ItemStack(system),new Object[]{new ItemStack(processeur), new ItemStack(carteGraphic)}); GameRegistry.addShapedRecipe(new ItemStack(plaquettes), new Object[]{"XX",'X',Items.iron_ingot}); GameRegistry.addShapedRecipe(new ItemStack(processeur), new Object[]{" X ","XYX"," X ",'X',core,'Y',graphicCore}); GameRegistry.addShapedRecipe(new ItemStack(graphicCore), new Object[]{" X ","ZYZ",'Z',tigeDeFer,'Y',plaquettes,'X',led}); GameRegistry.addShapedRecipe(new ItemStack(led), new Object[]{"XYX",'Y',ampouleLed,'X',tigeDeFer}); GameRegistry.addShapedRecipe(new ItemStack(ampouleLed), new Object[]{"X","Y",'X',Blocks.glass_pane,'Y',tigeDeFer}); GameRegistry.addShapedRecipe(new ItemStack(ecran), new Object[]{"XXX","XYX","XXX",'X',Blocks.glass_pane,'Y',led}); GameRegistry.addShapedRecipe(new ItemStack(socle), new Object[]{"XXX","XXX"," X ",'X',plastique}); GameRegistry.addShapedRecipe(new ItemStack(ventilateur), new Object[]{" X ","XYX"," X ",'X',plaquettes,'Y',Items.iron_ingot}); GameRegistry.addShapedRecipe(new ItemStack(carteGraphic), new Object[]{"ZZZ","XYX",'X',tigeDeFer,'Y',ventilateur,'Z',plaquettes}); GameRegistry.addShapedRecipe(new ItemStack(moniteur), new Object[]{"X","Y","Z",'X',ecran,'Y',socle,'Z',system}); GameRegistry.addSmelting(oil, new ItemStack(plastique, 1), 0.1f); network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID); network.registerMessage(PacketDistributeur.Handler.class, PacketDistributeur.class, 0, Side.SERVER); } @EventHandler public void init(FMLInitializationEvent event) { GameRegistry.registerTileEntity(TileEntityDistributeur.class,MODID + ":DistributeurTileEntity"); FMLCommonHandler.instance().bus().register(new AllEvent()); MinecraftForge.EVENT_BUS.register(new AllEvent()); NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new GuiHandlerTutorial()); proxy.registerRender(); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } }
et le client proxy ```java
package com.mathiasetampes.entreprise.proxy;import com.mathiasetampes.entreprise.client.TESRInventoryRenderer;
import com.mathiasetampes.entreprise.client.TileEntityDistributeurSpecialRenderer;
import com.mathiasetampes.entreprise.client.TileEntityMoniteurSpecialRenderer;
import com.mathiasetampes.entreprise.common.TileEntityDistributeur;
import com.mathiasetampes.entreprise.common.TileEntityMoniteur;import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;public class ClientProxy extends CommonProxy
{
public static int tesrRenderId;
@Override
public void registerRender()
{
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDistributeur.class, new TileEntityDistributeurSpecialRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMoniteur.class, new TileEntityMoniteurSpecialRenderer());
tesrRenderId = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(new TESRInventoryRenderer());}
} -
Je crois que je viens de voir le problème.
Tu fais un glRotate :
GL11.glRotatef(180F, 0.0F, 0.0F, 0.0F); // met droit le bloc (par défaut il est à l’envers)Mais sur aucun axe. Il me semble qu’il faut mettre 1.0F sur z, à vérifier.
-
malheureusement ce n’est pas çà
-
C’est le tile entity alors.
GameRegistry.registerTileEntity(TileEntityDistributeur.class,MODID + “istributeurTileEntity”);Tu as enregistré celui du Distributeur mais pas celui du Monitor.
-
effectivement je ne l’avais pas fais mais ce n’est toujours pas çà
-
Là je ne vois pas d’où vient le problème alors …
Tu peux m’envoyer un zip de ton dossier src ? -
ok le voila
-
J’arrive pas à ouvrir l’archive, ni sur ubuntu, ni sur Windows
-
moi j’ai pu l’ouvrir robin je te le passe par skype si tu veux
EDIT: on peut l’ouvrir mais elle est corrompu, on peut pas l’extraire
-
oui en fait c’est normal c’est a cause de la façon dont je l’ai zipé : un peu sauvagement . voici une version valide normalement
-
ca ne marche toujours pas, avec quoi zip tu ton dossier?
-
pour pouvoir le transmettre je peut pas transmetre un fichier normal
-
“Avec quoi zip tu ton fichier?”
tu utilise quel logiciel? -
un fois manuellement , une fois avec 7 zip
-
bizarre ca ne marche pas, sur ton pc si tu télécharger l’archive ca marche?
-
nan , bizarre lv 3
-
Peut-être la faute du forum, les pièces jointes on tendance à bug. Essaye avec un hébergeur comme mega et ou mediafire.
-