Créer son plugin de spawn minecraft

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 532
Points
27 882
Salut à tous,

Aujourd'hui je vous fait un tutoriel pour crée sont propre plugin de spawn.

Voila donc pour se tutoriel vous aurez besoin de :

- Eclipse
- Java JDK

Ce tutoriel se déroulera en 2 étapes

1er étape : Installation des logiciels requis.

2éme étape : Création du plugin.

Partie 1 : Installation d’éclipse et Java JDK :

Rendez vous sur :

Puis vous télécharger la version Eclipse IDE for Java EE Developers
1403206014-eclispe.png


Apres la fin du téléchargement vous prenez le dossier
éclipse qui est compresser en .ZIP et vous le mettez sur votre bureau.

Une fois que vous l'avez mis vous ouvrez le dossier est cliquer sur Extrait tout .

Il va vous proposer un chemin vous le toucher pas,
et vous cochez la case ouvrir le dossier une fois l’opération terminée.

/!\Une fois le dossier ouvert ne le lancer pas car sinon vous aurez une erreur./!\

Cette erreur sera du au fait que vous n'avez pas JAVA JDK donc on va passez a son installation.

Installation de Java JDK

Rendez vous sur :


Puis prenez la version correspondant a votre OS
pour moi sa sera Windows (x64) car je suis en 64 BITS

/!\ Prenez la version correspondante a votre architecture 32 ou 64 bits /!\
1403206020-java.png


Une fois installer vous pouvez retourner sur le dossier d’éclipse et vous le lancer.

Pendant le chargement d’éclipse
il va vous demander ou voulez mettre la Workspace vous la mettez ou vous voulez.
Une fois le logiciel lancer vous allez voir apparaître a l'écran une fenêtre avec plein de Fenêtre a l’intérieur.

Nous allons garder la fenêtre Package Explorer
1403206036-packageexplorer.png


Nous somme maintenant pret a crée le plugin

2éme étape : Création du plugin.

A quoi sert ce plugin ?

Ce plugin sert a crée un point de spawn. Vous pourez vous y téléporter grâce a la /spawn et il servira comme premier point de spawn des nouveaux joueur sur votre serveur.

Pour configurer un point de spawn vous devrez faire /setspawn.

Maintenant nous allons aller dans Eclispe est nous allons crée notre projet

Vous faite

clique droit => New => Projet => Java Project
1403206024-javaproject.png


Vous mettez le nom de votre projet pour moi sa sera Tuto PL Spawn RG
1403206029-nom-du-projet.png


Une fenetre va s'ouvrir vous cliquer sur NO !

Maintenant que notre projet est crée nous allons importé Bukkit.

Pour cela rendez vous sur
1403205989-spigot.png


Et vous télécharger le spigot-1.7.2-R0.4-SNAPSHOT.jar

Une fois télécharger nous allons l'importer dans bukkit

Pour cela vous aller clique droit sur le projet

Properties => Java Build Path => Libraries => Add External Jars ...
1403206018-javabuildpath.png


Puis vous cliquer sur Add External Jars ...
1403206012-importspigot.png


et vous vous rendez dans téléchargement et vous cliquer sur le spigot puis vous cliquer sur ouvrir.

Et ensuite vous cliquer sur OK

Nous allons maintenant crée les différents packages du plugin.
Le package Launch qui va contenir les class :

- Launch
- Config

et le package Commandes (Cmd) qui va contenir les class :

- SetSpawnCmd
- SpawnCmd

Pour cela clique droit sur le dossier SRC puis

New => Package
1403206034-package.png


et vous faite la même opération pour le package TutoRG.Spawn.Cmd

Maintenant nous allons crée la class Launch
donc vous faite clique droit sur le package TutoRG.Spawn.Launch et vous faite

New => Class
Pour moi elle s'apellera Launch
1403205993-class.png


Maintenant que la class Launch est crée nous allons pouvoir crée les autres class du plugin donc vous refait la même opération sur le package TutoRG.Spawn.Launch et vous mettez dans name : Config.
Une fois cette class crée nous laissons le package TutoRG.Spawn.Launch.

Nous allons maintenant crée les class :

- SetSpawnCmd
- SpawnCmd

Vous fait la même opération que pour le package TutoRG.Spawn.Launch

Une fois tout sa crée vous devriez avoir ceci
1403206028-liste-des-class.png


Maintenant nous allons passer a la parti codage du plugin
donc rendez vous dans la class launch

Cette class servira a lancer le plugin elle regroupera les class des commande et de la config.
1403206029-launch.png

