ServerPlugin ThrownPotion einen Effekt geben?

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

  1. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    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?
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    #2
  3. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Stimmt habe ich vergessen, Sorry.
    Es werden kerinerlei Fehler ausgegeben, aber die Potion wird geworfen, nur hat sie keinen Effekt.
     
    #3
  4. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    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.         }
     
    #4