Créer un item zoom
-
Et bien c’est simple en fait, dans ton tick client handler, tu mets une condition “if(Keyboard.isKeyDown(Keyboard.KEY_Z))”
à la place du VotreClassePrincipale.zoom

-
@‘elias54’:
Et bien c’est simple en fait, dans ton tick client handler, tu mets une condition “if(Keyboard.isKeyDown(Keyboard.KEY_Z))”
à la place du VotreClassePrincipale.zoom

Il me dit : KEY_Z cannot be resolved or is not a field
Et dans la classe de l’objet , je remets if(Keyboard.isKeyDown(Keyboard.KEY_Z)) ?
-
Non, dans le tick handler seulement, et as-tu bien importé la bonne classe ? Car il y a deux class Keyboard

-
J’ai importé : net.java.games.input.Keyboard;
C’était la mauvaise je suppose :set dans la classe de mon Item je mets quoi du coup ?
-
Oui c’est la mauvaise. Envoie tes sources en privé je t’arrange le tout

-
Je viens d’ajouter le bonus au tuto !
Enjoy. -
@‘elias54’:
#6. BONUS(6. BONUS)
Pour le bonus, pas grand chose… Ah si ! Ajouter un overlay pour donner un petit effet à votre zoom !

Overlay ? C’est quoi ça ?

-Ça : http://puu.sh/46id6.pngPour se faire, c’est simple, ajoutez cette ligne tout en haut de votre TickHandler :
public static final ResourceLocation zoomOverlay = new ResourceLocation("votreModID", "textures/blur/votreZoomOverlay.png");Comme vous l’aurez compris il s’agit d’une texture que nous allons imposer à l’écran !

%(#FF0000)[-ATTENTION-
La texture de l’overlay doit être en 256x256 ! (si vous faites un téléscope (par exemple), autant vous donner l’overlay : http://puu.sh/46iD2.png Maintenant vous avez un exemple de ce que je veux dire. En effet, la texture semble écrasé, mais in game elle ne le sera pas, car grâce à la méthode que je vais vous montrer, nous allons “étirer” la texture histoire qu’elle ressemble à quelque chose !
)]Donc dans votre classe, ajoutez cette méthode :
public static void renderTextureOverlay(ResourceLocation 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.func_110434_K().func_110577_a(s); 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); }On a presque fini ! Nous avons préparé ce dont nous avons besoin.

Créez une nouvelle condition en dessous de :
if (type.equals(EnumSet.of(TickType.CLIENT))) { }Elle est exactement la même, juste à remplacer CLIENT par RENDER, donc comme ceci :
if (type.equals(EnumSet.of(TickType.RENDER))) { }Et dans cette condition nous allons ajouter encore une AUTRE condition qui va appeler la méthode que nous avons faite ci dessus !

