Aller au contenu

[Projet] Les objets de minefield... En solo dans un mod !


Harizone-Ford
 Partager

Messages recommandés

Salut à tous et à toutes :)

 

Hier j'ai commencé à apprendre des bases de Java et aujourd'hui j'ai réussi à reproduire la glowstone pure (qui n'a pas de nom par défaut) que l'on trouve sur minefield !

 

Donc je me suis dit que en m'entraînant un peu j'arriverai un jour à reproduire tous les objets présents sur minefield, mais dans un mod en solo.

 

IMPORTANT : Pour l'instant, pour créer cet objet lumineux, il faut juste placer UN SEUL cube de glowstone dans la craftbox, mais tout a un début et je corrigerai ça dans les prochains jours.

 

Voici le commencement : Lien enlevé en l'attente de l'accord des administrateurs

 

1)Téléchargez ce fichier ainsi que modloader

2)Installez modloader (vous savez faire)

3)Mettez TOUS les fichiers de mon p'tit pack dans minecraft.jar

4) Supprimez META-INF

5)Testez.

 

Voilà, si vous souhaitez m'aider, m'encourager, me questionner ou même m'insulter pour plagiat

( P-p-p-Plagiat :twisted: )

Envoyez moi un message privé ici ou sur ma chaîne youtube sur laquelle je vais faire une série de tutos sur le modding !!!

 

Sur ce j'vous dit à bientôt et à plus tard pour un nouvel objet !

Lien vers le commentaire
Partager sur d’autres sites

Pour moi, je trouve ça très intéressant :)

Pourquoi me demanderez vous? Eh bien parce que souvent, je joue avec les deux launchers à la fois, l'original en mode solo avec une construction que j'ai faite et celui de minefield en multi où je reproduis la construction que j'ai faite en solo ^^ Et il me sera donc utile d'avoir ces objets comme mod :)

Lien vers le commentaire
Partager sur d’autres sites

Certes tu recodes tout toi même, mais tu t'appropries les idées du staff. Et ça reste bel et bien du plagiat. Sans être juriste, je pense qu'il peut exister des recourts contre ça.

 

Quand à ce qu'il en est de la comptabilité entre mod, dès que tu vas avoir commencer a modifier un paquet de .class, tu vas voir, plus rien ne va fonctionner, comme sur le launcher MF.

 

 

En bref, une très mauvaise idée. Si tu souhaites coder, invente tes propres items plutot que de plagier le travail des autres.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

Merci d'envoyer un mp à Dokmixer ainsi qu'à Neymir (et Socolin) pour demander leur accord, chose que je doute que tu obtiendras.

 

J'ai déjà envoyé un mp à dokMixer, j'attends sa réponse pour continuer, sinon bah j'arrête ... Ou je fais et je garde juste pour moi sans le donner à qui que ce soit ...

 

@Super_Pingouin : Je te remercie de ton avis, ça m'a éclaircit un peu les idées :)

Lien vers le commentaire
Partager sur d’autres sites

Plop,

 

Minefield casse volontairement la compatibilité avec d'autres mods, ce qui n'est pas le cas si on veux faire les choses proprement, pour la création "simple" de block, il suffit d'utiliser l'API de ModLoader qui lui est compatible avec 95% des mods et qui ne détériore pas plus la compatibilité :)

 

Pour ce qui est de s'approprier des idées, la JAVA n'est pas un langage dans lequel tu peux cacher tes trucs (où difficilement) et c'est grâce à ça qu'aujourd'hui Minecraft rencontre un tel succès avec une communauté de moddeur aussi grande.

 

De plus pour encore aller plus loin, MFAFPI (Minefield API), utilisé pour la création block, n'est rien d'autre qu'une pseudo copie de ModLoader ;)

Lien vers le commentaire
Partager sur d’autres sites

Non, en fait un langage comme le C est compilé, càd que tes lignes de code sont transformées en langage machine (Assembleur) et illisible car un processeur c'est con et un simple printf("Hello world"); (Le fait de faire apparaître Hello world à l'écran) implique des centaines d'autres instruction C qui se transforme rapidement en d'autres centaines d'instructions assembleur.

 

Le JAVA c'est pas un langage compilé, pour faire tourner une application java, on le sais il faut installer une machine virtuelle (Java Runtime Environment). C'est cette machine qui va traiter un pseudo code (Appelé ByteCode) qui est une transformation basique du code tapé par le programmeur, ce n'est donc pas transformé en un langage bas niveau (Assembleur), donc est soumis au reverse engineering -> Retransformé du code bas niveau en un code source lisible.

 

