Résolu Bug dans mes jumelles
-
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 :(.
-
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 zoomComme 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>
-
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