Changement des caractéristiques du joueur

Bilhox

Aventurier
3 Janvier 2020
40
0
10
23
Et pour les damages ?
J'ai écrit ceci :

Public void entity(EntityDamageByEntityEvent évent) {

Entity entity = évent.getEntity();

if(entity instanceof Player)
entity.setDamage(PlayerC.getMelée());

If(entity instanceof Arrow)
entity.setdamage(PlayerC.getAgilité());

}
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 537
24
2 247
347
28
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

Alors il est vivement déconseillé d'utiliser des accents dans le nom des variables/méthodes.
Ensuite le "getEntity" retourne l'entité qui reçoit les dégâts... Quand je parlais de la flèche c'est en imaginant que tu voulais faire des dommages différent si le joueur recevait des dégâts d'une flèche (en utilisant la méthode getDamager()).

Normalement:
Java:
@EventHandler
public void entity(EntityDamageByEntityEvent event) {

    final Entity entity = event.getEntity();  // L'entité qui reçoit les dégats

    if(entity instanceof Player) { // si l'entité est un joueur
        // On définit les dégats qu'elle doit recevoir
        entity.setDamage(PlayerC.getMelee());
    }
}


Cordialement,
Detobel36
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 216
164
467
247
21
Mìlhüsa
Bonjour,

Je ne sais pas trop ce que tu tentes de faire, mais bon ça pourrait être un bon début :
Java:
public class MyListener implements Listener {
    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
        Entity damager = event.getDamager();
        Player attacker = null;
       
        if(damager instanceof Player) {
            // damager is a Player
            attacker = (Player) damager;
        }
        else if(damager instanceof Projectile) {
            // damager is a Projectile
            ProjectileSource shooter = ((Projectile) damager).getShooter();
           
            if(/* shooter != null && */ shooter instanceof Player)
                attacker = (Player) shooter; // the projectile's shooter is a Player
        }
       
        if(attacker == null)
            return; // cannot convert the damager into a Player
       
        MyPlayer player = MyPlayer.get(attacker);
       
        event.setDamage(DamageModifier.BASE, player.attributeMap().strength());
    }
}

Tu peux prendre en compte les enchantements avec les DamageModifiers, elle est dépréciée, mais a posteriori elle fonctionne.

Bon après tu peux aussi jeter un coup d’œil à la javadoc, ça te permettra de ne pas te tromper de fonction et de récupérer les subtilités.

Là il ne prend pas en compte l'arme utilisée, donc que tu le frappes avec une boule de neige ou une hache en diamant ça fera les même dégâts. Par contre il prend bien en compte les enchantements et l'armure, parce que ceux-ci ne sont pas dans DamageModifier#BASE mais respectivement dans DamageModifier#MAGIC et dans DamageModifier#ARMOR.

Par ex., pour protéger 5 points de vie grâce à l'armure :
Java:
event.setDamage(DamageModifier.ARMOR, -5d);

Les dégâts finaux sont la somme de tous les modificateurs, et oui, si la somme est négative, cela soigne l'entité attaquée.

Cordialement,
ShE3py.
 

Bilhox

Aventurier
3 Janvier 2020
40
0
10
23
bonjour,

Je veux créer avec mon plugin un systeme de levels et un système de caractéristiques pour le joueurs :
En ce moment je me suis concentré sur la partie caractéristiques du joueurs:
Le joueur doit avoir de la vie , sagesse (point d'xp de lvl) , melée (degats càc) , agilité (dégat non càc) et chance (taux de drop) .
J'ai donc pour cela créer une classe objet pour récupérer et mettre à jour ces caractéristiques et créer les caractéristiques de base qu'a un joueur quand il commence le jeu.
Après ça j'ai créer un menu pour que le joueur voit ses caractéristiques .
Donc là j'essaye de modifier les statistiques du joueur et je ne sais pas comment changer là vie , et les dégâts du joueur car je pense que vous avez mal expliqué .
Si possible me dire si c'est possible de modifier la barre d'XP .
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 216
164
467
247
21
Mìlhüsa
Pour changer la vie maximale d'un joueur :
Java:
player.setMaxHealth(20d);

Pour mettre la barre d'expérience à 2/3 :
Java:
player.setExp(0.67f);

Pour modifier les dégâts, dans ton cas tu dois passer par les évènements associés, cf. en haut.

Tu aurais pu faire une recherche sur Google, tu n'es pas le premier à vouloir faire ceci.
Si tu ne comprends pas, dis où est-ce que tu bloques car nous ne pouvons pas deviner où tu coinces.
 

Bilhox

Aventurier
3 Janvier 2020
40
0
10
23
Bonjour ,
Pouvez vous me dire les méthodes qui vont avec la barre d'XP s'il vous plaît ?
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 216
164
467
247
21
Mìlhüsa
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Player.html#giveExp-int-

Regarde les documentations et Google, il suffisait de rechercher "bukkit set player max health" et "bukkit set exp bar" pour pouvoir récupérer les fonctions ci-dessus.
La plupart de tes questions ont déjà été posées des dizaines de fois sur des forums, tu gagneras du temps si tu utilises correctement les moteurs de recherche.