• Bonjour a tous ! J’ai crée des jumelles suite au tutoriel , et je les ai un peu améliorer pour qu’il y ait 3 niveaux de zoom.

    #Le code :(Le code 🙂

    Le TickHandlerSVD ( a l’origine c’était pour un sniper )

    
    package mods.nono.MGSmod.common;
    
    import java.util.EnumSet;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.entity.EntityPlayerSP;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.EntityRenderer;
    import net.minecraft.client.renderer.Tessellator;
    
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.client.FMLClientHandler;
    import cpw.mods.fml.common.ITickHandler;
    import cpw.mods.fml.common.ObfuscationReflectionHelper;
    import cpw.mods.fml.common.TickType;
    
    public class TickHandlerSVD implements ITickHandler {
    
    public static int NivoZoom;
    
    // public static final ResourceLocation zoomOverlay = new ResourceLocation("votreModID", "textures/blur/votreZoomOverlay.png");
    
    @Override
    public void tickStart(EnumSet <ticktype>type, Object… tickData)
    {
    }
    
    @Override
    public void tickEnd(EnumSet <ticktype>type, Object... tickData)
    {
    if (NivoZoom >= 4)
    {
    NivoZoom = 0;
    }
    
    final Minecraft minecraft = FMLClientHandler.instance().getClient();
    final EntityPlayerSP player = minecraft.thePlayer;
    if (type.equals(EnumSet.of(TickType.CLIENT)))
    {
    
    if (NivoZoom == 1)
    {
    if(Main.zoom)
    {
    if(minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    zoom(2F);
    }
    // else
    // {
    // zoom(1.0F);
    // }
    }
    }
    
    if (NivoZoom == 2)
    {
    if(Main.zoom)
    {
    if(minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    zoom(4F);
    }
    // else
    // {
    // zoom(1.0F);
    // }
    }
    
    }
    if (NivoZoom == 3)
    {
    if(Main.zoom)
    {
    if(minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    zoom(6F);
    }
    // else
    // {
    // zoom(1.0F);
    // }
    }
    
    }
    if (NivoZoom == 0)
    {
    zoom(1.0F);
    }
    
    }
    
    if (type.equals(EnumSet.of(TickType.RENDER)))
    {
    if(Main.zoom && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    renderTextureOverlay("/mods/nono/MGSmod/textures/items/Lunettes.png", 1.0F);
    }
    }
    }
    
    public static void renderTextureOverlay(String s, float f)
    {
    Minecraft minecraft = FMLClientHandler.instance().getClient();
    ScaledResolution scaledresolution = new ScaledResolution(minecraft.gameSettings, minecraft.displayWidth, minecraft.displayHeight);
    int i = scaledresolution.getScaledWidth();
    int j = scaledresolution.getScaledHeight();
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glDepthMask(false);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glColor4f(1.0F, 1.0F, 1.0F, f);
    GL11.glDisable(GL11.GL_ALPHA_TEST);
    // minecraft..bindTexture("laTextureEtSonChemin.png");
    Minecraft.getMinecraft().renderEngine.bindTexture("/mods/nono/MGSmod/textures/items/Lunettes.png");
    Tessellator tessellator = Tessellator.instance;
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(0.0D, j, -90D, 0.0D, 1.0D);
    tessellator.addVertexWithUV(i, j, -90D, 1.0D, 1.0D);
    tessellator.addVertexWithUV(i, 0.0D, -90D, 1.0D, 0.0D);
    tessellator.addVertexWithUV(0.0D, 0.0D, -90D, 0.0D, 0.0D);
    tessellator.draw();
    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL11.GL_ALPHA_TEST);
    GL11.glColor4f(1.0F, 1.0F, 1.0F, f);
    }
    
    @Override
    public EnumSet <ticktype>ticks()
    {
    return EnumSet.of(TickType.RENDER, TickType.CLIENT);
    }
    
    @Override
    public String getLabel()
    {
    return "TickHandlerSVD";
    }
    
    public static void zoom(float value)
    {
    ObfuscationReflectionHelper.setPrivateValue(EntityRenderer.class, FMLClientHandler.instance().getClient().entityRenderer, value, "cameraZoom");
    }
    
    }
    
    

    Le code de mon objet :

    
    package mods.nono.MGSmod.items;
    
    import mods.nono.MGSmod.common.Main;
    import mods.nono.MGSmod.common.TickHandlerSVD;
    import net.minecraft.client.renderer.texture.IconRegister;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class I_Binocular extends Item
    {
    
    public I_Binocular(int par1)
    {
    super(par1);
    this.maxStackSize = 1;
    this.setCreativeTab(Main.MGSTAB);
    }
    
    @Override
    public void registerIcons(IconRegister iconRegister)
    {
    itemIcon = iconRegister.registerIcon("nono/MGSmod:jumelles");
    }
    
    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
    {
    if(!world.isRemote)
    {
    Main.zoom = !Main.zoom;
    TickHandlerSVD.NivoZoom += 1;
    }
    return stack;
    
    }
    
    }
    

    #Les bugs(Les bugs)

    Il devrait y avoir , en tout 4 état de zoom : De base , 2.0F , 4.0F , 6.0F. Mais il n’y en a que 3 ,ou est passé le dernier ?
    Normalement , je devrais ajouter un niveau de zoom a chaque clique droit , mais le GUI s’enlève a chaque clique droit , puid je dois recliquer pour ravoir le GUI …

    Merci d’avance de vos réponses</ticktype></ticktype></ticktype>


  • Personne ne peut m’aider ?


  • Dsl mais je ne suis pas du tout calé dessus, je peu pas t’aidai :(.

  • Administrateurs Rédacteurs Moddeurs confirmés

    Main.zoom = !Main.zoom;
    

    C’est ça le problème.
    Quand tu clic droit ça passe le zoom en true, puis en false, puis en true, puis à nouveau false.
    Donc :
    De base => false pas de zoom , 2.0F => true ça zoom , 4.0F => false pas de zoom , 6.0F => true ça zoom

    Comme tu passe par un système de niveau de zoom, le mieux est de viré cette boolean (y compris dans le tick handler)

    Même chose pour ici :

    if(Main.zoom && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    renderTextureOverlay("/mods/nono/MGSmod/textures/items/Lunettes.png", 1.0F);
    }
    

    Remplace par :

    if(this.NivoZoom > 0 && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    renderTextureOverlay("/mods/nono/MGSmod/textures/items/Lunettes.png", 1.0F);
    }
    

  • Merci , j’ai n’ai plus de problème au niveau de l’affichage , par contre , le deuxième niveau de zoom ne fonctionne toujours pas …

    Le code actuel :

    
    package mods.nono.MGSmod.common;
    
    import java.util.EnumSet;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.entity.EntityPlayerSP;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.EntityRenderer;
    import net.minecraft.client.renderer.Tessellator;
    
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.client.FMLClientHandler;
    import cpw.mods.fml.common.ITickHandler;
    import cpw.mods.fml.common.ObfuscationReflectionHelper;
    import cpw.mods.fml.common.TickType;
    
    public class TickHandlerSVD implements ITickHandler {
    
    public static int NivoZoom;
    
    // public static final ResourceLocation zoomOverlay = new ResourceLocation("votreModID", "textures/blur/votreZoomOverlay.png");
    
    @Override
    public void tickStart(EnumSet <ticktype>type, Object... tickData)
    {
    }
    
    @Override
    public void tickEnd(EnumSet <ticktype>type, Object... tickData)
    {
    if (NivoZoom >= 4)
    {
    NivoZoom = 0;
    }
    
    final Minecraft minecraft = FMLClientHandler.instance().getClient();
    final EntityPlayerSP player = minecraft.thePlayer;
    if (type.equals(EnumSet.of(TickType.CLIENT)))
    {
    
    if (NivoZoom == 1)
    {
    if(Main.zoom)
    {
    if(this.NivoZoom > 0 && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    zoom(3F);
    }
    // else
    // {
    // zoom(1.0F);
    // }
    }
    }
    
    if (NivoZoom == 2)
    {
    if(Main.zoom)
    {
    if(this.NivoZoom > 0 && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    //if(minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    zoom(6F);
    }
    // else
    // {
    // zoom(1.0F);
    // }
    }
    
    }
    if (NivoZoom == 3)
    {
    if(Main.zoom)
    {
    if(this.NivoZoom > 0 && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    zoom(8F);
    }
    // else
    // {
    // zoom(1.0F);
    // }
    }
    
    }
    if (NivoZoom == 0)
    {
    zoom(1.0F);
    }
    
    }
    
    if (type.equals(EnumSet.of(TickType.RENDER)))
    {
    if(this.NivoZoom > 0 && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null)
    {
    renderTextureOverlay("/mods/nono/MGSmod/textures/items/Lunettes.png", 1.0F);
    }
    }
    }
    
    public static void renderTextureOverlay(String s, float f)
    {
    Minecraft minecraft = FMLClientHandler.instance().getClient();
    ScaledResolution scaledresolution = new ScaledResolution(minecraft.gameSettings, minecraft.displayWidth, minecraft.displayHeight);
    int i = scaledresolution.getScaledWidth();
    int j = scaledresolution.getScaledHeight();
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glDepthMask(false);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glColor4f(1.0F, 1.0F, 1.0F, f);
    GL11.glDisable(GL11.GL_ALPHA_TEST);
    // minecraft..bindTexture("laTextureEtSonChemin.png");
    Minecraft.getMinecraft().renderEngine.bindTexture("/mods/nono/MGSmod/textures/items/Lunettes.png");
    Tessellator tessellator = Tessellator.instance;
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(0.0D, j, -90D, 0.0D, 1.0D);
    tessellator.addVertexWithUV(i, j, -90D, 1.0D, 1.0D);
    tessellator.addVertexWithUV(i, 0.0D, -90D, 1.0D, 0.0D);
    tessellator.addVertexWithUV(0.0D, 0.0D, -90D, 0.0D, 0.0D);
    tessellator.draw();
    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL11.GL_ALPHA_TEST);
    GL11.glColor4f(1.0F, 1.0F, 1.0F, f);
    }
    
    @Override
    public EnumSet <ticktype>ticks()
    {
    return EnumSet.of(TickType.RENDER, TickType.CLIENT);
    }
    
    @Override
    public String getLabel()
    {
    return "TickHandlerSVD";
    }
    
    public static void zoom(float value)
    {
    ObfuscationReflectionHelper.setPrivateValue(EntityRenderer.class, FMLClientHandler.instance().getClient().entityRenderer, value, "cameraZoom");
    }
    
    }
    
    ```</ticktype></ticktype></ticktype>
  • Administrateurs Rédacteurs Moddeurs confirmés

    Supprime Main.zoom et tout les if qui fond avec, c’est ce que je sous entendais ici :

    @‘robin4002’:

    Main.zoom = !Main.zoom;
    

    C’est ça le problème.


  • @‘robin4002’:

    Supprime Main.zoom et tout les if qui fond avec, c’est ce que je sous entendais ici :

    @‘robin4002’:

    Main.zoom = !Main.zoom;
    

    C’est ça le problème.

    Merci , ça marche maintenant 🙂