Gun reload system

Discussion in 'Plugin Development' started by thewalkingplay, Nov 20, 2014.

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

    thewalkingplay

    Hi, i'm making a minigame plugin and trying to make guns, in the first recharge is normal, but, the second forward time decreases very fast.

    Video:




    Gun class:
    Code:java
    1. package com.minigame.guns;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Material;
    6. import org.bukkit.Sound;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.entity.Snowball;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15.  
    16. import com.minigame.Minigame;
    17. import com.minigame.listeners.MGListener;
    18. import com.minigame.utils.ChatUtilities;
    19. import com.minigame.utils.InventoryUtilities;
    20.  
    21. public class ShotGun extends MGListener {
    22.  
    23. public ShotGun(Minigame pl) {
    24. super(pl);
    25. }
    26.  
    27. int bullets = 2;
    28. int bulletsdisplay = 1;
    29. int countdown = 8;
    30.  
    31. @EventHandler
    32. public void onPlayerInteractEvent(PlayerInteractEvent event){
    33. final Player player = event.getPlayer();
    34. if (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK){
    35. if (event.getItem().getType() == Material.GOLD_BARDING){
    36. if (bullets >= 1){
    37. ChatUtilities.sendMessage(player, ChatColor.RED + "Voce ainda nao precisa recarregar!");
    38. }
    39. if (bullets == 0) {
    40. ChatUtilities.sendMessage(player, "Recarregando, aguarde...");
    41. player.playSound(player.getLocation(), Sound.DIG_SNOW, 10, 1);
    42. countdown = 8;
    43. Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable(){
    44.  
    45. @Override
    46. public void run() {
    47. if (countdown >= 1){
    48. countdown--;
    49. }
    50. if (countdown == 0){
    51.  
    52. if (countdown != -1){
    53. ItemStack is1 = new ItemStack(Material.GOLD_BARDING);
    54. ItemMeta im1 = is1.getItemMeta();
    55. im1.setDisplayName(ChatColor.GREEN + "ShotGun" + ChatColor.GRAY + " [2" + ChatColor.GRAY + "/2]");
    56. is1.setItemMeta(im1);
    57. InventoryUtilities.clearInventory(player);
    58. player.getInventory().addItem(is1);
    59. bullets = 2;
    60. bulletsdisplay = 1;
    61. countdown--;
    62. ChatUtilities.sendMessage(player, "Arma recarregada!");
    63. player.playSound(player.getLocation(), Sound.ANVIL_USE, 10, 1);
    64.  
    65. }}
    66.  
    67. }
    68.  
    69.  
    70.  
    71.  
    72. }, 0l, 20l);
    73. }}}
    74. if (!(event.getAction() == Action.RIGHT_CLICK_AIR)) return;
    75. if (!(event.getItem().getType() == Material.GOLD_BARDING)) return;
    76. if (bullets == 0) return;
    77. event.getPlayer().launchProjectile(Snowball.class);
    78. event.getPlayer().launchProjectile(Snowball.class);
    79. event.getPlayer().launchProjectile(Snowball.class);
    80. event.getPlayer().launchProjectile(Snowball.class);
    81. event.getPlayer().launchProjectile(Snowball.class);
    82. event.getPlayer().launchProjectile(Snowball.class);
    83. event.getPlayer().launchProjectile(Snowball.class);
    84. event.getPlayer().launchProjectile(Snowball.class);
    85. player.playSound(player.getLocation(), Sound.EXPLODE, 10, 1);
    86. player.getItemInHand().setDurability((short) (player.getItemInHand().getDurability() - 10));
    87. ItemStack is = new ItemStack(Material.GOLD_BARDING);
    88. ItemMeta im = is.getItemMeta();
    89. im.setDisplayName(ChatColor.GREEN + "ShotGun" + ChatColor.GRAY + " [" + bulletsdisplay + ChatColor.GRAY + "/2]");
    90. is.setItemMeta(im);
    91. InventoryUtilities.clearInventory(player);
    92. player.getInventory().addItem(is);
    93. bullets--;
    94. bulletsdisplay--;
    95. }
    96.  
    97. @EventHandler
    98. public void onEntityDamage(EntityDamageByEntityEvent event){
    99. if (event.getDamager() instanceof Snowball){
    100. Snowball s = (Snowball) event.getDamager();
    101. if (s.getShooter() instanceof Player){
    102. Player shooter = (Player) s.getShooter();
    103. if (shooter.getItemInHand().getType() == Material.GOLD_BARDING){
    104. event.setDamage(3.0);
    105. shooter.playSound(shooter.getLocation(), Sound.ORB_PICKUP, 10, 1);
    106. }
    107. }
    108. }
    109.  
    110. }}
    111.  


    Can anyone help me?
    sorry for my english, i'm brazilian
     
  2. Offline

    mine-care

    Code:java
    1. event.getPlayer().launchProjectile(Snowball.class);
    2. event.getPlayer().launchProjectile(Snowball.class);
    3. event.getPlayer().launchProjectile(Snowball.class);
    4. event.getPlayer().launchProjectile(Snowball.class);
    5. event.getPlayer().launchProjectile(Snowball.class);
    6. event.getPlayer().launchProjectile(Snowball.class);
    7. event.getPlayer().launchProjectile(Snowball.class);
    8. event.getPlayer().launchProjectile(Snowball.class);

    Use a loop.
    And about reload, pay a look on Lists or Maps and Bukkit scheduler.
     
Thread Status:
Not open for further replies.

Share This Page