Questions : CustomMenu + Bug touche
-
Tu utilise le même proxy pour tous les mods ?
-
Je ne comprends pas comment utiliser InitGuiEvent… :S
Et j’ai l’impression que le proxy est utilisé aussi par les autres comment changer ça ? :S -
Mais pourquoi tu as fait plusieurs mods ?
Envoie le code de la classe principale de chacun d’eux.Pour l’event InitGuiEvent c’est comme tous les event. Dans ton cas tu as juste à ouvrir ton gui si le gui qui vient d’être ouvert est le GuiMainMenu.
-
Le message étant trop long je l’ai mis sur un pastbin : http://pastebin.com/VHy3wZMf
-
Les proxy ne sont pas les mêmes, donc ce n’est pas ça. build le mod et regarde s’il y a le même problème.
-
Toujours le même problème…

-
Même après avoir build le mod et testé sur Minecraft ?
-
Oui

-
Envoie le code concerné.
-
package fr.altiscraft.altiscraft.proxy; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.settings.KeyBinding; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StringUtils; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import fr.altiscraft.altiscraft.common.EntityMobBenjaminLoison; import fr.altiscraft.altiscraft.common.RenderMobBenjaminLoison; import fr.altiscraft.altiscraft.common.TileEntityATM; import fr.altiscraft.altiscraft.common.TileEntityCoco; import fr.altiscraft.altiscraft.common.TileEntityLampadaire; import fr.altiscraft.altiscraft.common.TileEntityVLampadaire; public class ClientProxy extends CommonProxy { public static int tesrRenderId; @Override public void registerRender() { FMLCommonHandler.instance().bus().register(this); System.out.println("Méthode côté client"); RenderingRegistry.registerEntityRenderingHandler( EntityMobBenjaminLoison.class, new RenderMobBenjaminLoison( new ModelBiped())); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityATM.class, new TileEntityATMSpecialRenderer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoco.class, new TileEntityCocoSpecialRenderer()); ClientRegistry.bindTileEntitySpecialRenderer( TileEntityLampadaire.class, new TileEntityLampadaireSpecialRenderer()); ClientRegistry.bindTileEntitySpecialRenderer( TileEntityVLampadaire.class, new TileEntityVLampadaireSpecialRenderer()); tesrRenderId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(new TESRInventoryRenderer()); } private static KeyBinding keyBindTest; { keyBindTest = new KeyBinding("altiscraft.inventaire", 21, "key.categories.inventory"); ClientRegistry.registerKeyBinding(keyBindTest); } @SubscribeEvent public void onEvent(KeyInputEvent event) { if (keyBindTest.isPressed()) { keyTestTyped(); } } private void keyTestTyped() { Minecraft.getMinecraft().thePlayer .sendChatMessage((new StringBuilder()).append("/inventaire") .toString()); Minecraft.getMinecraft(); } public static ResourceLocation getLocationSkin(String Skin) { return new ResourceLocation("skins/" + StringUtils.stripControlCodes(Skin)); } } -
C’est censé être quoi là ?
private static KeyBinding keyBindTest; { keyBindTest = new KeyBinding("altiscraft.inventaire", 21, "key.categories.inventory"); ClientRegistry.registerKeyBinding(keyBindTest); }Une méthode ? Une variable ?
-
Une méthode normalement.
-
Ce n’est pas une méthode car tu as mis un “;” à la fin donc le code entre crochets est compté comme étant au tout début de ta classe, comme des variables.
Pour le rendu : il est à l’envers par rapport à quoi ?
-
Comment faire alors pour régler et voilà les classes de mon VLampadaire qui s’affiche que dans l’inventaire à l’envers (vertical) :
package fr.altiscraft.altiscraft.common; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import fr.altiscraft.altiscraft.proxy.ClientProxy; public class BlocVLampadaire extends Block { protected BlocVLampadaire() { super(Material.ground); } @Override public boolean hasTileEntity(int metadata) { return true; } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityVLampadaire(); } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } public int getRenderType() { return ClientProxy.tesrRenderId; } public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack) { if(stack.getItemDamage() == 0) { TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityVLampadaire) { int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3; ((TileEntityVLampadaire)tile).setDirection((byte)direction); } } } @Override public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis) { if((axis == ForgeDirection.UP || axis == ForgeDirection.DOWN) && !world.isRemote && world.getBlockMetadata(x, y, z) == 0) { TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityVLampadaire) { TileEntityVLampadaire tileVLampadaire = (TileEntityVLampadaire)tile; byte direction = tileVLampadaire.getDirection(); direction++; if(direction > 3) { direction = 0; } tileVLampadaire.setDirection(direction); return true; } } return false; } public ForgeDirection[] getValidRotations(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z) == 0 ? new ForgeDirection[] {ForgeDirection.UP, ForgeDirection.DOWN} : ForgeDirection.VALID_DIRECTIONS; } public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { this.setBlockBounds(0.40F, 0.0F, 0.40F, 0.60F, 2.5F, 0.60F); } }package fr.altiscraft.altiscraft.common; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; public class TileEntityVLampadaire extends TileEntity { private byte direction; @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); this.direction = compound.getByte("Direction"); } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); compound.setByte("Direction", this.direction); } public byte getDirection() { return direction; } public void setDirection(byte direction) { this.direction = direction; this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } public Packet getDescriptionPacket() { NBTTagCompound nbttagcompound = new NBTTagCompound(); this.writeToNBT(nbttagcompound); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound); } public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); this.worldObj.markBlockRangeForRenderUpdate(this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord); } }package fr.altiscraft.altiscraft.proxy; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import fr.altiscraft.altiscraft.client.ModelBlockVLampadaire; import fr.altiscraft.altiscraft.common.ModAltisCraft; import fr.altiscraft.altiscraft.common.TileEntityVLampadaire; public class TileEntityVLampadaireSpecialRenderer extends TileEntitySpecialRenderer{ public static ModelBlockVLampadaire modelv = new ModelBlockVLampadaire(); public static ResourceLocation texturev = new ResourceLocation(ModAltisCraft.MODID, "textures/models/blocks/ModelBlockVLampadaire.png"); public TileEntityVLampadaireSpecialRenderer() { this.func_147497_a(TileEntityRendererDispatcher.instance); } @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float partialRenderTick) { this.renderTileEntityVLampadaireAt((TileEntityVLampadaire) tile, x, y, z, partialRenderTick); } private void renderTileEntityVLampadaireAt(TileEntityVLampadaire tile, double x, double y, double z, float partialRenderTick) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glRotatef((90F * tile.getDirection()) + 180F, 0.0F, 1.0F, 0.0F); this.bindTexture(texturev); modelv.renderAll(); GL11.glPopMatrix(); } }package fr.altiscraft.altiscraft.proxy; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; import org.lwjgl.opengl.GL11; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import fr.altiscraft.altiscraft.common.ModAltisCraft; public class TESRInventoryRenderer implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { if (block == ModAltisCraft.BlocATM) { GL11.glPushMatrix(); GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager() .bindTexture(TileEntityATMSpecialRenderer.texture); TileEntityATMSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } else if (block == ModAltisCraft.BlocVLampadaire) { GL11.glPushMatrix(); GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager() .bindTexture(TileEntityVLampadaireSpecialRenderer.texturev); TileEntityVLampadaireSpecialRenderer.modelv.renderAll(); GL11.glPopMatrix(); } else if (block == ModAltisCraft.BlocCoco) { GL11.glPushMatrix(); GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager() .bindTexture(TileEntityCocoSpecialRenderer.textures); TileEntityCocoSpecialRenderer.models.renderAll(); GL11.glPopMatrix(); } else if (block == ModAltisCraft.BlocLampadaire) { GL11.glPushMatrix(); GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager() .bindTexture(TileEntityCocoSpecialRenderer.texturesb); TileEntityCocoSpecialRenderer.modelsb.renderAll(); GL11.glPopMatrix(); } } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { return false; } @Override public int getRenderId() { return ClientProxy.tesrRenderId; } @Override public boolean shouldRender3DInInventory(int modelId) { return true; } } -
Retire cette ligne : GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); dans la classe TileEntityVLampadaireSpecialRenderer ligne 35.
-
Au contraire cette ligne met le modèle dans le bon sens. C’est dans le rendu dans l’inventaire qu’il doit ajouter celle ligne.
-
Ah oui, je croyais que c’était dans le monde le problème.
-
C’est bon merci énormément et pour mon problème de touche alors ?
Et mon Menu ^^ et encore merci 
-
à la place de ceci :
private static KeyBinding keyBindTest; { keyBindTest = new KeyBinding("altiscraft.inventaire", 21, "key.categories.inventory"); ClientRegistry.registerKeyBinding(keyBindTest); }Mets private static KeyBinding keyBindTest = new KeyBinding(“altiscraft.inventaire”, 21, “key.categories.inventory”);
et ClientRegistry.registerKeyBinding(keyBindingTest); dans la fonction registerRender. -
et c’est ClientRegistry.registerKeyBinding(keyBindTest); ^^ merci énormément pour tout et le menu alors ?
et je vois qu’il s’affiche maintenant que 2x :S