Minecraft pi

dilondilon2

Cyberdépendant avéré
19 Avril 2012
1 021
326
88
DTC
Qui a déjà jeté un œil?
Différence avec la pe(android)?
Si il n'y en a pas hort mit le fait qu'il n'y aura jamais de mis à jour (enfin ou qu'elles ne suivent pas celle de la pocket edition en tout cas ) juste ... pourquoi ?
Enfin je comprend. C'est sûrement peu être histoire de mettre a disposition une api/un jeux pour débuter à la programmation sans avoir rien à débourser, mais, enfin je sais pas... Je pense que ça aurait été plus attractif si basé sur la pocket edition.
Du coup, existe il une api pour la pe ( je vois qu'il y a quelques mods à priori )? Si oui, officiel ou non? et dev en quel langage?

( au passage, quelqu'un saurait-il si d'autres langages son dispo' autre que python pour l'api sur pi? )
 

black_teen

Maître considéré de la PE
26 Avril 2013
541
84
135
Api pour la pe ? Enfait, quand on fait un mod c'est principalement du script (.js) ; il n'y à pas d'Api officielle, du moins pas encore. Si tu cherches à modder du mcpe sans t'y connaître en infos je peux te donner les formules, mais ça reste du codage.
 

dilondilon2

Cyberdépendant avéré
19 Avril 2012
1 021
326
88
DTC
En fait je crois qu'il doit m'en manquer des morceaux ou que je ne visualise pas le fonctionnement de minecraft pe correctement.
( j'ai pas de tel sous la main, ni le jeu )

Qu'est ce que vous pouvez faire avec du javascript sans api sur pe? ( c'est vachement limité en fait nope du coup? )
Si t'as des exemple ou de la doc' , clair je veux bien.
En tout cas je te remercie pour ta réponse.
 

black_teen

Maître considéré de la PE
26 Avril 2013
541
84
135
On code en java script car minecraft pe n'accepte pas l'ajout de données. C'est comme si on fesait un plugin. Le java script est limité par des commandes ( il y en à un certain nombre qui existe mais ne cesse de croître (il y en a plus d'un milers en ce moment )).
Le script est donc presque entièrement libre du moment où on ne modifie pas les donnés de base de minercraft, on ne fait que rajouter ( même principe qu'un plugin comme je disait) Le script se fait donc sur un document texte en format .js, il sera lu par un logiciel particulier : ModPE pour les IOS et BlockLauncher pour les ANDROID.
Si tu veux je peux te donner quelques exemples de mod créé ( avec quelques connaissances en commandes on peut aller jusqu'à faire apparaître un bloc ou même à créer une interface !
Exemples :
Comme je le disait ; il est impossible de rajouter des blocs, mais des items c'est possible ! Quelqu'un a créé un mod rajoutant la redstone ! Certes, l'item redstone est créé, mais on ne peut pas le poser car c'est compté comme un bloc. Donc on va passer par une alternative : Quand le joueur clique sur un bloc avec la redstone en main, ça va créer un bloc spécifique (ici de la cobble) qui quand deux sont à côté et qu'il y à un bouton (autre bloc créé) va activer un courant Y qui va être en contact d'un autre bloc spécifique va entraîner le courant Y et quand ce courant Y est en contanc avec un piston par exemple, il va faire que le piston va créer un bloc ... bon je pense que t'as compris =D


Screenshot_2013-11-18-18-03-06.png


On peut rajouter des commandes ...

Screenshot_2013-11-18-18-01-33.png


Ça suffit pas ? On peut même créer des menus ! Après, comme on ne peut rien rajouter l'interface sera lue par un fichier rajouter ou lue par internet. Ici c'est un japonnais qui à créer une interface de craft très intéressante et fonctionnelle qui va s'ouvrir lorsqu'on va ouvrir la table de craft ! Yes, we can !

Screenshot_2013-11-18-17-57-37.png


Oui le script est très libre est suffisant pour plaire aux joueurs. Je t'ai montré 3 exemples mais il y en à tellement des mods ! Bon bah voilà j'espère avoir répondu à tes questions =D
 

Fichiers joints

  • Screenshot_2013-11-18-18-03-06.png
    Screenshot_2013-11-18-18-03-06.png
    275.1 KB · Affichages: 288
  • J'aime
Reactions: dilondilon2

dilondilon2

Cyberdépendant avéré
19 Avril 2012
1 021
326
88
DTC
Ha nickel ça!
Clair je te remercie.. La je comprend mieux.
Mais du coup me viens d'autres questions. ( et on peux bien considerer ModPE et BlockLauncher comme des sortes d'api nope? )
C'est la que ça m'intrigue par contre, comment fonctionne ModPE et BlockLauncher afin de mettre à disposition quelques commandes afin de scripter le jeux.
+ Quels différences avec des api +/- officielle, genre celle pour pi et/ou d'autres.
Mais bon, la je pense qu'il y a pas trop de solutions, faut fouiller le code de minecraft et essayer de comprendre comment fonctionne le truc. ( bien que je ne sache pas comment faire si c'est du C++ )
Enfin bref à réfléchir.
Par contre ouais, si tu as quelques exemple de script que tu as créés, clair ça m'intéresse, ça fera un peu de lecture pour essayer de comprendre un peu plus en profondeur.
En tout cas, encore merci pour l'explication.
 

