Solved CloseInventoryEvent error

Discussion in 'Plugin Development' started by Fl1pzta, Sep 11, 2013.

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

    Fl1pzta

    Here's how I have it setup:

    My Listener
    Code:
    class a implements listener{
     
    public void closeInv(CloseInventoryEvent e){
    if(inv is a menu){
    b.invclose(event);
    }
    }
    }
    Code:
    public abstract b{
    private Inventory inventory;
    private RPlayer player
    public b(Rplayer player){
    this.player = player;
    }
    public setInventory(Inventory inv){
    this.inv = inv;
    }
    protected void open(){
    player.getPlayer().openInventory(inventory);
    }
    public abstract invClose(InventoryCloseEvent event);
    }
    Code:
    public c extends b{
    public c(RPlayer player){
    super(player);
    setInventory(getInventory());
    open();
    }
    public Inventory getInventory(){
    return someInventory;
    }
    @Override
    public void invClose(InventoryCloseEvent event){
    open();
    }
    Sorry, I'm probably missing some stuff, but that's the general outline of how it works. Basically, if a player closes a menu without making a selection it should open the inventory again.

    It's opening the inventory correctly just with open(); but if I ever add it to invClose in c it throws this infinite error that won't stop flooding my console. Same with if I kick the player on invCLose in c.

    I'm hosting the server locally if that's the issue then okay. If you need more information let me know
     
  2. Offline

    UnlikeAny

    It would be helpful to see the error that won't stop flooding your console.
     
  3. Offline

    Fl1pzta

    Code:
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
            at org.bukkit.craftbukkit.v1_6_R2.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:193)
            at me.Fl1p.Rom.InventoryMenu.InventoryMenu.open(InventoryMenu.java:49)
            at me.Fl1p.Rom.InventoryMenu.ProfileSelectionMenu.invClose(ProfileSelect
    ionMenu.java:174)
            at me.Fl1p.Rom.Listener.RListener.InvClose(RListener.java:110)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.handleInventor
    yCloseEvent(CraftEventFactory.java:684)
            at net.minecraft.server.v1_6_R2.EntityPlayer.closeInventory(EntityPlayer
    .java:697)
            at net.minecraft.server.v1_6_R2.EntityPlayer.openContainer(EntityPlayer.
    java:531)
    12:53:38 [WARNING] Can't keep up! Did the system time change, or is the server o
    verloaded?
    >
    inClose: 110 is open();

    If its necessary. Ill just go ahead and post my menu.
    Consider this class c
    Code:java
    1. public class ProfileSelectionMenu extends InventoryMenu{
    2.  
    3. /**
    4.   * @param player
    5.   * @param type
    6.   */
    7. private String selection;
    8. private boolean completion;
    9.  
    10. public ProfileSelectionMenu(RPlayer player) {
    11. super(player);
    12. setInventory(Bukkit.createInventory(player.getPlayer(), 18, "Profile Selection"));
    13. for(Profile profile: player.getAllProfiles()){
    14.  
    15. int slot = inventory.firstEmpty();
    16. ItemStack item = new ItemStack(Material.BEACON);
    17. ItemMeta meta = item.getItemMeta();
    18. meta.setDisplayName(profile.getName());
    19. ClassType type = profile.getClasstype();
    20. int level = profile.getLevel();
    21. if(type==null){
    22. meta.setLore(
    23. Arrays.asList(ChatColor.GREEN + "Class Name:",
    24. ChatColor.GREEN+"N/A",
    25. ChatColor.GREEN+"Level: " + ChatColor.LIGHT_PURPLE+ "N/A")
    26. );
    27. }else{
    28. meta.setLore(
    29. Arrays.asList(ChatColor.GREEN + "Class Name:",
    30. ChatColor.GREEN+type.toString(),
    31. ChatColor.GREEN+"Level: " + ChatColor.LIGHT_PURPLE+ level)
    32. );
    33. }
    34. item.setItemMeta(meta);
    35. inventory.setItem(slot, item);
    36. }
    37.  
    38. //Additional Features
    39. inventory.setItem(inventory.getSize()-2,getDeletionItem());
    40. inventory.setItem(inventory.getSize()-1, getSelectionItem());
    41. inventory.setItem(inventory.firstEmpty(), getNewProfileItem());
    42. }
    43.  
    44. /**
    45.   * @param profileSelectionMenu
    46.   */
    47. public ProfileSelectionMenu(ProfileSelectionMenu menu) {
    48. // TODO Auto-generated constructor stub
    49. super(menu.getPlayer());
    50. setInventory(Bukkit.createInventory(player.getPlayer(), 18, "Profile Selection"));
    51.  
    52. for(Profile profile: player.getAllProfiles()){
    53. this.selection = menu.getSelection();
    54. int slot = inventory.firstEmpty();
    55. ItemStack item = new ItemStack(Material.BEACON);
    56. ItemMeta meta = item.getItemMeta();
    57. meta.setDisplayName(profile.getProfileName());
    58.  
    59. meta.setLore(
    60. Arrays.asList(ChatColor.GREEN + "Class Name:",
    61. ChatColor.GREEN+"No Class")
    62. );
    63. item.setItemMeta(meta);
    64. inventory.setItem(slot, item);
    65. }
    66.  
    67. //Additional Features
    68. inventory.setItem(inventory.getSize()-2,getDeletionItem());
    69. inventory.setItem(inventory.getSize()-1, getSelectionItem());
    70. inventory.setItem(inventory.firstEmpty(), getNewProfileItem());
    71. }
    72.  
    73. /* (non-Javadoc)
    74.   * @see me.Fl1p.Rom.InventoryMenu.InventoryMenu#invClick(org.bukkit.event.inventory.InventoryClickEvent)
    75.   */
    76. @Override
    77. public void invClick(InventoryClickEvent event) {
    78. // TODO Auto-generated method stub
    79.  
    80. //Deletion Item
    81. ItemStack clickedItem = event.getCurrentItem();
    82. event.setCancelled(true);
    83. if(clickedItem==null)return;
    84. if(clickedItem.getItemMeta().getDisplayName().equals(getDeletionItem().getItemMeta().getDisplayName())){
    85. //Deletion Item Selected
    86. if(selection == null){
    87. player.getPlayer().sendMessage(ChatColor.RED + "You must make a selection before deletion!");
    88. return;
    89. }
    90. deleteSelection();
    91. }
    92.  
    93. //Confirmation Item
    94. else if(clickedItem.getItemMeta().getDisplayName().equals(getSelectionItem().getItemMeta().getDisplayName())){
    95. //Selection Item Selected
    96. if(selection==null){
    97. player.getPlayer().sendMessage(ChatColor.RED + "You must make a selection before loading a class!");
    98. return;
    99. }
    100. profileSelection();
    101. }
    102.  
    103. //New Profile
    104. else if(clickedItem.getItemMeta().getDisplayName().equals(getNewProfileItem().getItemMeta().getDisplayName())){
    105. if(player.getProfilesLeft()==0){
    106. player.getPlayer().sendMessage(ChatColor.RED +"Get more profiles at RealmOfMinecraft.com");
    107. return;
    108. }else{
    109. createNewProfile();
    110. }
    111. }
    112.  
    113. //Clicked on a profile
    114. else{
    115. selection = clickedItem.getItemMeta().getDisplayName();
    116. }
    117. }
    118.  
    119. /**
    120.   *
    121.   */
    122. private void profileSelection() {
    123. // TODO Auto-generated method stub
    124. Profile profile = player.getProfile(selection);
    125. if(profile.getClasstype() == null){
    126. //Take to Class SelectionMenu
    127. ClassSelectionMenu classMenu = new ClassSelectionMenu(player,profile);
    128. classMenu.open();
    129. player.setCurrentMenu(classMenu);
    130. }else{
    131. //Load class in full
    132. player.setCurrentProfile(profile);
    133. }
    134. }
    135.  
    136. /* (non-Javadoc)
    137.   * @see me.Fl1p.Rom.InventoryMenu.InventoryMenu#invClose(org.bukkit.event.inventory.InventoryCloseEvent)
    138.   */
    139. @Override
    140. public void invClose(InventoryCloseEvent event) {
    141. // TODO Auto-generated method stub
    142. if(Bukkit.getServer().getPlayer(player.getName())==null)return;
    143.  
    144. if(!completion){
    145. open();
    146. }
    147. }
    148.  
    149. /* (non-Javadoc)
    150.   * @see me.Fl1p.Rom.InventoryMenu.InventoryMenu#getType()
    151.   */
    152. public void deleteSelection(){
    153. Profile profile = player.getProfile(selection);
    154. player.deleteProfile(profile);
    155. }
    156. public void createNewProfile(){
    157. player.setProfilesLeft(player.getProfilesLeft()-1);
    158. Profile profile = new Profile(player.getName(), new File("plugins/RealmOfMinecraft/PlayerData/"+player.getName()+"/profiles"), true);
    159. player.addProfile(profile);
    160. selection = profile.getName();
    161. new ProfileSelectionMenu(this).open();
    162. }
    163. private ItemStack getDeletionItem(){
    164. Wool wool = new Wool(DyeColor.RED);
    165. ItemStack redWool = wool.toItemStack();
    166. ItemMeta redWoolMeta = redWool.getItemMeta();
    167. redWoolMeta.setDisplayName(ChatColor.RED+"Delete a Profile");
    168. redWool.setItemMeta(redWoolMeta);
    169. return redWool;
    170. }
    171. private ItemStack getSelectionItem(){
    172. Wool wool = new Wool();
    173. wool.setColor(DyeColor.GREEN);
    174. ItemStack greenWool = wool.toItemStack();
    175. ItemMeta greenWoolMeta= greenWool.getItemMeta();
    176. greenWoolMeta.setDisplayName(ChatColor.GREEN + "Confirm Selection");
    177. greenWool.setItemMeta(greenWoolMeta);
    178. return greenWool;
    179. }
    180. private ItemStack getNewProfileItem(){
    181. ItemStack newProfileItem = new ItemStack(Material.NETHER_STAR);
    182. ItemMeta profileMeta = newProfileItem.getItemMeta();
    183. profileMeta.setDisplayName(ChatColor.GREEN + "Create new Profile");
    184. newProfileItem.setItemMeta(profileMeta);
    185. return newProfileItem;
    186. }
    187. @Override
    188. public InvMenuType getType() {
    189. // TODO Auto-generated method stub
    190. return InvMenuType.Profile_Selection;
    191. }
    192.  
    193. public boolean isCompletion() {
    194. return completion;
    195. }
    196.  
    197. public void setCompletion(boolean completion) {
    198. this.completion = completion;
    199. }
    200.  
    201. /* (non-Javadoc)
    202.   * @see me.Fl1p.Rom.InventoryMenu.InventoryMenu#getSelection()
    203.   */
    204. @Override
    205. public String getSelection() {
    206. // TODO Auto-generated method stub
    207. return selection;
    208. }
    209.  
    210. }


    Consider this b
    Code:java
    1. ublic abstract class InventoryMenu {
    2.  
    3. /**
    4.   * @return the inventory
    5.   */
    6. public Inventory getInventory() {
    7. return inventory;
    8. }
    9. public abstract String getSelection();
    10. /**
    11.   * @param inventory the inventory to set
    12.   */
    13. public void setInventory(Inventory inventory) {
    14. this.inventory = inventory;
    15. }
    16.  
    17. /**
    18.   * @return the player
    19.   */
    20. public RPlayer getPlayer() {
    21. return player;
    22. }
    23.  
    24. public abstract void invClick(InventoryClickEvent event);
    25.  
    26. public abstract void invClose(InventoryCloseEvent event);
    27.  
    28. /**
    29.   * @return the type
    30.   */
    31. public abstract InvMenuType getType();
    32.  
    33. public synchronized void open(){
    34. player.getPlayer().openInventory(inventory);
    35. }
    36. public final RPlayer player;
    37. public Inventory inventory;
    38. public InventoryMenu(RPlayer player){
    39. this.player = player;
    40. player.setCurrentMenu(this);
    41. }
    42. }


    My listener...
    Code:java
    1. @EventHandler(priority = EventPriority.HIGH)
    2. public void InvClick(InventoryClickEvent event){
    3.  
    4. //Class Selection Handler
    5. if(event.getInventory().getName().equals("Class Selection")||event.getInventory().getName().equals("Profile Selection")){
    6. rom.getRPlayer(event.getWhoClicked().getName()).getCurrentMenu().invClick(event);
    7. }
    8.  
    9. }
    10.  
    11. @EventHandler(priority = EventPriority.HIGH)
    12. public void InvClose(InventoryCloseEvent event){
    13.  
    14. //Class Selection Handler
    15. if(event.getInventory().getName().equals("Class Selection")||event.getInventory().getName().equals("Profile Selection")){
    16. rom.getRPlayer(event.getPlayer().getName()).getCurrentMenu().invClose(event);
    17. }
    18. }


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

    UnlikeAny

    Simulated this error myself. This should fix it:
    Code:java
    1. Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
    2. public void run() {
    3. b.open();
    4. }
    5. });


    EDIT: Didn't see you have posted your code. You can hide it if you want.
     
  5. Offline

    Fl1pzta

    alright ill give it whirl, one sec. UnlikeAny

    You're a hero UnlikeAny . I've actually tried putting a task before except I figured since its Synchronized I'd just add open(); after it, but yeah thank you so much.

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

    UnlikeAny

    This task lets invClose() method to finish, so the inventory actually closes, before opening a new one. Typically this would be done by cancelling the event.

    I'm glad I could help ^^.
     
Thread Status:
Not open for further replies.

Share This Page