if(VotreClassePrincipale.zoom && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null) { renderTextureOverlay(zoomOverlay, 1.0F); }C’est tout ?!
-Oui, déjà fini ^^Voilà ce à quoi votre classe TickHandler devrait ressembler :
public class TickClientHandler implements ITickHandler { public static final ResourceLocation zoomOverlay = new ResourceLocation("votreModID", "textures/blur/votreZoomOverlay.png"); //256x256 la texture je vous le rappel ! :D @Override public void tickStart(EnumSet <ticktype>type, Object... tickData) { } @Override public void tickEnd(EnumSet <ticktype>type, Object... tickData) { final Minecraft minecraft = FMLClientHandler.instance().getClient(); final EntityPlayerSP player = minecraft.thePlayer; if (type.equals(EnumSet.of(TickType.CLIENT))) { if(VotreClassePrincipale.zoom) { if(minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null) { zoom(6F); } }else { zoom(1.0F); } } if (type.equals(EnumSet.of(TickType.RENDER))) { if(VotreClassePrincipale.zoom && minecraft.gameSettings.thirdPersonView == 0 && minecraft.currentScreen == null) { renderTextureOverlay(zoomOverlay, 1.0F); } } } public static void renderTextureOverlay(ResourceLocation 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.func_110434_K().func_110577_a(s); 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() { // TODO Auto-generated method stub return EnumSet.of(TickType.RENDER, TickType.CLIENT); } public static void zoom(float value) { ObfuscationReflectionHelper.setPrivateValue(EntityRenderer.class, FMLClientHandler.instance().getClient().entityRenderer, value, "cameraZoom"); } @Override public String getLabel() { return "TickClientHandler"; } } ```</ticktype></ticktype></ticktype>Le public ```java
static final ResourceLocation zoomOverlay = new ResourceLocation(“votreModID”, “textures/blur/votreZoomOverlay.png”);et le ```java minecraft.func_110434_K().func_110577_a(s); ``` et```java public static void renderTextureOverlay(ResourceLocation s, float f) ``` sont soulignés en rouge , je suppose qu'ils n'existent pas en 1.5.2 , donc par quoi les remplacer ? -
Oui les resourceLocation c’est en 1.6, en 1.5 c’est entre chose, la même chose que pour les TileEntitySpecialRender il me semble.
-
en 1.5.2, vire la ligne public static final ResourceLocation et remplace le ResourceLocation du void par String.
Ensuite, tu auras une ligne en erreur dans la méthode, remplace la par minecraft.bindTexture(“laTextureEtSonChemin.png”)
-
@‘robin4002’:
Oui les resourceLocation c’est en 1.6, en 1.5 c’est **autre **chose, la même chose que pour les TileEntitySpecialRender il me semble.
Et je dois faire quoi du coup ?
Tu sais , je n’ai pas ton niveau …@‘elias54’:
en 1.5.2, vire la ligne public static final ResourceLocation et remplace le ResourceLocation du void par String.
Ensuite, tu auras une ligne en erreur dans la méthode, remplace la par minecraft.bindTexture(“laTextureEtSonChemin.png”)
J’ai toujours une erreur a bindTexture
-
mh…
renderengine ou quelque chose comme ça… je sais que c’est minecraft.QUELQUECHOSE.bindTexture… -
Salut d’abord très bien comme tuto mais j’ai un problème , j’ai une erreur à cette ligne
minecraft.getTextureManager().bindTexture(s);
Tu aurait une idée si je la suprime sa marche mais j’ai l’image ou il y a toute leS image genre la. Barre de vie , les cœur pourrait tu m’aider
-
minecraft.func_110434_K().func_110577_a(s); pour les anciennes version de forge.
Les tutoriels ont été mis à jour pour les nouvelles mapping de mcp : https://www.minecraftforgefrance.fr/topic/166/mise-à-jour-de-tous-les-tutoriels-vers-les-nouvelles-mappings
Il est mieux d’utiliser une version de forge supérieur à 849. -
@‘robin4002’:
minecraft.func_110434_K().func_110577_a(s); pour les anciennes version de forge.
Les tutoriels ont été mis à jour pour les nouvelles mapping de mcp : http://www.minecraftforgefrance.fr/showthread.php?tid=188
Il est mieux d’utiliser une version de forge supérieur à 849.j’ai remit a jour le forge mais quand je met la ligne:
mc.getTextureManager().bindTexture(resourcelocation)j’ai toujours une erreur a “mc” et a “resourcelocation”
-
Fais un screen de ce que te propose Eclipse, car là on peut pas savoir d’où viennent les erreurs.
-
voila désoler du temps je ne pouvait pas utiliser mon pc voici les deux erreur et les proposition de éclipse
https://dl.dropboxusercontent.com/u/81327380/Sans titre2.png
https://dl.dropboxusercontent.com/u/81327380/Sans titre.png
c’est du dropbox je ne sais pas ou mettre mes image a part sur dropbox
-
mc tu remplace par minecraft, et pour le resourcelocation tu mets s.
-
Merci robin sa marche sinon autre question il n’y a pas moyen d’avoir une animation de zone au lieu que se soit direct un peut comme le sprint?
-
Superbe tuto, aucune erreur et c’est tellement bien, je vais pouvoir faire mes propres armes a feu avec un VRAI viseur

Bravo
-
J’ai essayer l’Overlay pour que quand la vie du joueur descend en bas du maxhealt un effet blur comme la pumpkin s’affiche a l’écran. Mais je n’ai pas réussi, sa n’affiche rien a l’écran. Si quelqu’un peut m’aider, merci

Commande utiliser pour la vie:
if (player.getHealth() < player.getMaxHealth()) { player.setFire(1); } }(j’ai mis qu’il prend feu car je ne sais pas comment faire l’orverlay)
