Aller au contenu

Rechercher dans la communauté

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

  • 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

94 résultats trouvés

  1. Un projet à venir

    Bonjour, aujourd'hui je ne vais pas vraiment présenter un projet mais plutot introduire. J'ai hésité avant d'en parler, mais je pense que je peux. Je vois déjà des gens venir : "Encore un serveur paytowin qui va pas durer et qui est comme les autres". NON ! Je pense a un projet comme ça depuis un moment et je suis pour l'instant qu'au tout début et en face d'aprentissage, il sera peut-être fini dans 2 ans, ou mais je ne lâche rien. Déjà le but de mon projet est qu'il soit vraiment fait maison à fond. Il va d'abord commencé sous un launcher moddée, avec un hub. Je pense qu'ensuite il adoptera de nouveau jeu inédit ! Et vraiment ce que je rêve le plus, quand mon projet aura commencé à monter un peu, ou bien quand j'aurais fini et je serais maitriser parfaitement les langages nécessaires, j'apprendrais le C++ pour pouvoir convertir mon serveur en jeu 3D. Réaliste. J'essayerais d'en apprendre sur le ragdoll que j'ai entendu parler sur un sujet IC ( malgré que j'y n'y suis pas ). Bon y a quand même beaucoup de blabla. Actuellement je maitrise pas mal le HTML/CSS, et je suis entrain de réaliser la maquette web que j'intégrerai par la suite. ( Toutes les pages ). Puis j'apprendrais un langage back-end, et plus le java ( car j'ai déjà quelques bases, mais je pense pas que sa soit suffisant ) pour pouvoir ensuite l'utiliser pour mon serveur. Je développerais vraiment pleins de choses inédites, et je m'investirais vraiment ! Je suis comme je vous l'ai dit entrain de réaliser les maquettes web, j'aimerais vous faire part de quelque screen, et j'ai aussi déjà le nom du serveur qui sera surement à son début "Ravenia" voir "Ravenia Network" Un projet inédit ! Bon je vais vous laisser sur les screens ( ce n'est que le début ). Je sais que sa a l'air d'un serveur basique mais je vous conjure que il sera vraiment différent des autres ! Et je pense que sa prendra du temps de travail ! Le logo represente le nom du serveur avec des ailes qui representent des anges car la maquette du serveur est l'ange, c'est pour sa qu'on a appeler sa ravenia ( ravenia = R Haven ia ) The Haven. Je suis aussi actuellement accompagné de quelque un dans mon projet, qui me donne énormement d'idées et gérera la communauté. Nous sommes pour l'instant nous 2 les fondateurs de ce projet. PS : Je sais que c'est comme même bizzare, mais je n'ai pas envie que quelqun dev pour moi ce projet, ou qu'il design pour moi j'ai envie de tout faire et tous apprendre tout seul ! Je sais c'est bizzarre mais je prend sa comme un challenge ! Au cours de mon aventure j'apprendrais pleins de langages ! Note : Ce screen du site, sera mit a jour régulierement
  2. [1.7.x] StatusEffectHUD

    je sais que tout le monde attendent à ce que quelqu'un fasse un tutoriel en VANILLA pour le StatusEffectHUD alors je l'ai fais et je vous le fais partager StatusEffectHUD en Vanilla -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un StatusEffectHUD commençons sans attendre -[sOMMAIRE]- 1]Création d'un "if" 2]Création d'un "for" 3]LesIcônes 4] Afficher les niveaux des effets 1]Création d'un "if" Tout d'abord on va aller dans le GuiIngame.java puis on va aller dans RenderGameOverlay mettre nos codes en dessus de ces 3 int : int var11; int var12; int var13; qui est en dessus de ce if : if (!this.mc.thePlayer.isPotionActive(Potion.confusion)) { float var10 = this.mc.thePlayer.prevTimeInPortal + (this.mc.thePlayer.timeInPortal - this.mc.thePlayer.prevTimeInPortal) * par1; if (var10 > 0.0F) { this.func_130015_b(var10, var6, var7); } } donc maintenant on va mettre notre if qui va dire que si il y a plus de 5 potion d'activer ça les empiles mais pour ça il faut déja mettre notre Collection pour les potions et aussi un int les voici : Collection ph1 = this.mc.thePlayer.getActivePotionEffects(); int ph2 = 33; j'ai mis ph pour PotionHUD maintenant le if c'est : if (ph1.size() > 5) //si les effect de potion activé est supérieur a 5 alors ... { ph2 = 132 / (ph1.size() - 1); ... il s'empile avec ces valeurs } 2]Création d'un "for" pour le "for" on va mettre tout ce qu'il faut pour que les effect de potion s'affiche avec le temps l'icone et le nom de la potion donc pour ça le "for" sera : for (Iterator ph3 = this.mc.thePlayer.getActivePotionEffects().iterator(); ph3.hasNext(); var2 += ph2) { donc ici on a crée un Iterator qui va donc nous permettre d'avencer sauf que normalement vous avez une erreur sur me var2 et nous allons ajouter en même un autre var qui nous servira plus bas donc plus haut avant le if il suffis de mettre ceci : int var2 = 0; int var1 = 0; donc maintenant dans notre for on va rajouter quelque variables pour qu'il aille chercher les effets de potions : PotionEffect ph4 = (PotionEffect)ph3.next(); Potion ph5 = Potion.potionTypes[ph4.getPotionID()]; // ici on va chercher le type de potion qui est actif GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); pour le text c'est avec le niveaux des potion donc c'est plus bas maintenant on a just le nom de la potion qui s'affiche maintenant on veut sa durée : this.mc.fontRenderer.drawStringWithShadow(Potion.getDurationString(ph4), var1 + 10 + 18, var2 + 6 + 10, 8355711); //ici on affiche la duré de l'effet en court ce qui nous donne pour le moment ceci : //début du code PotionEffectHUD int var1 = 0; int var2 = 0; int ph2 = 33; Collection ph1 = this.mc.thePlayer.getActivePotionEffects(); if (ph1.size() > 5) { ph2 = 132 / (ph1.size() - 1); } for (Iterator ph3 = this.mc.thePlayer.getActivePotionEffects().iterator(); ph3.hasNext(); var2 += ph2) { PotionEffect ph4 = (PotionEffect)ph3.next(); Potion ph5 = Potion.potionTypes[ph4.getPotionID()]; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.fontRenderer.drawStringWithShadow(Potion.getDurationString(ph4), var1 + 10 + 18, var2 + 6 + 10, 8355711); } //fin code PotionEffectHUD 3] LesIcônes maintenant il faut afficher certaine chose comme le contour (ou pas si vous voulez pas il suffis de retirer le code que je vais vous donner) et les icônes donc pour les icônes on va déjà rajouter un bindTexture tout en haut du GuiIngame.java : protected static final ResourceLocation inventory = new ResourceLocation("textures/gui/container/inventory.png"); voilà et dans notre "for" on va rajouter en dessus de : GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); on va mettre : this.mc.getTextureManager().bindTexture(inventory); // ici on va chercher la texture maintenant on va chercher les icônes dans ce .png donc on ajouter un if : if (ph5.hasStatusIcon()) { int ph6 = ph5.getStatusIconIndex(); this.drawTexturedModalRect(var1 + 6, var2 + 7, 0 + ph6 % 8 * 18, 198 + ph6 / 8 * 18, 18, 18); //on va chercher l'icône et on le place ou il faut } si vous voulez le contour il suffis d'ajouter cette ligne au dessus du if des icônes : this.drawTexturedModalRect(var1, var2, 0, 166, 140, 32); // ici on affiche le contour si vous avez envis d'enlever le contour il suffis d'enlever cette ligne 4] Afficher les niveaux des effets donc pour afficher le niveaux des effets on va déja rajouter en dessus de notre deuxième if pour afficher les icônes un String qui va chercher le nom en fonction de leur ID : String ph7 = I18n.format(ph5.getName()/*ici il cherche le nom*/, new Object[0]); maintenant que on a ça on va pouvoir afficher le niveau pour cela rien de plus simple on fais des "if" et des "else if" donc on commence par le niveau 2 car le niveau 1 ne s'affiche pas donc on met : if (ph4.getAmplifier() == 1) // si la potion a un niveau de 1 qui est le niveau 2 car le niveau 1 c'est 0 alors .... { ph7 = ph7 + " II" ;// ... on affiche a coté du nom de la potion "II" } et maintenant on va faire ça pour 4 niveaux donc en dessus de ça on ajoute : else if (ph4.getAmplifier() == 2)// si la potion a un niveau de 2 qui est 3 alors ... { ph7 = ph7 + " III"; // on affiche a coté du nom de la potion "III" } else if (ph4.getAmplifier() == 3) // si la potion a un niveau de 3 qui est 4 alors ... { ph7 = ph7 + " IV"; // on affiche a coté du nom de la potion "IV" } maintenant que on a ça il faut le placer donc en dessous du if on ajoute : this.mc.fontRenderer.drawStringWithShadow(ph7, var1 + 10 + 18, var2 + 6, 16777215); //ici on place le nom de la potion ou il faut ce qui nous donne au finale tout ceci : //début du code PotionEffectHUD int var1 = 0; int var2 = 0; int ph2 = 33; Collection ph1 = this.mc.thePlayer.getActivePotionEffects(); if (ph1.size() > 5) { ph2 = 132 / (ph1.size() - 1); } for (Iterator ph3 = this.mc.thePlayer.getActivePotionEffects().iterator(); ph3.hasNext(); var2 += ph2) { PotionEffect ph4 = (PotionEffect)ph3.next(); Potion ph5 = Potion.potionTypes[ph4.getPotionID()]; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(inventory); this.drawTexturedModalRect(var1, var2, 0, 166, 140, 32); if (ph5.hasStatusIcon()) { int ph6 = ph5.getStatusIconIndex(); this.drawTexturedModalRect(var1 + 6, var2 + 7, 0 + ph6 % 8 * 18, 198 + ph6 / 8 * 18, 18, 18); } String ph7 = I18n.format(ph5.getName(), new Object[0]); if (ph4.getAmplifier() == 1) { ph7 = ph7 + " II" ; } else if (ph4.getAmplifier() == 2) { ph7 = ph7 + " III"; } else if (ph4.getAmplifier() == 3) { ph7 = ph7 + " IV"; } this.mc.fontRenderer.drawStringWithShadow(ph7, var1 + 10 + 18, var2 + 6, 16777215); this.mc.fontRenderer.drawStringWithShadow(Potion.getDurationString(ph4), var1 + 10 + 18, var2 + 6 + 10, 8355711); } //fin code PotionEffectHUD voilà le tutoriel est terminé bon jeu avec votre StatusEffectHUD !
  3. Cherchez-vous un Moddeurs ?

    [INDISPONIBLE POUR L'INSTANT] Bonjour, Je me présente, je m'appelle GamingDark(pseudo Minecraft) j'ai 14 ans et je recherche quelqu'un pouvant éventuellement me recruter, je crée des mods depuis plus de 2 ans et je commence a me spécialiser dans la modélisation 3D, je suis a votre disposition et je peux fournir des conseils a de jeune moddeurs si besoin, si vous souhaitez que je crée un mod quelconque, veuillez me laisser une a deux semaine max. pour le finaliser, le temps de création dépendra de la complexité du mod, si vous souhaitez que je vous crée un mod veuillez me fournir par email, skype ou Discord toute les informations que vous souhaitez. Et si vous souhaitez un mod avec des bloc/items en 3D cela me prendra beaucoup plus de temps, voici mon skype, gmail ou mon discord si besoin. -Discord : GamingDark#1010 -Skype : GamingDark 1030 -Gmail : gamingDark1030@gmail.com Je peux aussi vous apprendre les bases de la modélisation 3D et la version plus complexe Je réside en Belgique plus précisément a Bruxelles PS : je ne suis pas spécialisé dans la création de launcher, je tient a la précisé. Bonne journée, GamingDark
  4. Team build Alvyre Recrutement

    Team Alvyre Bonjour ! Si cette lettre a lieu c'est car à la fois notre team de build recrute mais également nous sommes à la recherche de projets de build, pour cela nous allons diviser cette lettre en 3 parties, nous allons en premier lieu présenter la team, en suite parler des recrutements et enfin des projets que nous prenons . I. Présentation : Bonjour, je m 'appelle IDoraken et je suis le fondateur de la Team Alvyre, nous sommes une team de builders avec comme membres : IDoraken: Builder, Gérant team Alvyre Dyka : Builder, Gerant discord Volcumix : Builder, rendu builds Shoto : Builder, Trailer Maker Batbanzai : Builder, redstonneur TheoParadis: Builder Fr3stifyre: Builder Nous sommes une team de build, nous buildons de tout ! Des lobbys, HCF, spawn faction, villes mmorpg etc en échange nous acceptons que ça soit de la pub ou de l'argent (si on été gratuit avec toutes les commandes ça serai impossible) II . Recrutements : Comme vous avez pu le constater nous recrutons actuellement des builders ! Pour cela vous devez répondre à certains critéres : - Avoir une experience de build supérieur à 1 an Avoir minimum 13 ans Pouvoir nous montrer des screens de vos builds Avoir discord afin de pouvoir nous contacter: « https://discord.gg/XFpQawQ » Venir avec une lettre rédigé d'avance avec tout les critères ! (Dedans vous pouvez développer votre dossier comme exemple votre style de build, pseudo...) III . Projets qu'on prend : Comme toute team de build qui se respect nous buildons ! Si vous avez bien lu ce texte on les build en échange que ça soit de la pub ou de l'argent, Si vous recherchez une team de build sachez qu'on build de tout ( à part le moderne) on a déjà réalisés des Lobbys, Spawns faction, warzones, HCF de tout genre, mines d'OpPrison, des Villes MMORPG, maps world painter (jusqu'à 8k x 8k) et autres ! Si vous êtes intéressés vous pouvez nous contacter via notre discord : « https://discord.gg/XFpQawQ » La-bas vous aurez des screens de nos builds afin d'en savoir plus sur notre style de build ainsi que notre « qualité »
  5. Créer son propre launcher perso de zéro Cette uvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 4.0 International . Tout partage implique que vous citiez l'auteur original. \!/ CE TUTORIEL REQUIRE DES CONNAISSANCE EN JAVA POUR FAIRE VOTRE PROPRE INTERFACE SI VOUS NE L'AVEZ PAS APPRIS, DIRECTION OPEN CLASSROOM \!/ -[INTRODUCTION]- CE TUTORIEL N'EST PLUS A JOUR, IL FAUT SUIVRE LES TUTORIAUX VIDEOS ICI : http://forum.ironcraft.fr/topic/6738-videos-forgevanilla-1-créer-son-launcher-minecraft-de-zéro-entièrement-personalisé/ Salut tout le monde ! Voila un tutoriel qui va être surement fort utile a la communauté, un tutoriel pour créer a partir de rien, son launcher Minecraft personnalisé, pour toute version, et avec compatibilité forge. Ce tutoriel regroupe en fait trois librairies crées de zéro par moi-même ! - OpenAuth pour l'authentification, par Moi-Même - S-Update pour la mise a jour, par Moi-Même - OpenLauncherLib pour le lancement du jeu et un peu l'authentification, par Moi-Même -[SOMMAIRE]- 1] Préparation 2] Création d'une fenêtre de base simple 3] Authentification (OpenAuth) 4] Mise à jour (S-Update) A] Partie Java B] Partie Cloud (Les packs pré-faits sont ici !) C] La Progress Bar 5] Lancement du jeu (OpenLauncherLib) 6] Features en plus A] Créer un bootstrap simple et rapide B] Créer son pack avec n'importe quelle version forge/vanilla C] Sauvegarder le pseudo du joueur D] Faire en sorte de pouvoir bouger la fenêtre en cliquant dessus 7] Exporter son launcher A] En .JAR B] En .EXE C] En .APP 1] Préparation Dans cette partie nous allons préparer le projet avec les librairies et tous le tralala... Spoiler Commencez par télécharger les quatres librairies via ces liens : OpenAuth - Adf.ly (Me supporter) OpenAuth - Direct S-Update - Adf.ly (Me supporter) S-Update - Direct OpenLauncherLib - Adf.ly (Me supporter) OpenLauncherLib - Direct Gson (Par Google, utilisé par OpenAuth) Maintenant ouvrez eclipse et créez un nouveau projet, appelez le comme vous voulez Faites clique droit sur le projet --> Build Path. --> Add External Archives et ajoutez tous les jars obtenus Spoiler Ok maintenant on va préparer l'OpenLauncherLib avec trois constantes. L'objet GameVersion L'objet GameVersion contient les informations à propos de la version de Minecraft. Le nom précis de la version, et le type de la version. Vous avez le choix entre 3 types de version, 1.7.2 ou moins, 1.7.10, et 1.8 ou plus. Créons une classe apelée Launcher. C'est là qu'on rangera tout ce qui n'a pas de rapport avec l'interface. Créons donc notre objet GameVersion : public class Launcher { public static final GameVersion LC_VERSION = new GameVersion("nomdelaversion", "typedelaversion"); } Je l'ai appelée LC_VERSION, LC est l'abréviation de LaunCher, je vous conseille de faire pareil avec le nom de votre serveur, par exemple si votre serveur s'appelle PimpFaction, appeler votre variable PF_VERSION. Après c'est comme vous voulez ^^. Je l'ai mis final donc il faut mettre le nom de la variable en majuscule car c'est la convention ! Pour le premier argument mettez votre version précise (c'est important pour les assets). Par exemple "1.7.10", ou "1.8.3", etc... Pour le deuxieme argument, si votre version est inférieure ou égale à la 1.7.2, mettez GameType.V1_7_2_LOWER. Si votre version est la 1.7.10 mettez GameType.V1_7_10. Si votre version est supérieure ou égale à la 1.8 mettez GameType.V1_8_HIGHER. Si votre version est 1.5.2 ou en dessous, mettez GameType.V1_5_2_LOWER. Par exemple pour un serveur en 1.7.10 mettez : public static final GameVersion LC_VERSION = new GameVersion("1.7.10", GameType.V1_7_10); Pour un serveur en 1.6.4 mettez : public static final GameVersion LC_VERSION = new GameVersion("1.6.4", GameType.V1_7_2_LOWER); Pour un serveur en 1.4.7 mettez public static final GameVersion LC_VERSION = new GameVerison("1.4.7", GameType.V1_5_2_LOWER); L'objet GameInfos L'objet GameInfos contient les informations de Minecraft. Il contient le nom du serveur, votre objet GameVersion, et si forge est activé ou non. Créez donc votre objet GameInfos comme ceci (en dessous de LC_VERSION) : public static final GameInfos LC_INFOS = new GameInfos("NomDuServeur", ObjetGameVersion, tweaksActiveOuNon, tweaks); Remplacez NomDuServeur par le nom de votre serveur par exemple "PimpFaction", remplacez votre ObjetGameVersion pour votre objet GameVersion créé plus haut par exemple LC_VERSION, remplacez tweaks par si vous utilisez des tweaks où non (mettez true si vous êtes en 1.6.4 ou plus et que vous voulez forge, ou en 1.6.4 ou plus et que vous êtes en Vanilla avec Optifine et/ou Shader). Ensuite remplacez tweaks, par si vous avez mis false dans tweaksActiveOuNon mettez new GameTweak[] {} (pas de tweak), après si vous êtes en Forge fous mettez new GameTweak[] {GameTweak.FORGE}, mais si vous êtes en Vanilla, si vous voulez Shader mettez new GameTweak[] {GameTweak.SHADER}, et si vous voulez optifine mettez new GameTweak[] {GameTweak.OPTIFINE}, et si vous voulez les deux, mettez new GameTweak[] {GameTweak.OPTIFINE, GameTweak.SHADER}. Par exemple pour un serveur s'appelant PimpFaction en forge utilisant l'objet GameVersion créé plus haut : public static final GameInfos LC_INFOS = new GameInfos("PimpFaction", LC_VERSION, true, new GameTweak[] {GameTweak.FORGE}); Le dossier de jeu Votre dossier de jeu est généré automatiquement par votre objet GameInfos, c'est génial non ? Il est dans AppData pour Windows, Application Support pour MAC, etc... Je vous conseil de stocker le dossier de jeu dans une variable pour pouvoir y acceder plus rapidement plus tard. Par exemple (en dessous de LC_INFOS) : public static final File LC_DIR = LC_INFOS.getGameDir(); Sinon utilisez tout simplement Launcher.LC_INFOS.getGameDir() à chaque fois 2] Création d'une fenêtre de base simple Spoiler Bon, je vais faire très simple, mais pas moche pour autant, parce que je suis maniaque. Je m'attarde pas trop sur le code, c'est juste a titre d'exemple. Créez une classe appelée LauncherFrame, elle contiendra le code de la fenêtre. Spoiler public class LauncherFrame extends JFrame implements ActionListener { private static LauncherFrame instance; private JLabel titre; private JTextField pseudo; private JPasswordField mdp; private JButton jouer; private JProgressBar pb; private String username = null; private String accessToken = null; private String id = null; public LauncherFrame() { this.setTitle("Mon Launcher Style"); this.setSize(850, 500); this.setUndecorated(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setLayout(null); this.getContentPane().setBackground(new Color(64, 64, 64)); titre = new JLabel("Mon Launcher Style", SwingConstants.CENTER); titre.setForeground(Color.WHITE); titre.setFont(titre.getFont().deriveFont(60f)); titre.setBounds(0, 20, 850, 100); this.add(titre); pseudo = new JTextField("Pseudo"); pseudo.setBounds(350, 275, 150, 20); this.add(pseudo); mdp = new JPasswordField("Mot de Passe"); mdp.setBounds(350, 305, 150, 20); this.add(mdp); jouer = new JButton("Jouer !"); // Enregistre la fenetre entant qu'ActionListener jouer.addActionListener(this); jouer.setBounds(350, 335, 150, 20); this.add(jouer); pb = new JProgressBar(); pb.setStringPainted(true); pb.setBounds(0, 480, 850, 20); this.add(pb); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { Thread t = new Thread() { @Override public void run() { // Ici on appellera les methodes de la class Launcher } }; t.start(); } public static void main(String[] args) { // Astuce pour avoir le style visuel du systeme hôte try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } instance = new LauncherFrame(); } // Retourne l'instance de LauncherFrame public static LauncherFrame getInstance() { return instance; } // Retourne l'instance de notre progress bar public JProgressBar getProgressBar() { return pb; } } N'oubliez pas CTRL + SHIFT + O pour les imports Au final ce joli code rend comme ça : Spoiler 3] Authentification (OpenAuth) Spoiler Bon, commençons par remplir notre méthode run() du thread de actionPerformed() dans LauncherFrame // On empeche l'utilisateur de modifier son pseudo/mot de passe ou de reappuyer sur jouer pseudo.setEnabled(false); mdp.setEnabled(false); jouer.setEnabled(false); // On s'authentifie dans un try catch try { Launcher.auth(pseudo.getText(), new String(mdp.getPassword())); } catch (AuthenticationException e) { // Si ça n'a pas marché on réactive tout pseudo.setEnabled(true); mdp.setEnabled(true); jouer.setEnabled(true); // On affiche l'erreur e.printStackTrace(); // Et on affiche un message d'erreur JOptionPane.showMessageDialog(LauncherFrame.this, "Impossible de se connecter : " + e.getErrorModel().getErrorMessage(), "Erreur", JOptionPane.ERROR_MESSAGE); } Et dans notre class Launcher : private static AuthInfos authInfos; public static void auth(String username, String password) throws AuthenticationException { } L'objet AuthInfos nous permettra de stocker les informations reçues. Et dans auth(), on authentifie le joueur. Authenticator authenticator = new Authenticator(Authenticator.MOJANG_AUTH_URL, AuthPoints.NORMAL_AUTH_POINTS); AuthResponse rep = authenticator.authenticate( AuthAgent.MINECRAFT, username, password, ""); authInfos = new AuthInfos(rep.getSelectedProfile().getName(), rep.getAccessToken(), rep.getSelectedProfile().getId()); 4] Mise à jour (S-Update) Donc, dans cette partie nous allons nous attaquer a la partie mise à jour, je vais devoir faire un mini tuto sur comment utiliser S-Update, mais vous allez voir, c'est simplissime. A] Partie Java Spoiler Tous d'abord créons une fonction vide dans Launcher : public static void update() throws IOException { } Puis appelons la dans LauncherFrame dans notre méthode run() de actionPerformed() dans LauncherFrame, après Launcher.auth(), toujours dans le try catch, appelons notre méthode. pb.setString("Verification des mises à jours"); Launcher.update(); Et rajoutez un autre bloc catch après l'autre comme ceci : catch (IOException e) { // Affichage d'un message d'erreur JOptionPane.showMessageDialog(null, "Impossible de mettre a jour mon serveur ! : " + e, "Erreur !", JOptionPane.ERROR_MESSAGE); // On reactive tout pseudo.setEnabled(true); mdp.setEnabled(true); jouer.setEnabled(true); // On affiche l'erreur e.printStackTrace(); } Ensuite initialisons notre objet SUpdate dans la méthode update() qu'on viens de créer : final SUpdate su = new SUpdate("http://monsitestyle.fr/fichiersserveur/", LC_DIR); puis mettons à jour ! LauncherFrame.getInstance().getProgressBar().setString("Mise à jour..."); su.update(); C'est tout pour la partie code ! B] Partie cloud (Les packs pré-faits sont ici !) Spoiler Alors la partie cloud, très courte et très simple depuis S-Update 2 ! Tout d'abord téléchargez l'installateur (installer.php) ici : https://github.com/TheShark34/S-Update-Server/ (si vous ne pouvez pas le télécharger, téléchargez les sources en .zip et prenez juste installer.php). Ensuite sur votre FTP créez ou allez dans un dossier ou sera le serveur S-Update. Mettez-y le fichier installer.php. Ensuite depuis votre navigateur allez sur le fichier installer.php, vous devrez apercevoir le logo S-Update et une barre de chargement (très rapide). Et vous devriez tout d'un coup voir la page de configuration. La page de configuration permet de configurer un pseudo et un mot de passe pour accéder ensuite aux pages protégés dans le dossier protected/. Et l'URL de redirection est là où seront redirigés ceux qui iront sur la page du serveur. Quand vous avez fini cliquer sur le bouton =) Ensuite, vous accédez alors à l'accueil de S-Update (le dossier protected/) après avoir entré votre pseudo mot de passe. Donc voilà c'est bon ! Tout est configuré ! Sur cette page vous voyez le nombre total de connexion et les 5 dernières connexions en détail. Vous pouvez cliquer sur le bouton Configurer pour changer le mot de passe/pseudo/l'url de redirection. Vous avez maintenant juste a mettre les fichiers dans le dossier files/ du dossier de votre serveur sur votre FTP, et vous rendre dans la page d'indexage accessible depuis la page d'acceuil administrateur quand vous avez fini pour appliquer les changements ! Et pour mettre à jour les fichiers, juste changez les dans le dossier files/, et re-allez sur la page d'indexage =). Aussi vous pouvez mettre des zips dans le dossier zips ! Mettez les dans le dossier où ils devraient être extraits, mais attention, ce dossier sera automatiquement ignoré à la vérification ! Voici des packs préfaits à mettre dézipper directement dans le dossier de votre serveur 1.7.10 1.7.10-forge D'autres versions arrivent bientôt =) Si vous avez des packs qui marchent dites-le moi ! C] La Progress Bar Spoiler C'est super simple. Avant su.update(); Créez un nouveau thread qui tourne en boucle et change la barre : Thread t = new Thread() { public void run() { while (true) { LauncherFrame.getInstance().getProgressBar().setMaximum(su.getNumberOfFilesToDownload()); LauncherFrame.getInstance().getProgressBar().setValue(Downloader.getTotalDownloaded()); } } }; t.start(); 5] Lancement du jeu (OpenLauncherLib) Spoiler Commencons par créer une nouvelle méthode launch dans notre class Launcher : public static void launch() { } Pour l'appeler, toujours dans le try catch de notre action listener, après Launcher.update();, mettez : Launcher.launch(); Donc dans notre méthode commencons par créer un objet GameLauncher : GameLauncher gameLauncher = new GameLauncher(ObjetGameInfos, TypeDeGameFolder, authInfos); Remplacez ObjetGameInfos par l'objet GameInfos créé dans la partie 1], TypeDeGameFolder par le type d'organisation de votre dossier (si vous avez pris un pack préfait ou avez suivit le tutoriel de création de pack prenez GameFolder.BASIC). Et en dernier notre objet AuthInfos. Si vous voulez rajouter des arguments JVM (comme -Xms / -Xmx) rajoutez un tableau de String en dernier argument ! Par exemple, avec des arguments JVM -Xms512M et -Xmx1024M, les objets créés plus haut, et une organisation de dossier basique : GameLauncher gameLauncher = new GameLauncher(LC_INFOS, GameFolder.BASIC, authInfos, new String[] {"-Xms512M", "-Xmx1024M"}); Ensuite juste à lancer le jeu ! try { Process p = gameLauncher.launch(); Thread.sleep(5000L); LauncherFrame.getInstance().setVisible(false); p.waitFor(); System.exit(0); } catch (IOException e) { e.printStackTrace(); JOptionPane.showMessageDialog(LauncherFrame.getInstance(), "Impossible de lancer mon serveur ! : " + e, "Erreur", JOptionPane.ERROR_MESSAGE); System.exit(1); } catch (InterruptedException e) { System.exit(0); } ALORS ! Explication : D'abord on run tout dans un try catch. Déjà je lance le jeu et je récupère le processus créé. (1ère ligne : Process p = gameLauncher.launch() . Ensuite j'attends 5 secondes le temps que la fenêtre du jeu s'affiche (2ème ligne : Thread.sleep(5000L) . Ensuite je ferme notre fenêtre de launcher (3ème ligne : LauncherFrame.getInstance().setVisible(false)). J'attends que le processus se termine (4ème ligne : p.waitFor()). Et je quitte manuellement pour être sur que le launcher ne reste pas ouvert (5ème ligne : System.exit(0)). Ensuite dans le catch IOException J'affiche l'erreur (1ère ligne : e.printStackTrace)). J'affiche un message d'erreur (2ème ligne : JoptionPane.showMessageDialog(...)). Et je quitte (3ème ligne : System.exit(1)). Et le dernier catch arrive quand on a pas pu attendre que le processus se soit terminé ou juste pas pu attendre 5 secondes, donc ce n'est pas grave, on quitte juste pour être sur que le launcher ne reste pas ouvert. Voilà ! 6] Features en plus Votre launcher est beau, fonctionnel, mais basique. Voilà une liste de features à ajouter a votre launcher ! Proposez-moi en d'autre ! Cette liste s'embellit constament ! A] Créer un bootstrap simple et rapide Spoiler Donc, pour ceux qui ne savent pas, un bootstrap est un mini programme qui mettera à jour le launcher. C'est un autre programme séparé du launcher, il va télécharger et lancer le launcher. C'est un launcher de launcher, et c'est lui que vous distriburrez publiquement et non votre launcher. Il vous permettera de mettre à jour votre launcher en case de besoins, y compris les librairies car je sort régulièrement des mises à jour, c'est donc fortement conseillé, mais on peut s'en passer. Donc commencez par créer un nouveau projet sur Eclipse. Ajoutez y l'OpenLauncherLib et S-Update. Ensuite créez une nouvelle class, ici on va l'appeler MyBootstrap. (Ne l'appelez pas Bootstrap ou ça va vous faire chier avec l'OpenLauncherLib). Créez une méthode main simple qui lance la méthode start ok ? public class MyBootstrap { public static void main(String[] args) { MyBootstrap myBootstrap = new MyBootstrap(); myBootstrap.start(); } public void start() { } } D'abord déclarez 3 variables en haut de votre classes : private File launcherHome = new File(GameDir.createGameDir("nom_du_serveur"), "Launcher"); private SplashScreen splash; private ErrorUtil errorUtil; Le première sera le dossier ou sera sauvegardé le launcher et tout ça, remplacez nom_du_serveur par le nom de votre serveur, ca generera le dossier .nom_du_serveur dans AppData La deuxième sera notre splash. Et la troisième sera notre instance d'ErrorUtil permettant d'écrire dans un crash report et d'afficher un message d'erreur en une ligne ! Merci l'OpenLauncherLib ! Donc maintenant dans notre méthode start, commençons par initialiser notre objet ErrorUtil (permet d'attraper les erreurs pour faire des crash reports) : errorUtil = new ErrorUtil(launcherHome); Ensuite après, créons notre splash screen et affichons le ! try { splash = new SplashScreen("NomDeVotreServeur", ImageIO.read(getClass().getResourceAsStream("VOTREIMAGEDESPLASH.png"))); } catch (IOException e) { // Ne peut normalement pas arriver errorUtil.catchError(e, "L'image du splash n'existe pas !"); } splash.setVisible(true); Remplacez biensur VOTREIMAGEDESPLASH par le nom de votre image de splash, elle devra être a coté de votre classe !, et NomDeVotreServeur par le nom de votre serveur ! Si vous lancez vous verrez un joli splash apparaître normalement ! Ensuite après, passons à la mise à jour du launcher. Comme d'hab, merci S-Update ! SUpdate su = new SUpdate("http://monurldemiseajourdeBOOTSTRAP/", launcherHome); try { su.update(); } catch (IOException e) { errorUtil.catchError(e, "Impossible de mettre à jour le launcher !"); } Remplacez biensur l'url pas l'url d'un dossier (PAS LE MME QUE CELUI DU LAUNCHER) (créez un nouveau serveur S-Update) ou on mettera les fichiers de mises à jour. Ensuite donc, passons au lancement du launcher ! Grace à l'OpenLauncherLib c'est hyper simple ! LauncherClasspath launcherClasspath = new LauncherClasspath(new File(launcherHome, "launcher.jar"), new File(launcherHome, "Libs/")); LauncherInfos launcherInfos = new LauncherInfos("NOMDUSERVEUR", "CLASSEPRINCIPALEDULAUNCHER"); Bootstrap bootstrap = new Bootstrap(launcherClasspath, launcherInfos); try { Process p = bootstrap.launch(); Thread.sleep(1000L); splash.setVisible(false); p.waitFor(); } catch (IOException e) { errorUtil.catchError(e, "Impossible de lancer le launcher !"); } catch (InterruptedException e) { } System.exit(0); Remplacez biensur NOMDUSERVEUR par le nom de votre Serveur, et CLASSEPRINCIPALEDULAUNCHER par la classe principale de votre launcher. Comment former une classe principale ? Prenez le package ou est la classe qui contient la méthode main(String[] args) (dans le tuto LauncherFrame) et rajoutez le nom de la classe. Par exemple la classe LauncherFrame dans le package fr.pimpfaction.launcher donc on marquera fr.pimpfaction.launcher.LauncherFrame EXPLICATIONS ! 1. Création de l'objet LauncherClasspath contenant le fichier du launcher et le dossier des libs 2. Création de l'objet LauncherInfos qui contient le nom du serveur et la classe principale du launcher 3. Création de l'objet Bootstrap qui contient nos deux objets et qui lancera le jeux ! Dans le try 1. On lance le launcher et récupère le process 2. On attends un peu car sinon ce serait trop rapide et on ne verrait pas le splash 3. On ferme le splash 4. On attends la fin du process Dans le catch on demande a ErrorUtil de gérer l'erreur Et a la fin on quitte manuellement pour être sur que le Bootstrap ne reste pas lancé ! Voilà le code final ! public class MyBootstrap { private File launcherHome = new File(GameDir.createGameDir("nom_du_serveur"), "Launcher"); private SplashScreen splash; private ErrorUtil errorUtil; public static void main(String[] args) { MyBootstrap bootstrap = new MyBootstrap(); bootstrap.start(); } public void start() { errorUtil = new ErrorUtil(launcherHome); try { splash = new SplashScreen("MONSERVEUR", ImageIO.read(MyBootstrap.class.getResourceAsStream("MONIMAGEDESPLASH"))); } catch (IOException e) { } splash.setVisible(true); SUpdate su = new SUpdate("http://monurldemiseajourdeBOOTSTRAP/", launcherHome); try { su.update(); } catch (IOException e) { errorUtil.catchError(e, "Impossible de mettre à jour le launcher !"); } LauncherClasspath launcherClasspath = new LauncherClasspath(new File(launcherHome, "launcher.jar"), new File(launcherHome, "Libs/")); LauncherInfos launcherInfos = new LauncherInfos("MONSERVEUR", "CLASSEPRINCIPALEDULAUNCHER"); Bootstrap bootstrap = new Bootstrap(launcherClasspath, launcherInfos); try { Process p = bootstrap.launch(); Thread.sleep(1000L); splash.setVisible(false); p.waitFor(); } catch (IOException e) { errorUtil.catchError(e, "Impossible de lancer le launcher !"); } catch (InterruptedException e) { } System.exit(0); } Voila =) Simple non ? Merci l'OpenLauncherLib ! Maintenant comment organiser le dossier de mise a jour du bootstrap ? Dans le dossier (donc sur votre FTP). Faite comme dans la partie 4] pour créer votre serveur S-Update (UTILISEZ UN AUTRE QUE CELUI DU LAUNCHER). Et mettez-y vos librairies et votre launcher. Voilà ! B] Créer son pack avec n'importe quelle version forge/vanilla Spoiler Pour créer votre pack ce n'est pas compliqué. Le truc c'est que dans votre .minecraft officiel les versions sont entrelacées. Alors supprimez votre .minecraft officiel (faites une sauvegarde si vous voulez) et avec le launcher officiel téléchargez la version souhaitez. Ensuite si vous voulez Forge pour votre pack, téléchargez forge depuis leur site (http://files.minecraftforge.net/) et installez le, ensuite LANCEZ MINECRAFT CEST TRS IMPORTANT Maintenant dans votre .minecraft copiez tous les dossiers dans un autre dossier, maintenant on va travailler dans ce dossier. Dans ce dossier prenez le fichier versions/<votreversion>/<votreversion>.jar et mettez le a la racine du dossier. Appelez le minecraft.jar Ensuite supprimez le dossier versions/ et resourcepacks/. Maintenant dans le dossier librairies, cherchez dans la barre de recherche *.jar. Prenez tous les fichiers .jar (pas les .jar.sha) et copiez les dans un dossier libs/ qui sera a la racine du dossier de base. Supprimez le dossier librairies/ Téléchargez les natives ici : http://dl.dropbox.com/u/31232797/mcnatives.zip Mettez tout ce qu'il contient dans un dossier natives/ dans votre pack. Maintenant, zippez ce que contient le dossier assets/ dans un fichier zip (osef du nom), et laissez ce zip dans le dossier assets. Maintenant déplacez le dossier assets dans un dossier zips/ qui lui est à côté et non pas dans le dossier files/ Voilà vous devriez avoir un dossier zips avec un dossier assets contenant un fichier assets.zip (mais vous pouvez changez son nom), un dossier files/ avec : un dossier libs/ (avec juste des .jar), un dossier natives/ et un fichier minecraft.jar. Si vous voulez shader/optifine, mettez la lib dans le dossier libs Mettez tous ça dans le dossier de votre serveur S-Update et c'est bon =). C] Sauvegarder le pseudo du joueur Spoiler Dans cette partie, nous allons juste sauvegarder le pseudo de la personne qui se connecte, pour pouvoir le remettre lorsque qu'il relance le launcher. Créons donc un objet UsernameSaver au début de LauncherFrame : private UsernameSaver usernameSaver = new UsernameSaver(VotreObjetGameInfos); Biensur remplacez VotreObjetGameInfos par votre objet GameInfos, par exemple : private UsernameSaver usernameSaver = new UsernameSaver(Launcher.LC_INFOS); Ensuite, dans le constructeur, vous voyez pseudo = new JTextField("Pseudo"); ? Remplacez le par ça : pseudo = new JTextField(usernameSaver.getUsername("Pseudo")); Le "Pseudo" qu'on lui donne est la valeur par défault retournée si le fichier n'existe pas ! Pour enregistrer le pseudo, dans actionPerformed au tout début, vous avez juste à mettre ça : usernameSaver.setUsername(pseudo.getText()); Voilà ! Simple non =) ? D] Faire en sorte de pouvoir bouger la fenêtre en cliquant dessus Spoiler Si vous avez enlevé les bordures de votre fenêtre (fenetre.setUndecorated(true)) vous avez du voir que vous ne pouvez plus la bouger. On va remedier à ca en faisant en sorte que lorsqu'on reste cliqué sur la fenêtre et qu'on bouge la souris, çela bouge aussi la fenêtre. Depuis l'OpenLauncherLib 2 c'est super simple ! Vous avez juste à rajouter ça dans le constructeur de la classe votre fenêtre (LauncherFrame). (Plutot vers la fin). WindowMover mover = new WindowMover(this); this.addMouseListener(mover); this.addMouseMotionListener(mover); Et voilà ! Vous devriez être capable de bouger votre fenêtre en restant cliqué dessus ! 7] Exporter son launcher A] En JAR Spoiler Lisez cette partie attentivement. Bon, c'est une petite partie, mais la plus importante. Dans cette partie nous allons considérer que vous avez éclipse, sinon c'est que vous n'êtes pas un débutant, donc vous comprendrez cette partie quand même . Don faite clique droit sur le projet de votre Bootstrap si vous en avez créé un, ou Launcher sinon, Export --> Java --> Runnable Jar File. Dans Launch Configuration, choisissez l'entrée qui s'appelle : NomDuProjet - NomDeLaMainClass Si vous ne la voyez pas, elle est créé quand vous lancez votre Launcher/Bootstrap pour la première fois. Ensuite si vous avez un boostrap, cochez absolument "Copy required libraries in a sub-folder next to the jar" au lieu de "Extract required libraries into the jar" POUR LE LAUNCHER, et "Extract required libraries into the jar" POUR LE BOOTSTRAP. Un dossier NomDeVotreProjet_lib se crééra, ignorez le. Sinon, cochez "Extract required libraries into the jar" si vous avez un launcher seul, c'est très important ! Et vous pouvez exporter votre launcher ! Voilà vous avez un .jar ! Maintenant, on va faire comme les pros: Créér un .exe pour Windows, et même, un .app pour Mac ! (Si vous avez un Bootstrap c'est lui que vous devez transformer !) B] En .EXE Spoiler Commencez par télécharger Launch4J à cette adresse : http://sourceforge.net/projects/launch4j/files/launch4j-3/3.7/ Ensuite, lancez le. Dans Output File, mettez la déstination du .exe, n'oubliez pas .exe à la fin ! Dans Jar, mettez votre .JAR généré plus haut. Dans icon vous pouvez mettre l'icon de votre programme en format .ico (Pour convertir : http://iconverticons.com/online/) Ensuite allez dans l'onglet JRE et mettez dans Min JRE version 1.6.0 si votre launcher a été compilé avec Java 6, 1.7.0 avec Java 7 etc... Pour savoir, clique droit sur votre projet eclipse --> Properties --> Java Compiler. C'est la version minimum que devra avoir l'utilisateur qui lance votre programme. Je vous conseil très fortemment de prendre Java 6. Même si vous avez Java 8 installé ça marchera si vous changez les paramètres dans eclipse. Voilà ensuite appuyez sur l'écrou en haut et c'est bon ! Si vous voulez sauvegardé votre configuration, appuyez sur la disquette. Vous n'aurez qu'a la restaurer en appuyant sur le dossier après. C] En .APP Spoiler Commencez par télécharger SharkBundler (c'est un logiciel fait par moi ) : Windows : Adf.ly (Me Supporter) - Direct MAC : Adf.ly (Me Supporter) - Direct Autre : Adf.ly (Me Supporter) - Direct Ensuite, dans Jar File mettez votre fichier .JAR généré plus haut. Dans Output mettez le .app a généré (n'oubliez pas le .app à la fin !) (ne vous inquiétez pas les .app sont des dossiers) Dans Icon mettez l'icone si vous voulez au format .icns (Pour convertir : http://iconverticons.com/online/) Dans Minor Java Ver mettez la version de Java de votre programme. Si votre launcher a été compilé avec Java 6, marquez 6, ou 7 avec Java 7 etc... Pour savoir, clique droit sur votre projet eclipse --> Properties --> Java Compiler. C'est la version minimum que devra avoir l'utilisateur qui lance votre programme. Je vous conseil très fortemment de prendre Java 6. Même si vous avez Java 8 installé ça marchera si vous changez les paramètres dans eclipse. Ensuite dans Main Class mettez le package de votre classe principale suivit du nom de la classe. Par exemple si la classe de votre programme qui contient la methode public static void main s'appelle ClassPrincipale et se trouve dans le package fr.theshark34.coolcraft. Mettez fr.theshark34.coolcraft.ClassPrincipale. Ensuite dans App Name mettez le nom de votre Launcher. Et voilà appuyez sur Bundle et c'est bon ! Vous pouvez aussi sauvegarder votre configuration pour la sauvegarder plus tard. Voilà, c'est la fin de ce tutoriel, merci de l'avoir lu ! N'hésitez pas à créer un sujet dans la partie support si vous avez un problème, je me ferais un plaisir d'y repondre !
  6. [1.7.x] ArmorHUD (feat Chaos90)

    Merci à chaos90 pour son aide par rapport à ce tutoriel! ArmorHUD en Vanilla Cette uvre est mise à disposition selon les termes de laLicence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé. Tout partage implique que vous citiez l'auteur original. -[iNTRODUCTION]- Nous sommes partis pour un tutoriel pour afficher un ArmorHUD en Vanilla ( code by dermenslof puis modifié par chaos90 ) -[TUTORIEL]- On va commencer par insérer un petit bout de code juste au dessus du ce code ci: public void renderGameOverlay(float par1, boolean par2, int par3, int par4) Nous allons donc ajouter ceci: private void drawItemInToScreen(ItemStack is, int x, int y, float par3, boolean overlay) // On demande au jeu d'afficher l'item sur l'écran { if (is != null) { float an = (float)is.animationsToGo - par3; //On lui dit d'effectuer toute animation par rapport à l'item if (an > 0.0F) { GL11.glPushMatrix(); float dec = 1.0F + an / 5.0F; GL11.glTranslatef((float)(x + 8), (float)(y + 12), 0.0F); GL11.glScalef(1.0F / dec, (dec + 1.0F) / 2.0F, 1.0F); GL11.glTranslatef((float)(-(x + 8)), (float)(-(y + 12)), 0.0F); } itemRenderer.renderItemAndEffectIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), is, x, y); //On lui dit de prendre la texture de l'item et de l'afficher sur l'écran if (an > 0.0F) GL11.glPopMatrix(); if (overlay) itemRenderer.renderItemOverlayIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), is, 16, y); // Même chose qu'au dessus! } } Nous allons ensuite modifier quelques éléments: if (!this.mc.playerController.enableEverythingIsScrewedUpMode()) // <------- ATTENTION CETTE FONCTION EXISTE DEJA JUSTE A REMPLACER { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(widgetsTexPath); InventoryPlayer var31 = this.mc.thePlayer.inventory; this.zLevel = -90.0F; this.drawTexturedModalRect(var6 / 2 - 91, var7 - 22, 0, 0, 182, 22); this.drawTexturedModalRect(var6 / 2 - 91 - 1 + var31.currentItem * 20, var7 - 22 - 1, 0, 22, 24, 22); this.mc.getTextureManager().bindTexture(icons); GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(775, 769, 1, 0); this.drawTexturedModalRect(var6 / 2 - 7, var7 / 2 - 7, 0, 0, 16, 16); OpenGlHelper.glBlendFunc(770, 771, 1, 0); this.mc.mcProfiler.startSection("bossHealth"); this.renderBossHealth(); this.mc.mcProfiler.endSection(); if (this.mc.playerController.shouldDrawHUD()) { this.func_110327_a(var6, var7); } this.mc.mcProfiler.startSection("actionBar"); GL11.glEnable(GL12.GL_RESCALE_NORMAL); RenderHelper.enableGUIStandardItemLighting(); for (var11 = 0; var11 < 9; ++var11) { var12 = var6 / 2 - 90 + var11 * 20 + 2; var13 = var7 - 16 - 3; this.renderInventorySlot(var11, var12, var13, par1); } Puis, juste en dessous de ces nouveaux éléments, rajouter ceci, qui va faire afficher au jeu le HUD: ItemStack is; //render itemArmor for (int i = 0; i < 4; ++i) { is = this.mc.thePlayer.inventory.armorItemInSlot(4 - i - 1); if (is == null) continue; drawItemInToScreen(is, 0, i * 17, par1, true); this.mc.fontRenderer.drawString("§f§l" + (is.getMaxDamage() - is.getItemDamageForDisplay()), 18, i * 17 + 5, 0); } //render itemInHand is = this.mc.thePlayer.inventory.getCurrentItem(); if (is != null) { Item i = is.getItem(); boolean outils = i instanceof Item; if (!i.isItemTool(is) || outils && !(i instanceof ItemArmor)) { drawItemInToScreen(is, 40, 1 * 5, par1, false); GL11.glDisable(GL11.GL_BLEND); this.mc.fontRenderer.drawString("" + "§n§lDurabilité :§r§c§l " + (is.getMaxDamage() - is.getItemDamageForDisplay()) + " §r§n§lQuantité :§r§c§l " + is.stackSize, 60, 1 * 5 + 5, 553648127); } } RenderHelper.disableStandardItemLighting(); GL11.glDisable(GL12.GL_RESCALE_NORMAL); this.mc.mcProfiler.endSection(); GL11.glDisable(GL11.GL_BLEND); } -[CONCLUSION]- Voilà, votre HUD s'affiche désormais! Je ne me suis pas amuser à tout décoder, mais si l'envie vous en viens, n'hésitez pas! /!\ Je me répète, mais le code est de dermenslof , puis modifié par chaos90, pas de moi! Sur ce, bon jeu avec votre ArmorHUD EDIT de Dermenslof: j'assume rien du tout, à la base c'est mon code mais pas les modifs apportées totalement aberrantes (genre: boolean outils = i instanceof Item; et j'en passe)
  7. Dernière version : 1.14 "Remedium" ExtazCMS sur GitHub Site du CMS : https://extaz-cms.fr Site de démonstration : https://extaz-cms.fr/demo/ Suivez ExtazCMS sur Twitter : https://twitter.com/ExtazCMS Suivez ExtazCMS sur Facebook : https://www.facebook.com/extazcms/ Développé par ExtazCMS - Tous droits réservés. Compatible avec le nouveau navigateur, Microsoft Edge Système d'actualités avec brouillons, j'aime & vues Système de commentaires Système de code cadeaux Inscription, connexion, oublie de mot passe, espace membre complet Un "slider" désactivable Un véritable système de support Une page "Chat en Jeu" Une page de contact Une page pour lister les différents membres de l'équipe de votre serveur Développé avec le puissant et sécurisé framework CakePHP Un design responsive Un système de thèmes avec de nombreux thèmes ! Une page de statistiques Une boutique (voir plus bas) Historique d'achats, boutique et starpass & Paypal Système d'happy hour si vous utilisez la boutique Tester la connexion avec JSONAPI sans recharger la page Possibilité d'acheter via StarPass et PayPal Un règlement totalement personnalisable Gestion de tous les systèmes de base de données Module "meilleur donateur" et "dernier donateur" Vous pouvez ajouter des widgets dans la sidebar Un panel d'administration moderne et complet Des graphiques dynamiques Un chat configurable lié au jeu en temps réel Configuration simple et rapide Boutons customisables Système de pages personnalisables avec variables dynamiques Système/Page de maintenance Système d'envoie de tokens entre joueurs avec historique Système de vote Classement des joueurs ayant le plus votés Page de CGU/CGV Système de mise à jour automatique ! Vous pouvez autoriser le paiement via la monnaie du serveur si vous utilisez un système d'économie en jeu Vous pouvez interdire l'achat via la monnaie du serveur individuellement (mettre -1 en prix) Vous pouvez interdire l'achat via la monnaie du site individuellement (mettre -1 en prix) Les utilisateurs peuvent payer avec StarPass ou PayPal (PayPal est désactivable) Vous pouvez exiger un prérequis avant un achat. (par ex: acheter le grade paysan avant le grade bourgeois) Vous pouvez octroyer un prérequis à un utilisateur Vous pouvez exécuter plusieurs commandes après l'achat d'un item dans la boutique Les utilisateurs peuvent effectuer des recherches pour trouver plus facilement un article Les utilisateurs peuvent trier les articles facilement grâces à leurs catégories Vous pouvez exiger que les utilisateurs soit connectés en jeu pour faire un achat (option par article) Vous pouvez cacher des produits individuellement Vous pouvez déclencher une happy hour, avec un pourcentage de réduction sur l'ensemble des produits Vous pouvez mettre un produit en promotion individuellement Une page référençant tous les items en promotion dans la boutique est disponible Site démonstration : https://extaz-cms.fr/demo/ (pour les thèmes voir sur notre site) Télécharger le CMS Changelog Apache 2.0 CONDITIONS GÉNÉRALES D'UTILISATION © ExtazCMS 2017 - Tous droits réservés.
  8. [1.7.x] Créer une hache de combat

    Hache de Combat -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire une une hache de combat -[sOMMAIRE]- 1]Création de l'item 2]Création du ItemHacheDeCombat.java 3]Création du EnumHacheDeCombat 3]CraftBukkit 1]Création de l'item la création d'un item c'est pas quelque chose de compliqué il suffis de faire comme ceci : Item.java itemRegistry.addObject(ID, "NOM", (new ItemHacheDeCombat(Item.EnumHacheDeCombat.DIAMOND)).setUnlocalizedName("NOM").setTextureName("NOM_TEXTURE"))); il y a une erreur c'est normal pour le moment Items.java public static final Item NOM = (Item)Item.itemRegistry.getObject("NOM"); 2] Création du ItemHacheDeCombat.java donc comme je fais toujours on part de rien d'un class comme ceci : package votre_package; public class ItemHacheDeCombat { } donc ici on va tout de suite faire un extends de Item, ajouter un public qui va nous diriger vers notre enum un maxStackSize, déclarer notre enum et une durabilité qui sera dans notre enum : package votre_package; public class ItemHacheDeCombat extends Item { private float field_150934_a; private final EnumHacheDeCombat field_150933_b; public ItemHacheDeCombat(Item.EnumHacheDeCombat par1) { this.field_150933_b = par1; // déclaration du enum this.maxStackSize = 1; // stackable pas 1 this.setMaxDamage(par1.getMaxUses()); // durabilité se trouvant dans notre enum this.setCreativeTab(CreativeTabs.tabCombat); // on met notre hache dans le tab Combat du créatif this.field_150934_a = 4.0F + par1.getDamageVsEntity(); } } erreur pour le momentr c'est totalement normal maintenant on va crée quelque public comme l'enchante, une autre déclaration de l'enum si il est réparrable le maxITemUseDuration si l'item est en 3D, quand on casse un bloc si retire de la durabilité parreil pour les entité et faire en sorte que ça casse du bois comme une hache : public float func_150931_i() { return this.field_150933_b.getDamageVsEntity(); // l'item est fais pour tapé des entité } public float func_150893_a(ItemStack par1, Block par2) { Material var3 = par2.getMaterial(); return var3 != Material.wood && var3 != Material.plants && var3 != Material.vine && var3 != Material.field_151572_C ? 1.0F : 1.5F; // l'item peu cassé du bois comme une hache } public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) // si on tape une entité l'item perd de la durabilité { par1ItemStack.damageItem(1, par3EntityLivingBase); return true; } public boolean onBlockDestroyed(ItemStack par1, World par2, Block par3, int par4, int par5, int par6, EntityLivingBase par7) // si on casse un bloc avec l'item perd de la durabilité { if ((double)par3.getBlockHardness(par2, par4, par5, par6) != 0.0D) { par1.damageItem(2, par7); } return true; } public boolean isFull3D() { return true; } public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } public int getItemEnchantability() { return this.field_150933_b.getEnchantability(); // l'item est enchantable } public String func_150932_j() { return this.field_150933_b.toString(); // déclaration de notre enum que on fera apres } public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return this.field_150933_b.func_150995_f() == par2ItemStack.getItem() ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); // l'item est réparrable } public Multimap getItemAttributeModifiers() { Multimap var1 = super.getItemAttributeModifiers(); var1.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)this.field_150934_a, 0)); return var1; } ce qui nous donne au final : package votre_package; import com.google.common.collect.Multimap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ItemHacheDeCombat extends Item { private float field_150934_a; private final EnumHacheDeCombat field_150933_b; public ItemHacheDeCombat(Item.EnumHacheDeCombat par1) { this.field_150933_b = par1; this.maxStackSize = 1; this.setMaxDamage(par1.getMaxUses()); this.setCreativeTab(CreativeTabs.tabCombat); this.field_150934_a = 4.0F + par1.getDamageVsEntity(); } public float func_150931_i() { return this.field_150933_b.getDamageVsEntity(); } public float func_150893_a(ItemStack par1, Block par2) { Material var3 = par2.getMaterial(); return var3 != Material.wood && var3 != Material.plants && var3 != Material.vine && var3 != Material.field_151572_C ? 1.0F : 1.5F; } public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) { par1ItemStack.damageItem(1, par3EntityLivingBase); return true; } public boolean onBlockDestroyed(ItemStack par1, World par2, Block par3, int par4, int par5, int par6, EntityLivingBase par7) { if ((double)par3.getBlockHardness(par2, par4, par5, par6) != 0.0D) { par1.damageItem(2, par7); } return true; } public boolean isFull3D() { return true; } public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } public int getItemEnchantability() { return this.field_150933_b.getEnchantability(); } public String func_150932_j() { return this.field_150933_b.toString(); } public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return this.field_150933_b.func_150995_f() == par2ItemStack.getItem() ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); } public Multimap getItemAttributeModifiers() { Multimap var1 = super.getItemAttributeModifiers(); var1.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)this.field_150934_a, 0)); return var1; } } 3] Création du EnumHacheDeCombat (dans Item.java pour client) donc pour le client l'enum se trouve dans Item tout en bas pour les outils et épée nous allons en crée une donc il suffis de copier et de coller voilà : public static enum EnumHacheDeCombat { WOOD("WOOD", 0, 0, 59, 3.0F, 0.0F, 15), STONE("STONE", 1, 1, 131, 5.0F, 1.0F, 5), IRON("IRON", 2, 2, 250, 7.0F, 2.0F, 14), DIAMOND("DIAMOND", 3, 3, 1561, 8.0F, 2.5F, 10), GOLD("GOLD", 4, 0, 32, 12.0F, 0.0F, 22); private final int harvestLevel; private final int maxUses; private final float efficiencyOnProperMaterial; private final float damageVsEntity; private final int enchantability; private static final Item.EnumHacheDeCombat[] $VALUES = new Item.EnumHacheDeCombat[]{WOOD, STONE, IRON, DIAMOND, GOLD}; private static final String __OBFID = "CL_00000042"; private EnumHacheDeCombat(String par1Str, int par2, int par3, int par4, float par5, float par6, int par7) { this.harvestLevel = par3; this.maxUses = par4; this.efficiencyOnProperMaterial = par5; this.damageVsEntity = par6; this.enchantability = par7; } public int getMaxUses() { return this.maxUses; } public float getEfficiencyOnProperMaterial() { return this.efficiencyOnProperMaterial; } public float getDamageVsEntity() { return this.damageVsEntity; } public int getHarvestLevel() { return this.harvestLevel; } public int getEnchantability() { return this.enchantability; } public Item func_150995_f() { return this == WOOD ? Item.getItemFromBlock(Blocks.planks) : (this == STONE ? Item.getItemFromBlock(Blocks.cobblestone) : (this == GOLD ? Items.gold_ingot : (this == IRON ? Items.iron_ingot : (this == DIAMOND ? Items.diamond : null)))); } } et normalement toutes les erreur devrai disparaître 4]CraftBukkit Item : REGISTRY.a(ID, "NOM", (new ItemHacheDeCombat(EnumHacheDeCombat.DIAMOND)).c("NOM").f("NOM_TEXTURE")); Items : public static final Item NOM = (Item)Item.REGISTRY.a("NOM"); ItemHacheDeCombat.java package net.minecraft.server; import net.minecraft.util.com.google.common.collect.Multimap; public class ItemHacheDeCombat extends Item { private float damage; private final EnumHacheDeCombat b; public ItemHacheDeCombat(EnumHacheDeCombat enumtoolmaterial) { this.b = enumtoolmaterial; this.maxStackSize = 1; this.setMaxDurability(enumtoolmaterial.a()); this.a(CreativeModeTab.j); this.damage = 4.0F + enumtoolmaterial.c(); } public float i() { return this.b.c(); } public float getDestroySpeed(ItemStack itemstack, Block block) { Material material = block.getMaterial(); return material != Material.WOOD && material != Material.PLANT && material != Material.REPLACEABLE_PLANT ? 1.0F : 1.5F; } public boolean a(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) { itemstack.damage(1, entityliving1); return true; } public boolean a(ItemStack itemstack, World world, Block block, int i, int j, int k, EntityLiving entityliving) { if ((double) block.f(world, i, j, k) != 0.0D) { itemstack.damage(2, entityliving); } return true; } public int d_(ItemStack itemstack) { return 72000; } public int c() { return this.b.e(); } public String j() { return this.b.toString(); } public boolean a(ItemStack itemstack, ItemStack itemstack1) { return this.b.f() == itemstack1.getItem() ? true : super.a(itemstack, itemstack1); } public Multimap k() { Multimap multimap = super.k(); multimap.put(GenericAttributes.e.a(), new AttributeModifier(f, "Weapon modifier", (double) this.damage, 0)); return multimap; } } EnumHacheDeCombat.java package net.minecraft.server; public enum EnumHacheDeCombat { WOOD("WOOD", 0, 0, 59, 3.0F, 0.0F, 15), STONE("STONE", 1, 1, 131, 5.0F, 1.0F, 5), IRON("IRON", 2, 2, 250, 7.0F, 2.0F, 14), DIAMOND("DIAMOND", 3, 3, 1561, 8.0F, 2.5F, 10), GOLD("GOLD", 4, 0, 32, 12.0F, 0.0F, 22); private final int f; private final int g; private final float h; private final float i; private final int j; private static final EnumHacheDeCombat[] k = new EnumHacheDeCombat[] { WOOD, STONE, IRON, DIAMOND, GOLD}; private EnumHacheDeCombat(String s, int i, int j, int k, float f, float f1, int l) { this.f = j; this.g = k; this.h = f; this.i = f1; this.j = l; } public int a() { return this.g; } public float b() { return this.h; } public float c() { return this.i; } public int d() { return this.f; } public int e() { return this.j; } public Item f() { return this == WOOD ? Item.getItemOf(Blocks.WOOD) : (this == STONE ? Item.getItemOf(Blocks.COBBLESTONE) : (this == GOLD ? Items.GOLD_INGOT : (this == IRON ? Items.IRON_INGOT : (this == DIAMOND ? Items.DIAMOND : null)))); } } voilà bon jeu avec vos haches de combats
  9. Bien le bonjour ou le bonsoir à vous!Je suis Adrahel le fondateur de Bestcraft. Avec mon cher ami MrSyndicat, fondateur lui de même de Bestcraft, nous vous expliquons notre projets en cours et ayant déjà débuté. Pour vous expliquez ce projets totalement appart (il nous semble), nous allons procéder par étapes, pour éviter de vous perdre.-> Pour commencer Bestcraft, c’est quoi?Bestcraft est un serveur minecraft, qui a pour version la 1.8. Malheureusement les comptes crack ne sont pas acceptés. Le staff est évidemment à l’écoute pour parler, rigoler, parce que nous pensons que la communication et discuter avec nos joueurs reste importants. Le staff étant à l’écoute garde aussi un côtés plus « professionnel » en étant présent en cas de problèmes ou de difficultés.-> Le projet que le staff perçoit BestcraftLe serveur seras un serveur semi/RP faction qui auras un système de gestions d'argents, Pour gagner de l'argents et acheter des maisons/propriétés les joueurs auront accès à différents chose a vendre au shop .Des quêtes serons mise a disposition pour gagner de l'argents (dans le futur ce n'est pas prévu pour tout de suite ). Une fois un certain niveaux d'argents le joueur peut acheter des terrain entier ou il pourras avoir c'est propres créations -> Que cherchons nous?Actuellement le staff n'est pas complet, mais nous comptons sur vous pour venir sur le serveur à son ouverture. En attendant nous cherchons des builders,et des configurateurs ( développeur si vous l’êtes) avec un bon niveau. Pour cela nous demanderons un âge minimum de 15ans, mais si vous pensez avoir un bon niveau avec un âge inférieurs essayés toujours qui sait!Un CV:Présentation IRL :Prénom :Âge :Pays : Ville :Horaires / Disponibilités :Votre Présentation : Décrivez vous ici en quelques phrases , vos loisirs , votre sport , votre caractèreQuelles sont vos principales qualités et vos principaux défauts ? :Présentation In Game :Depuis combien de temps vous jouez à Minecraft ? : Cela va nous permettre de connaître votre niveau in game et ainsi avoir des précisions sur votre capacité à devenir staffVotre expérience sur Minecraft et éventuellement d'autres serveurs ? :Que comptez-vous apporter au serveur en tant que staff ? : Expliquez-nous en quelques mots ce que vous pensez pouvoir apporter aux serveur de part vos qualités et votre façon de faireQu'est-ce qui vous motive à devenir staff sur notre serveur ? :Pourquoi vous et pas un autre ? :Pourquoi notre serveur et pas un autre ? :Pensez-vous que votre candidature va être acceptée et pourquoi ? :Des screens de vos constructions:Pour votre CV, cela sera plus simple de me l'envoyer par mail a l'adresse suivante charles.delarue1@gmail.com et ajouter moi skype tug.life.rektLe staff de Bestcraft vous remercie d’avoir pris le temps de nous lire et vous souhaite une bonne fin de journée et bonne chance a vous.Avec nos encouragements,CordialementAdrahel et MrSyndicat
  10. Les GUIs dans Minecraft 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]- Salut tout le monde ! En ce moment la plupart des demandes d'aide ont rapport avec les GUI. Contrairement à ce que croient la plupart d'entre vous, ce n'est vraiment pas compliqué. Mais un tutoriel sera surement fort utile. Ce tutoriel fonctionne pour la 1.7, la 1.8, et surement (peut-être avec quelques modifications) pour la 1.6, où même peut-être pour la 1.5, ou moins. -[sOMMAIRE]- 1] Préparation 2] Les éléments de GUI 3] Les GUI Containers 4] Créer votre propre objet Gui (composant) 5] Codes et astuces ! 1] Préparation Donc, premièrement, pour créer un menu, il faut créer un GuiScreen, pour ça, il faut créer notre classe qui extends de GuiScreen : public class MonGui extends GuiScreen { } C'est si simple que ça ! Donc, il y a deux méthodes importantes, les voicis : initGui() : @Override public void initGui() { super.initGui(); } Cette méthode n'est exécutée que lorsque le Gui est créé, (quand le Gui s'affiche ou que la fenêtre est redimensionnée) drawScreen(int mouseX, int mouseY, float partialTicks) : @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { super.drawScreen(mouseX, mouseY, partialTicks); } Le nom des arguments parlent d'eux mêmes ! Cette méthode est exécutée le plus souvent possible (à chaque tour de MC, pour info si les FPS sont à 65 par exemple, cette méthode sera exécutée 65 par seconde !) Voilà ! C'est tout pour cette préparation ! 2] Les éléments de GUI Donc, on va voir les différents éléments de Gui et comment les utiliser ! GuiButton : Pour créer un bouton il suffit de l'enregistrer dans la liste de bouton dans la méthode initGui, comme ceci : this.buttonList.add(new GuiButton(x, y, WIP)); 3] Les GUI Containers 4] Créer votre propre objet Gui (composant) 5] Codes et astuces WORK IN PROGRESS
  11. [1.7.x] Créér une armure

    Bonjour a tous, pour commencer, désolé de la mise en page mais je n'ai jamais fait de tutoriel ici. Aujourd'hui, nous allons créer une nouvelle armure. Le matériel : - MCP ( Minecraft Coder Pack ) de la version que vous voulez - Eclipse - Un ordinateur ... Ajout de l'armure : Tout d'abord, rendez-vous dans la classe Item.java Rendez-vous à la fin de la déclaration des items Ensuite, ajoutez ce code : ! Ajoutez le dans Item.java ! itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.MINERAIS, 5, 0)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.MINERAIS, 5, 1)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.MINERAIS, 5, 2)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.MINERAIS, 5, 3)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); Maintenant , ajoutons nos armures dans Items.java public static final ItemArmor NOM = (ItemArmor)Item.itemRegistry.getObject("NOM"); public static final ItemArmor NOM = (ItemArmor)Item.itemRegistry.getObject("NOM"); public static final ItemArmor NOM = (ItemArmor)Item.itemRegistry.getObject("NOM"); public static final ItemArmor NOM = (ItemArmor)Item.itemRegistry.getObject("NOM"); Là, votre armure est créée mais elle n'a pas encore de durabilité La durabilité de votre armure : Donc, rendez-vous dans : ItemArmor.java En dessous de celle du diamant, ajoutez cette ligne : MINERAIS("MINERAIS", 8, 50, new int[]{8, 13, 11, 8}, 6); Vous pouvez remarquer qu'il y a une erreur. Pour y remédier, il suffit de remplacer CA : DIAMOND("DIAMOND", 4, 33, new int[]{3, 8, 6, 3}, 10); PAR CA : DIAMOND("DIAMOND", 4, 33, new int[]{3, 8, 6, 3}, 10), ! Ajoutez toujours votre minerais en dernier ! Ici, on va s'occuper de la durabilité et de la résistance des objets MINERAIS("MINERAIS", 7, 50, new int[]{8, 13, 11, 8}, 6); Remplacez MINERAIS par le nom de votre minerais ! TOUJOURS EN MAJUSCULES ! Le 7 représente son ordre (si le diamant est 4 alors votre minerais devient 5) Là, le 50 représente la durabilité de l'armure Le 8 est la résistance du casque Le 13 est la résistance du plastron Le 11 est la résistance du pantalon Le 8 (le dernier) est la résistance des bottes Le 6, c'est l'enchantement de l'armure (plus c'est bas, plus les enchantements sont rares) Mon exemple : SAPPHIRE("SAPPHIRE", 8, 55, new int[]{9, 18, 17, 6}, 9); Maintenant, vous pouvez remplacer dans votre code le '.MINERAIS' par '.VOTREMINERAIS' Comme ceci : itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.SAPPHIRE, 5, 0)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.SAPPHIRE, 5, 1)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.SAPPHIRE, 5, 2)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); itemRegistry.addObject(ID, "NOM", (new ItemArmor(ItemArmor.ArmorMaterial.SAPPHIRE, 5, 3)).setUnlocalizedName("NOM").setTextureName("NOM-TEXTURE")); Donner une texture quand l'armure est sur vous : Petite astuce : Si vous ne trouvez pas le RenderBiped.java, crivez le puis sélectionnez le puis -> Clique droit -> Open declaration Pour finir , rendez-vous dans la classe : RenderBiped.java Là, vous voyez cette ligne ( normalement ) private static final String[] bipedArmorFilenamePrefix = new String[] {"leather", "chainmail", "iron", "diamond", "gold"}; A la fin, mettez une virgule ( , ) puis entre ( " " ), le nom de votre armure Exemple : Si vos textures d'armure s'appellent : Sapphire_layer_1 et Sapphire_layer_2 Entre les ( " " ) mettez : Sapphire Exemple : private static final String[] bipedArmorFilenamePrefix = new String[] {"leather", "chainmail", "iron", "diamond", "gold", "sapphire"}; Et voilà, vous avez votre armure ! Il ne vous reste que a mettre vos textures ! Infos supplémentaires : En cas de non-compréhension , ajoutez moi sur skype , je vous aiderai comme je peut Mon skype : Anthony.delfleur
  12. [1.7.x] Un bloc sauteur !

    Esque vous vouliez toujours avoir un bloc comme un trampoline ? alors ce tuto est fais pour vous Un Bloc sauteur ! -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un bloc qui vous fais sauter ! -[sOMMAIRE]- 1]Création du Bloc 2]Création du BlocSauteur.java 3]CraftBukkit 1]Création du Bloc Bon pour crée un bloc on fais comme d'habitude ce n'est pas nouveau il suffis de mettre dans Block et Blocks : Block.java blockRegistry.addObject(ID, "NOM_DU_BLOC", (new BlockSauteur()).setHardness(1.0F).setStepSound(SON).setBlockName("NOM_DU_BLOC").setBlockTextureName("TEXTURE_DU_BLOC")); Blocks.java public static final Block NOM_DU_BLOC = (Block)Block.blockRegistry.getObject("NOM_DU_BLOC"); 2]Création du BlockSauteur.java Ici on va faire le BlockSauteur.java pour que le joueur sois vachement plus rapide quand il marche sur se Bloc pour ça on va commencer par crée notre class sans rien dessus : package votre_package; public class BlockSauteur{ } ensuite on va déja rajouter un extends du Block.java,mettre un nouveau public ou on va rajouter un material et un emplacement dans le creativetab qui sera celui des Blocs package votre_package; import net.minecraft.block.Block;import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); //creative tab, on met le bloc dans l'onglet bloc du creatif } } Maintenant il faut ajouter certaine fonction par exemple pour entrer en contact avec le bloc pour qu'il nous fasse sauter. Nous somme obligé mettre minimum 1 pixel pour entrer dedans voici comment on fais : public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1, int par2, int par3, int par4) { return AxisAlignedBB.getBoundingBox((double)par2, (double)par3, (double)par4, (double)(par2 + 1), (double)((float)(par3 + 1) - 0.125F), (double)(par4 + 1)); //ici on dit que on peu se faire aspirer de 1 pixel par le bloc } et ensuite il suffis de mettre le saut : public void onEntityCollidedWithBlock(World par1, int par2, int par3, int par4, Entity par5) { par5.motionY += 2D; } Alors là on peu remarqué que le joueur saute que si on saute sur le bloc se que nous ne voulons pas alors nous alons rajouter cette ligne par5. par5.ticksExisted = 10; //tout les 10 ticks il saute maintenant ça saute tout le temps mais on perd des dégâts de chute donc on va éviter ça on ajoute : par5.fallDistance *= 0D; // on perd 0 dégats de chute en retombant sur le bloc maintenant si on veut rajouter un bruit de piston : par1.playSoundAtEntity(par5, "tile.piston.in", 1.0F, 1.0F); // bruit de piston joué a l'entity se trouvant a proximité a présent notre bloc est bon mais vous allez me dire comment on fais pour sortir du bloc sans perdre des dégats de chute c'est très simple nous alons entrer un "if" if(par5.onGround && par5.isSneaking()) // si le joueur sneak sur le sol alors { par5.motionY += 0; // fais sauter le joueur a 0 bloc de haut par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } else //sinon { par5.ticksExisted = 10; par5.motionY += 2D; fais sauter le joueur par1.playSoundAtEntity(par5, "tile.piston.in", 1.0F, 1.0F); // bruit de piston joué a l'entity se trouvant a proximité par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } se qui nous donne au final : package votre_package; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovementInput; import net.minecraft.world.World; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); } public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1, int par2, int par3, int par4) { return AxisAlignedBB.getBoundingBox((double)par2, (double)par3, (double)par4, (double)(par2 + 1), (double)((float)(par3 + 1) - 0.125F), (double)(par4 + 1)); } public void onEntityCollidedWithBlock(World par1, int par2, int par3, int par4, Entity par5) { if(par5.isSneaking()) // si le joueur sneak alors { par5.motionY += 0; // fais sauter le joueur a 0 bloc de haut par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } else //sinon { par5.ticksExisted = 10; par5.motionY += 2D; fais sauter le joueur par1.playSoundAtEntity(par5, "tile.piston.in", 1.0F, 1.0F); // bruit de piston joué a l'entity se trouvant a proximité par5.fallDistance += 0D; // on perd 0 dégats de chute en retombant sur le bloc } } } 3]CraftBukkit pour craftbukkit je vous donne tout c'est la même chose Block.java REGISTRY.a(ID, "NOM_DU_BLOC", (new BlockSauteur()).c(1.0F).a(k).c("NOM_DU_BLOC").d("TEXTURE_DU_BLOC")); Blocks.java public static final Block NOM_DU_BLOC = (Block) Block.REGISTRY.a("NOM_DU_BLOC"); et enfin le BlockSauteur.java (1.7.2) package net.minecraft.server; import net.minecraft.server.AxisAlignedBB; import net.minecraft.server.Block; import net.minecraft.server.CreativeModeTab; import net.minecraft.server.Entity; import net.minecraft.server.Material; import net.minecraft.server.World; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.STONE); this.a(CreativeModeTab.; } public AxisAlignedBB a(World world, int i, int j, int k) { return AxisAlignedBB.a().a((double) i, (double) j, (double) k, (double) (i + 1), (double) ((float) (j + 1) - (float) 0.125F), (double) (k + 1)); } public void a(World world, int i, int j, int k, Entity entity) { if(entity.isSneaking()) { entity.motY += 0D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute } else { entity.motY += 2D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute entity.ticksLived = 10; // on saute tout les 10 ticks } } } BlockSauteur.java (1.7.10) package net.minecraft.server; import net.minecraft.server.AxisAlignedBB; import net.minecraft.server.Block; import net.minecraft.server.CreativeModeTab; import net.minecraft.server.Entity; import net.minecraft.server.Material; import net.minecraft.server.World; public class BlockSauteur extends Block { public BlockSauteur() { super(Material.STONE); this.a(CreativeModeTab.; } public AxisAlignedBB a(World world, int i, int j, int k) { float f = 0.125F; return AxisAlignedBB.a((double) i, (double) j, (double) k, (double) (i + 1), (double) ((float) (j + 1) - f), (double) (k + 1)); } public void a(World world, int i, int j, int k, Entity entity) { if(entity.isSneaking()) { entity.motY += 0D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute } else { entity.motY += 2D; // on fais sauter le joueur entity.fallDistance += 0D; // on perd 0 dégâts de chute entity.ticksLived = 10; // on saute tout les 10 ticks } } } Et voilà j'espère que ça vous a plus bon jeu avec votre nouveau bloc
  13. [1.7.X] Créer un KeyBinding !

    Créer un KeyBinding ! Cette uvre est mise à disposition selon les termes de laLicence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé. Tout partage implique que vous citiez l'auteur original. -[INTRODUCTION]- Salut à toi, cher lecteur ! Aujourd'hui je vais vous apprendre à créer un KeyBinding ! Ce KeyBinding servira à créer une touche pour faire /help, mais on peut effecteur beaucoup d'autres choses. -[SOMMAIRE]- 1]Coder pas à pas 2]Résultat final 1]Coder pas à pas Définition d'un KeyBinding: Pour simplier la chose, un KeyBinding est une touche de Minecraft. Développement: Commencez par lancer Eclipse avec votre workspace MCP ! Une fois ceci fait, dans le Package Explorer, trouvez le package net.minecraft.client.settings.. Vous devriez avoir deux classes: GameSettings.java KeyBinding.java Ouvrez la première et ajoutez y ceci, qui vous permettra de stocker votre bouton: public KeyBinding keyBindTuto; Cherchez ensuite cette fonction: public GameSettings(Minecraft par1Minecraft, File par2File) Puis ajoutez ceci à l'intérieur. Ici on déclare notre touche, son nom, la touche du clavier par défaut et sa catégorie. this.keyBindTuto = new KeyBinding("/HELP", 33, "§6Tutoriel Ironcraft"); //Le numéro 33 correspond à la touche F. //Le code fonctionne comme ci dessous: this.keyBindTuto = new KeyBinding("NOM AFFICH DANS LES OPTIONS", NUMERO DE LA TOUCHE, "NOM DE LA CATGORIE"); La dernière étape est de chercher cette ligne, qui nous permet d'ajouter notre touche à la liste des KeyBindings dans les options. Si vous oubliez de faire ceci, le jeu crashera quand vous ouvrirez les options. this.keyBindings = (KeyBinding[])((KeyBinding[])ArrayUtils.addAll(new KeyBinding[] {this.keyBindAttack, this.keyBindUseItem, this.keyBindForward, this.keyBindLeft, ... Et d'y ajouter ceci: this.keyBindUseItem, this.keyBindTuto, this.keyBindForward, ... Et voilà ! Votre touche est créée, mais ne sert encore à rien.. On va remédier à ça ! Trouvez ce morceau de code dans la classe Minecraft.java, dans le package net.minecraft.client, qui nous servira d'exemple: Ce code sert à définir l'action effectuée lorsqu'on appuie sur la touche en question. while (this.gameSettings.keyBindDrop.isPressed()) { this.thePlayer.dropOneItem(GuiScreen.isCtrlKeyDown()); } Copions le, puis modifions le en: while (this.gameSettings.keyBindTuto.isPressed()) { //Faire effectuer l'action ici.. } Pour notre commande /help, remplissons le de cette manière: while (this.gameSettings.keyBindTuto.isPressed()) { this.thePlayer.sendChatMessage("/help"); //Permet d'envoyer un message dans le chat, sans même ouvrir celui du joueur . } C'est terminé ! Votre touche est désormais parfaitement fonctionnelle ! clatez-vous avec votre nouvelle touche ! 2]Résultat final Merci d'avoir lu ce tutoriel ! Laissez un avis, ça me ferait plaisir !
  14. Factionacraft - Server Minecraft Moddé Multimode I - Présentation du projet Factionacraft c'est tout d'abord une team dont j'en suis le fondateur. Nous avons un but unique créer un vrai serveur minecraft avec le meilleur de minecraft et bien codé. Minimiser les lags, pour cela nous avons adopter le projet de nallar que vous pouvez retrouver sur github, sont projet a pour but d'utiliser la majorité des coeur du processeur, ( technologie du mulithreading ), en favorisant le multithreading nous limitons les lags. Eviter tout type de triche sur le jeu aussi bien que les Hacked Client que le détournement des paramètres du jeu afin de facilité l'avancement, j’entends par ceci les texture pack Xray, ou les gamma pour le jour en pleine nuit. Pour cela nous avons développer un Launcher Obligatoire permettant par checksum et haschage d’éviter de contourner le launcher et donc éviter totalement le cheat. Un serveur plus interactif, j’entends par ceci pas mal de rajout de GUI effectivement le joueur ce perd facilement dans les commandes, pour les gros modes de jeux une commande principal ouvre un menu interactif facilitant l'interaction. Et bien sure offrir le meilleur de minecraft. II - Le meilleur de minecraft ? Tout d’abord serveur moddé : Mocreature : rajoute plein de mobs différent aquatique, animaux (apprivoisable), monstres Tinker construc : permet la création d'outils améliorer grâce a l'utilisation de four géant Natura et Pam's : ajoute tout type d'arbres fruitier, nouvelle nourriture et de Vrai Nuage Carpenters Block : rajoute plein de block pour build en finesse Secret Room : rajoute des block spéciaux vous permettant de créer des passage secret Not Enough Item : permet de voir les crafts de tout Item/block du jeu Et bien d'autre tous a découvrir Ensuite serveur multimode: Pvp-Fac : grâce aux différents mods le pvp-faction est d'autant plus impressionnant Freebuild : un freebuild avec un système de gestion amélioré Hardcore : hardcore en 2vie une dans le monde normal et une dans le nether ( une seconde chance ) Roleplay : assassin's creed est envisager mais d'autre propositions peuvent être soutenue Mini-Jeux : tous les incontournables ( tower, uch, hunger, spleef, run, sheep wars, et bien d'autre) Skyworld : vous êtes sur une îles à vous de la développer afin de monter le niveau SkyWars : célèbre pvp en ce procurant son stuff sur les différentes îles flottantes World-Creation : un freebuild a thème pour faire la plus belle map de minecraft III - Nous recrutons : Nous recrutons : Buildeur et terraformer : à l'heure actuelle il y a encore beaucoup de map à créer aussi bien des spawns comme des arènes pour les différents mini-jeux. Codeur : il y a encore quelque plugins à créer aussi bien pour le contrôle des joueurs mais aussi leur interactions mais surtout les mini-jeux sont encore à créer. Donateur : bien sure rien ai gratuit ou en tout cas pas éternellement, le serveur aujourd'hui est héberger gratuitement tout comme le site, mais je suis obliger de migrer le serveur d’hébergeur en hébergeur donc un coup de pousse serais le bienvenu. Gfx / Vfx nous avons besoin de vous pour le trailer du serveur et aussi filmer l'avancement du projet Nous cherchons aussi à développer des partenariat à intérêt mutuel, nous avons besoin aussi de Youtubeur pour faire connaître notre projet. Je rajoute que ce projet est déjà commencer cela vas bien faire 2ans, étant donner toute les contraintes liés au mods de leur compatibilité entre eux et aussi avec bukkit, l'avancement du site, le launcher enfin bien créer et l'avancement du serveur, j'estime que le projet est compléter a ~60%, j'aimerais tant que des passionnée ayant un intérêt avec le projet nous rejoigne pour finir les dernier 40%, donc n’hésiter pas a nous contacter, nous serons heureux de répondre à vos questions. Je vous invite a visiter mon site pour télécharger le launcher et pouvoir vous faire une idée du projet. IV - Contact : Bien sure il y a déjà ce topic :p Mais aussi nous somme joignable par skype: Fondateur fhudier ChefBuildeur axdu22 Pour plus d'information contacter nous et vous pouvez aussi visiter notre site : http://factionacraft.raidghost.com/ Merci de votre attention. L'Équipe Factionacraft
  15. A supprimer pour une raison personnelle. UtoziaMC.jar
  16. [Launcher] Développeur Java

    Services - Vente de launcher ! Qui suis-je? Bonjour la communauté d'IronCraft et bienvenus à vous! Je commence par me présenter. Je m'appelle Amine en réalité et j'ai 16 ans. Comme vous l'aurez vus je suis Arabe (mon nom) et précieusement d'origine Marocain et j'habite au Canada. Cependant, je suis un petit Youtubeur de 500 abonnés(e) connu sous le nom de ByVeeZia. J'ai commencé Java depuis environ 2 ans. Pourquoi je vends des launchers? Je vends des launchers afin d'acheter un hébergeur Minecraft pour mon serveur sous launcher. Que contiennent les launchers? Un système de mise à jour rapide et simplicité pour le client. Un bootstrap (Pour les mises à jour au besoin). Un launcher personnalisable de A à Z. Quels sont les prix pour les launchers? Les launchers que je créé sont fait de A à Z... Je demande une rémunération de 7 euros, car je passe du temps. Comment me contacter? Pour me contacter, rien d'assez difficile! Ajoutez-moi sur Skype (live:aminektn_1). Important ! Je tiens à préciser que je ne fais pas le design pour vos launchers! Vous devez avoir un hébergeur web pour pouvoir stocker vos données! Je remercie Litarvan pour avoir présenter un tutoriel "Comment crée un launcher de A à Z". Cordialement, ByVeeZia
  17. 『 Bonjour a tous 』 ➢ C'est partit ^_^ Avant de commencer je pense qu'il est important de présenter le projet. 〘=============================〙 Projet : Serveur Moddé Publique. AntiPayToWin : PAS DE BOUTIQUE NON ! Il n'y a pas de boutique sur notre site rien de payant ! Mais par contre vous pourrez faire des dons ou acheter des cosmétiques via la garde de robe (costume d'armures, armes, particules, ...) vous ne trouverez rien qui puisse influencer le gameplay achetable via l'argent réelle sur notre site ! Mais comment être sur que sa va marcher ? Je le dis haut et fort et je remercie NEOMANCIA une infrastructure multigaming nous permettant de réaliser ce projet. Machine : OVH SAS Dédié a 32Go avec Intel XEON E3 2.4Ghz / Possibilité d'upgrade la machine et temps avant expiration : une bonne dizaine d'année. Etat actuel : En construction IG Date d'ouverture : ALPHA-Fermer le 10 Décembre 2016 Staff actif : 12 Pourquoi suis je la ? : Je cherche en Urgence = Des Développeurs (java) et Builder voir 2, 3 modos. Projet en lui même : C'est un serveur sur un thème HunterZ revisiter dans un système MMORPG c'est a dire un monde moderne avec une dose de fantastique ;) Motivations : Nous réalisons se projet par passion et parce que nous le voulons rien ne nous force a faire ou a créer. J'ai créé ce serveur car j'ai toujours voulu retrouver sur mon jeux favoris ce que je ne pouvais faire en réalité c'est pour cela que je me suis lancer dans ce grand projet. Cela fait 8 long mois que j'apprend le développement mais je n'est aucun talent pour ce qui est en jeu c'est pour cela que j'ai besoin de vous. Vous y gagner quoi ? : Nous ne payons pas, ce projet reste malgré tout une passion et je ne compte pas déboursés dans des machine (personne payés) a faire ceux pourquoi ils sont payés dans la contrainte ou pour des intérêts celons moi malsaine (aaah l'argent). Donc en aucun cas nous payons des personnes pour travaille sur notre projet donc team de build et developpeur payant laisser tomber parter d'ici. Les YouTuber : Vous êtes YouTuber et curieux ? Votre chaîne avance a petit pas mais vous avez peu d'abonnés ou un grands nombre. Venez vous star YouTube pour nous chacun d'entre vous a une chance. Même si vous avez 2 ou 50 abonnés tant que vous y mettez du votre nous vous soutiendrons. 〘=============================〙 Me contacter : Skype : dieuz.angemorteme1 TS : ts3.neomancia.fr eMail : hundarium@neomancia.fr Site (en Dev) : hundarium.neomancia.fr Pour tout contenu comme fautes ou autres merci de l'indiquer calmement. Merci a tous ^_^ Sujet bouger : http://forum.ironcraft.fr/topic/7827-〖✔〗◢◤-hundarium-◥◣-►-moddé-►-hunterz-mmorpg-semi-rp/
  18. 『 Bonjour a tous 』 ➢ C'est partit ^_^ Avant de commencer je pense qu'il est important de présenter le projet. 〘=============================〙 Projet : Serveur Moddé Publique. AntiPayToWin : PAS DE BOUTIQUE NON ! Il n'y a pas de boutique sur notre site rien de payant ! Mais par contre vous pourrez faire des dons ou acheter des cosmétiques via la garde de robe (costume d'armures, armes, particules, ...) vous ne trouverez rien qui puisse influencer le gameplay achetable via l'argent réelle sur notre site ! Mais comment être sur que sa va marcher ? Je le dis haut et fortet je remercie NEOMANCIA une infrastructure multigaming nous permettant de réaliser ce projet. Machine : OVH SAS Dédié a 32Go avec Intel XEON E3 2.4Ghz / Possibilité d'upgrade la machine et temps avant expiration : une bonne dizaine d'année. Etat actuel : En construction IG Date d'ouverture : ALPHA-Fermer le 10 Décembre 2016 Staff actif : 12 Pourquoi suis je la ? : Je cherche en Urgence = Des Développeurs (java) et Builder voir 2, 3 modos. Projet en lui même : C'est un serveur sur un thème HunterZ revisiter dans un système MMORPG c'est a dire un monde moderne avec une dose de fantastique ;) Motivations : Nous réalisons se projet par passion et parce que nous le voulons rien ne nous force a faire ou a créer. J'ai créé ce serveur car j'ai toujours voulu retrouver sur mon jeux favoris ce que je ne pouvais faire en réalité c'est pour cela que je me suis lancer dans ce grand projet. Cela fait 8 long mois que j'apprend le développement mais je n'est aucun talent pour ce qui est en jeu c'est pour cela que j'ai besoin de vous. Vous y gagner quoi ? : Nous ne payons pas, ce projet reste malgré tout une passion et je ne compte pas déboursés dans des machine (personne payés) a faire ceux pourquoi ils sont payés dans la contrainte ou pour des intérêts celons moi malsaine (aaah l'argent). Donc en aucun cas nous payons des personnes pour travaille sur notre projet donc team de build et developpeur payant laisser tomber parter d'ici. Les YouTuber : Vous êtes YouTuber et curieux ? Votre chaîne avance a petit pas mais vous avez peu d'abonnés ou un grands nombre. Venez vous star YouTube pour nous chacun d'entre vous a une chance. Même si vous avez 2 ou 50 abonnés tant que vous y mettez du votre nous vous soutiendrons. 〘=============================〙 Me contacter : Skype : dieuz.angemorteme1 TS : ts3.neomancia.fr eMail : hundarium@neomancia.fr Site (en Dev) : hundarium.neomancia.fr Pour tout contenu comme fautes ou autres merci de l'indiquer calmement. Merci a tous ^_^
  19. Tout sur les blocs

    Tout sur les blocs ! 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]- Bonjour à tous ! Dans ce tutoriel, nous allons explorer les méandres des objets les plus importants dans Minecraft : les blocs ! -[sOMMAIRE]- 1] Mais au fait, c'est quoi un bloc ? 2] Bases du système 3] Créer un bloc A] Un bloc simple B] Les textures et les noms C] Les méta-données D] Quelques méthodes utiles E] Ajouter un bloc avec un rendu complexe 4] Astuces pratiques A] Créer un minerai B] Créer un bloc orientable C] Créer une plante D] Créer un onglet dans le menu créatif E] La génération 5] Entités de blocs (TileEntities) 6]Astuces pratique 2 A]Créer une nouvelle table de craft B]Créer un four C]Créer un coffre 1] Mais au fait, c'est quoi un bloc ? Cette méthode statique est appelé lors du lancement du client Minecraft (depuis le constructeur Minecraft() Bootstrap.func_151354_b()). C'est ici que sont instanciés tous les blocs. Et pour répondre à notre question de départ, on pourra dire simplement qu'un bloc est une instance de la classe Block (captain obvious). 2] Bases du système C'est donc depuis cette classe (grâce au modifieur public), que nous pourrons récupérer les instances de nos blocs précédemment déclarés dans Block. Comme nous l'avons dit précédemment, un bloc est une instance d'une classe fille de Block. Si vous vous rendez dans cette dernière, vous y verrez beaucoup de méthodes, pour la plupart vide. La majorité d'entre elles correpond à des évenements qui surviennent en jeu (quand un joueur casse un, qu'il marche dessus, qu'il clique dessus, etc.). Nous reviendrons plus en détails sur ces méthodes dans la partie 3C. Chaque bloc a donc sa propre classe, et ce pour permettre un paramétrage fin. En résumé, les redéfinitions de méthodes (overrides) sont le nerf de la guerre pour créer des blocs ! 3] Créer un bloc A] Un bloc simple B] Les textures et les noms C] Les méta-données D] Quelques méthodes utiles E] Ajouter un bloc avec un rendu complexe 4] Astuces pratiques Nous voilà maintenant arrivés à la partie que je pense que vous attendiez le plus ! Avant de rentrer dans le vif du sujet, je voudrais quand même préciser quelque chose : libre à vous de copier « brutalement » les codes présentés ici sans aucunement chercher la compréhension, mais je vous conseille d'abord de lire ce qui a été dit au dessus. A] Créer un minerai B] Créer un bloc orientable C] Créer une plante Bientôt... E] La génération 5] Entités de blocs (TileEntities) Par défaut, un bloc de monde n'est pas une entité, en ce sens qu'il ne dispose pas des fonctionnalités utiles de celles, comme par exemple la sauvegarde d'informations spécifiques via NBT. Mais certains blocs aux fonctionnalités particulières on besoin de ces fonctionnalités, comme par exemple les coffres ou les dispensers. Alors, quand on les pose dans un monde, il ne sont plus « seulement » des cubes, mais aussi des entités qui intéragissent avec leur environnement. Voyons comment créer ça ! A] Créer une TileEntity B] Les méthodes disponibles C] Lui attribuer un rendu spécial
  20. [MMORPG] WorldenCraft - Nous recrutons !

    " Quand souffle le vent sombre, vient l’âge de guerre. Ainsi l’homme se retourne contre les dieux. Le conflit débutant, les épées se remuant, l’inéquitable guerre poussant à acharner les prodigieux contre les rebelles, malgré eux. " Ce sont sur ces brefs mots que commence la présentation de WorldenCraft. C'est un serveur de type MMORPG (Massively Multiplayer Online Role Playing Game), qui offre un gameplay unique en son genre pour rendre votre immersion encore plus palpitante dans l'univers de Rive-Claire. N'attendez pas ! Venez aiguisez votre épée, enfilez votre plastron, et venez combattre dans les terres hostiles occupant un mal calamiteux, qui règne sur l'étendu territoire. - Préambule - À l’origine, était Oracle. Grand maître du temps. Il vint à décider de mettre au monde des dieux, trois. Trois dieux, régnant sur diverses allégories. Le premier fut Fatin, baptisé dieu du savoir, le second fut Pétron, dieu de la vie, pour s’en suivre, le troisième dieu fut celui de la stratégie. Ainsi, la grande lignée des dieux d’Oracle fut fondée pour gouverner sur ce monde. Le monde des créatures ne fut alors qu’un commencement, un commencement dans lequel créatures et dieux seraient liées, comme la chair et le sang. Les dieux voulurent ce qu’il existe de mieux pour enrichir le monde de bonté, de savoir, et d’amour. Les premières créatures, étant dotées d’une intelligence complexe, commencèrent à exploiter les premières ressources que le monde pouvait leur offrir. Le monde était alors vaste, nourrit de ressources riches et variées, c’était alors un monde nouveau. Les décennies passèrent, et le nombre de créatures haussèrent avec leurs savoirs. Ainsi, celles-ci s’installèrent partout dans le monde, construisant des magnificences, enjolivant le monde à leurs images. En plus de leurs immortalités, les créatures prospérèrent dans la sagesse. Les créatures sculptèrent le monde à leurs façons, creusant des trous aussi grand que les montagnes, rasant des forêts pour construire leurs lieux d’habitations. Leurs richesses furent incroyablement dense, ils possèdèrent toutes les ressources qui dormaient sous le vaste lit de verdure. Les siècles passèrent, laissant derrière eux l’apogée du monde, car jusqu’alors tout fut parfait. Mais, avec la richesse des créatures, les dieux se furent oubliés. Les dieux ne dominèrent point le monde, malgré eux. Le commencement des années sombres commença alors à voir le jour. Il fallut équaliser le monde, pour rappeler aux créatures qu’on ne devint point dieu, mais qu’on le fut dès la naissance. Ainsi, les dieux décidèrent de punir les créatures en abattant une nouvelle loi sur le monde : Commença la naissance de la mort. Necra fut la première déesse, la déesse de la mort. Soudain, les créatures devinrent mortelles. Les premiers morts assombrissèrent le sol de ce monde. Les créatures comprenèrent alors qu’elles ne régnaient guère sur un tel monde. Plus grand existait. Les créatures exhausèrent les satisfactions des dieux en les vénérants. Les dieux furent ravis, mais ce fut après cela, que les dieux comprenèrent qu’outre les lois portées sur les créatures, ils existaient hélas des lois portées sur les dieux : Un dieu ne peut arrêter un autre dieu. Le nombre de morts ne put s’estomper, les créatures devèrent supporter le fardeau qui leurs fut donné. Les créatures ne surent survivre face à cela, tout ne faisait que s’enchaîner ; la maladie, la vieillesse, ne furent qu’accroître le nombre de mort. Les dieux ayant pitié des créatures voulèrent estomper la mort, mais la mort avait une déesse. Une déesse qui ne pouvait s’abstenir de faire régner la tristesse causée par la perte des créatures. Les créatures, perdues, construisèrent alors des édifices de vénérations monumentales pour obtenir le pardon divin. Les dieux hélas ne purent arrêter cette calamité. Les créatures, étant à la recherche du lieu sacré, lieu où s’y situe le Mont-Divin, passerelle qui lie terre et cieux, construisèrent leurs plus grands édifices autour. Les créatures remplissèrent la région. Mais, certaines créatures commençèrent à douter de la bonté divine. Cette partie des créatures décidèrent de profaner les monuments consacrés aux dieux, au risque de décevoir l’autre partie des créatures. C’est alors que le monde se divisa. Les dieux pardonnèrent les faits causés par une partie des créatures. Jusqu’à ce qu’un roi, visant ce qu’il y a de plus haut, décida de s’attaquer à l’édifice le plus sacré qui soit, le Mont-Divin. Il voulu corrompre le chemin qui mène créatures aux dieux. Il rassembla l’armée la plus massive jamais réunie afin d’en venir à ses attentes. Mais l’autre partie des créatures s'interposa. C’est alors, que la première grande bataille fut lancée. - Gameplay - WorldenCraft possède un gameplay unique confectionné par nos mains d'expert. Plusieurs fonctionnalités comme : Un dialogue immersif ! Un nouveau genre de dialogue dont le but est de faire plonger le joueur dans son rôle de personnage : à l'aide d'un système de choix de réponse. Un menu fonctionnel ! Simple d'utilisation : Ce menu permet au joueur de lui faciliter le clique lors d'une manœuvre. Unissez-vous ! Regroupez vos armes : ensemble, vous êtes plus fort pour combattre dans ce monde hostile. - Univers - Rive-Claire est la région du déroulement de l'histoire principale. Quelques aperçus : La ville de départ ! Il faut bien commencer quelque part. Arklëmen est la ville du départ. Des constructions qui avancent ! Le genre de construction confectionnée par nos bâtisseurs. Des textures uniques ! Un exemple de model 3D travaillé pour être implanté dans le jeu. - Recrutement - Imaginez bien qu'un tel projet nécessite de mains d’œuvres conséquentes. Ainsi étant, de nombreux postes sont à promouvoir. Nous avons concocté des barres de progressions indiquant l'avancement du serveur. Poste à promouvoir : Développeur : Qualifié en codage informatique, il maîtrise le Java, le JavaScript, le HTML ou encore le CSS. Constructeur : C'est un professionnel en matière de construction, il pose des blocs mieux que personnes. Édificateur : Il fabrique des merveilles grâce à des logiciels de création de carte (tels que World Machine, World Painter). Modélisateur 3D : Il conceptualise de magnifiques modélisations en trois dimensions avec des logiciels de modélisations (tels que Cubik Pro, Cinema 4D, 3Ds Max, Maya). Créateur de texture : Il créé des textures de façon à les incorporer dans le jeu. Graphiste : À l'aise dans l'art du dessin, il concocte des merveilles sous forme d'image grâce à des logiciels de montage de photos (tels que Photoshop, Sketchbook). État d'avancement : ------ Développement ------ Construction ------ Histoire ------ Texture Ce sont sur ces explications que ce poste de présentation et de recrutement du serveur de WorldenCraft se termine. Nous tenons à remercier toute l'équipe qui compose le serveur, ainsi que vous chers lecteurs ! On se retrouve pour de nouvelles informations. Cordialement & amicalement, L'Équipe de WorldenCraft. Adresse mail : worldencraft@gmail.com
  21. MineMarket - Vendez au bon endroit

    Rejoignez-nous : http://minemarket.fr/
  22. vous avez toujours eu envis d'un bâton/sceptre de soin ? et bien se tuto est fait pour vous Bâton/Sceptre de Soin -[iNTRODUCTION]- Bonjour à tous ! Dans ce tutoriel, nous allons faire un Bâton/Sceptre de soin -[sOMMAIRE]- 1]Création de l'item 2]Création du BatonDeSoin.java 3]CraftBukkit 1]Création de l'item la création d'un item c'est pas quelque chose de compliqué il suffis de faire comme ceci : Item.java itemRegistry.addObject(ID, "NOM", (new BatonDeSoin().setUnlocalizedName("NOM").setTextureName("NOM_TEXTURE"))); Items.java public static final Item NOM = (Item)Item.itemRegistry.getObject("NOM"); 2] Création du BatonDeSoin.java alors ici on va commencer par crée notre class normalement vous aurez ceci : package votre_package; public class BatonDeSoin { } alors tout de suite nous alons faire un extends sur Item et donc ajouter un maxStackSize une Durabilité et un emplacement dans le créatif : package votre_package; public class BatonDeSoin extends Item { public BatonDeSoin() { this.maxStackSize = 1; // on lui met un stack de 1 this.setMaxDamage(15); // on met 15 de durabilité this.setCreativeTab(CreativeTabs.tabCombat); // on le met dans le tab Combat du créatif } } une fois ça fais nous allons ajouter une fonction que quand on fais click droit ça fais une action : public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { return par1ItemStack; } dans cette fonction nous alons ajouter un effect de potion qui est le heal et on va aussi déclarer la durabilité : public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { par1ItemStack.damageItem(1, par3EntityPlayer); // on déclare la durabilité par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 0)); // on met un effet de heal 1 pendant 1 tick return par1ItemStack; } et puis on rajoute de la 3D : public boolean isFull3D() // on met de la 3D a l'item { return true; } ce qui nous donne au final : package votre_package; public class BatonDeSoin extends Item{ public BatonDeSoin() { this.maxStackSize = 1; this.setMaxDamage(10); this.setCreativeTab(CreativeTabs.tabCombat); } public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { par1ItemStack.damageItem(1, par3EntityPlayer); par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 0)); return par1ItemStack; } } et voilà passons au craftbukkit qui est la même chose 3] CraftBukkit Item.java REGISTRY.a(ID, "NOM", (new BatonDeSoin()).c("NOM").f("NOM_TEXTURE")); Items.java (Pour 1.7.2) public static final Item NOM = (Item)Item.REGISTRY.a("NOM"); Items.java (Pour 1.7.10) public static final Item NOM = (Item)Item.REGISTRY.get("NOM"); BatonDeSoin.java package net.minecraft.server; import net.minecraft.server.EntityHuman; import net.minecraft.server.Item; import net.minecraft.server.ItemStack; import net.minecraft.server.MobEffect; import net.minecraft.server.MobEffectList; import net.minecraft.server.World; public class BatonDeSoin extends Item { public BatonDeSoin() { this.maxStackSize = 1; this.setMaxDurability(15); } public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { entityhuman.addEffect(new MobEffect(MobEffectList.HEAL.id, 1, 0)); itemstack.damage(1, entityhuman); return itemstack; } } et voilà bon jeu avec votre bâton de soin
  23. Comment créer une météorite?

    Bonjour à tous, ce soir, un tuto explosif !! Je vous explique comment faire une météorite qui explose. La vidéo est ici : https://www.youtube.com/watch?v=PGcZ4D_Bm8Q
  24. JumPlay Préparez vous à faire LE grand saut ! Version : 1.10 Adresse IP : mc.jumplay.fr Site internet : https://jumplay.fr/ Bonjour à toutes et à tous ! Je vous présente aujourd'hui un tout nouveau serveur Minecraft : JumPlay ! En juillet 2015, l'idée d'un serveur basé sur le jump est énoncé au sein de l'association DeuxMetresCubes. Tlofnorog et moi-même devenons alors les responsables de ce projet. Après un an de réflexion, de construction et de développement, le projet abouti enfin et nous pouvons officiellement annoncer l'ouverture du serveur pour le vendredi 19 Août 2016 à 14h ! JumPlay est un serveur basé exclusivement sur le jump. Vous pourrez retrouver un panel varié de jumps allant de la difficulté facile à la difficulté extrême en passant par des difficultés intermédiaires pour satisfaire les débutants ou les plus téméraires d'entre vous ! Pour les experts, nous proposons des jumps avec divers effets de potions vous présentant un gameplay différent. Vous retrouverez le classement général et mensuel de chaque jump sur notre site ainsi que les statistiques de chaque joueur. Le serveur possède pour le moment un mini-jeu, CourseVS, dans lequel vous pourrez défier les autres joueurs sur des parcours dans une ambiance de détente et de fun ! D'autres minis-jeux, dont nous vous réservons la surprise, sont en développement et sortiront par la suite. Un système économique est présent sur le serveur, ainsi à chaque jump terminé ou à chaque victoire, un gain vous sera attribué vous permettant d'acheter divers cosmétiques. N’hésitez pas à nous rejoindre dès maintenant en 1.10 sur mc.jumplay.fr
  25. Comment faire un vendeur d'armes??

    Coucou les gameurs, voici ma nouvelle vidéo dans laquelle je vous montre comment faire un vendeur d'armes !! Très utile pour ceux qui créent des maps. https://www.youtube.com/watch?v=zDrYtTbOPvs
×