Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'Astuce'.

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Communauté
    • Avant Tout
    • Annonces
    • Présentation des Membres
    • Vos Projets
    • Recrutements
  • Tutoriels
    • La base
    • Vanilla
    • Forge
    • Bukkit
    • Astuces
    • Autre
    • En attente de validation
    • En cours de rédaction
  • Créations
    • Minecraft
    • Jeux & Logiciels
    • Web
    • Suggestions
  • Le Coin Graphique
    • Galeries Personnelles
    • Galeries Publiques
    • Demandes Graphiques
  • Taverne
    • Général
    • Jeux Vidéos
    • Programmation

1 résultat trouvé

  1. Changer le curseur de la souris Cette uvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé . Tout partage implique que vous citiez l'auteur original. -[iNTRODUCTION]- Nous allons voir comment changer le curseur de la souris -[PRES-REQUIS]- 1]La base d'un mod Forge ou un MCP Vanilla -[sOMMAIRE]- 1]La fonction 2] Appeler la fonction 3]Pourquoi une rotation ? 4] La classe complète et le rendu final 1]La fonction 1.1] Creation La première chose à faire est d'ajouter une fonction qui s'occupera de contenir notre code private void setCursor(String modid, String path, int width, int height, double rotation) { } Hormis le premier, tous les paramètres concerne l'image à appliquer, les nom sembles explicites, je ne pense pas qu'il soit utile de détailler. 1.2]Remplissage Commencez par instancier un transform que vous utiliserez plus tard pour la rotation de l'image. AffineTransform transform = new AffineTransform(); Comme à chaque fois qu'on accède à un fichier ou qu'on affiche quelque chose, il y a des chances que ça plante, ajoutez donc un bloc try-catch pour éviter que le jeu crash si cela arrive. try{ } catch (LWJGLException e) { // Catch les exceptions liées aux changements appliqués à l'image e.printStackTrace(); } catch (IOException e) { // Catch les exceptions liées à la lecture du fichier e.printStackTrace(); } A l'intérieur de celui-ci, récupérez l'image est stockez la dans une variable BufferedImage cursorTexture = ImageIO.read(getClass().getResource("/assets/" + modid + path)); Ajoutez également un traitement pour changer les sens de l'image et préparer l'affichage de la texture //Change la valeur de rotation du transform que vous appliquerez plus tard, le paramètre 'rotation' est un radian. transform.rotate(rotation, cursorTexture.getWidth()/2, cursorTexture.getHeight()/2); AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR); cursorTexture = op.filter(cursorTexture, null); //Creation d'un tableau d'int de la taille de la texture, il est utilisé pour créer un buffer. int[] rgbs = new int[cursorTexture.getWidth() * cursorTexture.getHeight()]; //Creation d'un buffer, il sera utilisé plus tard lors de la création du curseur. IntBuffer buffer = IntBuffer.wrap(cursorTexture.getRGB(0, 0, cursorTexture.getWidth(), cursorTexture.getHeight(), rgbs, 0, cursorTexture.getHeight())); //Permet la lecture et l'application du curseur. buffer.rewind(); Finissez par créer le curseur et changer celui par défaut //Enregistre les informations créées précédemment dans une variable de type 'Cursor' Cursor newCursor = new Cursor(cursorWidth, cursorHeight, xHotspot, yHotspot, 1, buffer, null); //32x32 semble correct //xHotspot doit être compris entre 0 (inclus) et la largeur du curseur (exclue), par défaut : 1 //yHotspot doit être compris entre 0 (inclus) et la hauteur du curseur (exclue), par défaut : cursorTexture.getHeight() - 1 //Change le curseur par défaut. Mouse.setNativeCursor(newCursor); 2]Appeler la fonction Dans l'exemple qui va suivre j'ai fait en sorte d'afficher l'épée en diamants comme nouveau curseur (en loccurrence la texture est en 16x) Vous pouvez appeler la fonction dans la fonction init() du ClientProxy si vous utilisez Forge ou après l'init du Display de la fonction startGame dans la classe principale de Minecraft. this.setCursor("minecraft", "/textures/items/diamond_sword.png", 16, 16, 3.1415926536); 3] Mais pourquoi une rotation ? 1 est la texture de base de l'itemmais le curseur devrait être dans le sens de 2, or, si on applique l'image sans modification, le curseur ressemblera à 3 Il faut donc ajouter un angle de180° converti enradian, soit3.1415926536, je vous conseil le siterapidtables.com(en anglais)pour la convertion. Libre à vous de jouer avec les point de clic X/Y (x et yHotspot) ainsi que la rotation de la texture pour avoir un curseur dans le sens que vous voulez ! 4]La classe complète et le rendu en jeu 4.1] La classe import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.IOException; import java.nio.IntBuffer; import javax.imageio.ImageIO; import org.lwjgl.LWJGLException; import org.lwjgl.input.Cursor; import org.lwjgl.input.Mouse; import fr.zeamateis.tuto_ic.common.proxy.CommonProxy; public class ClientProxy extends CommonProxy { @Override public void init() { registerRender(); } private void registerRender() { this.setCursor("minecraft", "/textures/items/diamond_sword.png", 16, 16, 3.1415926536); } private void setCursor(String modid, String path, int width, int height, double rotation) { AffineTransform transform = new AffineTransform(); try { BufferedImage cursorTexture = ImageIO.read(getClass().getResource("/assets/" + modid + path)); transform.rotate(rotation, cursorTexture.getWidth()/2, cursorTexture.getHeight()/2); AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR); cursorTexture = op.filter(cursorTexture, null); int[] rgbs = new int[cursorTexture.getWidth() * cursorTexture.getHeight()]; IntBuffer buffer = IntBuffer.wrap(cursorTexture.getRGB(0, 0, cursorTexture.getWidth(), cursorTexture.getHeight(), rgbs, 0, cursorTexture.getHeight())); buffer.rewind(); Cursor newCursor = new Cursor(width, height, 1, cursorTexture.getHeight() - 1, 1, buffer, null); Mouse.setNativeCursor(newCursor); } catch (LWJGLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 4.2]Le rendu Tutoriel inspiré de MinecraftForgeFrance et réédité par Dren