Solved Metadata Help

Discussion in 'Plugin Development' started by SilverNinja555, Nov 22, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    SilverNinja555

    Code:
    import org.bukkit.ChatColor;
    
    import org.bukkit.command.Command;
    
    import org.bukkit.command.CommandSender;
    
    import org.bukkit.entity.Entity;
    
    import org.bukkit.entity.EntityType;
    
    import org.bukkit.entity.LivingEntity;
    
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Snowball;
    import org.bukkit.entity.Wolf;
    
    import org.bukkit.event.EventHandler;
    
    import org.bukkit.event.Listener;
    
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
    import org.bukkit.metadata.FixedMetadataValue;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    import org.bukkit.potion.PotionEffect;
    
    import org.bukkit.potion.PotionEffectType;
    
    public class Main extends JavaPlugin implements Listener{
    
    
        public static Main instance;
    
        @Override
    
        public void onEnable(){
    
            getServer().getPluginManager().registerEvents(this,this);
    
            instance = this;
    
        }
    
        @Override
    
        public void onDisable(){
    
        }
    
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
    
            Player player = (Player) sender;
    
            if(player instanceof Player){
    
                String lowerCaseCommand = command.getName().toLowerCase();
    
                switch(lowerCaseCommand){
    
                case("wolf"):
    
                    if(args.length == 1){
    
                        if(args[0].equalsIgnoreCase("poison")){
    
                            spawnPoisonWolf(instance, player);
    
                            return true;
    
                        }
    }
    }
    }
    }
    
    public void spawnPoisonWolf(Main plugin, Player player){
    
            Wolf poison = (Wolf) player.getWorld().spawnEntity(player.getLocation(), EntityType.WOLF);
    
            poison.setMetadata("wolfType", new FixedMetadataValue(plugin, "poison"));
    
            poison.setCustomName(ChatColor.GREEN + "Poison Wolf");
    
            poison.setCustomNameVisible(true);
    
        }
    
    @EventHandler
    
        public void wolfEffects(EntityDamageByEntityEvent e){
    
            LivingEntity victim = (LivingEntity) e.getEntity();
    
            Entity damager = e.getDamager();
            damager.getMetadata("wolfType");
            if(e.getDamager().getType().equals(EntityType.WOLF)){
                victim.sendMessage("damager is a wolf");
                victim.sendMessage(damager.getMetadata("wolfType").toString());
                if(damager.getMetadata("wolfType").toString().equals("poison")){
                    victim.sendMessage("wolf is poison");
                    victim.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 100, 2));
    
                }
    }
    }
    if(damager.getMetadata("wolfType").toString().equals("poison")){} does not work because I need to use value().

    if(damager.getMetadata("wolfType").value().toString().equals("poison")){ } does not work though.

    How would I make this work?
     
  2. Offline

    SilverNinja555

    I changed my attack code to:

    Code:
    public void wolfAttack2(EntityDamageByEntityEvent e){
            Entity damager = e.getDamager();
            LivingEntity victim = (LivingEntity) e.getEntity();
            if(damager.hasMetadata("wolfType")){
                for(MetadataValue metadata : damager.getMetadata("wolfType")){
                    victim.sendMessage("testing");
                    if(metadata.equals(damager.getMetadata("wolfType"))){
                        if(metadata.value().equals("poison")){
                            victim.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 100, 2));
    break;
                        }
    }
    }
    }
    }
    I'm still not sure what is wrong

    Plz help, someone...

    btw, the if(metadata.equals(damager.getMetadata("wolfType"))) is the part that doesnt work
     
    Last edited: Nov 28, 2017
  3. Offline

    timtower Administrator Administrator Moderator

    @SilverNinja555 Could you check the meta after you set it?
    To see if it actually gets applied?
     
  4. Offline

    SilverNinja555

    @timtower it does register. It without value(), it sends "org.bukkit.FixedMetadataValue@11f31e22". Still not sure what is wrong.


    Ok, all I had to do is

    if(metadata.asString() == "poison"){
    }
     
    Last edited: Dec 3, 2017
Thread Status:
Not open for further replies.

Share This Page