Code:
package TutoRG.Spawn.Launch;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import TutoRG.Spawn.Cmd.SetSpawnCmd;
import TutoRG.Spawn.Cmd.SpawnCmd;

public class Launch extends JavaPlugin {
 
    private String prefix = "[TutoRG]" ;
    private String phrase1 = "Le plugin est correctement charger !" ;
    private String phrase2 = "Le fichier de configuration est correctement sauvegarder !" ;
 
    public File configFile;
    public static FileConfiguration config;
    public HashMap<String, Long> cooldowns = new HashMap();
 
    @Override
    public void onEnable() {
        System.out.println(prefix + phrase1);
        this.configFile = new File(getDataFolder(), "config.yml");
        config = YamlConfiguration.loadConfiguration(this.configFile);
        try
        {
          config.save(this.configFile);
          System.out.println(this.prefix + "Configuration crée avec succèe");
        }
        catch (IOException e)
        {
          System.out.println(this.prefix + "Erreur pendant la création de la configuration" + e);
        }
        getCommand("setspawn").setExecutor(new SetSpawnCmd(this));
        // Commande pour définir le point de spawn
        getCommand("spawn").setExecutor(new SpawnCmd(this));
        //Commande pour se tp au point de spawn
      }
 
    @Override
    public void onDisable() {
        System.out.println(prefix + phrase2);
    }
 
    public void Teleport(Location spawn, Player p)
      {
        this.cooldowns.put(p.getName(), Long.valueOf(System.currentTimeMillis()));
        boolean msge = getConfig().getBoolean("ConfigSpawn.Teleport_Message.Enabled");
        String msg = getConfig().getString("ConfigSpawn.Teleport_Message.Message");
        if (msge) {
          p.sendMessage(msg.replaceAll("(&([a-f0-9]))", "§$2"));
        }
        p.teleport(spawn);
      }
   
      public void dTeleport(final Location spawn, final Player p)
      {
        int delays = getConfig().getInt("ConfigSpawn.Teleport_Delay.Delay");
        p.sendMessage(ChatColor.GRAY + "Téléportation dans " + delays + " Second(s)...");
        getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable()
        {
          public void run()
          {
            Launch.this.Teleport(spawn, p);
          }
        }, 20 * delays);
      }

}

Vous allez avoir 2 erreur sur SetSpawnCmd et SpawnCmd ceci est tout a fait normal car nous n'avons pas encore remplie les class.

Nous allons passe a la class Config
1403205995-config.png

Code:
package TutoRG.Spawn.Launch;

public class Config {

    public static void setConfig() {
        if (!Launch.config.contains("ConfigSpawn.Teleport_Message.Enabled")) {
            Launch.config.set("ConfigSpawn.Teleport_Message.Enabled", Boolean.valueOf(true));
        }
        if (!Launch.config.contains("ConfigSpawn.Teleport_Message.Message")) {
            Launch.config.set("ConfigSpawn.Teleport_Message.Message", "&aTéléporter au spawn");
        }
        if (!Launch.config.contains("ConfigSpawn.Cooldown.Enabled")) {
            Launch.config.set("ConfigSpawn.Cooldown.Enabled", Boolean.valueOf(true));
        }
        if (!Launch.config.contains("ConfigSpawn.Cooldown.Cooldown")) {
            Launch.config.set("ConfigSpawn.Cooldown.Cooldown", Integer.valueOf(60));
        }
        if (!Launch.config.contains("ConfigSpawn.Teleport_Delay.Enabled")) {
            Launch.config.set("ConfigSpawn.Teleport_Delay.Enabled", Boolean.valueOf(true));
        }
        if (!Launch.config.contains("ConfigSpawn.Teleport_Delay.Delay")) {
            Launch.config.set("ConfigSpawn.Teleport_Delay.Delay", Integer.valueOf(5));
        }
        if (!Launch.config.contains("ConfigSpawn.NewPlayerSpawn")) {
            Launch.config.set("ConfigSpawn.NewPlayerSpawn", Boolean.valueOf(false));
        }
        if (!Launch.config.contains("ConfigSpawn.MultiWorldSpawns")) {
            Launch.config.set("ConfigSpawn.MultiWorldSpawns", Boolean.valueOf(false));
        }
    }

}

Maintenant nous allons aller dans la class SetSpawnCmd
1403206367-setspawn.png

Code:
package TutoRG.Spawn.Cmd;