On peux le rendre moins lisible en codant comme un porc, par exemple Mojang fournis un code sans nom de variable et de classe (Name Obfuscation) ! Du coup on se retrouve avec des classes appelées a, b, c ... jusque z et même aa, ab, ac ... et depuis la 1.8 on a des classes aaa, aab, aac ... qui appelle des d'autres classes a, b, c et que le code est composé de : "si a est égale à b, il faut faire c, sinon renvoyer l'information a la classe b" (classe b qui n'est pas pareil que la variable b!). Mais ça n'empêche pas des tarés de rendre le code lisible (Voir Minecraft Coder Pack). Donc c'est pas les quelques fichiers de Minefield qui sont dissimulable :mrgreen:

Lien vers le commentaire
Partager sur d’autres sites

Pardon de te contredire mais... il me semble que le Java est un langage compilé. (Vous pourez me crier après si jamais tout ce qui suit est faux. :) )

 

Bon je veux pas m'embarquer dans une grande explication alors je ferais court. Le Bytecode est un assembleur. Mais un langage assembleur un peu particulier puisqu'il n'est pas traité par le processeur mais par le JRE lui-même. Le Bytecode est traité par la machine virtuelle comme l'assembleur est traité par le processeur.

 

Prenons exemple sur le C. Code source ------­­­> compilation (assembleur) ------> binaire

Java. Code source ------> Bytecode (il peut "remplacer" l'assembleur) ---> là je suis perdu. En interprétant le Bytecode, le JRE le transforme en binaire ou lance le programme immédiatement? Perso je crois que le JRE l'interprète comme il est mais je ne suis plus vraiment sur.

 

 

Et j'ai entendu parler de l'obfuscation. Une technique qui consisterait à rendre le bytecode décompilé presque illisible. Par contre je ne sais pas si elle fonctionne vraiment car je ne l'ai pas testé. Ce n'est pas comme du cryptage mais ça existe

Lien vers le commentaire
Partager sur d’autres sites

Le ByteCode n'est pas du tout égale à un langage assembleur non. Qu'est-ce que c'est l'assembleur ? C'est simplement les instructions processeur, c'est à dire le langage de la machine elle même (01101110), le plus bas niveau. Donc inutile de passer par un ByteCode.

 

Une fois compilé (traduit en binaire) c'est très difficile de faire du reverse engineering voir impossible et n'est pas pratiqué.

 

Le Java n'est pas un langage compilé mais interprété, enfin plus précisément semi interprété (Un langage interprété c'est plutôt du PHP ou du JavaScript par exemple), pourquoi ? La machine virtuelle permet de facilité grandement le développement, car la machine se contente de transformer le code à la volée en langage machine CAR, le langage machine est différent selon le système d'exploitation que tu as, ainsi si tu développe une application Java, elle tournera sur Windows, Linux et MacOS et d'autres OS qui supporte la JVM.

 

Le ByteCode reste donc lisible tant qu'il n'est pas compilé !

 

et Oui il y a moyen de crypter mais pas sans perdre des performances (Vu qu'il faut bien le décrypter à un moment et si possible à la volée sinon il est lisible à un moment, donc encore plus lourd). Donc c'est pas vraiment intéressant surtout que les techniques ne sont pas fiable (Bah oui le langage a pas été prévu pour ça à la base)

 

Comme je l'ai dit dans mon post précédent, Notch utilise une technique de Name Obfuscation et tu peux le constater par toi même qu'aujourd'hui il existe plusieurs milliers de mod :mrgreen: pour ça il a fallu décompiler le code de Minecraft, retirer l'obfuscation et le recompiler après modification, avec succès. Certain mod sont même développé AVEC le name obfuscation (Voir Too Many Items) ! Et minecraft c'est quoi ? Une société de gamer, alors imagine dans le milieu professionnel...

 

Je rajoute au passage qu'utiliser une technique de Name Obfuscation n'est pas forcément utilisé dans un but de cacher du code mais de le rendre plus rapide, car une fois dans la JVM, le nom des variables, des objets, des classes, des méthodes, des constructeurs, tout ça reste (Si on sais le décompiler...) et au final ça fait un bon paquet de texte inutile pour la JVM mais obligatoire pour que le développeur puisse s'y retrouver. Donc à la fin du développement, hop un petit coup de name obfuscation (Automatique) et on gagne un peu en perf :mrgreen:

Lien vers le commentaire
Partager sur d’autres sites

.java Code Java ----- Compilation -----> .jar composé de .class "ByteCode" ----- Interprétation par Java VM -----> Éxecution sur la machine

 

.c Code C ------- Compilation -----> exécutable pour 1 plateforme

 

 

La compilation est un étape visant à "assembler" les fichiers source sous forme d'un éxecutable.

Un .jar est un exécutable pour une machine virtuelle Java

 

Il y a d'autres languages compilé-interprétés comme le C#, les qvm Quake3 (idTech3), etc...

Ensuite il y a des pseudo-compilés comme le SuperTalk, l'HyperTalk, RealBasic, etc... qui sont ce que j'appellerais des langages "packagés".

 

C'est en fait assez courant.

Lien vers le commentaire
Partager sur d’autres sites

 Partager

×
×
  • Créer...