[Projet] SDK Minecraft

  • Auteur de la discussion Auteur de la discussion kyrillin
  • Date de début Date de début
J'avais déjà pensé à un outil comme celui-ci, qui permettrait d'avoir un mode d'édition facile des mods et leurs composants. J'avais vu le projet sous forme de plugin Eclipse, mais n'ayant jamais vraiment eu le temps entre mes projets, j'ai laissé le projet dans l'eau. J'ai une bonne expérience dans le Java, si jamais tu as besoin d'aide, mais m'investir dans ce projet me sera difficile. :)

Et si tu veux un conseil (Ne le prends pas pour une insulte ou pour une critique, juste un conseil d'ami), je ne connais pas tes connaissances en Java ni C++, ai une vraie experience dans le Java. Car ce n'est certainement pas en lisant simplement les cours du Site du Zéro, pour ne citez que lui, que l'on peut coder un Wow-Mais-En-Mieux. Néanmoins, je trouve qu'avoir un objectif est très stimulant pour progresser, je voulais aussi programmer une simulation d'Hacking apr console quand j'étais "petit", et je l'ai fais. :mobsheep:

Bonne chance pour ton projet, n'hésite pas à me filez les codes sources un de ces jours, que je surveille l'avancement de tout ça. :diamond:
 
@lipki: j'entend par sdk un générateur de code java avec IHM, et des classes rajouté a minecraft pour faciliter la gestion/le chargement des mods. Si tu veux que je précise ^^

Quand au langage de script je ne compte pas réinventer la roue juste simplifier, la programmation et surtout les maj, a savoir que le script ressemblera très portrait a du code java, a l'exception des nom des fonction qui serait simplifier, et le coté objet qui serait totalement caché au moddeur. après le programme se chargera de remplacer les nom simplifié par les vrais nom, s'assurera que les attribus sont corrects, et créera les objet a partir des scripts, (un script représenterais une fonction). Bien sur c'est qu'une idée et faut voir ce que ça donne ^^. Et l'avantage évident c'est que pour rendre le mod compatible avec une maj de minecraft, il suffirait de faire une maj du générateur de code java qui s'occuperas de faire les modification de code java a partir du script.

@Factémius: comme la proposé theonejp je commence a programmer une version lite avec fonction de base histoire d’apater d'éventuel développeur et pouvoir nous lancer dans un SDK plus complet. :)

@Ptibiscuit:
j'ai un niveau licence 2 informatique + pas mal d'apprentissage par les livres et je compte faire un svn je te filerais les accès si tu veux ^^
 
J'y avais déja pensez mais je suis nul en informatique (je pensais que c'était impossible).
Super projet je suis à fond avec toi mais comme je l'ai dit avant je suis nul en informatique .
On est tous avec toi Kyrillin!!!!!!!!!!!!!!!!!!!!
 
ok pour le SDK on est d'accord.

Pour ce qui est du script, je suis toujours pas d'accord, surtout quand tu dis que tu veut cacher le coté OO,
quel idée :), mais bon à mon avis on en rediscuteras.

Pour ce qui est de partager les sources, je peut te suggérer github, c'est un gestionnaire de version accessible en ligne, qui utilise git plutôt que svn, et qui est vraiment bien pour le facilité les forks, et la contribution.

Et si tu veut un serveur pour héberger un forum, un wiki, ou autres, j'ai une petite place :)
 
j'ai envie de te convaincre alors je te donne une idée de script:

le script "utiliser four" associé via IHM a la fonction de clic sur le bloc furnace:
Code:
boolean parcequejaienviedemettreunif = true;
if(parcequejaienviedemettreunif)
{
      openhud(GUIFurnace);
}

remplacé après passage dans le générateur de code par:
Code:
public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)
{
    boolean parcequejaienviedemettreunif = true;
    if(parcequejaienviedemettreunif)
   {   
        if(world.multiplayerWorld)
        {
            return true;
        } else
        {
            TileEntityFurnace tileentityfurnace = (TileEntityFurnace)world.getBlockTileEntity(i, j, k);
            entityplayer.displayGUIFurnace(tileentityfurnace);
            return true;
        }
    }
}