import TutoRG.Spawn.Launch.Launch;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class SetSpawnCmd implements CommandExecutor {

    Launch main;

    public SetSpawnCmd(Launch plugin) {
        this.main = plugin;
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {

        if (sender.getName() == "CONSOLE")
        {
            System.out.println("Vous ne pouvez pas executer cette commande depuis la console !");
            return true;
        }
        Player p = (Player)sender;
        String noPerm = ChatColor.DARK_RED + "Vous n'avez pas la permission !";
        if (p.hasPermission("TutoRG.SetSpawn")) {
            if (this.main.getConfig().getBoolean("ConfigSpawn.MultiWorldSpawns")) {
                String world = p.getWorld().getName();
                String location = p.getLocation().getBlockX() + ", " + p.getLocation().getBlockY() + ", " + p.getLocation().getBlockZ();
                Float pitch = Float.valueOf(p.getLocation().getPitch());
                Float yaw = Float.valueOf(p.getLocation().getYaw());
                if (this.main.getConfig().contains("ConfigSpawn.Spawns." + world)) {
                    p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Point de spawn déplacer dans le monde '" + ChatColor.GOLD + world + ChatColor.GOLD + "'");
                } else {
                    p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Point de spawn définie dans le monde '" + ChatColor.GOLD + world + ChatColor.GOLD + "'");
                }
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".location", location);
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".pitch", pitch);
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".yaw", yaw);
                this.main.saveConfig();
            }
            else if (this.main.getConfig().contains("ConfigSpawn.Spawns"))
            {
                Set spawns = this.main.getConfig().getConfigurationSection("ConfigSpawn.Spawns").getKeys(false);
                String spawnsstr = spawns.toString().replace("[", "").replace("]", "");
                String[] str = spawnsstr.split(", ");
                String world = str[0];

                String location = p.getLocation().getBlockX() + ", " + p.getLocation().getBlockY() + ", " + p.getLocation().getBlockZ();
                Float pitch = Float.valueOf(p.getLocation().getPitch());
                Float yaw = Float.valueOf(p.getLocation().getYaw());
                if (this.main.getConfig().contains("ConfigSpawn.Spawns." + world)) {
                    p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Point de spawn déplacer dans le monde '" + ChatColor.GOLD + world + ChatColor.GOLD + "'");
                } else {
                    p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Point de spawn définie dans le monde '" + ChatColor.GOLD + world + ChatColor.GOLD + "'");
                }
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".location", location);
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".pitch", pitch);
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".yaw", yaw);
                this.main.saveConfig();
            }
            else
            {
                String world = p.getWorld().getName();
                String location = p.getLocation().getBlockX() + ", " + p.getLocation().getBlockY() + ", " + p.getLocation().getBlockZ();
                Float pitch = Float.valueOf(p.getLocation().getPitch());
                Float yaw = Float.valueOf(p.getLocation().getYaw());
                if (this.main.getConfig().contains("ConfigSpawn.Spawns." + world)) {
                    p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Point de spawn déplacer dans le monde '" + ChatColor.GOLD + world + ChatColor.GOLD + "'");
                } else {
                    p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Point de spawn définie dans le monde '" + ChatColor.GOLD + world + ChatColor.GOLD + "'");
                }
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".location", location);
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".pitch", pitch);
                this.main.getConfig().set("ConfigSpawn.Spawns." + world + ".yaw", yaw);
                this.main.saveConfig();
            }
        }
        else {
            p.sendMessage(noPerm);
        }
        return true;
    }
}

Une fois cette class terminé nous allons passer a la class SpawnCmd
1403205983-spawncmd.png

Code:
package TutoRG.Spawn.Cmd;