black_teen

Maître considéré de la PE
26 Avril 2013
541
84
135
Je suis content d'avoir bien répondu à tes demandes mais le seul soucis c'est que je ne connais la PI donc je ne serais pas répondre à tes questions à ce propos ...
ModPE et Block launcher sont deux api totalement différentes et qui ne sont pas du même auteur. Oui, on peut les considérer comme des api même si ce n'est pas forcément officiel.
Pour leurs fonctionnement, je ne sais pas exactement mais je vais demander à un des auteurs, même si je sais que j'ai 0% de chance d'obtenir une réponse, en tout cas je te tiendrais au courant.
Il n'y à pas de différence entre une api officielle ou non, du moment où elles ont le même principe.

Un exemple de mes scripts : Un mod pour rajouter des commandes (en développement)

var mobID;
var img;

function procCmd(cmd)
{
var p = cmd.split(" ");
if(p[0] == 'help')
{

clientMessage("Mod UTILITAIRE français par Black_Teen");
}

//Gamemode

if(p[0] == 'gamemode')
{
if(p[1] == '0')
{
Level.setGameMode(2);
}
if(p[1] == '1')
{
Level.setGameMode(1);
}
}

//Spawnmob

if(p[0] == 'spawnmob')
{

if(p[1] == 'pigzombie')
{
mobID = 36;
img = "mob/pigzombie.png";
}
if(p[1] == 'spider')
{
mobID = 35;
img = "mob/spider.png";
}
if(p[1] == 'skeleton')
{
mobID = 34;
img = "mob/skeleton.png";
}
if(p[1] == 'creeper')
{
mobID = 33;
img = "mob/creeper.png";
}
if(p[1] == 'zombie')
{
mobID = 32;
img = "mob/zombie.png";
}
if(p[1] == 'chicken')
{
mobID = 10;
img = "mob/chicken.png";
}
if(p[1] == 'cow')
{
mobID = 11;
img = "mob/cow.png";
}
if(p[1] == 'pig')
{
mobID = 12;
img = "mob/pig.png";
}
if(p[1] == 'sheep')
{
mobID = 13;
img = "mob/sheep.png";
}
var mob = Level.spawnMob(getPlayerX()+1, getPlayerY()+1, getPlayerZ(), +mobID, "+img+");
}

//Give

if(p[0] == 'give')
{
addItemInventory(+p[1], +p[2]);
}
}

Voilà donc en détail :

var mobID;
var img;

Ces commandes vont sauvegarder des données pour plus tard

