Excavation.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package com.gmail.nossr50.skills;
  2. import java.util.ArrayList;
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.Location;
  5. import org.bukkit.Material;
  6. import org.bukkit.block.Block;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.inventory.ItemStack;
  9. import org.bukkit.event.player.PlayerAnimationEvent;
  10. import com.gmail.nossr50.spout.SpoutStuff;
  11. import com.gmail.nossr50.Users;
  12. import com.gmail.nossr50.m;
  13. import com.gmail.nossr50.config.LoadProperties;
  14. import com.gmail.nossr50.config.LoadTreasures;
  15. import com.gmail.nossr50.datatypes.PlayerProfile;
  16. import com.gmail.nossr50.datatypes.SkillType;
  17. import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
  18. import org.getspout.spoutapi.sound.SoundEffect;
  19. public class Excavation
  20. {
  21. public static boolean canBeGigaDrillBroken(Block block)
  22. {
  23. switch(block.getType()){
  24. case CLAY:
  25. case DIRT:
  26. case GRASS:
  27. case GRAVEL:
  28. case MYCEL:
  29. case SAND:
  30. case SOUL_SAND:
  31. return true;
  32. }
  33. return false;
  34. }
  35. public static void excavationProcCheck(Block block, Player player)
  36. {
  37. Material type = block.getType();
  38. Location loc = block.getLocation();
  39. PlayerProfile PP = Users.getProfile(player);
  40. int skillLevel = PP.getSkillLevel(SkillType.EXCAVATION);
  41. ArrayList<ItemStack> is = new ArrayList<ItemStack>();
  42. int xp = LoadProperties.mbase;
  43. switch(type)
  44. {
  45. case DIRT:
  46. for(ExcavationTreasure treasure : LoadTreasures.excavationFromDirt)
  47. {
  48. if(skillLevel >= treasure.getDropLevel())
  49. {
  50. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  51. {
  52. xp += treasure.getXp();
  53. is.add(treasure.getDrop());
  54. }
  55. }
  56. }
  57. break;
  58. case GRASS:
  59. for(ExcavationTreasure treasure : LoadTreasures.excavationFromGrass)
  60. {
  61. if(skillLevel >= treasure.getDropLevel())
  62. {
  63. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  64. {
  65. xp += treasure.getXp();
  66. is.add(treasure.getDrop());
  67. }
  68. }
  69. }
  70. break;
  71. case SAND:
  72. for(ExcavationTreasure treasure : LoadTreasures.excavationFromSand)
  73. {
  74. if(skillLevel >= treasure.getDropLevel())
  75. {
  76. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  77. {
  78. xp += treasure.getXp();
  79. is.add(treasure.getDrop());
  80. }
  81. }
  82. }
  83. break;
  84. case GRAVEL:
  85. for(ExcavationTreasure treasure : LoadTreasures.excavationFromGravel)
  86. {
  87. if(skillLevel >= treasure.getDropLevel())
  88. {
  89. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  90. {
  91. xp += treasure.getXp();
  92. is.add(treasure.getDrop());
  93. }
  94. }
  95. }
  96. break;
  97. case CLAY:
  98. for(ExcavationTreasure treasure : LoadTreasures.excavationFromClay)
  99. {
  100. if(skillLevel >= treasure.getDropLevel())
  101. {
  102. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  103. {
  104. xp += treasure.getXp();
  105. is.add(treasure.getDrop());
  106. }
  107. }
  108. }
  109. break;
  110. case MYCEL:
  111. for(ExcavationTreasure treasure : LoadTreasures.excavationFromMycel)
  112. {
  113. if(skillLevel >= treasure.getDropLevel())
  114. {
  115. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  116. {
  117. xp += treasure.getXp();
  118. is.add(treasure.getDrop());
  119. }
  120. }
  121. }
  122. break;
  123. case SOUL_SAND:
  124. for(ExcavationTreasure treasure : LoadTreasures.excavationFromSoulSand)
  125. {
  126. if(skillLevel >= treasure.getDropLevel())
  127. {
  128. if(Math.random() * 100 > (100.00 - treasure.getDropChance()))
  129. {
  130. xp += treasure.getXp();
  131. is.add(treasure.getDrop());
  132. }
  133. }
  134. }
  135. break;
  136. }
  137. //Drop items
  138. for(ItemStack x : is)
  139. {
  140. if(x != null)
  141. m.mcDropItem(loc, x);
  142. }
  143. //Handle XP related tasks
  144. PP.addXP(SkillType.EXCAVATION, xp, player);
  145. Skills.XpCheckSkill(SkillType.EXCAVATION, player);
  146. }
  147. public static void gigaDrillBreaker(Player player, Block block)
  148. {
  149. Skills.abilityDurabilityLoss(player.getItemInHand(), LoadProperties.abilityDurabilityLoss);
  150. if(block.getData() != (byte)5)
  151. {
  152. PlayerAnimationEvent armswing = new PlayerAnimationEvent(player);
  153. Bukkit.getPluginManager().callEvent(armswing);
  154. Excavation.excavationProcCheck(block, player);
  155. Excavation.excavationProcCheck(block, player);
  156. Excavation.excavationProcCheck(block, player);
  157. }
  158. if(LoadProperties.spoutEnabled)
  159. SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
  160. }
  161. }