import TutoRG.Spawn.Launch.Launch;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class SpawnCmd
  implements CommandExecutor
{
  Launch main;

  public SpawnCmd(Launch plugin)
  {
    this.main = plugin;
  }

  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  {
    if (sender.getName() == "CONSOLE")
    {
      System.out.println("Vous ne pouvez pas executer cette commande depuis la console !");
      return true;
    }
    Player p = (Player)sender;
    String noPerm = ChatColor.DARK_RED + "Vous n'avez pas la permission !";
    if (p.hasPermission("TutoRG.SpawnTp"))
    {
      boolean delay = this.main.getConfig().getBoolean("ConfigSpawn.plugin.Teleport_Delay.Enabled");
      boolean cooldown = this.main.getConfig().getBoolean("ConfigSpawn.Cooldown.Enabled");
      boolean multiworld = this.main.getConfig().getBoolean("ConfigSpawn.MultiWorldSpawns");
      if (cooldown)
      {
        int cooldownTime = this.main.getConfig().getInt("ConfigSpawn.Cooldown.Cooldown");
        if ((!p.hasPermission("TutoRG.SpawnTp.cooldown.bypass")) &&
          (this.main.cooldowns.containsKey(sender.getName())))
        {
          long secondsLeft = ((Long)this.main.cooldowns.get(sender.getName())).longValue() / 1000L + cooldownTime - System.currentTimeMillis() / 1000L;
          if (secondsLeft > 0L)
          {
            sender.sendMessage("Vous ne pouvez pas utiliser cette commande pendant " + secondsLeft + " second(s)!");
            return true;
          }
        }
        this.main.cooldowns.put(sender.getName(), Long.valueOf(System.currentTimeMillis()));
      }
      if ((delay) && (!p.hasPermission("TutoRG.SpawnTp.delay.bypass")))
      {
        if (multiworld)
        {
          if (this.main.getConfig().contains("ConfigSpawn.Spawns." + p.getWorld().getName())) {
            this.main.dTeleport(getSpawnLocation(p.getWorld()), p);
          } else {
            p.sendMessage(ChatColor.RED + "Aucun point de spawn dans ce monde !");
          }
        }
        else if (this.main.getConfig().contains("ConfigSpawn.Spawns"))
        {
          Set spawns = this.main.getConfig().getConfigurationSection("ConfigSpawn.Spawns").getKeys(false);
          String spawnsstr = spawns.toString().replace("[", "").replace("]", "");
          String[] str = spawnsstr.split(", ");
       
          this.main.dTeleport(getSpawnLocation(this.main.getServer().getWorld(str[0])), p);
          p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Vous avez était téléporter au spawn !");
        }
        else
        {
          p.sendMessage(ChatColor.RED + "Aucun point de spawn !");
        }
      }
      else if (multiworld)
      {
        if (this.main.getConfig().contains("ConfigSpawn.Spawns." + p.getWorld().getName())) {
          this.main.Teleport(getSpawnLocation(p.getWorld()), p);
        } else {
          p.sendMessage(ChatColor.RED + "Aucun point de spawn dans ce monde !");
        }
      }
      else if (this.main.getConfig().contains("ConfigSpawn.Spawns"))
      {
        Set spawns = this.main.getConfig().getConfigurationSection("ConfigSpawn.Spawns").getKeys(false);
        String spawnsstr = spawns.toString().replace("[", "").replace("]", "");
        String[] str = spawnsstr.split(", ");
     
        this.main.Teleport(getSpawnLocation(this.main.getServer().getWorld(str[0])), p);
        p.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "TutoRG Spawn" + ChatColor.DARK_GRAY + "]" + ChatColor.GREEN + " Vous avez était téléporter au spawn !");
      }
      else
      {
        p.sendMessage(ChatColor.RED + "Aucun point de spawn !");
      }
    }
    else
    {
      p.sendMessage(noPerm);
    }
    return true;
  }

  public Location getSpawnLocation(World w)
  {
    boolean multiworld = this.main.getConfig().getBoolean("ConfigSpawn.MultiWorldSpawns");
 
    String worldName = "";
    if (multiworld)
    {
      worldName = w.getName();
    }
    else
    {
      Set spawns = this.main.getConfig().getConfigurationSection("ConfigSpawn.Spawns").getKeys(false);
      String spawnsstr = spawns.toString().replace("[", "").replace("]", "");
      String[] str = spawnsstr.split(", ");
   
      worldName = str[0];
    }
    String loc = this.main.getConfig().getString("ConfigSpawn.Spawns." + worldName + ".location");
    Float pitch = Float.valueOf(Float.parseFloat(this.main.getConfig().getString("ConfigSpawn.Spawns." + worldName + ".pitch")));
    Float yaw = Float.valueOf(Float.parseFloat(this.main.getConfig().getString("ConfigSpawn.Spawns." + worldName + ".yaw")));
    String[] xyz = loc.split(", ");
 
    Location SpawnLoc = new Location(w, Integer.parseInt(xyz[0]), Integer.parseInt(xyz[1]), Integer.parseInt(xyz[2]));
    SpawnLoc.setPitch(pitch.floatValue());
    SpawnLoc.setYaw(yaw.floatValue());
    SpawnLoc.add(0.5D, 0.0D, 0.5D);
    return SpawnLoc;
  }
}

Nous avons terminé de coder le plugin maintenant nous allons crée le plugin.yml
Pour cela fait clique droit sur le projet:

New => File
1403206038-pluginyml.png


Puis cliquer sur finish

Maintenant ouvrer le plugin.yml est mettez ceci a l'interieur
Code:
name: TutoRGSpawn
version: 1.0
author: faragnight18
main: TutoRG.Spawn.Launch.Launch
commands:
  setspawn:
    description: Definie le point de spawn
    usage: /<command>
  spawn:
    description: Teleporte le joueur au point de spawn
    usage: /<command>