function procCmd(cmd)
{
var p = cmd.split(" ");
if(p[0] == 'help')
{

"Function" va dire de faire une fonction, "procCmd(cmd)" va être la fonction lue, ici ça va lire cmd qui est un invite de commande ... On va s'en servir pour dire que ce qui va suivre va être du à une commande. "{" appellé braces va ouvrir la fonction ... "var p" va créer la donné p qui sera cms.split qui est une ligne de commande qui sera tapé dans minecraft pe
if(p[0] == 'help') = si le 1er mot (0) est égal à help = si on écrit help dans minecraft et qu'on appuis qur entrer ça va activer une commande "{" . Il faut savoir que chaques commande devra avoir un "/" devant elle.
L'action sera :
clientMessage("Mod UTILITAIRE français par Black_Teen");
}
Ecrire dans le tchat Mod UTIL..... et la commande sera fermée par le "}".
Pour la commande suivante, pas besoin de retaper la fonction cmd car on à laisser le "{" ouvert =D
Après je te resume pour les fonctions suivantes : le gamemode va fonctionner de tel sorte : si le joueur tape gamemode une action va se créer et si à la suite de gamemode il y à 1 ça va faire telle action. Si il y à 0 ça va faire telle action.
Pour le spawn des mobs : si on tape spawnmob puis le num de tel mob, le mod va transformer le nom en chiffre qui va pouvoir être lu. Le chiffre va créer un mob avec l'apparence et l'id du mob.
Exemple : /spawnmob cow cow va être changé en l'id 11 qui va être sauvegardé dans la donnée : mobID. Ensuite le mob va apparaître avec l'id 11 et l'apparence qui convient. Il va apparaître sur getPlayerX,Y,Z tu peux deviner ce que ça veut dire ;) si on voulait le faire apparaître à 10 bloc de sa position par rapport à X on aurait fait : getPlayerX+!0. Logique ! Pourquoi 11 l'id de la vache ? En bien tous simplement car chaques block à un ID, chaques items à un ID et chaques Entité à un ID !
Passons au give, le plus intéressant, à savoir que la commande de give à un ordre particulier : addItemInventory(ID, nombre, data);
Donc quand le joueur va taper give 1 10 la commande va enregistrer le 1 et le 10 qui vont être lus par la commande :
addItemInventory(+p[1], +p[2]);
Le deuxième mot : "1" va être ajouté comme ID et le troisième mod comme nombre (j'aurais pu rajouter le data)

Voilà pour les textes :)
Après on peut faire que si on touche un bloc ça effetue une action..
J'ai plein d'exemples mais c'est long à expliquer >< J'espère au moins que t'as compris le fonctionnement et le principe de mod script ;)
 

dilondilon2

Cyberdépendant avéré
19 Avril 2012
1 021
326
88
DTC
lol Nickel je te remercie ;)
Mais tu n'aurais pas du te prendre la tête a ce point, quelques petites explications et l'exemple aurait amplement suffit.
En tout cas au moins on peux pas dire que ce n'est pas complet, j'ai même un tuto sur les bases de la programmation du coup.
Allez un petit reproche quand même, parce que je suis chiant... les balises code !!!! et l'indentation !!!!!

Code:
var mobID;
var img;
 
function procCmd(cmd)
{
  var p = cmd.split(" ");
  if(p[0] == 'help')
  {
 
  clientMessage("Mod UTILITAIRE français  par Black_Teen");
  }
 
//Gamemode
 
  else if(p[0] == 'gamemode')
  {
      if(p[1] == '0')
      {
          Level.setGameMode(2);
      }
      else if(p[1] == '1')
      {
          Level.setGameMode(1);
      }
  }
 
//Spawnmob
 
  else if(p[0] == 'spawnmob')
  {
 
    if(p[1] == 'pigzombie')
    {
        mobID = 36;
        img = "mob/pigzombie.png";
    }
    else if(p[1] == 'spider')
    {
        mobID = 35;
        img = "mob/spider.png";
    }
    else if(p[1] == 'skeleton')
    {
        mobID = 34;
        img = "mob/skeleton.png";
    }
    else if(p[1] == 'creeper')
    {
        mobID = 33;
        img = "mob/creeper.png";
    }
    else if(p[1] == 'zombie')
    {
        mobID = 32;
        img = "mob/zombie.png";
    }
    else if(p[1] == 'chicken')
    {
        mobID = 10;
        img = "mob/chicken.png";
    }
    else if(p[1] == 'cow')
    {
        mobID = 11;
        img = "mob/cow.png";
    }
    else if(p[1] == 'pig')
    {
        mobID = 12;
        img = "mob/pig.png";
    }
    else if(p[1] == 'sheep')
    {
        mobID = 13;
        img = "mob/sheep.png";
    }
    /*tu peux ajouter:
    else
    {
        message erreur
    }
    */
    var mob = Level.spawnMob(getPlayerX()+1,  getPlayerY()+1, getPlayerZ(), +mobID, "+img+");
  }
 
  //Give
 
  else if(p[0] == 'give')
  {
    addItemInventory(+p[1], +p[2]);
  }
}

EDIT: les else if ont leur importance. Cela évite de tester toutes les conditions quand cela n'est plus nécessaires. ( condition déjà remplie )
Le programme peux dont directement passer à la suite de son exécution. Tu gagnera en réactivité même si cela risque de ne pas se ressentir ;)
Je me demande ausi si tu n'a pas une faute sur tes chaîne de caractères.. tu es sur qu'il faut les mettre entre ' ' et pas " " ?
( je n'ai pas vérif et peux être que js permet cela )
 

black_teen

Maître considéré de la PE
26 Avril 2013
541
84
135
Merci pour les conseils mais si je ne met pas else if c'est parce que je trouve que c'est plus simple, je m'y repère mieux sur les codages. Ensuite si je fesait un "gros" mod j'utilise else if.
Sinon c'est bien ' ' et pas " ", on utilise " " pour citer un texte (comme pour le clientmessage (" ") ) le ' ' sert plutôt à dire que si le texte le texte est égal à X alors il y aura tellle action..
P.S. : Comment tu fais la balise codes ? XD