Solved Custom Event is not working

Discussion in 'Plugin Development' started by ToastHelmi, Aug 13, 2013.

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

    ToastHelmi

    This is my Custom event
    the @Getter anotation generrates a getMethod while combiling @setter a setter method
    Code:java
    1. package me.ToastHelmi.Event;
    2.  
    3. import java.util.List;
    4.  
    5. import lombok.Getter;
    6. import lombok.Setter;
    7. import me.ToastHelmi.GrandThaftMinecart;
    8.  
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.Cancellable;
    11. import org.bukkit.event.Event;
    12. import org.bukkit.event.HandlerList;
    13. import org.bukkit.metadata.FixedMetadataValue;
    14. import org.bukkit.metadata.MetadataValue;
    15.  
    16. public class WantedLevelChangeEvent extends Event implements Cancellable
    17. {
    18.  
    19. boolean Cancelled;
    20. private static final HandlerList handlers = new HandlerList();
    21.  
    22. @Getter private Player player;
    23.  
    24. public WantedLevelChangeEvent(Player p)
    25. {
    26. this.player = p;
    27. }
    28. public int getWantedLevel()
    29. {
    30. return Integer.valueOf((int)getMetadata(player, "WantedLevel")/16);
    31. }
    32. public void setMetadata(Player player, String key, Object value){
    33. player.setMetadata(key,new FixedMetadataValue(GrandThaftMinecart.getInctance(),value));
    34. }
    35. public Object getMetadata(Player player, String key){
    36. List<MetadataValue> values = player.getMetadata(key);
    37. for(MetadataValue value : values){
    38. if(value.getOwningPlugin().getDescription().getName().equals(GrandThaftMinecart.getInctance().getDescription().getName())){
    39. return value.value();
    40. }
    41. }
    42. return null;
    43. }
    44. @Override
    45. public HandlerList getHandlers()
    46. {
    47. // TODO Auto-generated method stub
    48. return handlers;
    49. }
    50. public static HandlerList getHandlerList()
    51. {
    52. return handlers;
    53. }
    54. @Override
    55. public boolean isCancelled()
    56. {
    57. // TODO Auto-generated method stub
    58. return Cancelled;
    59. }
    60. @Override
    61. public void setCancelled(boolean arg0)
    62. {
    63. Cancelled = arg0;
    64.  
    65. }
    66.  
    67.  
    68. }
    69.  


    and this the listener where i want to call my event

    Code:java
    1. package me.ToastHelmi.Police;
    2.  
    3. import java.util.List;
    4. import java.util.Random;
    5.  
    6. import me.ToastHelmi.GrandThaftMinecart;
    7. import me.ToastHelmi.Event.WantedLevelChangeEvent;
    8. import me.ToastHelmi.GTMSettings.Settings;
    9.  
    10. import org.bukkit.Bukkit;
    11. import org.bukkit.ChatColor;
    12. import org.bukkit.entity.Entity;
    13. import org.bukkit.entity.Player;
    14. import org.bukkit.entity.Zombie;
    15. import org.bukkit.event.EventHandler;
    16. import org.bukkit.event.EventPriority;
    17. import org.bukkit.event.Listener;
    18. import org.bukkit.event.entity.CreatureSpawnEvent;
    19. import org.bukkit.event.entity.EntityCombustEvent;
    20. import org.bukkit.event.entity.EntityDeathEvent;
    21. import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
    22. import org.bukkit.event.entity.PlayerDeathEvent;
    23. import org.bukkit.inventory.ItemStack;
    24. import org.bukkit.metadata.FixedMetadataValue;
    25. import org.bukkit.metadata.MetadataValue;
    26.  
    27.  
    28. @SuppressWarnings("deprecation")
    29. public class PoliceListener implements Listener
    30. {
    31.  
    32. public PoliceListener()
    33. {
    34. }
    35.  
    36. @EventHandler(priority = EventPriority.HIGHEST)
    37. public void onCreatureSpawn(CreatureSpawnEvent event)
    38. {
    39. if ((event.getEntity() instanceof Zombie))
    40. {
    41. final Zombie z = (Zombie) event.getEntity();
    42. Random r = new Random();
    43. z.setCustomNameVisible(true);
    44. z.setCustomName(ChatColor.DARK_BLUE
    45. + "Officer "
    46. + Settings.getNames().get(
    47. r.nextInt(Settings.getNames().size())));
    48. z.setBaby(false);
    49. z.getEquipment().setItemInHandDropChance(1F);
    50. if(Settings.getBoots()!=0)
    51. {
    52. z.getEquipment().setBoots(new ItemStack(Settings.getBoots()));
    53. }
    54. if(Settings.getLeggings()!=0)
    55. {
    56. z.getEquipment().setLeggings(new ItemStack(Settings.getLeggings()));
    57. }
    58. if(Settings.getChestplate()!=0)
    59. {
    60. z.getEquipment().setChestplate(new ItemStack(Settings.getChestplate()));
    61. }
    62. if(Settings.getHelmet()!=0)
    63. {
    64. z.getEquipment().setHelmet(new ItemStack(Settings.getHelmet()));
    65. }
    66. if(Settings.getWeapon()!=0)
    67. {
    68. z.getEquipment().setItemInHand(new ItemStack(Settings.getWeapon()));
    69. }
    70.  
    71. }
    72. }
    73.  
    74. @EventHandler(priority = EventPriority.HIGHEST)
    75. public void onZombieTargetPlayer(EntityTargetLivingEntityEvent event)
    76. {
    77. if ((event.getEntity() instanceof Zombie)
    78. && event.getTarget() instanceof Player)
    79. {
    80. final Player p = (Player) event.getTarget();
    81. final Zombie z = (Zombie) event.getEntity();
    82. System.out.println(z.getEntityId()+" set target");
    83. // parameter = gröser der Box in der die entitis geholt werden...
    84. List<Entity> nearBys = z.getNearbyEntities(15,15,15);
    85.  
    86. int maxWanted = 0;
    87. for (Entity e : nearBys)
    88. {
    89. if (e instanceof Player)
    90. {
    91. Player NBP = (Player) e;
    92. if ((int)getMetadata(NBP, "WantedLevel") > maxWanted)
    93. {
    94. System.out.println("4 targed changed");
    95. maxWanted = (int)getMetadata(NBP, "WantedLevel");
    96.  
    97. event.setTarget(NBP);
    98.  
    99. }
    100. }
    101. }
    102.  
    103. if ((int)getMetadata((Player)event.getTarget(),"WantedLevel") <= 0)
    104. {
    105. event.setCancelled(true);
    106. return;
    107. }
    108. }
    109. }
    110. @EventHandler(priority = EventPriority.HIGH)
    111. public void onPlayerDeath(PlayerDeathEvent event)
    112. {
    113. if (event.getEntity() instanceof Player)
    114. {
    115. Player z = (Player) event.getEntity();
    116. if (z.getKiller() != null)
    117. {
    118. int i =0;
    119. if( getMetadata(z.getKiller(), "WantedLevel") != null)
    120. i = (int)getMetadata(z.getKiller(), "WantedLevel");
    121. i+=Settings.getKillPlayerFactor();
    122. if(i>100)
    123. i = 100;
    124. setMetadata(z.getKiller(), "WantedLevel",i);
    125. }
    126. }
    127. }
    128. @EventHandler(priority = EventPriority.HIGH)
    129. private void onOfficerDeath(EntityDeathEvent event)
    130. {
    131. if (event.getEntity() instanceof Zombie)
    132. {
    133. Zombie z = (Zombie) event.getEntity();
    134. if (z.getKiller() != null)
    135. {
    136. int i =0;
    137. if( getMetadata(z.getKiller(), "WantedLevel") != null)
    138. i = (int)getMetadata(z.getKiller(), "WantedLevel");
    139. i+=Settings.getKillZombieFactor();
    140. if(i>100)
    141. i = 100;
    142. setMetadata(z.getKiller(), "WantedLevel",i);
    143. }
    144. }
    145. }
    146.  
    147.  
    148. @EventHandler(priority = EventPriority.HIGH)
    149. private void onCombust(EntityCombustEvent event)
    150. {
    151. if (event.getEntity() instanceof Zombie)
    152. {
    153. event.setCancelled(true);
    154. }
    155. }
    156.  
    157.  
    158. public void setMetadata(Player player, String key, Object value)
    159. { player.setMetadata(key,new FixedMetadataValue(GrandThaftMinecart.getInctance(),value));
    160. if(key.equals("WantedLevel"))
    161. {
    162. GrandThaftMinecart.getInctance().getServer().getPluginManager().callEvent(new WantedLevelChangeEvent(player));
    163. }
    164. }
    165. public Object getMetadata(Player player, String key)
    166. {
    167. List<MetadataValue> values = player.getMetadata(key);
    168. for(MetadataValue value : values){
    169. if(value.getOwningPlugin().getDescription().getName().equals(GrandThaftMinecart.getInctance().getDescription().getName())){
    170. return value.value();
    171. }
    172. }
    173. return null;
    174. }
    175.  
    176.  
    177.  
    178. }
    179.  


    amd what I Get is
    Code:
    01:32:21 at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
    01:32:21 at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    01:32:21 at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
    01:32:21 at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
    01:32:21 at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:329)
    01:32:21 at net.minecraft.server.v1_6_R2.EntityInsentient.dropDeathLoot(EntityInsentient.java:199)
    01:32:21 at net.minecraft.server.v1_6_R2.EntityLiving.die(EntityLiving.java:757)
    01:32:21 at net.minecraft.server.v1_6_R2.EntityLiving.damageEntity(EntityLiving.java:709)
    01:32:21 at net.minecraft.server.v1_6_R2.EntityMonster.damageEntity(EntityMonster.java:39)
    01:32:21 at net.minecraft.server.v1_6_R2.EntityZombie.damageEntity(EntityZombie.java:127)
    01:32:21 at net.minecraft.server.v1_6_R2.EntityHuman.attack(EntityHuman.java:884)
    01:32:21 at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:1121)
    01:32:21 at net.minecraft.server.v1_6_R2.Packet7UseEntity.handle(SourceFile:36)
    01:32:22 at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
    01:32:22 at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116)
    01:32:22 at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
    01:32:22 at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
    01:32:22 at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
    01:32:22 at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
    01:32:22 at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
    01:32:22 at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
    01:32:22 at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    01:32:22 Caused by: java.lang.NullPointerException
    01:32:23 at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:469)
    01:32:23 at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
    01:32:23 at me.ToastHelmi.Police.PoliceListener.setMetadata(PoliceListener.java:162)
    01:32:23 at me.ToastHelmi.Police.PoliceListener.onOfficerDeath(PoliceListener.java:142)
    01:32:23 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    01:32:23 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    01:32:23 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    01:32:23 at java.lang.reflect.Method.invoke(Method.java:601)
    01:32:23 at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    01:32:23 ... 21 more
    
    please help
     
  2. Offline

    newboyhun

  3. Offline

    ToastHelmi

    updatet the post
     
  4. Offline

    newboyhun

    ToastHelmi
    GrandThaftMinecart.getInctance() =>> null
     
  5. Offline

    Syd

    newboyhun ToastHelmi
    The exception is fired in the SimplePluginManager, not in the PoliceListener, so this one can't be null.

    Line 469 in SimplePluginManager is
    Code:
    RegisteredListener[] listeners = handlers.getRegisteredListeners();
    while handlers is
    Code:
    HandlerList handlers = event.getHandlers();
    So, handlers is null, which means event.getHandlers() returns null for some reason.
    However, getHandlers() returns clearly handlers, which is static and initialized.
     
  6. Offline

    ToastHelmi

    newboyhun
    strange i just changed to
    Code:java
    1. public void setMetadata(Player player, String key, Object value)
    2. {
    3. GrandThaftMinecart plugin = GrandThaftMinecart.getInctance();
    4. player.setMetadata(key,new FixedMetadataValue(plugin,value));
    5. if(key.equals("WantedLevel"))
    6. {
    7. if(plugin != null)
    8. plugin.getServer().getPluginManager().callEvent(new WantedLevelChangeEvent(player));
    9. else
    10. System.out.println("null");
    11. }
    12. }


    and it worked dont know what the problem with call
    GrandThaftMinecart.getInctance()
    twice but now it dosend mather
     
Thread Status:
Not open for further replies.

Share This Page