tu reconnaitra que le premier est plus simple a comprendre par le novice que le second. :) Le if est la juste pour montrer que le code qui n'est pas sujet a modification est restitué tel quel par le générateur.
 
Ouaaahhhh!!!! un truc qui permet au nul comme moi de faire des mods ???
Mais c'est trop bien.
Vite dépeche toi de le sortir xP!!!!
 
Parce-que moi aussi j'ai envie de te convaincre :

Je te fait un exemple utilisant l'héritage,
mais comme je sais pas d’où tu sort "blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer)"
je suppose que l'exemple sera faux, mais l'idée est là.

Admettons pour départ le code :
Code:
boolean parcequeilaenviedemettreunif = true;
if(parcequeilaenviedemettreunif) {  
{
      openhud(GUIFurnace);
}
Facile à comprendre par un neofite.

L'IHM l'intégrera dans une class, qui représente le code du mod.
Code:
package mon.mod;
import sdk.de.ouf.SuperMod;
public class MonMod extends SuperMod {
	public void main () {

		boolean parcequeilaenviedemettreunif = true;
		if(parcequeilaenviedemettreunif) {  
			openhud(GUIFurnace);
		}

	}
}
Cette class hérite d'une class de ton SDK, qui définies toutes les méthodes utile.
Code:
package sdk.de.ouf;

public class SuperMod {
	
	public static final String GUIFurnace = 'GUIFurnace';
	
	public World world = ??;
	public int i = ??;
	public int j = ??;
	public int k = ??;
	public EntityPlayer entityplayer = ??;
	
	public void openhud (String gui) 	{
		if(world.multiplayerWorld) {
			return true;
		} else {
			switch (gui) {
				case GUIFurnace :
					TileEntityFurnace tileentityfurnace = (TileEntityFurnace)world.getBlockTileEntity(i, j, k);
					entityplayer.displayGUIFurnace(tileentityfurnace);
				break; 
			}
			return true;
		}
	}
}

Inutile de créer un langage de script qui ajoute une couche d'abstraction, et donc d'erreur supplémentaire, quand il suffit d'utiliser l'héritage de class pour fournir à l'utilisateur des méthodes comme "openhud(GUIFurnace);" simple à écrire et à comprendre.

Et qui en plus s’inscrit dans une logique OO, facilement ré-exploitable, par d'autres personne, qui ne connaitrais pas forcément ton langage de script (mais juste le java :) )

La couche d'abstraction nécessaire pour amortir les différentes mise à jour effectuer par mojang est tout simplement le package sdk.de.ouf, autrement dit ton SDK.

je tente un mariage
http://minecraft.fr/forums/showthread.php?tid=8746
 
effectivement l'exemple est faux mais je comprend le principe cependant 2 chose me gène

1 Si une personne voulait rajouter un autre hud elle serait obligée de ré-implémenter openhud et par conséquent une mise a jour du sdk ne mettrait au final pas a jour le mod.

2 Une personne qui ne sait pas ce qu'est un objet, l'héritage, les packages, la différence entre public et private, ce que signifie static final,... (j'en passe et des meilleurs) se retrouverais vite perdue dans tout le charabia que tu vient de créer ^^. Cette personne qui au final ne veut qu'une chose ("quand je clic je veut qu'il affiche mon hud") a ton besoin de la forcer a écrire une classe de A à Z quand 1 ligne de code et 4 clic suffises?

EDIT: Cela dit je suis d'accord dans une certain cas particulier les moddeur confirmé qui souhaite contrôler la création de A à Z pourrait être gêné par cet intermédiaire mais pour ceux la modloader existe déjà ;), après un mode "confirmé" dans les option est envisageable, avec possibilité d'éditer le code java après génération par le logiciel ^^ (c'est même carrément plus facile que le générateur en lui même ).