[Tutorial] How To Make item Recycler

Discussion in 'Resources' started by TheUpdater, Dec 18, 2013.

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

    TheUpdater

    this tutorial is on how to make recycler
    i know there is better way to do this but it works tho

    first we need a main class that register events
    PHP:
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class 
    CLASSNAME extends JavaPlugin{
     
     
        public 
    void onEnable() {
            
    Bukkit.getServer().getPluginManager().registerEvents(new recycle(), this);
        }
     
    }
    now when we got that done we need to make another class called recycle and some events and one method [OBS] you can make all
    in main class if you want :)
    PHP:
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
     
    @
    SuppressWarnings("deprecation")
    public class 
    DeadeyeRecyclerCRC implements Listener{
     
      
    //WILL OPEN RECYCLER
        
    @EventHandler
        
    public void CLICKREC(PlayerInteractEvent e){
     
        }
     
        }
     
    //WILL CHECK WHAT IS CLICKED
        
    @EventHandler
        
    public void PLACEANDGETfunction(InventoryClickEvent e){
            
    Player p = (Playere.getWhoClicked();
            
    ItemStack clicked e.getCurrentItem();
            
    Inventory inventory e.getInventory();
     
        }
     
      
    //WILL MAKE THE RECYCLE
        
    private void recycle(Player p) {
     
        }
    }
    ok that done now add this 3 veribles at top


    PHP:
    public static Inventory invpublic;
     
    int st 102;
    //WILL BE CLASS THAT COVERS UP REST OF SPOTS IN INV
    public ItemStack rec//will be item stack that clicked when recycled

    now in player interact event add this

    PHP:
    Player p e.getPlayer();
    rec = new ItemStack(Material.WOOL1, (byte5);
    ItemMeta recu rec.getItemMeta();
    recu.setDisplayName(ChatColor.GREEN+"Recycle");
    rec.setItemMeta(recu);
    the add this under
    PHP:
            invpublic Bukkit.createInventory(e.getPlayer(), "DeadeyeRecycler");
            
    Block block e.getClickedBlock();
            if(
    e.getAction() == Action.RIGHT_CLICK_BLOCK){
                if(
    block.getTypeId() == 120){
                    
    invpublic.setItem(4, new ItemStack(rec));
                    for(
    int x 14;x++){
                        
    invpublic.setItem(x, new ItemStack(st1));
                    }
                    for(
    int x 58;x++){
                        
    invpublic.setItem(x, new ItemStack(st1));
                    }
                    
    p.openInventory(invpublic);
                }
            }
    this will check if we clicked end stone and then fill class where we dont want to be able to click
    and open the inventory

    and in inventory click event add this,
    PHP:
      if (clicked != null) {
            if (
    inventory.getName() == invpublic.getName()) {
                if(
    clicked.getTypeId() == 102){
                    
    e.setCancelled(true);
                 }
           }
    }
    this will cancel to press class and check so we dont press out side inv and look up the name of the inventory

    now under that add
    PHP:
                if(clicked.getType() == Material.WOOL){
                    
    e.setCancelled(true);
                     if(
    invpublic.getItem(0) != null {
                             
    recycle(p);
                       }
                   }
    so we can press the wool named recycle and it will check if something is inside spot 0 of inventory

    now when thats done we can create the acsual recycle
    PHP:
        private void recycle(Player p) {
            
    //DIAMOND
            
    if(invpublic.getItem(0).getType() == Material.DIAMOND_BOOTS){
                
    invpublic.setItem(, new ItemStack(Material.DIAMOND4));
            }
            
    invpublic.setItem(, new ItemStack(Material.AIR));
            
    p.openInventory(invpublic);
        }
    }
    now that will give 4 diamonds if there is boots in left space if end portal
    here is the code where i made you able to recycle all tools / armor besides

    leather armor, chain armor
    stone/wood tools

    MAIN CLASS
    Code:java
    1. import org.bukkit.Bukkit;
    2. import org.bukkit.entity.Player;
    3. import org.bukkit.event.Listener;
    4. import org.bukkit.plugin.java.JavaPlugin;
    5.  
    6. import DeadeyeRecycler.DeadeyeRecyclerCheckRightClick.DeadeyeRecyclerCRC;
    7.  
    8. public class DeadeyeRecycler extends JavaPlugin{
    9.  
    10. public void onEnable() {
    11. Bukkit.getServer().getPluginManager().registerEvents(new DeadeyeRecyclerCRC(), this);
    12. for(Player p : Bukkit.getOnlinePlayers()){
    13. p.closeInventory();
    14. }
    15. }
    16. }
    17.  


    RECYCLE CLASS
    Code:java
    1. //OWNER OF PLUGIN IS EZLER_IGODZ
    2. import org.bukkit.Bukkit;
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.block.Block;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.block.Action;
    10. import org.bukkit.event.inventory.InventoryClickEvent;
    11. import org.bukkit.event.player.PlayerInteractEvent;
    12. import org.bukkit.inventory.Inventory;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15.  
    16. @SuppressWarnings("deprecation")
    17. public class DeadeyeRecyclerCRC implements Listener{
    18.  
    19. public static Inventory invpublic;
    20.  
    21. int st = 102;
    22. public ItemStack rec;
    23.  
    24. @EventHandler
    25. public void CLICKREC(PlayerInteractEvent e){
    26.  
    27. Player p = e.getPlayer();
    28. rec = new ItemStack(Material.WOOL, 1, (byte) 5);
    29. ItemMeta recu = rec.getItemMeta();
    30. recu.setDisplayName(ChatColor.GREEN+"Recycle");
    31. rec.setItemMeta(recu);
    32.  
    33. invpublic = Bukkit.createInventory(e.getPlayer(), 9 , "DeadeyeRecycler");
    34. Block block = e.getClickedBlock();
    35. if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
    36. if(block.getTypeId() == 120){
    37. invpublic.setItem(4, new ItemStack(rec));
    38. for(int x = 1; x < 4;x++){
    39. invpublic.setItem(x, new ItemStack(st, 1));
    40. }
    41. for(int x = 5; x < 8;x++){
    42. invpublic.setItem(x, new ItemStack(st, 1));
    43. }
    44. p.openInventory(invpublic);
    45. }
    46. }
    47. }
    48. @EventHandler
    49. public void PLACEANDGETfunction(InventoryClickEvent e){
    50. Player p = (Player) e.getWhoClicked();
    51. ItemStack clicked = e.getCurrentItem();
    52. Inventory inventory = e.getInventory();
    53. if (clicked != null) {
    54. if (inventory.getName() == invpublic.getName()) {
    55. if(clicked.getTypeId() == 102){
    56. e.setCancelled(true);
    57. }
    58. if(clicked.getType() == Material.WOOL){
    59. e.setCancelled(true);
    60. if(invpublic.getItem(0) != null
    61. && (invpublic.getItem(0).getType() == Material.DIAMOND_BOOTS)
    62. || (invpublic.getItem(0).getType() == Material.DIAMOND_LEGGINGS)
    63. || (invpublic.getItem(0).getType() == Material.DIAMOND_HELMET)
    64. || (invpublic.getItem(0).getType() == Material.DIAMOND_CHESTPLATE)
    65.  
    66. || (invpublic.getItem(0).getType() == Material.IRON_BOOTS)
    67. || (invpublic.getItem(0).getType() == Material.IRON_LEGGINGS)
    68. || (invpublic.getItem(0).getType() == Material.IRON_HELMET)
    69. || (invpublic.getItem(0).getType() == Material.IRON_CHESTPLATE)
    70.  
    71. || (invpublic.getItem(0).getType() == Material.GOLD_BOOTS)
    72. || (invpublic.getItem(0).getType() == Material.GOLD_LEGGINGS)
    73. || (invpublic.getItem(0).getType() == Material.GOLD_HELMET)
    74. || (invpublic.getItem(0).getType() == Material.GOLD_CHESTPLATE)
    75.  
    76. || (invpublic.getItem(0).getType() == Material.DIAMOND_PICKAXE)
    77. || (invpublic.getItem(0).getType() == Material.DIAMOND_SPADE)
    78. || (invpublic.getItem(0).getType() == Material.DIAMOND_AXE)
    79. || (invpublic.getItem(0).getType() == Material.DIAMOND_HOE)
    80. || (invpublic.getItem(0).getType() == Material.DIAMOND_SWORD)
    81.  
    82. || (invpublic.getItem(0).getType() == Material.IRON_PICKAXE)
    83. || (invpublic.getItem(0).getType() == Material.IRON_SPADE)
    84. || (invpublic.getItem(0).getType() == Material.IRON_AXE)
    85. || (invpublic.getItem(0).getType() == Material.IRON_HOE)
    86. || (invpublic.getItem(0).getType() == Material.IRON_SWORD)
    87.  
    88. || (invpublic.getItem(0).getType() == Material.GOLD_PICKAXE)
    89. || (invpublic.getItem(0).getType() == Material.GOLD_SPADE)
    90. || (invpublic.getItem(0).getType() == Material.GOLD_AXE)
    91. || (invpublic.getItem(0).getType() == Material.GOLD_HOE)
    92. || (invpublic.getItem(0).getType() == Material.GOLD_SWORD)){
    93. p.sendMessage(ChatColor.DARK_GRAY+"["+ChatColor.GOLD+"DeadeyeRecycler"+ChatColor.DARK_GRAY+"] You have successfully recycled your items!");
    94. recycle(p);
    95. }
    96.  
    97. else if(invpublic.getItem(0) != null
    98. && (invpublic.getItem(0).getType() != Material.DIAMOND_BOOTS)
    99. || (invpublic.getItem(0).getType() != Material.DIAMOND_LEGGINGS)
    100. || (invpublic.getItem(0).getType() != Material.DIAMOND_HELMET)
    101. || (invpublic.getItem(0).getType() != Material.DIAMOND_CHESTPLATE)
    102.  
    103. || (invpublic.getItem(0).getType() != Material.IRON_BOOTS)
    104. || (invpublic.getItem(0).getType() != Material.IRON_LEGGINGS)
    105. || (invpublic.getItem(0).getType() != Material.IRON_HELMET)
    106. || (invpublic.getItem(0).getType() != Material.IRON_CHESTPLATE)
    107.  
    108. || (invpublic.getItem(0).getType() != Material.GOLD_BOOTS)
    109. || (invpublic.getItem(0).getType() != Material.GOLD_LEGGINGS)
    110. || (invpublic.getItem(0).getType() != Material.GOLD_HELMET)
    111. || (invpublic.getItem(0).getType() != Material.GOLD_CHESTPLATE)
    112.  
    113. || (invpublic.getItem(0).getType() != Material.DIAMOND_PICKAXE)
    114. || (invpublic.getItem(0).getType() != Material.DIAMOND_SPADE)
    115. || (invpublic.getItem(0).getType() != Material.DIAMOND_AXE)
    116. || (invpublic.getItem(0).getType() != Material.DIAMOND_HOE)
    117. || (invpublic.getItem(0).getType() != Material.DIAMOND_SWORD)
    118.  
    119. || (invpublic.getItem(0).getType() != Material.IRON_PICKAXE)
    120. || (invpublic.getItem(0).getType() != Material.IRON_SPADE)
    121. || (invpublic.getItem(0).getType() != Material.IRON_AXE)
    122. || (invpublic.getItem(0).getType() != Material.IRON_HOE)
    123. || (invpublic.getItem(0).getType() != Material.IRON_SWORD)
    124.  
    125. || (invpublic.getItem(0).getType() != Material.GOLD_PICKAXE)
    126. || (invpublic.getItem(0).getType() != Material.GOLD_SPADE)
    127. || (invpublic.getItem(0).getType() != Material.GOLD_AXE)
    128. || (invpublic.getItem(0).getType() != Material.GOLD_HOE)
    129. || (invpublic.getItem(0).getType() != Material.GOLD_SWORD)){
    130. p.sendMessage(ChatColor.DARK_GRAY+"["+ChatColor.GOLD+"DeadeyeRecycler"+ChatColor.DARK_GRAY+"] You can only repair armour + tools!");
    131. p.getInventory().addItem(invpublic.getItem(0));
    132. invpublic.setItem(0 , new ItemStack(Material.AIR));
    133. p.openInventory(invpublic);
    134. }
    135. }
    136. }
    137. }
    138. }
    139.  
    140.  
    141. private void recycle(Player p) {
    142. //DIAMOND
    143. if(invpublic.getItem(0).getType() == Material.DIAMOND_BOOTS){
    144. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 4));
    145. }
    146. else if(invpublic.getItem(0).getType() == Material.DIAMOND_CHESTPLATE){
    147. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 8));
    148. }
    149. else if(invpublic.getItem(0).getType() == Material.DIAMOND_LEGGINGS){
    150. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 7));
    151. }
    152. else if(invpublic.getItem(0).getType() == Material.DIAMOND_HELMET){
    153. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 5));
    154. }
    155. //IRON
    156. else if(invpublic.getItem(0).getType() == Material.IRON_BOOTS){
    157. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 4));
    158. }
    159. else if(invpublic.getItem(0).getType() == Material.IRON_CHESTPLATE){
    160. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 8));
    161. }
    162. else if(invpublic.getItem(0).getType() == Material.IRON_LEGGINGS){
    163. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 7));
    164. }
    165. else if(invpublic.getItem(0).getType() == Material.IRON_HELMET){
    166. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 5));
    167. }
    168. //GOLD
    169. else if(invpublic.getItem(0).getType() == Material.GOLD_BOOTS){
    170. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 4));
    171. }
    172. else if(invpublic.getItem(0).getType() == Material.GOLD_CHESTPLATE){
    173. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 8));
    174. }
    175. else if(invpublic.getItem(0).getType() == Material.GOLD_LEGGINGS){
    176. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 7));
    177. }
    178. else if(invpublic.getItem(0).getType() == Material.GOLD_HELMET){
    179. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 5));
    180. }
    181. //DIAMOND TOOLS
    182. if(invpublic.getItem(0).getType() == Material.DIAMOND_PICKAXE){
    183. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 3));
    184. }
    185. if(invpublic.getItem(0).getType() == Material.DIAMOND_HOE){
    186. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 2));
    187. }
    188. if(invpublic.getItem(0).getType() == Material.DIAMOND_AXE){
    189. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 3));
    190. }
    191. if(invpublic.getItem(0).getType() == Material.DIAMOND_SPADE){
    192. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 1));
    193. }
    194. if(invpublic.getItem(0).getType() == Material.DIAMOND_SWORD){
    195. invpublic.setItem(8 , new ItemStack(Material.DIAMOND, 2));
    196. }
    197. //IRON TOOLS
    198. else if(invpublic.getItem(0).getType() == Material.IRON_PICKAXE){
    199. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 3));
    200. }
    201. else if(invpublic.getItem(0).getType() == Material.IRON_HOE){
    202. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 2));
    203. }
    204. else if(invpublic.getItem(0).getType() == Material.IRON_AXE){
    205. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 3));
    206. }
    207. else if(invpublic.getItem(0).getType() == Material.IRON_SPADE){
    208. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 1));
    209. }
    210. else if(invpublic.getItem(0).getType() == Material.IRON_SWORD){
    211. invpublic.setItem(8 , new ItemStack(Material.IRON_INGOT, 2));
    212. }
    213. //GOLD TOOLS
    214. else if(invpublic.getItem(0).getType() == Material.GOLD_PICKAXE){
    215. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 3));
    216. }
    217. else if(invpublic.getItem(0).getType() == Material.GOLD_HOE){
    218. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 2));
    219. }
    220. else if(invpublic.getItem(0).getType() == Material.GOLD_AXE){
    221. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 3));
    222. }
    223. else if(invpublic.getItem(0).getType() == Material.GOLD_SPADE){
    224. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 1));
    225. }
    226. else if(invpublic.getItem(0).getType() == Material.GOLD_SWORD){
    227. invpublic.setItem(8 , new ItemStack(Material.GOLD_INGOT, 2));
    228. }
    229. invpublic.setItem(0 , new ItemStack(Material.AIR));
    230. p.openInventory(invpublic);
    231. }
    232. }
    233.  
     
  2. Offline

    viper_monster

    TheUpdater this:
    Code:java
    1.  
    2. for(Player p : Bukkit.getOnlinePlayers()){
    3. p.closeInventory();
    4. }
    5.  
    is completely unnecessary, cause when server is starting up, there are no players online. This is only necessary if you are reloading your server, but I won't recommend that either (especially on a public server).
     
  3. Offline

    TheUpdater

    no cus if you stay in inventory on reload and click in it it will cause errors and LOTS of lag if spam click
     
  4. Offline

    viper_monster

    TheUpdater That is completely true, what I wanted to say is that realoading a server I is a bad practice, especially on a public server; Because reloading can cause memory leaks and plugin crashes.
     
  5. Offline

    TheUpdater

    true so how to check if they are reloading then this only happens?
     
  6. Offline

    viper_monster

    TheUpdater You could place that in onDisable method, cause that method gets called when a server reloads or stops.
     
    sgavster likes this.
  7. Offline

    TheUpdater

    thats good :D
     
  8. Offline

    Garris0n

  9. Offline

    xTrollxDudex

    You should improve your grammar and intro next time
     
  10. Offline

    TheUpdater

    yeah
     
  11. Offline

    Garris0n

    and code...
     
    DSH105 and Chinwe like this.
Thread Status:
Not open for further replies.

Share This Page