Demande d'aide ; Nerf Force et distance.

Sala

Aventurier
27 Février 2021
23
0
3
18
Bonjour/Bonsoir,
Je suis toujours dans la création de mon plugin Loup-Garou UHC. Et j'ai essayé de nerf la force, au lieu qu'elle soit force 1 à je crois 120% qu'elle soit a 50-60% enfin genre baissée. Mais je n'y arrive pas et ait surtout aucune idée de comment faire... Si vous savez comment faire...

Et sinon, si vous savez également comment faire pour faire une commande qui permettrait de savoir la vie d'un joueur a moins de 10 blocks du joueur entrant la commande. Par exemple je fait la commande /health (pseudo) et que le joueur soit a moins de 10 blocks de moi pour savoir sa vie et s'il est plus loin je ne la connais pas.

Bonne soirée/journée.
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
Bonsoir,

j'ai essayé de nerf la force, au lieu qu'elle soit force 1 à je crois 120% qu'elle soit a 50-60% enfin genre baissée
Je n'ai pas compris, tu parles de l'effet de potion Force ou d'un attribut ?

Et sinon, si vous savez également comment faire pour faire une commande qui permettrait de savoir la vie d'un joueur a moins de 10 blocks du joueur entrant la commande. Par exemple je fait la commande /health (pseudo) et que le joueur soit a moins de 10 blocks de moi pour savoir sa vie et s'il est plus loin je ne la connais pas.
Tu dois récupérer toutes les entités dans un cube de côté 20 autour du joueur en question, vérifier si ce sont des joueurs et que la distance est bien inférieure ou égale à 10 (cf. Distance entre deux points sur le plan cartésien, il suffit de prendre la racine carrée de la somme des différences des coordonnées respectives des deux points).

Java:
public class HealthCommand implements CommandExecutor {
   @Override
   public boolean on_Command(CommandSender sender, Command command, String label, String[] args) {
      if(!(sender instanceof Entity)) {
         sender.sendMessage("§cVous devez être une entité pour pouvoir effectuer cette commande.");
         
         return true;
      }
      
      if(args.length != 1) {
         return false; // la commande doit avoir un seul argument (le joueur en question)
      }
      
      Entity source = (Entity) sender;
      
      String name = args[0];
      Player target = Bukkit.getPlayerExact(name);
      
      if(target == null) {
         source.sendMessage("§cJoueur introuvable: " + name);
         
         return true;
      }
      
      for(Entity nearby : source.getNearbyEntities(20, 20, 20)) {
         if(nearby == target) {
            //     √(x) ≤ y
            // <=> √(x)² ≤ y²
            // <=> x ≤ y²
            if(nearby.getLocation().distanceSquared(source.getLocation()) <= (10 * 10)) {
               source.sendMessage("Le joueur " + target.getDisplayName() + " a " + target.getHealth() + " points de vie.");
               
               return true;
            }
            
            // dans le cube, mais pas dans la sphère
            break;
         }
      }
      
      source.sendMessage("Le joueur " + target.getDisplayName() + " est hors de portée.");
      return true;
   }
}

Le site m'empêche d'écrire on_Command sans le tiret du bas « _ », tu dois bien évidemment l'enlever.

Cordialement,
ShE3py
 

Sala

Aventurier
27 Février 2021
23
0
3
18
Ok merci.
Mais sinon pour le nerf de l'effet de force je parle d'un effet de force 1 donné à un joueur.
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
L'effet Force augmente les dégâts de mêlée de 1.5 cœur par niveau ; si tu veux changer ça tu dois passer par un attribut.
Java:
Player player;
AttributeInstance attributeInstance = player.getAttribute(Attribute.GENERIC_ATTACK_DAMAGE);

AttributeModifier modifier = new AttributeModifier("myPlugin.bonusAttack", 0.5d, AttributeModifier.Operation.ADD_NUMBER);
attributeInstance.addModifier(modifier);

Mais du coup ce sera à toi d'enlever l'effet si tu veux qu'il y ait une durée ou que celui-ci soit restreint à une zone particulière.
 

Sala

Aventurier
27 Février 2021
23
0
3
18
Re-bonjour,
Pour l'effet de force, je n'ai pas vraiment compris, et quand j'import les choses à importer cela ne fonctionne pas...
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
L'effet Force augmente les dégâts de 1.5 cœur, ce n'est pas un pourcentage de +20% comme tu dis, donc si tu veux augmenter les dégâts d'un certain pourcentage ou d'un nombre qui n'est pas un multiple de 1.5, tu ne peux pas utiliser un effet de potion.

Tu dois passer par un attribut, mais si après tu fais ton plugin pour une version beaucoup trop vieille il se peut que ces classes n'existent pas, auquel cas tu dois calculer les dégâts finaux toi-même dans l'évènement EntityDamageByEntityEvent.
 

Sala

Aventurier
27 Février 2021
23
0
3
18
Ok mrc jevais quand même essayer.
Mais sinon sais-tu comment faire pour qu'un joueur n'utilise que 4 fois max une commande par exemple ?
Déso pour le nombre incalculé de questions. x)
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
Tu associes à chaque joueur un nombre entier représentant le nombre d'utilisations restantes (avec une Map<Player, Integer>), puis tu réduits ce nombre de un à chaque utilisation, ce qui te permet de vérifier que ce nombre est bien strictement supérieur à zéro pour vérifier qu'il peut bien toujours effectuer la commande.