Set Entity Metadata...

Discussion in 'Plugin Development' started by staniboy, Mar 12, 2014.

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

    staniboy

    I'm quite lost why it's don't work... I am trying to change type of every spawning skeleton to whether skeleton. Will appreciate any help! Thank You!

    I get something like "Could not pass event CreatureSpawnEvent to

    Code:java
    1. import org.bukkit.Bukkit;
    2. import org.bukkit.entity.Entity;
    3. import org.bukkit.entity.Skeleton;
    4. import org.bukkit.event.EventHandler;
    5. import org.bukkit.event.Listener;
    6. import org.bukkit.event.entity.CreatureSpawnEvent;
    7. import org.bukkit.metadata.FixedMetadataValue;
    8. import org.bukkit.plugin.Plugin;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. public class Main extends JavaPlugin implements Listener {
    12.  
    13. static Plugin plugin = null;
    14.  
    15.  
    16. public void onEnable(){
    17. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    18. }
    19.  
    20. @EventHandler
    21. public void listener (final CreatureSpawnEvent event) {
    22. if(event.getEntity() instanceof Skeleton) {
    23. String s = new String("1");
    24. Entity creature = event.getEntity();
    25. creature.setMetadata("SkeletonType", new FixedMetadataValue(plugin,s));
    26.  
    27.  
    28. }
    29.  
    30. }
    31. }
    32.  


    And yes I know I can do it different way but this is just in order to learn how to work with metadata...

    So I got "Could not pass event CreatureSpawnEvent to " out of way by referring the main instance to constructor still...I cannot change skeleton type it seems Im doing something wrong...but no errors in log. here is what it looks like now:
    Code:java
    1. package me.skullonroses.MobEquipment;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.entity.Entity;
    5. import org.bukkit.entity.Skeleton;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.entity.CreatureSpawnEvent;
    9. import org.bukkit.metadata.FixedMetadataValue;
    10. import org.bukkit.plugin.Plugin;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class Main extends JavaPlugin implements Listener {
    14.  
    15. Plugin plugin = null;
    16.  
    17. public void onEnable(){
    18. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    19. }
    20.  
    21. @EventHandler
    22. public void listener (final CreatureSpawnEvent event, Main mainInstance) {
    23. if(event.getEntity() instanceof Skeleton) {
    24. this.plugin = mainInstance;
    25. int s = 1;
    26. Entity creature = event.getEntity();
    27. creature.setMetadata("SkeletonType", new FixedMetadataValue(plugin,s));
    28.  
    29.  
    30. }
    31.  
    32. }
    33. }
    34.  


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 7, 2016
  2. Offline

    Heirteir

    staniboy
    remove "final" from your event and change "listener" to onCreatureSpawn you may be interfering with other classes and there is no reason to have final there
     
  3. Offline

    staniboy

    Heirteir did that thank you. But it still doesn't work...spawning regular skeletons. I'm pretty sure this is to do with setmetadata
     
Thread Status:
Not open for further replies.

Share This Page