GriefPrevention Explosions

Crystal59

Aventurier
24 Février 2022
7
0
2
18
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 !
 

Niz

l | l | l | l | l
18 Août 2013
1 064
1
639
267
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 !
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 531
24
2 247
347
28
Bruxelles - Belgique
www.phoenix-rebirth.fr
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
 

Niz

l | l | l | l | l
18 Août 2013
1 064
1
639
267
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... :(
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 134
162
462
247
21
Mìlhüsa
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

Niz

l | l | l | l | l
18 Août 2013
1 064
1
639
267
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:

Crystal59

Aventurier
24 Février 2022
7
0
2
18
France
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 !!!