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

102 résultats trouvés

  1. M.CV vos cv Minecraft en ligne

    Bonjour je viens de créer un site web permettant au joueur de Minecraft de mettre leur CV cela permet au serveur de trouver des personnes compétentes dans tous les domaines simplement car c'est eux qui vont vers les joueurs et non le joueur vers eux . Le problème principal dans Minecraft est la visibilité pour faire une candidature à un serveur il faut le connaitre mais pas de souci M.CV est là, plus besoin de faire connaitre votre serveur alors qu'il n'est pas ouvert pour recruter des Buidleur, Développeur, Etc rechercher les sur M.CV Visiter le site maintenant
  2. Présentation Je suis AtonHa, étudiant en faculté. Pour les curieux, je fais une License informatique et j'en suis à ma dernière année. Par ailleurs, je consacre beaucoup de temps à coder pendant mon temps libre afin d'améliorer mes compétences en programmation. J'ai participé à des projets de grande envergure, si je puisse-dire, dans un projet de cms minecraft avec d'autres développeurs. En ce qui me concerne, j'ai créé des dizaines de sites à but commercial et pour donner vie à mes projets personnels. Le web m'intéresse beaucoup puisque c'est de là qu'est né ma passion pour l'informatique. J'aime bien me diversifier en jonglant de langage en langage par exemple en faisant un jour du php et un jour du java. En d'autres termes, l'aventure fait parti de mes caractéristiques et je n'aime pas exécuter des tâches répétitives comme le travail à la chaîne. Vous allez certainement vous poser la question ci-après: Pourquoi te surnommes-tu AtonHa ? J'adore la mythologie égyptienne, et si vous décomposez mon pseudo, vous remarquerez ( pour ceux qui connaissent ) que Aton est le dieu du soleil et Ha est le dieu du désert oriental. Ma passion pour Minecraft Depuis mon adolescence, j'ai tissé une grande importance pour minecraft puisque c'était l'un de mes premiers jeux préférés derrière Call of. J'ai passé des bons moments tout comme des mauvais sur Minecraft. Je m'étais lancé dans la création d'un serveur PVP/Faction qui faisait parti des meilleurs serveurs Français. C'était d'ailleurs mon tout premier serveur et après son extinction, j'ai décidé de créer d'autres serveurs pour essayer de le réincarner. Aujourd'hui, ma passion pour Minecraft continue de subsister malgré mon âge. Psychologiquement il est impossible de m'en séparer puisque ça a marqué mon adolescence même si j'y joue plus du tout. Où veux-tu en venir ? Comme je vous l'ai dit au-dessus, Minecraft et moi sommes devenu de bons amis. De ce fait, j'ai décidé de me lancer dans la vente de launcher Minecraft pour poursuivre mes études et pour payer mon logement. Qu'en est-il du prix ? Je vends 20€ le launcher avec tout compris: Système d'authentification Minecraft ou Personnalisé Un lot de fenêtres pour dispatcher le launcher en plusieurs composants. ( Par exemple: une fenêtre pour l'installation et une fenêtre pour l'authentification) Système de suppression de fichiers en xml Système d'installation de fichiers en xml Je vous fourni mon code php pour créer et rafraîchir le code xml Toutefois, le design du launcher est à fournir par le client et n'est pas inclus dans l'offre. Si vous le souhaitez, je peux vous diriger vers mon collègue, qui s'occupe de cela. Je vends également le bootstrap à 6€ permettant ainsi de mettre à jour automatiquement le launcher. De plus, pour apporter une mise à jour graphique ou pour ajouter de nouvelles fonctionnalités au launcher, c'est 3€. Admettons que vous vouliez ajouter une nouvelle fonctionnalité, vous aurez 3€ + le prix de la fonctionnalité à payer. Exemple de travail réalisé Pour info: Vous avez ci-dessous le launcher, le bootstrap + la fenêtre d'installation. Me contacter Vous pouvez me contacter via mon site personnel https://www.atonha.fr ou directement par mail en me faisant parvenir votre message sur getmycms@gmail.com ou alors en m'ajoutant sur discord @AtonHa#3323.
  3. Mod pour mon future serveur

    Bonjours à toi qui lis ce texte Si tu lis ça c'est que tu es sûrement codeur minecraft Donc j'aurais besoin de quelqu'un qui pourrais me faire sois un lu cher avec image de fond ect comme (si vous connaissez) le luncher de paladium sois le mod principal du serveur . Je suis "trop petit" (j'ai dix ans) donc je ne pourrais pas vous payer .
  4. Hézon - Serveur PvP - Recrutement ON

    Bonjour ou bonsoir tout le monde, Je fais ce sujet aujourd'hui pour vous annoncez le recrutement de mon serveur Minecraft. Pour commencer voici quelques informations: Le nom du serveur: Hézon Type de jeux: PvP, Créatif (bientot op prison) Les versions crackées acceptées: Oui Notre équipe déjà présente: Fondateurs: ImSinaroo & lelecooldu54 Administrateurs: burlyskuire185 & Mifhyz Développeurs: B4LL0_ Modérateurs: x (2 places) Architectes: fireofthestar & Torkeuille Assistants: x (3 place) YouTubeur: x (1 place) Graphiste: x (1 place) Nous recrutons encore: 2 Modérateurs 3 Assistants 1 YouTubeur 1 Graphiste Les recrutements se passe ici : http://hezon.my-heberg.fr/forum/#zone-recrutement.7 PS: Les candidatures des YT et des graphistes seront prioritaires. Cordialement ImSinaroo,
  5. [Usebub] "CrashCo"

    Bonsoir à tous ! Aujourd'hui je viens vers vous pour vous pars de mon avis de cet UseBug et une solution pour le patcher. Alors je trouve cette technique dégueulasse de ce faire lag ou completement couper sa connexion pour pouvoir casser des blocs dans un claim Oo. Donc voila je fais une sorte d'appelle au dev spigot pour patcher cela. Je ne suis pas asser compétant pour le faire malheureusement. Alors ma technique serait deux systèmes pour patcher cela. Le 1er serais de kick automatiquement une personnes qui a + de 300ms en moyenne. La 2eme sera de faire système de gestion de packet. Je m'explique. Il y aura un coté serveur et client. Le plugin serais le serveur et le client du joueur le client ducoup. Le serveur enverais une requête au client. Comme une sorte de ping en gros. Si le client ne répond pas il est automatiquement kick. Une requête toute les 1/2 seconde sera envoyer. Voila dite moi si vous avez d'autre proposition ou si quelqu'un est en train de bosser sur un système comme ça :D Je vous fais des bisous :3
  6. 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 !
  7. Un modèle pour mon K9

    Salut ! J'ai commencé le développement d'un mod se centrant sur K9, le chien robot dans Doctor Who, niveau programmation, pas de souci, je devrai m'en sortir, mais niveau graphique... J'aurais donc besoin d'un modèle en Java pour K9, qui actuellement ressemble à ça https://media.forgecdn.net/attachments/thumbnails/230/502/310/172/2018-06-08_20.png Alors que la volonté était ça : https://images-na.ssl-images-amazon.com/images/I/91Qd1ntyNUL._SY355_.jpg Si vous avez la foi et l'envie de m'aidez, je vous en serais sincèrement reconnaissant ! Curse : https://minecraft.curseforge.com/projects/k9-mod Github : https://github.com/LotuxPunk/K9
  8. MysoriaTeam Bonjour à tous, et bienvenue sur notre CV. ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ▃▃▃✘Qui Sommes nous ?✘ ▃▃▃ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ Notre team se compose à l’heure actuelle de 4 personnes, ce qui permet de diminuer considérablement le temps d’attente de chaque commande. Nous utilisons uniquement MCP. Notre Team a pour ambition de se développer dans tous les domaines. C'est pourquoi nous profitions de ce CV pour recruter des Builders ainsi que des Graphistes. Pour les personnes intéressées, nous vous invitons à rejoindre le discord. Nos Réalisations : ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ▃▃▃LAUNCHERS ▃▃▃ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ✓ Authentification Site (AuthMineWeb) ou Premium✓ ✓Sélection de la RAM✓ ✓Launcher Windows / Mac / Linux✓ ✓Version 1.7.10 ou supérieur✓ ✓Bootstrap personnalisé✓ ✘Design NON FOURNI✘ ✘Vous devez avoir un hébergeur web pour pouvoir héberger vos fichiers !✘ ✘Temps de livraison : Entre 2H et 3J après la validation de la commande. (Ces temps varient en fonction du travail demandé)✘ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ▃▃▃MCP ▃▃▃ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ✓Nouveaux Blocks✓ ✓Nouveaux Items✓ ✓Nouveaux Minerais✓ ✓Nouvelles Armures✓ ✓Nouveaux Outils✓ ✓Custom F3 / Inventaire / Echap / Menu Principal✓ ✓InfoBoard✓ ✓ToggleSprint✓ ✓Claim✓ ✓CPS✓ ✓Radio✓ ✓AntiCheat✓ ✓Wiki✓ ✓ArmorHUD✓ ✓PotionHUD✓ ✘Vous devez ABSOLUMENT avoir toutes les textures de votre MOD! ✘ ✘Temps de livraison : Entre 1J et 7J après la validation de la commande. (Ces temps varient en fonction du travail demandé)✘ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ▃▃▃SPIGOT▃▃▃ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ✓Nouveaux Blocks✓ ✓Nouveaux Items✓ ✓Nouveaux Minerais✓ ✓Nouvelles Armures✓ ✓Nouveaux Outils✓ ✘Temps de livraison : Entre 1J et 3J après la validation de la commande. (Ces temps varient en fonction du travail demandé)✘ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ ▃▃▃ ✓Nous Contacter ?✓ ▃▃▃ ▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃ Nous disposons d’un site internet : https://Mysoria.fr [EN MAINTENANCE] sur lequel vous trouverez des exemples de nos réalisations en images. Pour toutes commandes, nous disposons d’un discord : https://discord.gg/w4TekjS A bientôt, MysoriaTeam
  9. 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
  10. Changer l’icône du jeu < Introduction /> Bonjour à tous; Beaucoup d'entre vous se demande comment changer l'icône du jeu afin de donner une identité supplémentaire au client de votre serveur, et si vous en avez marre de la table de craft. C'est ce que nous allons voir aujourd'hui ! PS : Il faut aussi savoir, que cela ne fonctionne pas avec le launcher officiel, celui-ci télécharge de nouveau les assets. Il est donc fortement recommandé de suivre ce tutoriel pour votre serveur avec vos assets. < Prérequis /> Notepad++ ou autre éditeur de textes Dossier Assets Client Perso Logiciel de création graphique (Photoshop, Illustrator, etc...) Vos icônes ( 16x16 et 32x32) < Let's Go ! /> 1 / Choisir une icône Avant tous, il faut bien choisir ces icônes. Vous devez choisir une icône qui sois en accord avec votre Serveur ou vous-même, c'est au choix et nous devons respecter cela ! Il existe des sites spécialisés dans les icônes, mais rien de mieux que de la créer soit même. Pour ce faire, rendez-vous sur votre logiciel graphique. Pour ma part il s'agit de Photoshop, je vais donc créer une icône pour illustrer ce tutoriel. Veilliez à bien faire ces deux tailles d'icônes : 16x16 pixels 32x32 pixels Cela doit représenter un carré parfait. Pour créer votre icône personnalisée, il existe une multitude de tutoriels en rapport avec le logiciel graphique souhaité, je vous laisse donc allez voir. Pour ce tutoriel, nous allons prendre ces 2 icônes là : Une de 32x32 et une autre de 16x16 (Oui, c'est un sac de Bitcoin, voici donc mon adresse : censuré ! ) Enregistrez bien votre image en PNG, c'est un meilleur format niveau qualité que le JPEG. 2 / Recherchons les assets ! Pour cela, fait Windows + R pour ouvrir exécuter, tapez %appdata% afin d’accéder à votre dossier Roaming. Dans ce dernier, ouvrez le dossier de votre serveur. Localisez le dossier assets, puis enfin indexes que vous ouvrez bien sur. 3 / Localisons les Icônes ! Dans ce dernier, vous y trouverez un fichier .json qui est numéroté en fonction de la version choisie. Ouvrez-le donc, avec bien sur, un éditeur de texte. Pour ma part Notepad++ et faite CTRL + F , afin de lancer une demande de recherche. Recherchez le mot "icons" Cela va nous donner plusieurs résultats, mais intéressons-nous à ces deux lignes la : "icons/icon_16x16.png": { "hash": "bdf48ef6b5d0d23bbb02e17d04865216179f510a", "size": 3665 }, "icons/icon_32x32.png": { "hash": "92750c5f93c312ba9ab413d546f32190c56d6f1f", "size": 5362 }, Elles disposent de 2 sœurs identiques, qui sont "minecraft/icons/icon_16x16.png": { "hash": "bdf48ef6b5d0d23bbb02e17d04865216179f510a", "size": 3665 }, "minecraft/icons/icon_32x32.png": { "hash": "92750c5f93c312ba9ab413d546f32190c56d6f1f", "size": 5362 }, On distingue bien l'emplacement, un nom avec que des chiffres et une taille. Ne cherchez pas avec l'adresse, vous ne les retrouverez pas ! C'est la ligne Hash qui nous intéresse plus ! On peut remarquer que les hash de son identiques pour minecraft/icons/icon_32x32.png et icons/icon_32x32.png Cela réduis donc le temps à chercher les fichiers correspondant. Nous allons nous intéresser au fichier icons/icon_16x16.png Qui dispose de cet Hash la : bdf48ef6b5d0d23bbb02e17d04865216179f510a Dans cet hash, nous avons certes que des lettres et chiffre, mais une information précuise sur son emplacement. Quand on regarde, le début est bd, il s'agit pas d'un élément tiers, mais plutôt d'un classement pour bien ce repérer à travers certains dossiers. 4 / Recherchons le dossier des icônes Pour l'icône 16x16, sont classement bd Et pour l'icône 32x32, cela sera 92 Il vous suffit pour cela, de retourner dans le dossier principal des assets et d'ouvrir le dossier objects. Ce dernier, contiendra un nombre important de sous-dossiers avec des lettres minuscules et majuscules, mais aussi des chiffres parfois combinés avec des lettres. Rappelez-vous de ce que nous avions dit juste avant, les icônes sont rangées suivant un classement bien spécifique. Recherchons donc le dossier bd et 92 Ouvrez-en un, et vous remarquerez que dedans nous retrouvons notre fameuse suite de lettres et chiffres hash ! Il se présente sous forme d'un fichier sans extensions et illisibles. Mais il nous intéresse fortement. 5 / Modifions les icônes La méthode est identique pour l'icône 16x16 et l’icône 32x32, je vais donc me focalisé sur une seule d'entre elles. /// Il est préférable que les extensions sois visible sur les fichiers, sur Windows 10, vous avez un onglets "Affichage", et dans "Afficher/Masqués", cochez "Extensions de noms de fichiers" Nous allons copier/coller ou déplacer notre icône 16x16 dans le dossier bd. Copier le nom du hash de l'icône 16x16 qui est bdf48ef6b5d0d23bbb02e17d04865216179f510a Et supprimer le fichier. Renommez, votre icône avec ce nom et supprimez bien son extension. Vous allez donc avoir un message d'avertissement comme quoi le fichier deviendra illisible, acceptez-le ! Effectuez la même chose pour l'icône 32x32, dont le nom est 92750c5f93c312ba9ab413d546f32190c56d6f1f Reste plus qu'à fermer tout cela et à lancer le jeu ! N'oubliez pas pour ceux disposant de leurs assets en ligne via la tutoriel de Litarvan, de bien mettre à jour les assets du dossier Files, sinon vous ne les aurez pas. Résultats final avec exemple Si vous avez des questions, vous pouvez les poser :)
  11. [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 !
  12. [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)
  13. Projet Serveur RP - Elswing

    Bonjour voyageurs, je vois que vous êtes arrivés jusque ici. Seriez vous à la recherche d'une étincelle d'aventure ? Avez vous déjà songé a un monde bercé entre la lumière et les ténèbres, un monde a la fois traumatisé et magnifié par une force immortelle ayant ravagé le monde pendant de longues années ? Laissez moi vous raconter une histoire ... Existait il y a bien longtemps de cela deux plans d'existences.. Celui des Aubécliens, persuadés que la lumière et la sagesse pourrons créer un monde parfait. Et, a l'opposé de cela le plan d’existence des Hoetiens, qui étaient persuadés que la guerre et la "loi du plus fort" rendraient leurs créations parfaites. Alors est apparût l'oeuvre des Aubécliens : L'Homme. Plus tard, jaloux de cette réussite, les Hoetiens fîrent apparaître les Reptiliens,Les Géants, les Orcs, les Elfes, les Khadjiits et enfin, les Dragons. Cela ne prit pas longtemps avant que la guerre entre ces races sois déclarée, suivant les traces de leurs créateurs... C'était la naissance du troisième plan d'existence : Celui des mortels.... Alors, sous laquelle de ces races naîtrez vous ? Serez vous un simple explorateur ou vous dirigerez vous vers la voie de la gloire ? Elswing est un projets de MMORPG sur Minecraft, mêlant RP et Faction. Nous avons pour objectif de faire de Elswing un monde a part entière, possédant son histoire (ce court prologue que vous avez lu n'est qu'une entrée en la matière, bien plus d'histoires ont déjà été écrites en histoire de fond), ses croyances, ses peuples, ses endroits mémorables et ses mœurs qui lui seront propre. C'est un projet déjà en cour depuis septembre 2017, il est donc déjà bien avancé ! Et je viens aujourd'hui vous le présenter avec un court prologue et quelques photos, prises sur le serveur. Vous remarquerez aussi, pour les connaisseurs, que nous nous sommes amusés, le staff et moi-même, a dissimuler plusieurs références culturelles dans le Lore de Elswing, a vous de toutes les trouvers ;) J'espère que ce projet vous intéresse, si c'est le cas je vous invite a vous rendre sur notre site : http://elswingrp.tk ou plusieurs informations supplémentaires sont présentes et ou vous pourrez suivre l'avancement du serveur, et, quand le jour viendra, le jour de l'ouverture ! PS: Nous avons également un discord ou vous pourrez discuter avec nous et suivre plus en détails l'avancement du serveur (nous posterons des infos et des spoils régulièrement) : https://discord.gg/uvUPMYU Enjoy ! :) -L'équipe de Elswing
  14. 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. 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
  15. 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
  16. 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é »
  17. [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
  18. 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
  19. [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
  20. [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
  21. [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 !
  22. 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
  23. A supprimer pour une raison personnelle. UtoziaMC.jar
  24. [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
  25. 『 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/
×