Jump to content

Search the Community

Showing results for tags 'terminé'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Communauté
    • Before Anything
    • Announcements
    • Members Presentations
    • Your Projects
    • Recruitment
  • Tutoriels
    • La base
    • Vanilla
    • Forge
    • Bukkit
    • Astuces
    • Autre
    • En attente de validation
    • En cours de rédaction
  • Créations
    • Minecraft
    • Games & Software
    • Web
    • Suggestions
  • The Graphic Corner
    • Personal Galleries
    • Public Galleries
    • On-Demand Creations
  • General Talk
    • General
    • Video Games
    • Development

Found 2 results

  1. Afficher le claim d'une faction en jeu Bonjour la Communauté, Aujourd’hui, je vais essayer de faire un tutoriel (mon premier), qui consistera à afficher le claim d'une faction en Jeu ! (excusez la rédaction si elle se présente mauvaise mais c'est mon premier tutoriel, j'ai jamais rédigé avant ça xD) A) Pré-requis Tout d'abord, je vous recommande d'aller faire un tour sur le tutoriel de Wytrem => [1.7.x] Afficher un message central Car j'utilise la manière dont il affiche le message au milieu de l'écran pour ce tutoriel, donc, il est préférable de savoir comment ça marche :). 1) Classes Requises & Modifications Pour commencer, nous allons nous rendre dans la classe NetHandlerPlayClient (pkg: net.minecraft.client.network) Nous allons rechercher la fonction "handleChat" qui ressemble à ceci public void handleChat(S02PacketChat p_147251_1_) { this.gameController.ingameGUI.getChatGUI().func_146227_a(p_147251_1_.func_148915_c()); } On va changer la fonction en ceci public void handleChat(S02PacketChat p_147251_1_) { FactionEngine.onChatReceived(p_147251_1_); } Nous allons juste remplacer ce qu'il y a a à l'interieur par FactionEngine.onChatReceived(p_147251_1_); Vous aurez une erreur sur le FactionEngine et c'est normal étant donné que la classe n'est pas encore créée. Ensuite on va aller dans la classe Minecraft (pkg: net.minecraft.client) On va rechercher this.ingameGUI = new GuiIngame(this); et on va le remplacer par this.ingameGUI = new FactionIngame(this); La, nous changeons la classe appelée pour le GuiIngame par la notre (FactionIngame) qui extends de GuiIngame.. Et oui c'est normal si il y a une erreur etant donné que la classe FactionIngame, elle aussi n'est pas encoré créée. Une fois cela fait, nous allons ajouter nos classes manquantes FactionEngine: package fr.trxyy.factions; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.ISound; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.network.play.server.S02PacketChat; import net.minecraft.util.IChatComponent; import net.minecraft.util.ResourceLocation; public class FactionEngine { private static Minecraft mc; public static String factionName = null; public static boolean displaying = true; public static String warzoneString = "§r§4Zone de Combat !"; // defaut: §r§4WarZone public static String safezoneString = "§r§6Zone Tranquille"; // defaut: §r§6SafeZone public static String wildernessString = "§r§2Nature Sauvage"; // defaut: §r§2Wilderness public FactionEngine() {} public static void onChatReceived(S02PacketChat par1PacketChat) { mc = Minecraft.getMinecraft(); IChatComponent chatComponent = par1PacketChat.func_148915_c(); String unformattedText = chatComponent.getUnformattedText(); String formattedText = chatComponent.getFormattedText(); if (displaying) { if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { FactionIngame.showCenterMessage(warzoneString); setFactionName(warzoneString); // playSound(new ResourceLocation("orb"), 2.0F); // Pour jouer un audio quand tu rnetres dans la zone } else if (formattedText.contains("§r§e ~ §r§6SafeZone - Free from PVP and monsters§r")) { FactionIngame.showCenterMessage(safezoneString); setFactionName(safezoneString); } else if (formattedText.contains("§r§e ~ §r§2Wilderness§r")) { FactionIngame.showCenterMessage(wildernessString); setFactionName(wildernessString); } else if (formattedText.contains("§r§e ~ §r§")) { FactionIngame.showCenterMessage("" + formattedText.replace("§r§e ~ §r§", "")); setFactionName("" + formattedText.replace("§r§e ~ §r§", "")); } else { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); } } else { if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName(warzoneString); } else if (formattedText.contains("§r§e ~ §r§6SafeZone - Free from PVP and monsters§r")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName(safezoneString); } else if (formattedText.contains("§r§e ~ §r§2Wilderness§r")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName(wildernessString); } else if (formattedText.contains("§r§e ~ §r§")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName("" + formattedText.replace("§r§e ~ §r§", "")); } else { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); // setFactionName(null); } } } private static void setFactionName(String string) { factionName = string; } public static PositionedSoundRecord playSound(ResourceLocation p_147674_0_, float p_147674_1_) { return new PositionedSoundRecord(p_147674_0_, 0.25F, p_147674_1_, false, 0, ISound.AttenuationType.NONE, 0.0F, 0.0F, 0.0F); } public static String getFaction() { return factionName; } } FactionIngame: package fr.trxyy.factions; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiIngame; import net.minecraft.client.gui.ScaledResolution; public class FactionIngame extends GuiIngame { private static String toDisplay = null; private static int toDisplayTimer = 0; private static boolean displayStaticFaction = true; public FactionIngame(Minecraft mc) { super(mc); } public void renderGameOverlay(float par1Float, boolean par2Bool, int par3Int, int par4Int) { ScaledResolution scaledRes = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); int width = scaledRes.getScaledWidth(); int height = scaledRes.getScaledHeight(); FontRenderer fr = this.mc.fontRenderer; this.mc.entityRenderer.setupOverlayRendering(); super.renderGameOverlay(par1Float, par2Bool, par3Int, par4Int); if (FactionEngine.getFaction() != null && displayStaticFaction && !this.mc.isIntegratedServerRunning()) { fr.drawStringWithShadow("Claim: " + FactionEngine.getFaction(), 2, 2, 16777215); } if (this.toDisplay != null) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int alpha = this.toDisplayTimer < 10 ? ((int) (this.toDisplayTimer * 25)) : 255; int color = 0xffffff | ((alpha & 255) << 24); this.mc.fontRenderer.drawString(this.toDisplay, (width - this.mc.fontRenderer.getStringWidth(this.toDisplay)) / 2, height / 2 - 50, color); } } public void updateTick() { super.updateTick(); if (this.toDisplayTimer > 0) { this.toDisplayTimer--; if (this.toDisplayTimer == 0) { this.toDisplay = null; } } } public static void showCenterMessage(String formattedText) { toDisplay = formattedText; toDisplayTimer = 3 * 20; } } Il vous reste qu'a import dans Minecraft.java & NetHandlerPlayClient vos classes. Pour ce qui est du code du FactionEngine: String factionName => Le nom de la faction de base (par defaut: null) boolean displaying => est ce qu'on affiche le texte au milieu de l'ecran ou pas ? (par defaut: true) String warzoneString => Le message affiché quand on est dans la warzone String safezoneString => Le message affiché quand on est dans la safezone String wildernessString => Le message affiché quand on est dans la nature dans la fonction onChatReceived, On dis que si on affiche le message au centre, on check le message entrant: if (displaying) { // Si on affiche le message au centre if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { // Et si le message contiens... FactionIngame.showCenterMessage(warzoneString); // On affiche le message au milieu de l'ecran setFactionName(warzoneString);// on défini le nom de la faction. // playSound(new ResourceLocation("orb"), 2.0F); // Pour jouer un audio quand tu rnetres dans la zone } (oui il y a une fonction playSound mais je l'ai desactiver car faut mettre de la musique c'est mieux :D) Si le texte contiens "§r§e ~ §r§4WarZone - Not the safest place to be§r" Alors on affiche le message central qu'on a choisis dans la variable "warzoneString" puis on défini la variable "factionName" en "warzoneString", pour la warzone, ça sera évidemment safezoneString pour la safezone etc... Et on dis que si on n'affiche pas le message au centre, on check le message entrant: else { if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { // Si le message contiens... mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); // on affiche le message dans le tchat basique // On affiche pas le message au centre de l'écran setFactionName(warzoneString);// on défini le nom de la faction. } Puis c'est pareil qu'au dessus, sauf qu'on affiche pas le message au centre de l'écran: Si le texte contiens "§r§e ~ §r§4WarZone - Not the safest place to be§r" puis on défini la variable "factionName" en "warzoneString", pour la warzone, ça sera évidemment safezoneString pour la safezone etc... Pour ce qui est du code de la classe de FactionIngame: La classe est extends de GuiIngame (logique car on a remplacé dans Minecraft.java, et donc il nous faut une classe qui permettra de rendre en jeu, GuiIngame par exemple) String toDisplay => message à afficher int toDisplayTimer => temps a afficher (laisser sur 0) boolean displayStaticFaction => afficher la faction toujours sur l'ecran On ajoute la fonction "renderGameOverlay" de la classe GuiIngame, et on affiche le tout a l'interieur. public void renderGameOverlay(float par1Float, boolean par2Bool, int par3Int, int par4Int) {} On défini ce dont on a besoin: ScaledResolution scaledRes = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); int width = scaledRes.getScaledWidth(); // taille de la fenetre horizontal int height = scaledRes.getScaledHeight();// taille de la fenetre vertical FontRenderer fr = this.mc.fontRenderer; // pas besoin d'expliquer ça quand meme :O Ensuite, on dis que si la faction n'est pas égal à "null" et que on affiche le texte toujours sur l’écran, et que on est sur on serveur et non pas en solo, alors on affiche un texte toujours actif pour afficher la faction. if (FactionEngine.getFaction() != null && displayStaticFaction && !this.mc.isIntegratedServerRunning()) { fr.drawStringWithShadow("Claim: " + FactionEngine.getFaction(), 2, 2, 16777215); } La c'est presque pareil, ce code est celui du tuto de Wytrem (voir ici) si le message a affiché n'est pas égal à "null", on affiche. if (this.toDisplay != null) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int alpha = this.toDisplayTimer < 10 ? ((int) (this.toDisplayTimer * 25)) : 255; int color = 0xffffff | ((alpha & 255) << 24); this.mc.fontRenderer.drawString(this.toDisplay, (width - this.mc.fontRenderer.getStringWidth(this.toDisplay)) / 2, height / 2 - 50, color); } Et enfin les deux dernières fonctions du tuto "Afficher un Message Central": public void updateTick() { super.updateTick(); if (this.toDisplayTimer > 0) // tant que le timer est plus grand que 0 { this.toDisplayTimer--; // on le reduit de 1 if (this.toDisplayTimer == 0) // si le timer est égal a 0 { this.toDisplay = null; // on mets le texte à afficher sur null pour arreter l'affichage. } } } public static void showCenterMessage(String formattedText) { toDisplay = formattedText; toDisplayTimer = 3 * 20; // (20 ticks = 1 sec) (3 * 20 = 3 secondes.) } updateTick: pour mettre a jour tout les 20 ticks (20 ticks = 1 seconde) Voir le tuto de Wytrem pour comprendre au maximum ces fonctions la. Rendu Final: Excusez moi une fois de plus pour la rédaction ou bien si il y a des fautes ou c'est c'est mal expliqué. Cordialement, Trxyy. (merci de me citer si vous utilisez mon code, ca serait aimable de votre part.) Bon Jeux !
  2. Générer des nouveaux minerais Introduction Bonjour à tous ! Aujourd'hui il est l'heure d'écrire mon premier tutoriel sur Ironcraft :) Donc nous allons voir ensemble comment ajouter votre minerais créé avec MCP en 1.7.10 à la génération de votre monde, il apparaitra donc comme le diamant, le fer etc ! Prérequis Savoir utiliser MCP, et avoir créé un minerais. C'est partit ! 1) Ouvrez le package net.minecraft.world.biome, comme montré ci-dessous : Ensuite Rendez-vous dans la classe BiomeDecorator. 2) Tout en haut de la classe BiomeDecorator, après le public class BiomeDecorator {, rajoutez ceci : protected WorldGenerator tutoGen; En remplacant tuto par le nom de votre minerais (ou ce que vous voulez). Ceci permet d'initialiser tutoGen en tant que WorldGenerator. Ce qui vous donne : 3) Descendez un peu dans la classe jusqu'à this.generateLakes = true;, et rajoutez en dessous : this.tutoGen = new WorldGenMinable(Blocks.tuto_ore, 6); N'oubliez pas de remplacer tutoGen par le nom que vous lui avez donné plus haut. Ceci permet dire que l'on veut que notre minerais tuto_ore sois généré dans la map. Le 6 signifie le nombre maximal de minerais généré ensemble, la taille du filon. Vous pouvez changer cette valeur comme vous le voulez. Ce qui vous donne : (Chez moi, tuto_ore est en blanc car je n'ai pas créé ce block, il faut donc que vous l'alliez créé de votre coté) 3) Descendez tout en bas de la classe jusqu'à la fonction generateOres(), et rajoutez ceci : this.gendStandardOre1(10, this.tutoGen, 0 ,16); Ici, le premier nombre à remplir (dans mon cas 10) est la rareté du minerais, mon minerais va donc être moins présent que le fer ou le charbon (qui sont à 20) mais va être plus présent que le diamant ou la redstone (qui sont respectivement à 1 et à 8). Le this.tutoGen correspond au protected WorldGenerator tutoGen; que nous avons mis au début, et les deux derniers chiffres signifient entre quelles couches notre minerais peut apparaître, donc ici entre les couches 0 à 16. Ce qui vous donne : Et voilà, c'est terminé ! Maintenant si je créé un nouveau monde et que je cherche un peu, je vais trouver mon minerais ! J'espère que ce tutoriel vous aura aidé !
×