Développer des plugins pour Craftbukkit

Statut
N'est pas ouverte pour d'autres réponses.

Smixi

Vétéran autoproclamé et non mérité du forum.
23 Juin 2011
1 753
6
33
RE: Dèvelopper des plugins pour Craftbukkit

Oki, j'ai hate.
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
RE: Dèvelopper des plugins pour Craftbukkit

Petite réctification pour les commandes, quelqu'un m'a prèvenu que j'avais oublié de parler du faite que la méthode onCommand([...]) renvoyait un boolean, c'est corrigée :

Dernière chose, vous aurez remarqué que la fonction onCommand([...]) renvoie un boolean. Si la variable vaut true, cela veut dire que la commande a fonctionné comme il fallait. Si vous renvoyé false, Bukkit va afficher ce que vous avez marqué après usage: dans le fichier plugin.yml. :)
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
RE: Dèvelopper des plugins pour Craftbukkit

Un nouveau petit chapitre concernant une erreur que j'avais faites sur Capture The Flag, ce qui m'a forcé à devoir remodeler entièrement mon plugin. Autant prévenir que guérir !
Bonne lecture. :)
 

LEpigeon888

Aventurier
27 Juin 2011
36
2
1
RE: Dèvelopper des plugins pour Craftbukkit

Bonjour, j'ai une question.

Comment on utilise l’événement EXPLOSION_PRIME ?

J'ai cherché sur bukkit ( http://jd.bukkit.org/doxygen/d0/de9/classorg_1_1bukkit_1_1event_1_1entity_1_1ExplosionPrimeEvent.html ) mais j'ai pas vraiment compris :hum:

J'ai vu ça: "DENY

Deny the event.

Depending on the event, the action indicated by the event will either not take place or will be reverted. Some actions may not be denied. "

Mais je sais pas comment ça marche...

Car j'ai fais un plugin qui remplace la TnT par de la dirt, mais le problème c'est que quand on place la tnt près d'une torche de redstone, elle s'active et ne se transforme pas :(

J'ai trouvé comment faire en sorte qu'elle se transforme, mais le problème et le suivant, la tnt deviens de la dirt mais s'active quand même. En gros c'est comme si elle se dédoublait, l'une d'elle s'active, l'autre se transforme.

Merci d'avance de m'aider :)
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
RE: Dèvelopper des plugins pour Craftbukkit

Je pense que ça corresond à une explosion quelconque, que ce soit de la Tnt, un creeper ou autre.
Pour ton plugin, tu fonctionnes comment, tu fais quand un joueur pose un bloc ou ... ?
 

LEpigeon888

Aventurier
27 Juin 2011
36
2
1
RE: Dèvelopper des plugins pour Craftbukkit

Bah, il est possible de faire un getEntity donc le choix est possible entre TnT, fireball et creeper :oui:

Sinon, voici le code qui transforme la TnT en dirt :

public void onBlockPlace(BlockPlaceEvent event)
{
Block block = event.getBlockPlaced();
ItemStack itemEnMain = event.getItemInHand();
if (itemEnMain.getType() == Material.TNT)
{
block.setType(Material.DIRT);
}

if (block.getType() == Material.TNT)
{
block.setType(Material.DIRT);
}
}

Donc je devrais créer un autre public pour l'événement EXPLOSION_PRIME mais j'ai deux problèmes, que mettre dans ce public, et que définir dans le pm.registerEvent.

PS: Je sais que la partie :
"
if (block.getType() == Material.TNT)
{
block.setType(Material.DIRT);
}
"

Est inutile mais c'est en prévention de bug ou je ne sais quoi :oui:
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
RE: Dèvelopper des plugins pour Craftbukkit

Regarde les différentes valeurs que peuvent valoir Event.getEntity() en créant toi même les situations. Je pense qu'une Tnt qui est frappée devient enfaite une entitée. :)
 

LEpigeon888

Aventurier
27 Juin 2011
36
2
1
RE: Dèvelopper des plugins pour Craftbukkit

Oui, d'après ce que j'ai compris c'est EntityTNTPrimed ou quelque chose comme ça je sais plus.

Mais, comme dit avant je ne sais pas comment configurer la ligne pm.registerEvent. pour EXPLOSION_PRIME.

Et aussi, comment arrêter l'explosion ? Il faut utiliser "setCancelled (boolean cancel)" ? Je ne sais pas vraiment comment ça marche :non:

Je vais continuer mes teste et posterais ici la solution sir je la trouve.

EDIT: donc j'ai fais ça :

public void onExplosionPrime(ExplosionPrimeEvent event)
{
boolean block = event.isCancelled ();
if(block == false)
{
block.setCancelled(true);
}
}

Mais le "block.setCancelled(true);" est souligné disant que "Cannot invoke setCancelled(boolean) on the primitive type boolean"

Comprends pas :(

PS: là j'ai pas utilié le getentity() donc ça enlèvera aussi l'explosion des creepers mais c'est juste un teste pour voir si je sais comment faire :(

J'ai testé différent truc, et ça dit "Could not pass event EXPLOSION_PRIME to NoTnT......" ça le dit que quand je place de la tnt à côté de la torche, donc ça reconnais bien pourtant ça marche pas :(
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
RE: Dèvelopper des plugins pour Craftbukkit

Tu as faire une erreur :
Code:
boolean block = event.isCancelled ();
if(block == false)
{
block.setCancelled(true);
}
Tu extraies le boolean block, et tu demandes ne méthode cette boolean, or la méthode setCancelled() est de event !
Pour ton code, tu devrais dabord vérifier si getEntity() correspond bien à celle d'une Tnt. Si oui, tu cancelled l'évènement. :)
 

LEpigeon888

Aventurier
27 Juin 2011
36
2
1
RE: Dèvelopper des plugins pour Craftbukkit

"Tu extraies le boolean block, et tu demandes ne méthode cette boolean, or la méthode setCancelled() est de event !"

J'ai pas très bien compris, je dois faire quoi alors ? :(
 
Statut
N'est pas ouverte pour d'autres réponses.