GriefPrevention Explosions

Crystal59

Aventurier
24 Février 2022
7
0
2
19
France
Salut à tous,
J'ai un soucis avec le plugin GriefPrevention et mon serveur...
J'ai codé un plugin de missile pour mon serveur qui lors de la collision avec un bloc génère une explosion. Mais GriefPrevention Bloque l'explosion à l'intérieur d'un claim (chose que je n'avais pas anticipé). J'ai plusieurs idées pour résoudre mon problème mais je ne vois pas comment le mettre en oeuvre..

J'ai déja pensé à juste autoriser les explosions dans le claim mais je ne veux pas que d'autre joueurs puisse poser de tnt, seul le serveur doit pouvoir faire exploser un missile
  1. Implémenter GriefPrevention dans mon plugin et autoriser l'explosion ?
  2. à la place de l'explosion, générer un trou dans le sol car l'action est autorisé pour le serveur dans le claim (trouver un algo créant un trou)
Merci d'avance !
 
Hey !

Personnellement je conseillerai l'utilisation de WorldGuard. Plus complet et plus customisable, tu vas pouvoir définir des propriétés (flags) à des zones (régions) choisies et donc accepter les explosions.

Bon courage !
 
Salut,

Moi j'ai mieux...
Le projet GreifPrevention est open source.

Donc rajoute un event custom, comme fait ici: https://github.com/TechFortress/Gri...Prevention/events/PreventBlockBreakEvent.java
Mais celui-ci s'appellerait par exemple "PreventBlockExplosion" et il faudrait l'appeler quelque part ici:

Une fois le changement fait (donc tu fais la modification, tu la propose au dev du plugin, tu attends qui le rajoute et qu'il fasse une version OU tu utilises une version modifiée de son plugin (comme ça tu n'es pas dépendant de lui)): tu pourra simplement écouter l'event dans ton plugin a toi et "cancel" les cas où tu veux autoriser l'explosion.


Cordialement,
Detobel36
 
Salut,

Moi j'ai mieux...
Le projet GreifPrevention est open source.

Donc rajoute un event custom, comme fait ici: https://github.com/TechFortress/Gri...Prevention/events/PreventBlockBreakEvent.java
Mais celui-ci s'appellerait par exemple "PreventBlockExplosion" et il faudrait l'appeler quelque part ici:

Une fois le changement fait (donc tu fais la modification, tu la propose au dev du plugin, tu attends qui le rajoute et qu'il fasse une version OU tu utilises une version modifiée de son plugin (comme ça tu n'es pas dépendant de lui)): tu pourra simplement écouter l'event dans ton plugin a toi et "cancel" les cas où tu veux autoriser l'explosion.


Cordialement,
Detobel36
En quoi c'est mieux du coup ?
Parce que certes ta solution permettra de développer le plugin, mais elle demande aussi énormément de temps comparé à la mienne qui se limite à changer de plugin puis lire une page de sa documentation... :(
 
Bonsoir,

Il veut bloquer toutes les explosions dans une zone sauf celles que son plugin crée, et la seule cause d'une explosion enregistrée par Bukkit est l'éventuelle entité source, donc un plugin de protection peut difficilement deviner si un plugin est derrière l'explosion et si l'explosion est censée outrepasser la protection ; pour moi ce n'est pas possible de faire cela avec WorldGuard tel qu'il est fourni.

Donc le mieux serait effectivement de rajouter des fonctions au plugin de protection afin de créer directement une explosion ignorant les règles de protection, mais il faudrait aussi distinguer les zones transgressables (terrain des joueurs) des zones intransgressibles (spawns) pour éviter que les joueurs puissent atomiser n'importe quoi, mais la définition de ce qui est transgressable ou non dépend de chaque plugin.

Le plus simple serait donc de faire ce qu'à dit Detobel, c.-à-d. rajouter un évènement et laisser le plugin tier décider de la transgressabilité, donc là WorldGuard serait plus intéressant car il permet aux plugins de rajouter leurs propres flags customs aux régions, dans notre cas nukeable.

Pour aider @Crystal59, le tout n'est pas très compliqué à faire :

Cordialement,
ShE3py
 
  • J'aime
Reactions: Detobel36
Bonsoir,

Il veut bloquer toutes les explosions dans une zone sauf celles que son plugin crée, et la seule cause d'une explosion enregistrée par Bukkit est l'éventuelle entité source, donc un plugin de protection peut difficilement deviner si un plugin est derrière l'explosion et si l'explosion est censée outrepasser la protection ; pour moi ce n'est pas possible de faire cela avec WorldGuard tel qu'il est fourni.

Donc le mieux serait effectivement de rajouter des fonctions au plugin de protection afin de créer directement une explosion ignorant les règles de protection, mais il faudrait aussi distinguer les zones transgressables (terrain des joueurs) des zones intransgressibles (spawns) pour éviter que les joueurs puissent atomiser n'importe quoi, mais la définition de ce qui est transgressable ou non dépend de chaque plugin.

Le plus simple serait donc de faire ce qu'à dit Detobel, c.-à-d. rajouter un évènement et laisser le plugin tier décider de la transgressabilité, donc là WorldGuard serait plus intéressant car il permet aux plugins de rajouter leurs propres flags customs aux régions, dans notre cas nukeable.

Pour aider @Crystal59, le tout n'est pas très compliqué à faire :

Cordialement,
ShE3py
D'après son premier message, il n'avait pas anticipé que le plugin bloquait les explosions, donc il s'agit bien d'une feature non voulu.
 
Dernière édition:
Salut à tous, dans un premier temps merci beaucoup pour toute vos réponses.
Chose promis chose due j'ai essayer les deux solutions qui sont d'ailleurs toutes les deux très efficace. J'implémenterais les deux méthodes sur deux serveurs différents pour voir à l'avenir laquelle plaît le plus :)

Merci beaucoup !!!