Advertisement
Yuki_20

Untitled

Nov 28th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. package com.yahoo.brettbutcher98.PotionFix;
  2.  
  3. import java.util.Collection;
  4. import org.bukkit.Server;
  5. import org.bukkit.configuration.file.FileConfiguration;
  6. import org.bukkit.configuration.file.FileConfigurationOptions;
  7. import org.bukkit.entity.LivingEntity;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  12. import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
  13. import org.bukkit.event.entity.EntityRegainHealthEvent;
  14. import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
  15. import org.bukkit.plugin.PluginManager;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17. import org.bukkit.potion.PotionEffect;
  18. import org.bukkit.potion.PotionEffectType;
  19. import org.bukkit.scheduler.BukkitScheduler;
  20.  
  21. public class Main extends JavaPlugin
  22. implements Listener
  23. {
  24. private boolean[] EnabledFixes = new boolean[3];
  25.  
  26. private int[] Amounts = new int[2];
  27.  
  28. public void onEnable()
  29. {
  30. getServer().getPluginManager().registerEvents(this, this);
  31.  
  32. getConfig().options().copyDefaults(true);
  33. saveConfig();
  34.  
  35. this.EnabledFixes[0] = getConfig().getBoolean("Strength-Fix-Enabled");
  36. this.EnabledFixes[1] = getConfig().getBoolean("Health-Fix-Enabled");
  37. this.EnabledFixes[2] = getConfig().getBoolean("Regeneration-Fix-Enabled");
  38.  
  39. this.Amounts[0] = getConfig().getInt("Strength-Power-Half-Hearts");
  40. this.Amounts[1] = getConfig().getInt("Health-Power-Half-Hearts");
  41. }
  42.  
  43. @EventHandler
  44. public void onPlayerDamage(EntityDamageByEntityEvent event) {
  45. if (this.EnabledFixes[0] != 0)
  46. {
  47. if ((event.getDamager() instanceof Player))
  48. {
  49. Player player = (Player)event.getDamager();
  50. if (player.hasPotionEffect(PotionEffectType.INCREASE_DAMAGE))
  51. {
  52. for (PotionEffect effect : player.getActivePotionEffects())
  53. {
  54. if (!effect.getType().equals(PotionEffectType.INCREASE_DAMAGE))
  55. continue;
  56. int level = effect.getAmplifier() + 1;
  57.  
  58. double newDamage = event.getDamage(EntityDamageEvent.DamageModifier.BASE) / (level * 1.3D + 1.0D) + this.Amounts[0] * level;
  59. double damagePercent = newDamage / event.getDamage(EntityDamageEvent.DamageModifier.BASE);
  60. try
  61. {
  62. event.setDamage(EntityDamageEvent.DamageModifier.ARMOR, event.getDamage(EntityDamageEvent.DamageModifier.ARMOR) * damagePercent);
  63. }
  64. catch (Exception localException) {
  65. }
  66. try {
  67. event.setDamage(EntityDamageEvent.DamageModifier.MAGIC, event.getDamage(EntityDamageEvent.DamageModifier.MAGIC) * damagePercent);
  68. }
  69. catch (Exception localException1) {
  70. }
  71. try {
  72. event.setDamage(EntityDamageEvent.DamageModifier.RESISTANCE, event.getDamage(EntityDamageEvent.DamageModifier.RESISTANCE) * damagePercent);
  73. }
  74. catch (Exception localException2) {
  75. }
  76. try {
  77. event.setDamage(EntityDamageEvent.DamageModifier.BLOCKING, event.getDamage(EntityDamageEvent.DamageModifier.BLOCKING) * damagePercent);
  78. } catch (Exception localException3) {
  79. }
  80. event.setDamage(EntityDamageEvent.DamageModifier.BASE, newDamage);
  81.  
  82. break;
  83. }
  84. }
  85. }
  86. }
  87. }
  88.  
  89. @EventHandler
  90. public void onRegen(EntityRegainHealthEvent event)
  91. {
  92. if ((this.EnabledFixes[1] != 0) || (this.EnabledFixes[2] != 0))
  93. {
  94. LivingEntity entity = (LivingEntity)event.getEntity();
  95. int lvl = 0;
  96. Collection Effects = entity.getActivePotionEffects();
  97. for (PotionEffect effect : Effects)
  98. {
  99. if ((effect.getType().getName() != "REGENERATION") && (effect.getType().getName() != "HEAL"))
  100. continue;
  101. lvl = effect.getAmplifier() + 1;
  102. break;
  103. }
  104.  
  105. if ((event.getRegainReason() == EntityRegainHealthEvent.RegainReason.MAGIC_REGEN) && (event.getAmount() == 1.0D) && (lvl > 0))
  106. {
  107. if (this.EnabledFixes[2] != 0)
  108. {
  109. getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(entity)
  110. {
  111. public void run()
  112. {
  113. if (this.val$entity.getMaxHealth() >= this.val$entity.getHealth() + 1.0D)
  114. {
  115. this.val$entity.setHealth(this.val$entity.getHealth() + 1.0D);
  116. }
  117. }
  118. }
  119. , 50L / (lvl * 2));
  120. }
  121. }
  122. else if ((event.getRegainReason() == EntityRegainHealthEvent.RegainReason.MAGIC) && (event.getAmount() > 1.0D) && (lvl > 0))
  123. {
  124. if (this.EnabledFixes[1] != 0)
  125. {
  126. event.setAmount(event.getAmount() * (this.Amounts[1] * 0.25D));
  127. }
  128. }
  129. }
  130. }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement