Questions : CustomMenu + Bug touche
-
Pour le GUI, çà parait logique que si tu n’indiques nul part qu’il faut afficher ce GUI, minecraft ne risque pas de le deviner. Je te conseille l’événement InitGuiEvent.
Pour la touche : je comprends pas trop de que tu veux faire, mais sans code source ni screen, on peut rien faire.
PS : faut vraiment que je fasses un tuto pour modifier le GuiMainMenu car c’est un gros bordel.
-
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.