Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.yahoo.brettbutcher98.PotionFix;
- import java.util.Collection;
- import org.bukkit.Server;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.configuration.file.FileConfigurationOptions;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.entity.EntityDamageEvent.DamageModifier;
- import org.bukkit.event.entity.EntityRegainHealthEvent;
- import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
- import org.bukkit.plugin.PluginManager;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import org.bukkit.scheduler.BukkitScheduler;
- public class Main extends JavaPlugin
- implements Listener
- {
- private boolean[] EnabledFixes = new boolean[3];
- private int[] Amounts = new int[2];
- public void onEnable()
- {
- getServer().getPluginManager().registerEvents(this, this);
- getConfig().options().copyDefaults(true);
- saveConfig();
- this.EnabledFixes[0] = getConfig().getBoolean("Strength-Fix-Enabled");
- this.EnabledFixes[1] = getConfig().getBoolean("Health-Fix-Enabled");
- this.EnabledFixes[2] = getConfig().getBoolean("Regeneration-Fix-Enabled");
- this.Amounts[0] = getConfig().getInt("Strength-Power-Half-Hearts");
- this.Amounts[1] = getConfig().getInt("Health-Power-Half-Hearts");
- }
- @EventHandler
- public void onPlayerDamage(EntityDamageByEntityEvent event) {
- if (this.EnabledFixes[0] != 0)
- {
- if ((event.getDamager() instanceof Player))
- {
- Player player = (Player)event.getDamager();
- if (player.hasPotionEffect(PotionEffectType.INCREASE_DAMAGE))
- {
- for (PotionEffect effect : player.getActivePotionEffects())
- {
- if (!effect.getType().equals(PotionEffectType.INCREASE_DAMAGE))
- continue;
- int level = effect.getAmplifier() + 1;
- double newDamage = event.getDamage(EntityDamageEvent.DamageModifier.BASE) / (level * 1.3D + 1.0D) + this.Amounts[0] * level;
- double damagePercent = newDamage / event.getDamage(EntityDamageEvent.DamageModifier.BASE);
- try
- {
- event.setDamage(EntityDamageEvent.DamageModifier.ARMOR, event.getDamage(EntityDamageEvent.DamageModifier.ARMOR) * damagePercent);
- }
- catch (Exception localException) {
- }
- try {
- event.setDamage(EntityDamageEvent.DamageModifier.MAGIC, event.getDamage(EntityDamageEvent.DamageModifier.MAGIC) * damagePercent);
- }
- catch (Exception localException1) {
- }
- try {
- event.setDamage(EntityDamageEvent.DamageModifier.RESISTANCE, event.getDamage(EntityDamageEvent.DamageModifier.RESISTANCE) * damagePercent);
- }
- catch (Exception localException2) {
- }
- try {
- event.setDamage(EntityDamageEvent.DamageModifier.BLOCKING, event.getDamage(EntityDamageEvent.DamageModifier.BLOCKING) * damagePercent);
- } catch (Exception localException3) {
- }
- event.setDamage(EntityDamageEvent.DamageModifier.BASE, newDamage);
- break;
- }
- }
- }
- }
- }
- @EventHandler
- public void onRegen(EntityRegainHealthEvent event)
- {
- if ((this.EnabledFixes[1] != 0) || (this.EnabledFixes[2] != 0))
- {
- LivingEntity entity = (LivingEntity)event.getEntity();
- int lvl = 0;
- Collection Effects = entity.getActivePotionEffects();
- for (PotionEffect effect : Effects)
- {
- if ((effect.getType().getName() != "REGENERATION") && (effect.getType().getName() != "HEAL"))
- continue;
- lvl = effect.getAmplifier() + 1;
- break;
- }
- if ((event.getRegainReason() == EntityRegainHealthEvent.RegainReason.MAGIC_REGEN) && (event.getAmount() == 1.0D) && (lvl > 0))
- {
- if (this.EnabledFixes[2] != 0)
- {
- getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(entity)
- {
- public void run()
- {
- if (this.val$entity.getMaxHealth() >= this.val$entity.getHealth() + 1.0D)
- {
- this.val$entity.setHealth(this.val$entity.getHealth() + 1.0D);
- }
- }
- }
- , 50L / (lvl * 2));
- }
- }
- else if ((event.getRegainReason() == EntityRegainHealthEvent.RegainReason.MAGIC) && (event.getAmount() > 1.0D) && (lvl > 0))
- {
- if (this.EnabledFixes[1] != 0)
- {
- event.setAmount(event.getAmount() * (this.Amounts[1] * 0.25D));
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement