Aller au contenu

Leaderboard


Popular Content

Showing content with the highest reputation since 11/21/17 in all areas

  1. 5 points
    ----------------------------PRÉSENTATION---------------------------- Plaig4Anims est une librairie éponyme, réalisée pour mc, closed-source à l'heure actuelle, débutée sous la 1.7.10 (actuellement en v1.0), permettant le chargement de modèles/animations 3D aux formats obj, mdl et md2 prochainement. Elle a été débutée début Novembre 2017 dans le but de réaliser le jeu Kingdom Hearts 2 dans Minecraft. Passons désormais aux fonctionnalités de la lib... ----------------------------FONCTIONNALITÉS---------------------------- La libairie permet essentiellement le chargement de modèles 3D animés, mais pas que ! Voici une liste non-exhaustive de toutes les fonctionnalités qu'elle vous promet de remplir: 1° La vitesse d'exécution des frames composant l'animation est parfaitement ajustable, en fonction des fps ou selon une constante. La librairie permet la customisation du fichier MDL de manière à accélérer/ralentir certaines parties de l'animation (tout est géré via le parser). 2° La librairie permet de charger une animation, ou de la stopper à une certaine frame, pendant un certain délai. Il est également possible de commencer à une frame n1, puis de finir à une frame n2. En outre, le degrés d'interpolation (entre les frames) est parfaitement réglable (permettant un rendu saccadé ou au contraire linéaire). 3° Plaig4Anims inclut également un chargeur de modèles OBJ, fonctionnel mais qui sera refait pour la 2.0. 4° Plaig4Anims comporte un système de synchronisations inter-clients des données relatives aux animations (leur id et leur progression). De plus une persistance via NBT est activable ou non selon les désirs de l'utilisateur (une entité au combat n'a aucun intérêt à subir une persistance, tandis qu'une machine aura tout intérêt à la supporter). 5° La transition entre 2 animations différentes est facilitée par plusieurs fonctions, de plus, une classe utilitaire est présente pour déclencher des animations à des moments prédéfinies "idle", "attack", "walking" "jump" et "hurt". Ainsi ces actions n'auront pas à être détectées par l'utilisateur, leur "capture" et leur lecture sont automatisées par la librairie. 6° Une des récentes fonctionnalités est l'utilisation de 2 shaders LIGHT ou CUSTOM tout à fait personnalisables (position de la source lumineuse réglable, matrice de couleur modifiable, taux d'absorption de la lumière par le modèle/luminosité ambiante du rendu ajustable (de manière à adapter selon le daytime), de manière à observer un ombrage de Phong sur le rendu du modèle. 7° La dernière fonctionnalités est encore en WIP. Il s'agit du suivi de la hitbox par rapport au rendu de l'entité. Par ailleurs la v2.0 permettra d'utiliser un nouveau système de hitbox basé sur différents forme, non plus cubiques (sphère, cylindre et peut-être pyramide). ----------------------------PRISE EN MAIN---------------------------- Nouvelle section (26/02/2018) Dans ce mini-tutoriel, nous aborderont uniquement l'insertion complète (lecture, gestion en mémoire et rendu) du modèle au format .mdl dans Minecraft. De ce fait, j'exclurai la partie "Modélisation" sous 3ds Max. Voici néanmoins deux, trois conseils pour ceux qui s'y intéresseraient: 1) Si vous débutez dans la modélisation, sachez qu'il serait judicieux d'avoir quelques bases avec le software 3ds max (raccourcis claviers, modélisation avec un blueprint, scale/translate/rotate, connaissance des principaux modiifiers, etc...). 2) Une fois votre modèle finie, vous devrez export l'uv map, et la remplir. Voici le parfait tutoriel concernant cette tâche 3) C'est bon! Vous pouvez désormais vous applaudir, le plus dur vient d'être fait, il ne vous reste plus qu'à découper votre modèle, mais vous verrez c'est très facile ! Pour découper votre modèle, la solution la + simple sera de le rig, c'est-à-dire de lui créer son enveloppe squelettique. Ensuite vous devrez appliquer le processus de "finning", puis ensuite "attacher" le bone à sa mesh dans laquelle il est "caché", où pour faire court skin le modèle 3D. Ces 3 étapes sont d'une longueur relative à la "taille" du modèle. J'ai moi même appris par une suite de vidéos tutoriels, la première ici. 4) Une fois fait, le reste ne sera que du plaisir, à savoir animer le tout ! Voilà une petite vidéo vous montrant 2 types d'animation sur 3ds max. Enfin une vidéo bonus vous montrant l'animation par suivi de trajectoire. Petit bonus: je vous mets ici à disposition un steve tout prêt à être animer, c'est cadeau ! A quoi ressemble-t-il ? 5) Une fois votre animation complètement finie, vous exporterez le modèle au format fbx. Et vous placerez ce dernier + ses textures associées dans un même dossier. 6) Enfin, la dernière étape avant la partie "code" sera de convertir le modèle du format .fbx vers .mdl. Pour ce faire vous téléchargerez noesis, que je vous mets à dispositionici, puis vous découvrirez par vous-même, c'est très intuitif ! Vous aurez sûrement un souci d'orientation du modèle une fois convertie, pas d'inquiétude, Noesis met à disposition une petite centaine de commande, tel que "rotate x y z", comme le montre ce screen: 7) Une petite étape alternative, où je vous propose de télécharger ce petit software nommé "qme31", qui vous permet de charger vos animations .mdl, afin de vous assurer qu'elles sont prêtes à être rendue ! De plus, vous pourrez afficher les caractéristiques de votre modèle, en allant sur l'onglet View, puis model properties. La fenêtre ressemblera à ceci, s'offrant une organisation en plusieurs catégories (bounds, skin, eye position, etc...): Voici son lien de téléchargement [PARTIE CODE EN RÉDACTION...] ----------------------------REMERCIEMENTS---------------------------- Un grand merci aux quelques personnes m'ayant aidé de loin ou de près: - elias54, administrateur de MFF et graphiste talentueux et très sympathique, sans qui cette librairie n'aurait jamais pu revêtir ce magnifique logo ! - Yanis, jeune développeur, qui par ses nombreux "Oooowaayyyeuuuu suuupèèèèrrreeeuuhhh GGGGG t'hés tro fooorrtt, j'pôrais l'avhhoirre quaaan ele sortiraaa stp ?!" m'a toujours permis d'aller de l'avant, et de ne rien lâcher - steinert1801 (alis Sven), habile développeur germanique, qui par son soutient, a permis l'implémentation de son incroyable et délicieuse Shader API parmi Plaig4Anims - ThinMatrix pour son excellente pédagogie à travers sa super suite de tutos sur OpenGL - Enfin un très très grand merci à David Henry, pour son excellent tutoriel sur le format MDL, sans qui rien de tout cela n'aurait pu se réaliser ! ----------------------------VIDÉOS---------------------------- v0.1: v0.2 v0.8: ----------------------------CHANGELOG---------------------------- v0.1: Version initale, lecture du fichier MDL puis rendu partiel du modèle (uniquement les triangles) v0.2: Version ultérieure + avancée par l'implémentation temporaire des Vertices Lists v0.2.5: Version + récente tout autant élaborée par l'arrivée du rendu des vecteurs normaux par Normals Lists v0.3: Abandon du rendu par Verts/Norms/Text Coords Lists pour un rendu bien + puissant avec le Tessellator v0.3.1: Version + sophistiqué par l'ajout du supporty de plusieurs modèles rendus en même temps v0.3.2: Petit soucis de taille grandisssante du modèle fixé, dû à la transition d'animations mal gérée v0.5: Implémentation de la Shader API v0.7: Synchronisation inter-clients fonctionnelle et persistance NBT réglable à souhait, puis transition d'animations facilitée implémentée v0.8: Ajout de la variable uniform brightness, permettant de varier la luminosité absorbée par le rendu du modèle v1.0: Version actuelle, portage du système d'incrémentation des animations des # entités du monde, du client vers le serveur (Meilleure sync, moins d'efforts au client, taux d'interpolation server-side désormais) ----------------------------TÉLÉCHARGEMENTS---------------------------- v1.5: lien de téléchargement ----------------------------UPCOMING FEATURES---------------------------- - Loader OBJ à refaire (qui supportera les .obj accompagnés de leur fichier mtl) - Support des flags Quake (rocket, grenade, gif, rotate, random, etc...) - Support du format md2, pour des modèles dont les textures ne seront plus sur une palette à 8 bit - MàJ 1.8+ à effectuer, afin de profiter d'une optimisation par les VBOs/FBOs, et non plus uniquement des Display Lists - Optimiser en ne dessinant que les triangles vus par l'utilisateur, optimiser en dessinant avec les Vertices Indices (+ GL_TRIANGLES_FAN/GL_TRIANGLES_STRIP) et optimiser en éviter les tours de boucles inutiles selon le nombre d'entités rendus à l'écran de l'utilisateur, et non plus selon les entités présentes dans le WorldClient de l'utilisateur ----------------------------CONCLUSION---------------------------- Voilà c'est tout pour la présentation de ma première librairie. J'espère que ce topic aura été suffisamment clair et bien rédigé (la mise en forme s'est révélé être mon tendon d’Achille :'() J'ai mis en place un petit sondage sur ce topic-ci, qui me permettra de savoir si bon nombre de personnes sont intéressées par la release et le repo github, dans le cas contraire, celle-ci restera closed-source sous une certaine license. Si vous avez d'autres remarques constructives, n'hésitez pas à laisser un commentaire, j'y répondrai dès que possible
  2. 3 points
    Bonsoir à tous ! Je pense être au bon endroit pour partager quelques screenshots in game du travail effectué sur un mod déjà existant que certains doivent certainement déjà connaître, il s'agit du mod : "ICE AND FIRE DRAGONS" Ce mod ajoute pas mal de mobs légendaires dont les principaux : les dragons de feu et de glace ^^ Un super mod dont je ne suis clairement pas l'auteur, mais vraiment bien fait et que nous avons ajouté à notre serveur privé. J'ai entrepris il y a de cela environ 1 an, de retoucher TOUTES les textures du mod pour les rendre plus HD et plus détaillées donc, un travail de longue haleine sur lequel j'ai commencé sur les dragons directement avant de toucher aux items et blocks. Je souhaitais faire partager quelques clichés des Dragons surtout, par contre je n'ai pas de clichés des textures d'origine dans leur résolution d'origine mais seulement de mes textures une fois chargées en jeu. Je vous invite à aller jeter un coup d'oeil sur le net pour retrouver le mod (facilement trouvable) afin d'en comparer les images. Tout a été réalisé via Photoshop et j'ai grassement augmenté la résolution des png qui de base des dragons qui était de 512*256, j'ai augmenté la résolution de 4x cette taille donc 2048*1024 ce qui est très détaillé et assez lourd. Il m'a fallut allouer à peine un peu plus de RAM lors du lancement du jeu pour éviter finalement le peu de lags qu'elles engendrent. Précision : je joue sur un pack de texture un peu personnalisé à base du Soartex Fanver dans lequel j'ai modifié des choses (soit ponctionnés sur d'autres packs, soit modifiés par mes soins).
  3. 3 points
    C'est fait chef! https://github.com/Plaigon/Plaig4Anims
  4. 2 points
  5. 2 points
    Nous avons refait entièrement notre design, et ajouté de très nombreuses nouveautés (en fonction des demandes des utilisateurs et de nos idées), les nouveaux designs ont aussi été adapté parfaitement sur tablette te smartphone, la nouvelle version sera disponible d'ici fin de semaine :D http://prntscr.com/klp2ur http://prntscr.com/klp33a http://prntscr.com/klp3ce http://prntscr.com/kqir42
  6. 2 points
    Bonjour à toutes et à tous, j'espère vraiment que vous allez bien et que vous vous portez à merveille ^^. Un CMS ? Qu'est-ce ? Je vous présente aujourd'hui un CMS du nom de TrixCMS, probablement pour certains vous vous demanderez, qu'est-ce un CMS ? Un CMS est un content management system ou en français un Système de gestion de contenu. En bref un site ayant de multiples fonctionnalités ainsi qu'un profil et un panel admin déjà intégré, un CMS consiste à vous offrir une personnalisation de votre site simple et rapide, grâce à un panel admin accessible que par l'administration du projet en question. TrixCMS consiste à quoi ? TrixCMS est un CMS pour l'instant basé sur le jeu Minecraft, avec les futurs versions il sera basé sur beaucoup plus de jeux, TrixCMS est actuellement en développement depuis Juin et est développé et pensé par Todyxe & Tronai. Il vous offre de haute fonctionnalités qui vous serviront beaucoup comme un système de développement de thème/plugin facile, simple et rapide ayant un Tutoriel via la Docs et quelques vidéos. Je vous mettrai la liste des fonctionnalités en bas, TrixCMS est sous FrameWork du nom de Laravel un framework que je maitrise beaucoup et qui nous offre beaucoup de fonctions et une haute sécurité. Le CMS est payant bien entendu et non pas opensource mais pas d'inquiétude si il est payant c'est bien parce qu'on est beaucoup motivé et qui est beaucoup sécurisé, bien sûr d'autre raison entre en jeu avec ce choix de mettre le CMS payant. Il aura pour cette version 1, deux licences payantes : Standart (9.99€ Prix HT) et Golden (13.99€ Prix HT). Vous avez à disposition dans le site officiel du CMS un Shop (Market) ou vous pouvez vendre vos thèmes/plugins ou les donner gratuitement via un Panel Développeur accessible via votre Profil. Attention : Le CMS est achetable que via Paypal ^^. Quelle sont les fonctionnalités ? Boutique Automatique (Avec Panier) Paiement sécurisé (Paypal, Dedipass, PaymentWALL) Vote automatique (Recompense, TOP 3 Voteurs) RPG-Paradise avec OUT Inscription complète avec Captcha (No modals) Connexion complète avec Captcha (No modals) Liaison site - serveur (RCON, Ping, JSONAPI, TrixCore) Panel Admin complet Profil complexe avec envoie de PBS + Message privée API launcher & Skins Système de News (Avec Image) Classement Factions (Plugin) Système de Maintenance Activation ou désactivation du 2FA(Google Auth) Radio inclus de base Système de facture par email inclus de base Mail de Newsletter (Plugin) Faire un système de palier pour les votes qui peut soit être pour le joueur ou pour le serv (plugin je pense) afficher de la console en temps réel + possibilité d'envoi de commande inclus de base Panel Youtube pour les youtubeurs avec pleins de fonctionnalités inclus de base on peut le désactiver ou l'activer Faire un système pour link sont compte youtube, twitter, autre et par exemple si le mec à un certain nombre d'abo et de vues en tout sa exécute une commande server Système de Pages Systeme de langue (FR & EN) Système Plugins/Thèmes Perso FAQ Innovant Messagerie NewsPopup (Système permettant de faire apparaître un model dans la page d'accueil) CGUAnnouncer (Permet d'envoyé à chaque modification de la page CGU/CGV un mail qui dit que les CGU/CGV ont été modifier) Voici les fonctionnalités de cette Version 1. A Propos des Licences ? Les licences comme dit en haut sont pour l'instant au nombre de deux : Standart & Golden Standard : Prix HT : 9.99€ Prix avec Taxe : 10.49€ Contient que le CMS Complet. Golden : Prix HT : 13.99€ Prix avec Taxe : 14.72€ Contient le CMS Complet, ainsi qu'un thème aléatoirement donné (Non trouvable dans le Shop) & un TS3 de 250 slots via un code promo généré automatiquement utilisable chez notre partenaire : FlashCloud. Le Shop ? Le Shop est un Market (Marché) ou vous avez la possibilité de vendre vos thèmes/plugins développé par vous, après achat de votre thème l'argent sera envoyé dans votre paypal et le plugin ne sera pas partageable vu qu'il contient un système de sécurité appelé SecurityAPI qui permet d'intégré un hashage reconnaissable que par l'API du CMS. Mais vous pouvez aussi vendre vos thèmes gratuitement. Attention si vous développé un thème vous devez avoir la licence développeur donnable via demande aux administrateurs (Todyxe ou Tronai). Si vous développé un plugin/thème privée pour avoir l'accès sur une licence normal vous devrez passé par une API accessible via un lien dans votre profil, après vérification et ajout de la sécurité votre plugin/thème sera envoyé par Mail à votre adresse mail. Comment vous rejoindre ? Nous disposons d'un Discord, Twitter et un site : Site : https://www.trixcms.eu/ Discord : https://discord.gg/UntNhXA Twitter : https://twitter.com/CmsTrix Nos partenaires : Vous retrouverez nos partenaires sur notre discord via le channel "Nos Partenaires". Pour finir : Merci beaucoup d'avoir lu, je vous suis extrêmement reconnaissant même si vous êtes pas interessé car vous nous avez accordé votre temps ^^. Pour finir le CMS sortira vers fin 2018 début 2019. Merci à vous et portez-vous bien :)
  7. 2 points
    Créer un launcher Minecraft Animé UN PROBLEME MAJEUR AU LANCEMENT DU JEU A ETAIT PATCH. Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé . Tout partage implique que vous citiez l'auteur original. < INTRODUCTION > Bonjour a tous. Dans ce tutoriel, nous allons voir comment faire un launcher "animé" grâce a une librairie faite par moi-même. CECI EST UNE LIBRAIRIE EST EN DEVELOPPEMENT! ELLE SERA MODIFIEE AVEC LE TEMPS. ATTENTION, cette librairie est utilisée surtout pour le visuel de votre launcher! DES TUTOS VIDEOS SANS UTILISATION DE LA LIBRAIRIE SE TROUVENT ICI (CLIQUER POUR VOIR) La librairie est basée sur le JavaFX, elle ne sert que de support. Le mieux est quand même de développer sois-même. < PRE-REQUIS > -La librairie "TLib" qui vous pouvez vous procurer ici: TLib.jar -Le fichier index.php pour les fichiers a télécharger. index.php -Les bases du développement -Un cerveau, du temps ainsi que de l'envie. < SOMMAIRE > 1) CREER LA PARTIE VISUELLE 2) OPTIONNEL MISE A JOUR & LANCEMENT 3) AUTHENTIFICATION 4) OPTIONNEL SAUVEGARDE DES IDENTIFIANTS [1] CRÉER LA CLASSE PRINCIPALE Alors pour commencer, il faut crée un nouveau Projet Java (Click droit, new > java project) puis mettre le nom que vous voulez. On va ajouter notre librairie au projet, clique droit sur le projet, Properties (tout en bas), puis a gauche aller sur "Java build Path", puis dans Libraries dans l'onglet en haut, et enfin sur Add external JARs a droite, sélectionnez la librairie TLib.jar, puis faites ok, ensuite, cliquez sur la fleche sur le "JRE System Library [JavaSE-**], cliquez sur Access rules, puis sur EDIT a droite, cliquez sur ADD Dans Résolution mettez ACCESSIBLE et dans rule Pattern ecrivez "javafx/**", puis validez tout et faites OK jusqu’à retourner sur le plan de travail. Après on va créer une classe qui s'appellera comme vous le voulez. Pour le coup, je l'appellerais Main, puis juste avant de cliquer sur Finish, on va cocher un carré avec écrit "public static void main(String[] args) comme ça, ça nous aura créer cette fonction qui est la fonction "maître", car c'est la fonction qui lancera notre application. Voila, ensuite on va extends notre classe vers "Application" Pour l'import, ca sera javafx.application.Application, ensuite on aura une petite erreur sur Main, pour remédier a ça, on mets le curseur sur Main et clique sur "Add unimplementeds methods" Et on obtient alors ceci Ensuite, on va écrire quelques lignes de code pour préparer le terrain. Dans la fonction void main, on ajoute ceci. TConstants.setParameters("MonServeur", "monServeur", 880, 520, "/chemin vers le package des resources/", "url de mise à jour", Versions.V1_7_10, "g2po"); launch(args); // JAVAFX Alors, décortiquons un peu. Nom du Launcher, nom de la APPDATA, Taille horizontale de la fenêtre, Taille verticale de la fenêtre, le chemin vers le package des ressources, L’URL du site de mise a jour, La version du jeu, et une série de caractères (pour enregistrer le pseudonyme et le mot de passe) Pour l'URL de mise à jour => Votre lien est par exemple http://monsite.fr/downloads/, il doit y avoir http://monsite.fr/downloads/index.php, http://monsite.fr/downloads/assets,/ http://monsite.fr/downloads/game/ et http://monsite.fr/downloads/libraries/ Pour le package, çà sera votre package ou il y aura toutes vos ressources (Images des boutons, vidéo d’arrière plan, logo, icone...) Moi pour le coup je l'ai appelé resources_custom. Retrouvez ICI les resources utilisés pour le tuto. Bon maintenant, on va dans la fonction start, puis on va écrire Scene scen = new Scene(); <= C'est la base de notre appli. TApp app = new TApp(arguments...); <= C'est une classe que j'ai fait déjà prête afin de pouvoir déplacer la fenêtre en cliquant etc.. les arguments sont, Stage, Scene, Nom du Launcher, Taille horizontal, taille verticale, et le style de la fenêtre, du genre, avec bordure, sans bordures etc... La j'ai mis, StageStyle.UNDECORATED pour qu'il n'y ai pas de rebord. enfin nous avons le app.setIconImage pour définir l'icone de la fenêtre. On a une erreur sur create(); et c'est normal car nous n'avons pas créer la fonction encore, donc on se mets au boulot et on génère ça! Donc la on a une vue d'ensemble de la classe en même temps comme ça, on vérifie qu'on ai rien oublié. bref surtout on regarde la fonction create. on creer le "Pane root = new Pane()", on défini sa taille avec setPrefSize. et on return root. Et c'est ici qu'on va définir nos "Constantes" pour afficher la vidéo d'arrière plan ainsi que le logo, les boutons etc.. En haut de la classe un va écrire ceci: private TBackground bk; private ResourceLocation loc; private TConfig data; private LauncherPanel panel; Et dans la fonction create on ajoute ceci: root.setPrefSize(TConstants.getWidth(), TConstants.getHeight()); // DEBUT AJOUT data = new TConfig(McDir.getDirectory()); bk = new TBackground(loc.getMedia("background.mp4"), root); panel = new LauncherPanel(root, stage); // FIN AJOUT return root; Donc alors, la on a ajouté le background vidéo, le ResourceLocation, la classe Config ainsi qu'une classe LauncherPanel qui a une erreur. le data = new TConfig() C'est pour l'enregistrement des logs tout ça tout ça. Le bk = new TBackground(), le background.mp4 c'est le nom de votre video dans votre package, si la video se nomme "giselle_en_trotinette.mp4", bah vous remplacez background.mp4 par giselle_en_trotinette.mp4. panel = new LauncherPanel() C'est notre panel qu'on a pas encore crée. Donc on mets le curseur sur LauncherPanel et on clique sur Create classe LauncherPanel. Bon déjà la, si vous avez mis vos ressources dans votre package prévu a l'effet, ainsi que les lignes de codes, vous devez avoir votre vidéo qui se lit. Pour moi, ça rends comme ça, après, tout dépendra de votre vidéo hein. Bon, maintenant on va faire nos boutons ainsi que les textfields pour le pseudo et mot de passe. On va dans la classe LauncherPanel qui est vide normalement, et on ajoute ceci en haut public static TTextField usernameField; public static TPassField passwordField; public static TButton loginButton; public static TButton closeButton; public static TButton minimizeButton; private static TConstants config; private ResourceLocation resourceLocation; Puis le constructeur aussi public LauncherPanel(Pane contentPane, Stage primaryStage) { } Bon, la on défini nos boutons ainsi que nos textfields. Ensuite dans le constructeur de LauncherPanel, on ajoutes ces lignes de codes la. loginButton = new TButton(contentPane); loginButton.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 16F)); loginButton.setText("JOUER"); loginButton.setSize(100, 30); loginButton.setPosition(config.getWidth() / 2 - 50, config.getHeight() / 2 + 75); loginButton.setAction(event -> { // ACTION }); minimizeButton = new TButton(contentPane); minimizeButton.setSize(37, 20); minimizeButton.setPosition(config.getWidth() - 83, -4); minimizeButton.setInvisible(); minimizeButton.setGraphic(new ImageView(resourceLocation.loadImage("minimize.png"))); minimizeButton.setHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { minimizeButton.setOpacity(0.80); } }); minimizeButton.setUnHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { minimizeButton.setOpacity(1.0); } }); minimizeButton.setAction(event -> { Stage stage = (Stage)((TButton)event.getSource()).getScene().getWindow(); stage.setIconified(true); }); closeButton = new TButton(contentPane); closeButton.setSize(37, 20); closeButton.setPosition(config.getWidth() - 45, -4); closeButton.setInvisible(); closeButton.setGraphic(new ImageView(resourceLocation.loadImage("close.png"))); closeButton.setHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { closeButton.setOpacity(0.80); } }); closeButton.setUnHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { closeButton.setOpacity(1.0); } }); closeButton.setAction(event -> { TConfig.onExit(); System.exit(0); }); usernameField = new TTextField(contentPane); usernameField.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 17F)); usernameField.setSize(200, 30); usernameField.setPosition(config.getWidth() / 2 - 100, config.getHeight() / 2); usernameField.setVoidText("pseudonyme"); usernameField.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { // ACTION } } }); passwordField = new TPassField(contentPane); passwordField.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 17F)); passwordField.setSize(200, 30); passwordField.setPosition(config.getWidth() / 2 - 100, config.getHeight() / 2 + 35); passwordField.setVoidText("mot de passe"); passwordField.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { //ACTION } } }); Bon on va décrypter un peut tout ça. loginButton = new TButton(contentPane); loginButton.setFont(TFont.loadFont(config, "Sabado-Regular.otf", "Sabado", 16F)); loginButton.setText("JOUER"); loginButton.setSize(100, 30); loginButton.setPosition(config.getWidth() / 2 - 50, config.getHeight() / 2 + 75); loginButton.setAction(event -> { // ACTION }); Pour les boutons, on dis que leBouton = nouveau Bouton. leBouton.setFont <= On défini la police d’écriture (args: config, "nom de la police d’écriture dans le package", "Nom de la police d’écriture (se trouve on ouvrant la police d’écriture)", taille police. leBouton.setText <= on dis quel texte on veut qu'il y ai sur notre bouton) leBouton.setSize <= Taille horizontale et verticale du bouton. leBouton.setPosition <= Position du bouton sur la fenetre. leBouton.setAction <= Action du bouton et eventuellement, pour les boutons Images on mets leBouton.setInvisible() Et leBouton.setGraphic <= pour afficher une image. usernameField = new TTextField(contentPane); usernameField.setFont(TFont.loadFont(config, "Sabado-Regular.otf", "Sabado", 17F)); usernameField.setSize(200, 30); usernameField.setPosition(config.getWidth() / 2 - 100, config.getHeight() / 2); usernameField.setVoidText("pseudonyme"); usernameField.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { // ACTION } } }); leField = nouveau textField leField.setFont <= Police d'ecriture leField.setSize <= taille horizontale et verticale leField.setPosition <= position sur la fenêtre leField.setVOidText <= texte quand le textfield est vide. leField.setOnKeyPressed <= Action quand on appuie sur une touche, actuellement, c'est KeyCode.ENTER pour que quand on appuie sur ENTREE, ca fasse l'action du bouton JOUER. Pour l'instant on obtient un truc comme ça: Pour l'instant on a un assez bon résultat. On va ajouter le Logo du Serveur. On va retourner dans la Classe Main, on va ajouter public static TLogo logoPanel; Et logoPanel = new TLogo(loc.loadImage("logo.png"), 600, 100, 150, 40, root); Décryptons. TLogo(loadImage(imageLogo, taille de l'image X, taille Y, position X, position Y, root,) Si vous souhaitez avoir un petit effet de mouvement du Logo, mettez ceci a la place: logoPanel = new TLogo(loc.loadImage("logo.png"), 400, 80, root); logoPanel.setImagePos(TConstants.WIDTH / 2 - 180, 50); Ajouter setImagePos(position X, position Y); // Tout simplement et le mouvement se fera tout seul =) Bon après, ça fais un peu vide en haut, et en bas aussi, et aussi au milieu tiens, pourquoi pas. On va ajouter 3 rectangles dans la classe LauncherPanel qui vont redonner un peu plus de style ;) public static TRectangle rectTop = new TRectangle(0, 0, 1100, 20); public static TRectangle rectLow = new TRectangle(0, config.getHeight() - 20, 1100, config.getHeight()); public static TRectangle rectLoginBox; // A AJOUTER EN HAUT DE CLASSE Et ensuite on ajoute ceci mais au dessus de "loginButton = new TButton(contentPane);" : rectTop.setColor(Color.WHITE); rectTop.setOpacity(0.8); contentPane.getChildren().add(rectTop); rectLow.setColor(Color.BLACK); rectLow.setOpacity(0.6); contentPane.getChildren().add(rectLow); rectLoginBox = new TRectangle(config.getWidth() / 2 - 110, config.getHeight() / 2 - 25, 220, 140); rectLoginBox.setColor(Color.BLACK); rectLoginBox.setOpacity(0.6); contentPane.getChildren().add(rectLoginBox); Car sinon les rectangles seront en dessus et çà cacherais nos boutons. La en gros on dis: rectangle = nouveau Rectangle rectangle.setColor <= On défini la couleur du rectangle. rectangle.setOpacity <= L'opacité du rectangle contentPane.getChildren.add() <= Ajouter a la fenêtre. Bref, voila que maintenant on a une barre en haut, en bas et un carré au milieu pour faire comme une zone de Login. Dans la barre du haut, on va afficher notre nom de serveur. public TLabel labelTitle; Et labelTitle = new TLabel(contentPane); labelTitle.setText("Tutoriel Launcher"); labelTitle.setPosition(TConstants.WIDTH / 2 - 90, -4); labelTitle.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 22F)); labelTitle.setTextFill(Color.WHITE); Ligne 1: définir le texte à afficher Ligne 2: position X et Y Ligne 3: La police d'ecriture Ligne 4: Couleur du texte Bon, voila déja on a une base de launcher. Après c'est vrai que ça fais un peu brouillon.. Donc faut modifier tout ça et rajouter du Style. On ajoute ceci en desous de loginButton = new TButton(contentPane); loginButton.setStyle("-fx-background-color: rgba(53,89,119,0.4); -fx-text-fill: white;"); Ça va faire un truc un peu plus "joulie tout beau tahu.", Un effet assez sympathique, que l'on peut réutiliser sur les usernameField et passwordField. Si on décortique, on écrit: -fx-background-color: rgba(53,89,119,0.4); || Pour définir la couleur d'arrière plan ainsi que l'opacité (rgba(rouge,vert,bleu,opacité); -fx-text-fill: white; || Pour définir la couleur du texte. (pour l'exemple, white (blanc)). Ça nous rends un truc comme ça On profite de regarder le rendu du Logo aussi ;) [2] Bon c'est bien beau tout ça, mais la partie du téléchargement et du lancement du jeu ? Bien nous avons plusieurs solutions. Soit utiliser un système de téléchargement custom, ou bien utiliser ce qui suit. Personnellement, je vous conseille de faire votre propre système de téléchargement, c'est toujours mieux. Il va falloir déjà upload sur notre site les fichiers que Minecraft aura besoin. Ce que je vous conseille c'est de supprimer votre .minecraft et de télécharger la version de votre minecraft que vous souhaitez utiliser. vu que votre minecraft a était supprimé, votre installation sera neuve et donc ça sera mieux pour regrouper tout les fichiers nécessaires. Moi je l'ai fait et j'ai téléchargé la version 1.7.10. PACKS PREFAITS: PACK 1.7.10 PACK 1.8 PACK 1.9 Pour le Pattern du Dossier de téléchargement il faut qu'il soit présenté comme ceci: Dans le dossier assets, il vous faut les assets de votre version, personnellement j'ai ceci Ensuite dans le dossier game il faut: un dossier natives avec toutes les natives (télécharger les natives ICI (1.7.10)) et un fichier game.jar (en gros c'est le 1.7.10.jar qu'il faut renommer game.jar) Et dans le dossier libraires, il faut toutes les libs. Après, il faut le index.php a la racine, comme sur la première image. Mettez le dans le dossier de téléchargement sur votre hebergeur WEB. Ensuite dans votre classe LauncherPanel, public static Updater updater = new Updater(); public static XMLParser parser = new XMLParser(); public TLabel labelState; public static DecimalFormat df2 = new DecimalFormat(".##"); public TProgressBar bar; XMLParser <= Il va vérifier les fichiers Updater <= il va mettre a jour. labelState <= nombre de fichiers restants. df2<= Format décimal pour le pourcentage du téléchargement. bar <= Barre de progression. ensuite on ajoute ceci labelState = new TLabel(contentPane); labelState.setText("WAIT"); labelState.setPosition(2, TConstants.getHeight() - 20); labelState.setFont(FontLoader.loadFont(config, "votre police ecriture", "nom de la police", 60F)); labelState.setTextFill(Color.WHITE); labelState.setVisible(false); Ligne 2: texte a afficher Ligne 3 position Ligne 4: définir police écriture Ligne 5: Mettre sur Non visible car on télécharge pas directement. Puis: bar = new TProgressBar(contentPane); bar.setPosition(0, TConstants.getHeight() - 10); bar.setStyle("-fx-background-color: rgba(255, 255, 255, 0.0); -fx-padding: 1px; -fx-background-insets: 0; -fx-text-box-border: forestgreen; -fx-control-inner-background: palegreen;"); bar.setSize(TConstants.getWidth(), 20); Ligne 2: position Ligne 3: style (décoration) Ligne 4: taille de la barre. On va créer une fonction play() en bas de la classe et dans le loginButton.SetOnAction() on écrit play();. C’est ce qu va faire notre action quand on va cliquer sur le bouton. on ajoute de même pour les fields Pour être plus rapide, et si vous avez copié le code, faire une recherche avec CTRL + F et recherchez //AJOUT et remplacez //AJOUT par play();. dans la fonction play(), Il faut ajouter ceci à l’intérieur. Wrapper.log("Logging In..."); loginButton.setVisible(false); usernameField.setVisible(false); passwordField.setVisible(false); labelState.setVisible(true); rectLoginBox.setVisible(false); Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0), event -> labelState.setText("Mise a jour en cours... (" + df2.format(bar.getProgress() * 100) + "%)")), new KeyFrame(Duration.seconds(0.1))); timeline.setCycleCount(Animation.INDEFINITE); timeline.play(); if (!updater.isUpdating) { updater.checkForUpdate(parser, updater, bar); } Ligne 2 -> 5 <= On mets en invisible tout les composants et on affiche le label de téléchargement (labelState) ensuite on dis que si le updater n'est pas entrain de travailler, on va démarrer le téléchargement. et updater.CheckForUpdate va vérifier les fichiers invalides et les télécharger. Si vous n'avez pas de barre de progression, mettez null a la place de bar. Voilà, maintenant plus qu'a faire notre système d'authentification car sinon, c'est du Launcher Crack qu'on parle la :/ [3] Authentification Alors Maintenant, pour l'authentification, on va devoir écrire en haut de notre fonction play(); Authenticator auth = new Authenticator(usernameField.getText(), passwordField.getText(), true); auth.auth(); Puis ensuite, avec tout le code qu'il y a en dessous, on va devoir dire que si on est connecté, on lance le téléchargement, sinon, on affiche une erreur. if (auth.isAuthed) { Wrapper.log("Logging In..."); loginButton.setVisible(false); usernameField.setVisible(false); passwordField.setVisible(false); labelState.setVisible(true); rectLoginBox.setVisible(false); Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0), event -> labelState.setText("Mise a jour en cours... (" + df2.format(bar.getProgress() * 100) + "%)")), new KeyFrame(Duration.seconds(0.1))); timeline.setCycleCount(Animation.INDEFINITE); timeline.play(); if (!updater.isUpdating) { updater.checkForUpdate(parser, updater, labelState); } } else { new TALert("Can't connect to minecraft.net", AlertType.ERROR); Wrapper.log("Can't connect to minecraft.net"); } Et c'est tout! [4] SAUVEGARDE DES IDENTIFIANTS En haut de notre classe LauncherPanel, on ajoute public Preferences savedData = Preferences.userRoot(); Ensuite, on va récupérer les identifiants, ensuite, en dessous de usernameField.setFont(Font.font("Sabado", 17F)); usernameField.setText(savedData.get(config.PREFERENCES_ABREV + "_username", "")); en dessous de passwordField.setFont(Font.font("Sabado", 17F)); On ajoute: passwordField.setText(savedData.get(config.PREFERENCES_ABREV + "_pwd", "")); Et dans la fonction play();, en dessous de if (auth.isAuthed) { On ajoute: savedData.put(config.PREFERENCES_ABREV + "_username", usernameField.getText()); savedData.put(config.PREFERENCES_ABREV + "_pwd", passwordField.getText()); Et voilà, la nos identifiants sont enregistrés & sauvegardés. Bon voilà, il y a des chances que le tuto soit modifié pour des raisons d'optimisation car ce n'est pas optimisé du tout (du moins je pense car c'est la première version de la Lib) Merci de m'avoir lu, passez une agréable journée/soirée. N'hésitez pas à réagir a ce tutoriel afin de me faire remonter des problèmes etc..
  8. 2 points
    Afficher le claim d'une faction en jeu Bonjour la Communauté, Aujourd’hui, je vais essayer de faire un tutoriel (mon premier), qui consistera à afficher le claim d'une faction en Jeu ! (excusez la rédaction si elle se présente mauvaise mais c'est mon premier tutoriel, j'ai jamais rédigé avant ça xD) A) Pré-requis Tout d'abord, je vous recommande d'aller faire un tour sur le tutoriel de Wytrem => [1.7.x] Afficher un message central Car j'utilise la manière dont il affiche le message au milieu de l'écran pour ce tutoriel, donc, il est préférable de savoir comment ça marche :). 1) Classes Requises & Modifications Pour commencer, nous allons nous rendre dans la classe NetHandlerPlayClient (pkg: net.minecraft.client.network) Nous allons rechercher la fonction "handleChat" qui ressemble à ceci public void handleChat(S02PacketChat p_147251_1_) { this.gameController.ingameGUI.getChatGUI().func_146227_a(p_147251_1_.func_148915_c()); } On va changer la fonction en ceci public void handleChat(S02PacketChat p_147251_1_) { FactionEngine.onChatReceived(p_147251_1_); } Nous allons juste remplacer ce qu'il y a a à l'interieur par FactionEngine.onChatReceived(p_147251_1_); Vous aurez une erreur sur le FactionEngine et c'est normal étant donné que la classe n'est pas encore créée. Ensuite on va aller dans la classe Minecraft (pkg: net.minecraft.client) On va rechercher this.ingameGUI = new GuiIngame(this); et on va le remplacer par this.ingameGUI = new FactionIngame(this); La, nous changeons la classe appelée pour le GuiIngame par la notre (FactionIngame) qui extends de GuiIngame.. Et oui c'est normal si il y a une erreur etant donné que la classe FactionIngame, elle aussi n'est pas encoré créée. Une fois cela fait, nous allons ajouter nos classes manquantes FactionEngine: package fr.trxyy.factions; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.ISound; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.network.play.server.S02PacketChat; import net.minecraft.util.IChatComponent; import net.minecraft.util.ResourceLocation; public class FactionEngine { private static Minecraft mc; public static String factionName = null; public static boolean displaying = true; public static String warzoneString = "§r§4Zone de Combat !"; // defaut: §r§4WarZone public static String safezoneString = "§r§6Zone Tranquille"; // defaut: §r§6SafeZone public static String wildernessString = "§r§2Nature Sauvage"; // defaut: §r§2Wilderness public FactionEngine() {} public static void onChatReceived(S02PacketChat par1PacketChat) { mc = Minecraft.getMinecraft(); IChatComponent chatComponent = par1PacketChat.func_148915_c(); String unformattedText = chatComponent.getUnformattedText(); String formattedText = chatComponent.getFormattedText(); if (displaying) { if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { FactionIngame.showCenterMessage(warzoneString); setFactionName(warzoneString); // playSound(new ResourceLocation("orb"), 2.0F); // Pour jouer un audio quand tu rnetres dans la zone } else if (formattedText.contains("§r§e ~ §r§6SafeZone - Free from PVP and monsters§r")) { FactionIngame.showCenterMessage(safezoneString); setFactionName(safezoneString); } else if (formattedText.contains("§r§e ~ §r§2Wilderness§r")) { FactionIngame.showCenterMessage(wildernessString); setFactionName(wildernessString); } else if (formattedText.contains("§r§e ~ §r§")) { FactionIngame.showCenterMessage("" + formattedText.replace("§r§e ~ §r§", "")); setFactionName("" + formattedText.replace("§r§e ~ §r§", "")); } else { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); } } else { if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName(warzoneString); } else if (formattedText.contains("§r§e ~ §r§6SafeZone - Free from PVP and monsters§r")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName(safezoneString); } else if (formattedText.contains("§r§e ~ §r§2Wilderness§r")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName(wildernessString); } else if (formattedText.contains("§r§e ~ §r§")) { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); setFactionName("" + formattedText.replace("§r§e ~ §r§", "")); } else { mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); // setFactionName(null); } } } private static void setFactionName(String string) { factionName = string; } public static PositionedSoundRecord playSound(ResourceLocation p_147674_0_, float p_147674_1_) { return new PositionedSoundRecord(p_147674_0_, 0.25F, p_147674_1_, false, 0, ISound.AttenuationType.NONE, 0.0F, 0.0F, 0.0F); } public static String getFaction() { return factionName; } } FactionIngame: package fr.trxyy.factions; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiIngame; import net.minecraft.client.gui.ScaledResolution; public class FactionIngame extends GuiIngame { private static String toDisplay = null; private static int toDisplayTimer = 0; private static boolean displayStaticFaction = true; public FactionIngame(Minecraft mc) { super(mc); } public void renderGameOverlay(float par1Float, boolean par2Bool, int par3Int, int par4Int) { ScaledResolution scaledRes = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); int width = scaledRes.getScaledWidth(); int height = scaledRes.getScaledHeight(); FontRenderer fr = this.mc.fontRenderer; this.mc.entityRenderer.setupOverlayRendering(); super.renderGameOverlay(par1Float, par2Bool, par3Int, par4Int); if (FactionEngine.getFaction() != null && displayStaticFaction && !this.mc.isIntegratedServerRunning()) { fr.drawStringWithShadow("Claim: " + FactionEngine.getFaction(), 2, 2, 16777215); } if (this.toDisplay != null) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int alpha = this.toDisplayTimer < 10 ? ((int) (this.toDisplayTimer * 25)) : 255; int color = 0xffffff | ((alpha & 255) << 24); this.mc.fontRenderer.drawString(this.toDisplay, (width - this.mc.fontRenderer.getStringWidth(this.toDisplay)) / 2, height / 2 - 50, color); } } public void updateTick() { super.updateTick(); if (this.toDisplayTimer > 0) { this.toDisplayTimer--; if (this.toDisplayTimer == 0) { this.toDisplay = null; } } } public static void showCenterMessage(String formattedText) { toDisplay = formattedText; toDisplayTimer = 3 * 20; } } Il vous reste qu'a import dans Minecraft.java & NetHandlerPlayClient vos classes. Pour ce qui est du code du FactionEngine: String factionName => Le nom de la faction de base (par defaut: null) boolean displaying => est ce qu'on affiche le texte au milieu de l'ecran ou pas ? (par defaut: true) String warzoneString => Le message affiché quand on est dans la warzone String safezoneString => Le message affiché quand on est dans la safezone String wildernessString => Le message affiché quand on est dans la nature dans la fonction onChatReceived, On dis que si on affiche le message au centre, on check le message entrant: if (displaying) { // Si on affiche le message au centre if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { // Et si le message contiens... FactionIngame.showCenterMessage(warzoneString); // On affiche le message au milieu de l'ecran setFactionName(warzoneString);// on défini le nom de la faction. // playSound(new ResourceLocation("orb"), 2.0F); // Pour jouer un audio quand tu rnetres dans la zone } (oui il y a une fonction playSound mais je l'ai desactiver car faut mettre de la musique c'est mieux :D) Si le texte contiens "§r§e ~ §r§4WarZone - Not the safest place to be§r" Alors on affiche le message central qu'on a choisis dans la variable "warzoneString" puis on défini la variable "factionName" en "warzoneString", pour la warzone, ça sera évidemment safezoneString pour la safezone etc... Et on dis que si on n'affiche pas le message au centre, on check le message entrant: else { if (formattedText.contains("§r§e ~ §r§4WarZone - Not the safest place to be§r")) { // Si le message contiens... mc.ingameGUI.getChatGUI().func_146227_a(par1PacketChat.func_148915_c()); // on affiche le message dans le tchat basique // On affiche pas le message au centre de l'écran setFactionName(warzoneString);// on défini le nom de la faction. } Puis c'est pareil qu'au dessus, sauf qu'on affiche pas le message au centre de l'écran: Si le texte contiens "§r§e ~ §r§4WarZone - Not the safest place to be§r" puis on défini la variable "factionName" en "warzoneString", pour la warzone, ça sera évidemment safezoneString pour la safezone etc... Pour ce qui est du code de la classe de FactionIngame: La classe est extends de GuiIngame (logique car on a remplacé dans Minecraft.java, et donc il nous faut une classe qui permettra de rendre en jeu, GuiIngame par exemple) String toDisplay => message à afficher int toDisplayTimer => temps a afficher (laisser sur 0) boolean displayStaticFaction => afficher la faction toujours sur l'ecran On ajoute la fonction "renderGameOverlay" de la classe GuiIngame, et on affiche le tout a l'interieur. public void renderGameOverlay(float par1Float, boolean par2Bool, int par3Int, int par4Int) {} On défini ce dont on a besoin: ScaledResolution scaledRes = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); int width = scaledRes.getScaledWidth(); // taille de la fenetre horizontal int height = scaledRes.getScaledHeight();// taille de la fenetre vertical FontRenderer fr = this.mc.fontRenderer; // pas besoin d'expliquer ça quand meme :O Ensuite, on dis que si la faction n'est pas égal à "null" et que on affiche le texte toujours sur l’écran, et que on est sur on serveur et non pas en solo, alors on affiche un texte toujours actif pour afficher la faction. if (FactionEngine.getFaction() != null && displayStaticFaction && !this.mc.isIntegratedServerRunning()) { fr.drawStringWithShadow("Claim: " + FactionEngine.getFaction(), 2, 2, 16777215); } La c'est presque pareil, ce code est celui du tuto de Wytrem (voir ici) si le message a affiché n'est pas égal à "null", on affiche. if (this.toDisplay != null) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int alpha = this.toDisplayTimer < 10 ? ((int) (this.toDisplayTimer * 25)) : 255; int color = 0xffffff | ((alpha & 255) << 24); this.mc.fontRenderer.drawString(this.toDisplay, (width - this.mc.fontRenderer.getStringWidth(this.toDisplay)) / 2, height / 2 - 50, color); } Et enfin les deux dernières fonctions du tuto "Afficher un Message Central": public void updateTick() { super.updateTick(); if (this.toDisplayTimer > 0) // tant que le timer est plus grand que 0 { this.toDisplayTimer--; // on le reduit de 1 if (this.toDisplayTimer == 0) // si le timer est égal a 0 { this.toDisplay = null; // on mets le texte à afficher sur null pour arreter l'affichage. } } } public static void showCenterMessage(String formattedText) { toDisplay = formattedText; toDisplayTimer = 3 * 20; // (20 ticks = 1 sec) (3 * 20 = 3 secondes.) } updateTick: pour mettre a jour tout les 20 ticks (20 ticks = 1 seconde) Voir le tuto de Wytrem pour comprendre au maximum ces fonctions la. Rendu Final: Excusez moi une fois de plus pour la rédaction ou bien si il y a des fautes ou c'est c'est mal expliqué. Cordialement, Trxyy. (merci de me citer si vous utilisez mon code, ca serait aimable de votre part.) Bon Jeux !
  9. 2 points
    Sujet nettoyé. Au prochain HS c'est le lock.
  10. 2 points
    Bonswarr, J'ai fait un petit mod vite fait après une discussion avec @Knux sur FTB. En jouant on s'est dit que pouvoir accéder à l'entièreté de l'inventaire directement en jeu sans ouvrir de GUI serait vraiment pratique, voici donc Rollin' Stackin' (pun intended ©), qui permet de faire défiler les lignes de l'inventaire dans la barre d'inventaire. Vous avez juste à appuyer sur une touche configurable et à tourner la molette de la souris en même temps, le mod s'occupe du reste. J'ai même fait une petite vidéo de présentation pour vous faire oublier mon obscure tentative d'explication Pour le téléchargement ça se passe ici : Mediafire Mega À noter qu'à des fins d'optimisation et de respect, ce mod a également besoin d'être installé sur le serveur pour fonctionner en multi (bien entendu il fonctionne sans soucis en solo). Enjoy !
  11. 2 points
    Hey juste pour info, l'image ne correspond pas avec les services que vous proposez. (oui, j'ai vu que le site était en "construction")
  12. 2 points
    Ce n'est pas moi non plus. Il n'y a pas de mal, comme je l'ai dis, je préfère lire des commentaires négatifs mais constructifs plutôt qu'un simple commentaire. Avec tes réponses, j'en déduit que je n'ai probablement pas mis assez de screens et qu'il faudrait que j'en ajoute.
  13. 2 points
    Si, des gens qui travaillent gratuitement ça existe, on appelle ça du bénévolat. C'est sur que c'est pas avec une présentation comme ça que quelqu'un aura envie de rejoindre mais ça n'est pas une raison pour le rabaisser. Tout le monde n'a d'ailleurs pas envie d'apprendre à coder, c'est pas parce qu'on veut faire un beau serveur qu'on doit devenir devops et tout gérer de partout. Tu doit vendre ton serveur pour que les gens aient envie de travailler dessus, comme une offre d'emploi, montre que c'est un projet ambitieux, que y'a des idées, pas forcément une roadmap mais au moins que tu sais vers quoi tu t'oriente. Un dev c'est un être humain, il va travailler sur ce qui l'intéresse, surtout dans le cadre du bénévolat. Il faut réussir à captiver les gens, mais ce n'est pas avec deux screens que ça explique ce que tu veux faire
  14. 1 point
    C'est juste une info qui t'évitera d'espérer le "très improbable" (pour ne pas dire impossible et me manger un downVote salé) Autre info sympa, que tu veuilles recruter un dév ou un modélisateur, dans tous les cas il est bon de décrire un peu le travail demandé/proposé aimablement
  15. 1 point
    La bonne orthographe est "Programmation". C'est assez important sur un CV...
  16. 1 point
    Salut à tous et à toutes ! Moi c'est Xavier, allias Mamy la Puce, appelez-moi Mamy ça ira très bien ^^ non je ne suis pas une femme malgré mon pseudo ^^ il a juste une longue histoire avec moi-même et j'y suis attaché. J'ai 37 ans et j'ai toujours aimé les jeux vidéos oui, j'ai d'ailleurs commencé avec un Amiga 600 sur lequel j'ai découvert mon 1er jeu sur un monde "ouvert" (pour l'époque ça l'était en tout cas) : Frontier Elite II Que de souvenirs, et dieu seul sait combien d'heures j'y ai passé ^^ J'étais aussi tombé amoureux de Another World et de Dune 1 !! Des jeux magiques pour l'époque :D Et puis, un jour, alors que tout l'aspect graphique de cet univers me rebutait au départ : MINECRAFT... Bon sang, si j'avais su quelle drogue ça pouvait être... maintenant je sais ! Une rencontre magique, un mélange de légo et d'aventure, des instants sympas entre amis et un monde de moddeurs par excellence. Minecraft sans mods c'est déjà très sympa, mais avec mods c'est tellement plus vaste en possibilités, le côté bac à sable est précisément ce dernier point pour lequel bon nombre d'entre nous peuvent réaliser pleins de choses POUR le jeu et c'est là toute sa richesse. Pour d'autres, comme moi, c'est une opportunité de pouvoir tâtonner dans Photoshop afin de réaliser mes propres textures pour certains mods dont je ne peux plus me passer. Et c'est justement ce point-là qui m'a fait découvrir cette communauté, un mod dont l'auteur ne souhaite plus en suivre les mises à jour, ça arrive, c'est compréhensible dans la mesure où ça n'est qu'une passion liée à un loisir. La vie n'est pas faite que de cubes ou de code ^^ Je n'en veux donc pas au moddeur mais j'ai du mal, pour moi et pour le serveur de notre petite communauté d'amis (serveur privé seulement en somme), à me passer de ce mod qui n'a pas suivi en 1.12.2 et s'est arrêté en 1.11. Mais c'est un sujet que je posterais dans la rubrique adéquate pour éviter de faire doublon et également de faire trop long. Pour terminer sur ma modeste présentation, j'ajouterais que je suis assez fier du travail de textures que j'ai entrepris sur un mod ajoutant pas mal de mobs et que j'aurais l'occasion sûrement de vous montrer ^^ Le travail est loin d'être terminé et loin d'être au goût de tous c'est sûr mais moi en tout cas j'en suis fier et cela m'a valut de très longues heures... semaines... mois de travail pour y arriver. Je me suis découvert un petit engouement pour le texturing mais surtout sur Photoshop qui est un outil tellement polyvalent et puissant que j'ai du mal à travailler sur autre chose désormais. Si je suis venu ici c'est parce que j'ai entendu parler d'un logiciel : MC-Creator, permettant de faire ses propres blocs/minerais et items qui en découlent, j'imagine déjà certains d'entre vous avec les cheveux hérissés sur la tête à lire cette ligne ^^ et je peux comprendre aisément cette réaction dans la mesure où créer des textures avec des logiciels simplissimes via Qubble par exemple (en partant du principe qu'on parle surtout de textures plutôt orientées HD) est uniquement pour moi un moyen de mieux comprendre l'emboitement des calques sur un modèle, chose difficile à imaginer une fois tout à plat et déplié... Et donc en cherchant des infos sur ce logiciel, j'ai effectivement noté qu'il était beaucoup critiqué de par ses bugs mais aussi de par le fait qu'on pourra pas faire tout ce qu'on veut comparé au codage pur. Quelqu'un sur un commentaire d'un fofo ayant posté un lien vers ici pour inciter les gens curieux dans la discussion à apprendre par soi-même et PLOP ! ME VOICI ! Et... je me rends bien compte de la longueur de cette présentation qui comme dans Minecraft, cube par cube, commence à prendre de l'ampleur ^^ Alors je coupe court en vous saluant et merci à ceux qui seront parvenus aux bouts des dernières lignes ;-) A très vite ! Mamy la Puce
  17. 1 point
    Exactement mon cher ami, je ne suis pas de nature à abandonner et surtout pas dans le domaine de mon précieux web :)
  18. 1 point
    CMS qui prévoit un grand avenir ! Travaillant chez Trix, je trouve l'équipe très motivé et qui ne lâche rien ! Ce projet ne terminera sûrement pas à l'abandon et propose de nouvelles fonctionnalités inédites par rapport aux autres, il fait tout pour se démarquer
  19. 1 point
    Bonjour, J'ai remarqué qu'il y a une section Créations, donc je me permet de montrer une"création test" car ce n'est pas fini. Voici le rendu que j'ai obtenu en tentant de faire un launcher un peu plus animé, pour changer d'une image fixe . (Le gif est de qualité médiocre je vous l'accorde.) Bien cordialement. Bonne Soirée/journée. Il semblerait que quelque chose s'est reveillé ICI :O
  20. 1 point
    Ca vous est forcément déjà arrivé de modder des choses et que finalement vous vous rendez compte que vous vous être trompé de fichier, de code ou autre. Envie de prendre une bonne tarte de rire ? Poster vos plus beaux fails ici Et je commence la valse avec : J'ai modifié le fichier WorldGenSwamp au lieu de BiomeGenSwamp ^^ Maintenant, à votre tour
  21. 1 point
    Salut. Tu auras la réponse sur cette FAQ : Lien crack retiré par la modération Cordialement, UssopSniperKing
  22. 1 point
    ═══════════๑۩۞۩๑═══════════ Enchanté à vous tous, cher Staffs de Serveurs, entreprises ou lecteurs, je vous prie d'agréer mes plus sincères salutations. Depuis bientôt 10 ans Minecraft fait les beaux jours de la communauté, dont les miens puisque j'en ai la connaissance depuis 8 ans. De ce fait, en ce moment, en voyant le potentiel, l'organisation déjà en place et l'avenir grandissant sur Minecraft j'ai eu l'ambition et l'envie d'avoir un poste à responsabilité me procurant satisfaction personnelle, enrichissement et découvertes. En effet durant ces dernières années, j'ai compris, de part mes nombreuses envies d'ouvrir mes propres serveurs que le poste de " Fondateur " n'était pas fait pour moi pour le moment, du moins en solitaire. C'est ainsi que je chercherai un poste à haute responsabilité pour palier à cela et qui me permette d'exploiter au maximum mes compétences. C'est ainsi que je postule en premier lieu comme Staff pour n'importe quelles organisations. Je vous prie de prendre la patience pour lire cette brève candidature. Ma candidature se compose de plusieurs parties ; ═══════════๑۩۞۩๑═══════════ Ⅰ ★ Présentation IRL ? Je me nomme Ugo, j'habite à Bordeaux, j'ai 20 ans et demi et je suis en Licence 1 en Faculté d'Eco-Gestion au campus Bordeaux Montaigne à Talence ou j'étudie le Droit, la Macroéconomie, la microéconomie, la comptabilité, les analyses statistiques, les langues, le management en Entreprise, l’histoire des faits économiques. J'ai choisi les spécialités de Sciences du Management et de Gestion. Issu d'un Bac scientifique avec un très bon dossier j'ai toujours eu ce goût pour le travail rigoureux. Je fut également Responsable Boulangerie de l'Intermarché de ma ville à mi-temps le Week-End, ce qui m'a procuré un petit salaire me permettant d'assumer ma vie étudiante et d'acquérir en expérience.Ce parcours assez difficile m'a enrichi et est le résultat de ma maturité actuelle, car en effet je suis passionné par l'Histoire, la politique, les sciences et les mystères de la vie. Ce goût de la culture m'a prit très jeune, en effet j'ai 8 ans de guitare, 1 an de Batterie, 5 ans de Football, 3 ans de Multisports et 5 ans de Tennis derrière moi. Cette multiplicité de pratiques sportives m'a forgé un caractère de " leader " pour gérer une équipe. Ainsi je me destine vers un métier du Management, de direction et de Gestion. En ce sens j'ai l'idée, après ma licence d'aller en École de Commerce Privée pour débuter un cycle de Mastères Langues et commerce international puis Strategie e-commerce et Webmarketing. De plus, en ce moment j’étudie l’art et les rudiments du Marketing me donnant une vive envie de créer mon entreprise ! ═══════════๑۩۞۩๑═══════════ Ⅱ ★ Présentation IG ? EzekiahMC, Minecraftien polyvalent sur Minecraft depuis bientôt 8 années, je peux me vanter d'être très expérimenté sur ce jeu de Cube. Non seulement car c'est le seul jeu auquel je joue depuis cette période mais aussi par cette multiplicité d'occupations que j'ai connu depuis que j'ai commencé Minecraft. En effet, je réalise des constructions de toutes sortes depuis quelques années de qualité moyennes me procurant le droit de me dire " Architecte ". De plus j'ai eu des brèves expériences de Graphisme et je suis actuellement en apprentissage de Trailer Making. Mes spécialités depuis ces années sont comme vous l'aurez deviné, le management, la gestion, la modération. Cependant je suis plus axé PvP/Factions, PvP/box, Minis Jeux et Prison.Je suis dans l’administration régulièrement et Community Manager/ Manager conseillé par otta.fr, d'où j'ai appris les bases du métier. Je réalise des prestations de conseil en Community Management, Relations blogueurs, et veille e-reputation. En clair : Mon équipe aide les marques à s'exprimer en ligne, surveiller leur image, et être présentes sur les réseaux sociaux. De plus je suis expert en Marketing YouTube & Twitter de part le fait que YouTube représente une grande partie de ma vie depuis 6 ans, ou j'ai obtenu plus de 25.000 abonnés en 3 ans et ai récemment lancé ma passion de digital influencer Concours Twitter qui marche assez bien avec déjà 35.000 Followers ( 2.300.000 vues par mois ) et une rentabilité. En tout et pour tout je suis souvent sollicité pour des postes de Gérant Marketing rémunéré à hauteur de mon travail sur de gros projets destinés à atteindre 600-800-1000 connectés avec une moyenne de 357€ de Budget Publicité ( un total plus de 10 projets). De plus j'ai réalisé le plus gros lancement Marketing YouTube pour un Serveur Minecraft pour Sunaria, deux événements spéciaux et BloodSymphony avec plus de 3.000.000 de vues sur Youtube de référencement et 800.000 sur Twitter. Notre Serveur s'était classé Premier Serveur Français au niveau des référencements. Cependant cela reste un projet professionnel qui n'a pour l'instant pas d'égal en terme de sérieux, professionnalisme et d'ambitions sur Minecraft.Concrètement, je propose un accompagnement régulier ou j'interviens sur des problématiques ponctuelles (audit, lancement…). L'animation d'une Page Facebook et la mise en place de jeux-concours, le développement d'un compte Twitter, Google+, Pinterest ou Instagram, la sélection de blogs pertinents pour faire parler d'un produit ou d'un événement sont notre quotidien. Je travaille avec des entreprises / institutions / associations Gaming. A noté aussi que je suis le Manager de Shazen ( 170k+ abonnés ), LaFourchette ( 215k+ ), Kowze ( 220k+) Octonia et Hyriacraft. ═══════════๑۩۞۩๑═══════════ III ★ Mes expériences ? De part mes expériences de Fondateurs, avec Kingswor.... qui comptait 45 connectés ensuite LawPara... qui a comptait plus de 105 connectés et ma consécration avec Hellocr.... qui a connu plus de 530 connectés simultanés. En tant que Community-Manager, Manager j'ai connu de grands projets comme Blast... ( 85 connectés ), Elys...( 50 connectés), Celesc... ( 65 connectés ) etc et une association nommée Evosial dont je suis un co-fondateur et Administrateur général de la Communication et de l'administration Supérieure. De plus, comme Modérateur mes expériences se comptent par dizaines avec notamment Hypa...( 175 connectés, Warcr ( 500 connectés ), Factio.. ( 130 connectés ), FactionRunne.... ( 125 connectés ), ScarFi...( 90 connectés ), Ecloz.. ( 250 connectés ), Mines... ( 100 connectés ), FunPv… ( 180 connectés ), Hyri... ( 200 connectés ) etc. Tout en ajoutant que j’exécute des missions de communications / recherches ponctuelles pour divers gros serveurs, tel que SkillP.. ou même Hyri... De plus je peux ajouter à ceci des expériences professionnelles sur des sites en lien avec Minecraft de Modération / Management innovant qui a élargit ma culture minecraftienne au delà du jeu !En complément de ceci je suis Youtuber et Influenceur Twitter . Ce qui est un élément très important pour un Manager spécialisé sur YouTube & Twitter de part mes très nombreux contacts dans le domaine et mon activité quasi fréquente dessus.En terme de vie IRL, j’ai travaillé en Entreprise en tant que Responsable de rayon et est donc la fibre professionnelle me permettant d'être le plus rigoureux possible dans mon travail. De plus j'ai eu quelques salaires avec de très bon boulots en ligne. ═══════════๑۩۞۩๑═══════════ IV ★ Mes Motivations De part ma large expérience dans ce domaine, suite à divers opérations de Modération / Administrations sur des Serveurs à gros budgets j'ai eu des responsabilités à grande échelle avec des milliers de personnes. L'ambition d'un projet est ma priorité et j'ai en effet compris les attentes de certains qui semblent pour moi à la hauteur de mes ambitions. Vos projet peuvent s'étendre, faire connaître leurs modes de jeux, s'améliorer, donner un nouveau visage à la communauté. Il suffit d'investir, de faire confiance, bien réfléchir aux lignes directrices qui pourraient faire de vous un projet professionnel et grand. C’est justement ceci qui me plait, l'ambition est une chose rare dans Minecraft et je crois que vous pouvez la posséder, c’est cela qui me plait et qui m’a permit de refuser beaucoup de grands et sérieux projets qui me jugeait pourtant dans l'excellence mais qui ne pouvait pas m'apporter l'enrichissement personnel dont j'avais besoin malgré le grand respect que j'avais pour eux.Cette expérience va me permettre de m’enrichir encore un peu plus sur Minecraft et en ligne, découvrir quelque chose que je n’ai jamais fait en terme de Projet, de contenu, d'ambitions, de connaissances nouvelles. ═══════════๑۩۞۩๑═══════════ V ★ Mes Horaires ๛ Lundi: 12h30-00h ๛ Mardi: Toute la journée ๛ Mercredi: 12h30-17h & 21h-00h ๛ Jeudi: Toute la journée ๛ Vendredi: 15h30-00h Weekend: Toute la journée Vacances: toute la journée Suivant mon emploi du temps semestriel ═══════════๑۩۞۩๑═══════════ ๛ Voilà tout pour ma candidature aux postes d'Administration, de Responsable Communication, E-Marketing, consulting. Je vous remercie de m'avoir lue jusqu'au bout et j'espère qu'elle vous satisfera.Un site personnel et professionnel pour mes services est dédié à ma personne à cette adresse :๛ Site : EzekiahMC๛ Twitter : EzekiahMC | Concours (@EzekiahMC) | Twitter๛ YouTube : EzekiahMC๛ Instagram : EzekiahMC (@ezekiahmc) • Photos et vidéos Instagram๛ TeamSpeak : ts.ezekiah.frN'hésitez pas à rajouter des avis supplémentaires en bas de ce CV ou directement sur mon site à cette adresse EzekiahMC .๛ Merci de votre compréhension, de votre patience pour avoir pris le temps de la lire.๛ Cordialement EzekiahMCAu revoir ═══════════๑۩۞۩๑══════════
  23. 1 point
    Moi je trouve cet avis valable et cohérent avec le CV.
  24. 1 point
    Je ne connais pas spécialement EzkiahMC, je sais qu'il est dans le "milieu" (pvp faction) depuis assez longtemps, tout comme moi d'ailleurs, depuis le temps que je suis là, j'ai recruté/fait des partenariats avec des dizaines de YTB et je n'ai JAMAIS eu de problèmes pas une seule fois en près de 3 ans, excepté la fois ou un YTB devait me faire une vidéo et que EzekiahMC devait "gérer" tout ça (il était le CM du YTB en question qui avait 150k abo's il me semble) Je vous laisse admirer : http://prntscr.com/j1dqr1 Pour résumé, le YT devait faire une VOD sur mon serveur qu'il n'a JAMAIS fait, j'ai payé 200€, plus d'un mois après toujours rien j'ai du me battre avec le YT pour être remboursé finalement il ne la jamais fait (le but était clairement de l'arnaque) et j'ai du faire un litige. C'est la première histoire de EzkiahMC mais y'en à d'autres, parfois de manière totalement random il va sur des teamspeak pour faire la promo de truc totalement naze (des sites qui vendent des comptes MC à 2€ par exemple) En gros EzkiahMC c'est le mec qui n'a aucune moral, si vous êtes en partenariat avec lui et que vous lui dite de promouvoir votre projet il fera TOUT pour le faire, ça peut aller du spam massif au quasi harcèlement sur teamspeak/forum et autres. Et soyez heureux, même si votre projet est de la pure arnaque il le fera quand même.
  25. 1 point
    Poste a supprimer
  26. 1 point
    Oui j'utilise le fameux "Bootstrap" mais aussi "Bulma.io" que j'aime tout particulièrement ! =)
  27. 1 point
    Pourquoi pas sur github ? Car peut être que des gens voudraient contribuer (après ce n'est peut être pas ce que tu veux). Sinon c'est super de rendre ça open source !
  28. 1 point
    IMMUNITY-DEV Bonjour/Bonsoir à tous, nous proposons nos services de développements pour vos launcher pvp/factions moddée. Pourquoi nous choisir nous ? Comme nous sommes plusieurs développeurs, nous pouvons nous répartir les tâches, ce qui permet donc de réduir le temps passé sur le développement de votre projet. Nous avons un cahier de charges travaillé et détaillé, afin de répondre au mieux à vos demandes. KeyStrokesMod: https://image.noelshack.com/fichiers/2017/52/4/1514465307-keystrokes.png Waypoints : https://image.noelshack.com/fichiers/2017/52/4/1514465305-waypoint.png Macro : https://image.noelshack.com/fichiers/2017/52/4/1514465309-macro.png - Gui Wiki : https://image.noelshack.com/fichiers/2017/52/4/1514465304-wiki.png Info'Board https://image.noelshack.com/fichiers/2017/52/4/1514465342-infoboard.png Radio: https://image.noelshack.com/fichiers/2017/52/4/1514465307-radio.png N'hésitez pas à nous critiquer de manière constructive, nous serons ravis de les prendres en compte. D'autres screenshots seront ajoutés. Pour nous contacter: Notre site : https://immunity-dev.fr/ (Pas encore terminé). Notre skype: Immunity-dev.support Bonne journée/Bonne soirée !
  29. 1 point
    Bonjour à tous et à toutes, nouvelle annonce, les sources sont désormais disponibles à cette adresse de téléchargement
  30. 1 point
    Générer des nouveaux minerais Introduction Bonjour à tous ! Aujourd'hui il est l'heure d'écrire mon premier tutoriel sur Ironcraft :) Donc nous allons voir ensemble comment ajouter votre minerais créé avec MCP en 1.7.10 à la génération de votre monde, il apparaitra donc comme le diamant, le fer etc ! Prérequis Savoir utiliser MCP, et avoir créé un minerais. C'est partit ! 1) Ouvrez le package net.minecraft.world.biome, comme montré ci-dessous : Ensuite Rendez-vous dans la classe BiomeDecorator. 2) Tout en haut de la classe BiomeDecorator, après le public class BiomeDecorator {, rajoutez ceci : protected WorldGenerator tutoGen; En remplacant tuto par le nom de votre minerais (ou ce que vous voulez). Ceci permet d'initialiser tutoGen en tant que WorldGenerator. Ce qui vous donne : 3) Descendez un peu dans la classe jusqu'à this.generateLakes = true;, et rajoutez en dessous : this.tutoGen = new WorldGenMinable(Blocks.tuto_ore, 6); N'oubliez pas de remplacer tutoGen par le nom que vous lui avez donné plus haut. Ceci permet dire que l'on veut que notre minerais tuto_ore sois généré dans la map. Le 6 signifie le nombre maximal de minerais généré ensemble, la taille du filon. Vous pouvez changer cette valeur comme vous le voulez. Ce qui vous donne : (Chez moi, tuto_ore est en blanc car je n'ai pas créé ce block, il faut donc que vous l'alliez créé de votre coté) 3) Descendez tout en bas de la classe jusqu'à la fonction generateOres(), et rajoutez ceci : this.gendStandardOre1(10, this.tutoGen, 0 ,16); Ici, le premier nombre à remplir (dans mon cas 10) est la rareté du minerais, mon minerais va donc être moins présent que le fer ou le charbon (qui sont à 20) mais va être plus présent que le diamant ou la redstone (qui sont respectivement à 1 et à 8). Le this.tutoGen correspond au protected WorldGenerator tutoGen; que nous avons mis au début, et les deux derniers chiffres signifient entre quelles couches notre minerais peut apparaître, donc ici entre les couches 0 à 16. Ce qui vous donne : Et voilà, c'est terminé ! Maintenant si je créé un nouveau monde et que je cherche un peu, je vais trouver mon minerais ! J'espère que ce tutoriel vous aura aidé !
  31. 1 point
    Salutations à vous !Je fais appel à vous développeurs pour m'aider à finaliser mon projet de serveur car je nécessite la création de 3 plugins pour enfin terminer le travail en cours ! > Et nous recherchons un partenariat à long terme, ( équipe soudée et performante) en développement Java, Web, (Mod, Launcher en coding ).Postes recherchés : - Développeur Web ( spécifiquement PLUGIN ) - Développeur Java - Rédacteur / Rédactrice - Builder / Terraformeur - Community Manager Pour vos donner une idée de ce que représente Kwak Battle actuellement :Notre Launcher :Notre Site :Et pour vous donner une idée de notre Spawn ? ======> (Merci à l'équipe de Celticraft)Si vous êtes capable et déterminer pour la création des quelques plugins qui nous manquent et ou vous êtes le développeur que l'on recherche pour enfin finir notre projet contactez nous soit par message sur le forum afin que je vous donne l'ip de notre Teamspeak 3 et skype.Merci,Cordialement l'équipe Kwak !
  32. 1 point
    Oui mais déjà utiliser un framework réglerai plusieurs de tes problèmes et aujourd'hui faire un site sans framework c'est un peu faire un trou à la petite cuillère, c'est possible mais tellement moins rapide qu'à la pelle (et surtout le framework te cadre donc limite les failles). Est ce que tu en utilise un ?
  33. 1 point
    Inspecteur Gadget! Go go gadgeto Idée novatrice
  34. 1 point
    Tu fais une seule faute (édit: ah non y'en a plusieurs au final) ici mais sur ton site on en voit plein. Je te propose que tu modifies ça par toi-même gratuitement dans ton propre intérêt.
  35. 1 point
    On voit une bonne activité mais c'est très désagréable cette petite police pour autant de texte .
  36. 1 point
    Surtout qu'il ya une bonne communauté de programmeur dedans ^^
  37. 1 point
    Salut, Alors je ne fais pas des UP uniquement pour les personnes tournant en boucle dans le forum, mais egalement pour ceux qui viennent ici periodiquement. Ensuite, je ne recrute plus de modérateur comme c'est indiqué dans le post (justement, je l'ai édité, merci du conseil :D ) Si mon projet n'interesse personne, ce n'est pas pour autant que je vais l'abandonner, qui plus est, personne ne repond sur ce topic, ils viennent directement sur discord. Cordialement
  38. 1 point
    Bonjour, bonsoir chers lecteurs, rapide message pour vous signaler une update du post initial. La vidéo tuto sortira d'ici 1 ou 2 semaines, avec la v2.0, en attendant la v1.0 vous permettra tout de même d'importer des .mdl, n'hésitez pas à poser vos questions, j'y répondrai =)
  39. 1 point
    Arrête d'up tous les jours, c'est assez chiant, si personne ne répond, c'est que tu n'as pas assez présenter ton projet, ou alors que ton projet ne les interesses pas ! Cordialement.
  40. 1 point
    ( ・_・)/ ☞-☞-☞-☞-☞ Rejoignez le projet ☜-☜-☜-☜-☜ \(・_・ )
  41. 1 point
    Bonjour à tous ! Rapide message pour vous avertir que la v2.0 sortira, sauf imprévu(s), début février. Elle regroupera à la fois optimisation, gain de consommation de RAM par les modèles chargés et lecture + rapide du fichier binaire. Alors n'oubliez pas, si d'ici là le sondage atteint les 20 réponses positives, alors je compléterai la rubrique "Téléchargement". Merci de votre attention portée et bonne soirée/journée.
  42. 1 point
    Nah c'est pas toi Casper On t'as déjà répondu que non
  43. 1 point
    C'est mieux quand on parle de quelque chose de mettre des image en rapport au sujet, perso si a ma revu de projet je mets des images de cailloux alors que je parle d’électronique je ne ferrait pas bonne impression ... C'est beaucoup plus professionnel si tout est en lien et tout est organiser. Sinon bonne chance a vous ! Vous pouvez encore améliorer tous sa ! sa part sur de bonnes bases. DiaZzz
  44. 1 point
    Je sais bien ^^. Il a réussi à me coller 50 réputations négatives C'est tellement drôle
  45. 1 point
    Je comprends ta réaction vu que je critique tes "copains", tu dis ne pas faire partie de l'équipe mais tu n'es pas neutre dans l'histoire (et me dit pas le contraire tu es fondateur de noctalia avec exsize qui à "modifié" le site https://immunity-dev.fr/). Bref, moi j'arrive sur ce topic, je vois que des trucs vues 10 000 fois. Aujourd'hui quelqu'un qui ne connait pas un mot de Java peut faire tout ce qu'il y a dans les screens (car les sources tournent partout). Moi je me mets à la place du client qui veut un truc jamais fait nul part et un minimum complexe, est-ce que l'équipe "immunity-dev" peut le faire ? Aujourd'hui je vois ces screens, j'en déduis que cette équipe n'a rien fait de nouveau par rapport aux 600 autres devs qui savent piochers dans des sources existantes pour le faire. Dans cette histoire, je ne cherche pas à dévaloriser cette équipe, mais à dévaloriser les voleurs de sources des autres vrai développeurs. Ce qui est bon à savoir c'est juste si cette équipe peut réaliser du vrai code à la sueur de leurs fronts ? Après en effet j'y suis allé un peu fort et j'ai peut être porté un jugement trop hâtif, mais c'est là qu'on voit les "vrais" développeurs qui sont sûrs d'eux. Ps : 2 personnes s'amusent à se créer un compte pour mettre une réputation négative à tous mes messages http://prntscr.com/hubxlt http://prntscr.com/huby2h http://prntscr.com/huby7f
  46. 1 point
    Bonjour, On ne va pas te donner du code tout fait, mais on peut t'aider quand tu bloque. Tu sais coder en Java ? Si oui tu devrait pouvoir te débrouiller en comprenant les différentes méthodes dans les classes des minerais. Si non tu souhaite vraiment apprendre à modder ou c'est juste pour faire un serveur ? Si c'est le cas, prends le temps d'apprendre le java. Sinon essaye plutôt de trouver quelqu'un qui sait déjà coder et qui aurait envie de travailler pour ton serveur
  47. 1 point
    Ok car c'était pas clair dans l'annonce. Pourquoi supprimé ?
  48. 1 point
    Sans détails ça va être compliqué d'attirer du monde :/
  49. 1 point
    c pas la même chose la qui compte c'est que c'est mon travaille 100% en + je vous montre mon travaille surtout jais pas vendu le launcher que tu dit il ressemble a celle de plutonia je veux juste vous montrer ce que je peux réaliser et merci
  50. 1 point
    Ya pas de arrête d'ailleurs pourquoi tu supprime ta copie du launcher d'Averfight ? Tu utilise exactement les mêmes boutons, le même fond. Une belle copie en 1 mot. Pour ceux qui veulent la preuve de la copie de Plutonia (la copie de celle d'Averfight était encore mieux mais il l'a supprimé): Son launcher: http://prntscr.com/fx4ehg Launcher Plutonia: http://prntscr.com/fx4fa0
×