1. Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PlugIn ThrownPotion einen Effekt geben?

Dieses Thema im Forum "Programmierung" wurde erstellt von HardSoul, 6. August 2015.


  1. HardSoul
    Offline

    HardSoul Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    716
    Geschlecht:
    männlich
    Minecraft:
    Basti07711
    Hi Leute,
    seit neustem arbeite ich an eigenen Traits für Citizens.
    Soweit klappt auch alles, nur eine Sache bekomme ich nicht hin.
    Einige NPC sollen Potions werfen, die einen Effekt haben, nur mein jetziger Code funktioniert nich:

    Code (Javascript):
    1.     public static void throwPotion(Entity e, NPC npc){
    2.        
    3.        
    4.         Location nloc = npc.getEntity().getLocation();
    5.         Location eloc = e.getLocation();
    6.        
    7.         Vector v = nloc.toVector().subtract(eloc.toVector()).multiply(-1);
    8.         v.multiply(0.3);
    9.        
    10.         LivingEntity ne = (LivingEntity) npc.getEntity();
    11.        
    12.         ThrownPotion tp = ne.launchProjectile(ThrownPotion.class, v);
    13.         tp.getEffects().clear();
    14.         tp.getEffects().add(new PotionEffect(PotionEffectType.CONFUSION, 200, 1));
    15.     }
    Wo liegt mein Fehler?
    Oder geht das auch anders?
     
  2. Werbung
    Online

    Werbung

  3. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    289
    Minecraft:
    GPSforLEGENDS
  4. HardSoul
    Offline

    HardSoul Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    716
    Geschlecht:
    männlich
    Minecraft:
    Basti07711
    Stimmt habe ich vergessen, Sorry.
    Es werden kerinerlei Fehler ausgegeben, aber die Potion wird geworfen, nur hat sie keinen Effekt.
     
  5. HardSoul
    Offline

    HardSoul Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    716
    Geschlecht:
    männlich
    Minecraft:
    Basti07711
    Ich habe es jetzt dem Link angepasst, aber es spawnt nun garnicht mehr, und Fehler in der Konsole gibt es auch nicht.

    Hier mal der neue Code:
    Code (Javascript):
    1.     @SuppressWarnings("deprecation")
    2.     public static void throwPotion(Entity e, NPC npc){
    3.        
    4.        
    5.         Location nloc = npc.getEntity().getLocation();
    6.         Location eloc = e.getLocation();
    7.        
    8.         Vector v = nloc.toVector().subtract(eloc.toVector()).multiply(-1);
    9.         v.multiply(0.3);
    10.        
    11.         LivingEntity ne = (LivingEntity) npc.getEntity();
    12.        
    13.         World w = ne.getLocation().getWorld();
    14.         PotionEffect pe = new PotionEffect(PotionEffectType.CONFUSION, 200, 1);
    15.         PotionType pt = PotionType.getByEffect(pe.getType());
    16.         Potion po = new Potion(pt);
    17.         int data = po.toDamageValue();
    18.        
    19.        
    20.         nloc.setY(nloc.getY()+1);
    21.        
    22.         net.minecraft.server.v1_8_R3.World nmsw = ((CraftWorld) w).getHandle();
    23.        
    24.         EntityPotion ent = new EntityPotion(nmsw);
    25.         ent.setLocation(nloc.getX(), nloc.getY(), nloc.getZ(), 0, 0);
    26.        
    27.         NBTTagCompound nbt = new NBTTagCompound();
    28.        
    29.         ent.b(nbt);
    30.  
    31.         NBTTagCompound potionTag = nbt.getCompound("Potion");
    32.         NBTTagCompound tagTag = new NBTTagCompound();
    33.         if(potionTag == null){
    34.             potionTag = new NBTTagCompound();
    35.             potionTag.setShort("id", (short) 373);
    36.             potionTag.setShort("Damage", (short) data);
    37.             potionTag.setByte("Count", (byte) 1);
    38.             tagTag.set("CustomPotionEffects", makePotion(pe));
    39.         }else{
    40.             tagTag = potionTag.getCompound("tag");
    41.  
    42.             tagTag.set("CustomPotionEffects", makePotion(pe));
    43.  
    44.  
    45.         }
    46.        
    47.        
    48.         potionTag.set("tag", tagTag);
    49.         nbt.set("Potion", potionTag);
    50.        
    51.         ent.a(nbt);
    52.        
    53.         nmsw.addEntity(ent);
    54.        
    55.         Entity te = ent.getBukkitEntity();
    56.        
    57.         te.setVelocity(v);  
    58.     }
    59.    
    60.     @SuppressWarnings("deprecation")
    61.     public static NBTTagList makePotion(PotionEffect effect) {
    62.  
    63.         NBTTagList list = new NBTTagList();
    64.  
    65.         NBTTagCompound potionType = new NBTTagCompound();
    66.  
    67.         potionType.setByte("Id", (byte) effect.getType().getId());
    68.  
    69.         potionType.setByte("Amplifier", (byte) effect.getAmplifier());
    70.  
    71.         potionType.setInt("Duration", effect.getDuration());
    72.  
    73.         potionType.setByte("Ambient", (byte) 0); //Not ambient
    74.  
    75.         list.add(potionType);
    76.  
    77.         return list;
    78.  
    79.         }