mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-28 03:34:43 +02:00
Move more event handling back into the main listener to avoid passing
the event itself.
This commit is contained in:
@ -1,7 +1,13 @@
|
||||
package com.gmail.nossr50.skills.mining;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.skills.utilities.SkillTools;
|
||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.Users;
|
||||
|
||||
public class BlastMining {
|
||||
public static int rank1 = AdvancedConfig.getInstance().getBlastMiningRank1();
|
||||
@ -16,4 +22,25 @@ public class BlastMining {
|
||||
public static int detonatorID = Config.getInstance().getDetonatorItemID();
|
||||
|
||||
public final static int MAXIMUM_REMOTE_DETONATION_DISTANCE = 100;
|
||||
|
||||
public static boolean canUseDemolitionsExpertise(Player player) {
|
||||
return SkillTools.unlockLevelReached(player, SkillType.MINING, rank4) && Permissions.demolitionsExpertise(player);
|
||||
}
|
||||
|
||||
public static int processDemolitionsExpertise(Player player, int damage) {
|
||||
int skillLevel = Users.getPlayer(player).getProfile().getSkillLevel(SkillType.MINING);
|
||||
int modifiedDamage;
|
||||
|
||||
if (skillLevel >= BlastMining.rank8) {
|
||||
modifiedDamage = 0;
|
||||
}
|
||||
else if (skillLevel >= BlastMining.rank6) {
|
||||
modifiedDamage = damage / 4;
|
||||
}
|
||||
else {
|
||||
modifiedDamage = damage / 2;
|
||||
}
|
||||
|
||||
return modifiedDamage;
|
||||
}
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
package com.gmail.nossr50.skills.mining;
|
||||
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
|
||||
public class DemoltionsExpertiseEventHandler {
|
||||
private int skillLevel;
|
||||
private EntityDamageEvent event;
|
||||
private int damage;
|
||||
private double damageModifier;
|
||||
|
||||
public DemoltionsExpertiseEventHandler(MiningManager manager, EntityDamageEvent event) {
|
||||
this.skillLevel = manager.getSkillLevel();
|
||||
|
||||
this.event = event;
|
||||
this.damage = event.getDamage();
|
||||
}
|
||||
|
||||
protected void calculateDamageModifier() {
|
||||
if (skillLevel >= BlastMining.rank8) {
|
||||
damageModifier = 0.0;
|
||||
}
|
||||
else if (skillLevel >= BlastMining.rank6) {
|
||||
damageModifier = 0.25;
|
||||
}
|
||||
else if (skillLevel >= BlastMining.rank4) {
|
||||
damageModifier = 0.5;
|
||||
}
|
||||
else {
|
||||
damageModifier = 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
protected void modifyEventDamage() {
|
||||
damage = (int) (damage * damageModifier);
|
||||
event.setDamage(damage);
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package com.gmail.nossr50.skills.mining;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
@ -73,18 +72,6 @@ public class MiningManager extends SkillManager{
|
||||
eventHandler.processXPGain();
|
||||
}
|
||||
|
||||
/**
|
||||
* Decreases damage dealt by the explosion from TNT activated by Blast Mining.
|
||||
*
|
||||
* @param event Event whose explosion damage is being reduced
|
||||
*/
|
||||
public void demolitionsExpertise(EntityDamageEvent event) {
|
||||
DemoltionsExpertiseEventHandler eventHandler = new DemoltionsExpertiseEventHandler(this, event);
|
||||
|
||||
eventHandler.calculateDamageModifier();
|
||||
eventHandler.modifyEventDamage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Increases the blast radius of the explosion.
|
||||
*
|
||||
|
Reference in New Issue
Block a user