Enregistrer le fichier puis fermer le est faite F5 pour refraichir Eclispe.

Nous allons exporter le plugin pour pouvoir l'utiliser.
Fait clique droit sur le projet puis:

Export => Jar File
1403206005-export.png


=> vous selectionner ou vous voulez mettre le plugin pour moi il sera sur mon bureau => finish
1403206005-exportfinal.png


Mettez le plugin dans votre serveur est lancer le !

Rendez vous dans minecraft pour tester le plugin.
1403206040-testsetspawn.png

1403206057-setspawn-ok.png

1403206046-testspawn.png

1403206044-spawnok.png


Voila j'espère que mon tutoriel vous aura plus :D

Désoler pour mes fautes d'orthographe :)

Bonne journée a tous ;)
 
Dernière édition:

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 532
Points
27 882
Ouais ou sinon on télécharge le plugin "Essential" ...
Essential est bien mais si tu télécharge essential juste pour un point de spawn sa te consommera plus de ressources que de faire son plugin car tu a essential + essential Spawn ;)
 

Cypяаl

Premium
Inscription
23 Mars 2013
Messages
638
Réactions
313
Points
9 413
Essential est bien mais si tu télécharge essential juste pour un point de spawn sa te consommera plus de ressources que de faire son plugin car tu a essential + essential Spawn ;)
Je suis d'accord avec toi sur ce point.
Et, tu sais coder des plugins plus "complexes" ou tu codes comme ça quand tu en as le temps et l'envie ?
 

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 532
Points
27 882
Je suis d'accord avec toi sur ce point.
Et, tu sais coder des plugins plus "complexes" ou tu codes comme ça quand tu en as le temps et l'envie ?
Sa dépend quoi comme plugin est je code surtout pour mon serveur minecraft et aussi quand j'ai le temps :)
 

Cypяаl

Premium
Inscription
23 Mars 2013
Messages
638
Réactions
313
Points
9 413
Sa dépend quoi comme plugin est je code surtout pour mon serveur minecraft et aussi quand j'ai le temps :)
Poste le lien du site de ton serveur je passerais peut être faire un tour (ça doit faire un an ou plus que j'ai pas retoucher à Minecraft, il est en quelle mise à jour là ? Et ton serveur est en quelle mise à jour ? :o)
 

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 532
Points
27 882
Poste le lien du site de ton serveur je passerais peut être faire un tour (ça doit faire un an ou plus que j'ai pas retoucher à Minecraft, il est en quelle mise à jour là ? Et ton serveur est en quelle mise à jour ? :o)
Mon serveur est en cour de développement il n'est pas encore ouvert il ouvrira ces portes bientôt. Si tu veut voir se que nous fessont ==> http://reality-gaming.fr/threads/demande-de-recrutement-builders-moderateurs-pour-asylyus.276030/
 

Nikz Pronos

Spécialiste Fifa Ultimate Team
Premium
Inscription
3 Mai 2013
Messages
4 719
Réactions
1 796
Points
19 576
OMG Ce tuto est tellement bien rédigé j'étais obliger de mettre un like :o
 

ZarkroxAMV

Premium
Inscription
18 Février 2012
Messages
1 319
Réactions
372
Points
12 071
Yop , je voulais savoir , vu que tu m'as l'air d'un très bon codeur , de te joindre à moi pour mon futur serveur minecraft , je ne sais pas exactement la date ou je vais l'ouvrir mais je compte le crée quand j'aurais ma carte bancaire ( une semaine environ ) .

Voilà j'attend ta réponse et bonne journée
 

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 532
Points
27 882
Yop , je voulais savoir , vu que tu m'as l'air d'un très bon codeur , de te joindre à moi pour mon futur serveur minecraft , je ne sais pas exactement la date ou je vais l'ouvrir mais je compte le crée quand j'aurais ma carte bancaire ( une semaine environ ) .

Voilà j'attend ta réponse et bonne journée
Désoler j'ouvre mon propre serveur minecraft ==> http://reality-gaming.fr/threads/demande-de-recrutement-builders-moderateurs-pour-asylyus.276030/
Si tu veut te joindre a nous on peut en discuter ;)
 

ZarkroxAMV

Premium
Inscription
18 Février 2012
Messages
1 319
Réactions
372
Points
12 071
Désoler j'ouvre mon propre serveur minecraft ==> http://reality-gaming.fr/threads/demande-de-recrutement-builders-moderateurs-pour-asylyus.276030/
Si tu veut te joindre a nous on peut en discuter ;)
Merci de ta proposition mais je préfère le crée :) Merci quand même et bonne chance pour ton serveur :)
 
Haut