[Support] Récupérer World dans plugin bukkit

  • Auteur de la discussion Auteur de la discussion Free123
  • Date de début Date de début

Free123

Aventurier
21 Août 2013
1
0
1
Bonjour.

Petit présentation rapide:
Avec des amis nous avons créé un petit serveur 20 slots pour ma classe ( serveur craftbukkit 1.5.2 R1.0).
J'ai déjà créé un plugin qui communique avec mon site web, pour afficher des infos sur le chat. (on tape /news et la dernier news du site apparais dans le chat)


Maintenant, je voudrais créer un plugin pour automatisé la construction de maison.
Je sais sa existe déjà, mais je voudrais le faire moi-même pour découvrir un peu plus le monde des plugins.

Je voudrais que lorsque je tape /house xxx yyy zzz (ou xxx yyy zzz est la position ou la maison devra être construite).

J'ai trouvé un exemple ici(http://www.minecraftforum.net/topic...ing-tutorials-21511/page__st__40#entry1541507) de maison déployable.

Code:
public void onBlockClicked(World world, int i, int j, int k, EntityPlayer entityplayer)
{
        // Basic Building
        int block = Block.wood.blockID;
        int size = 5;
        for (int i1 = 0; i1 < size; i1++)
        {
                for (int j1 = 0; j1 < size; j1++)
                {
                        //Walls
                        // i == ++ k == 0
                        world.setBlockWithNotify(i+i1,j+j1,k,block);
                        // i == ++ k == 4
                        world.setBlockWithNotify(i+i1,j+j1,k+(size-1),block);
                        // i == 0 k == ++
                        world.setBlockWithNotify(i,j+j1,k+i1,block);
                        // i == 4 k == ++
                        world.setBlockWithNotify(i+(size-1),j+j1,k+i1,block);
                        //Roof
                        world.setBlockWithNotify(i+i1,j+(size-1),k+j1,block);
                        //Floor
                        world.setBlockWithNotify(i+i1,j,k+j1,block);
                }
        }
        //Door
        world.setBlockWithNotify(i+1,j+2,k,0);
        world.setBlockWithNotify(i+1,j+1,k,0);
        //Windows
        int offset = size % 2 == 0 ? (size / 2) - 1 : (size / 2);
        world.setBlockWithNotify(i,j+offset,k+offset,Block.glass.blockID);
        world.setBlockWithNotify(i+offset,j+offset,k,Block.glass.blockID);
        world.setBlockWithNotify(i+(size-1),j+offset,k+offset,Block.glass.blockID);
        world.setBlockWithNotify(i+offset,j+offset,k+(size-1),Block.glass.blockID);
        //Utilities
        world.setBlockWithNotify(i+1,j+1,k+(size-2),Block.crate.blockID);
        world.setBlockWithNotify(i+(size-2),j+1,k+1,Block.workbench.blockID);
        world.setBlockWithNotify(i+(size-2),j+1,k+(size-2),Block.stoneOvenIdle.blockID);
}

Mais j'ai plusieurs problème avec cette exemple.
Il ne marche pas. Et utilise un onBlockClicked alors que je voudrais utiliser un onCommand.

Il ne marche pas car il utilise setBlockWithNotify a été remplacer par setBlock entre la version 1.4.7 et 1.5, et les Block.***.blockID sont introuvable. Je n'ai donc jamais compiler cette exemple.

Mais le plus gros de mes problème, c'est que je n'arrive pas à récupérer le "world" ou je me trouve. (Car il n'est pas passé en paramètre de onCommand)

J'ai trouvé les fonction World Bukkit.getWorld(String name) et World Server.getWorld(UUID uid), mais avec ses fonction, le monde doit être désigné par son nom ou son uid.
Je voudrais récupérer le monde par rapport a la position du joueur. (pour distinguer le nether et le monde normal)

J'ai lus qu'il faut récupérer le chuck ou l'on se trouve, puis le passé à la fonction World Chunk.getWorld() "Gets the world containing this chunk", mais je n'y arrive pas.


Quelqu'un pourrais m'expliquer comment récupérer le "World" d'où j'exécute la commande ?


Merci


Edit: J'ai l'impression que SetBlock n'existe pas. Comment créer un bloc alors ?