2013-01-23 22:34:01 +01:00
|
|
|
package com.gmail.nossr50.skills.smelting;
|
|
|
|
|
|
|
|
import org.bukkit.Material;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
|
|
|
|
import com.gmail.nossr50.config.Config;
|
|
|
|
import com.gmail.nossr50.datatypes.PlayerProfile;
|
2013-01-30 17:53:51 +01:00
|
|
|
import com.gmail.nossr50.skills.utilities.SkillTools;
|
|
|
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
2013-01-23 22:34:01 +01:00
|
|
|
import com.gmail.nossr50.util.Misc;
|
2013-01-26 06:25:14 +01:00
|
|
|
import com.gmail.nossr50.util.Permissions;
|
2013-01-23 22:34:01 +01:00
|
|
|
|
|
|
|
public class SmeltResourceEventHandler {
|
|
|
|
private SmeltingManager manager;
|
|
|
|
private FurnaceSmeltEvent event;
|
|
|
|
|
|
|
|
protected int skillModifier;
|
|
|
|
|
|
|
|
protected SmeltResourceEventHandler(SmeltingManager manager, FurnaceSmeltEvent event) {
|
|
|
|
this.manager = manager;
|
|
|
|
this.event = event;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected void calculateSkillModifier() {
|
|
|
|
this.skillModifier = Misc.skillCheck(manager.getSkillLevel(), Smelting.secondSmeltMaxLevel);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected void handleXPGain() {
|
|
|
|
Player player = manager.getPlayer();
|
|
|
|
PlayerProfile profile = manager.getProfile();
|
|
|
|
Material sourceType = event.getSource().getType();
|
|
|
|
int xp = 0;
|
|
|
|
|
|
|
|
switch (sourceType) {
|
|
|
|
case COAL_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPCoal();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GLOWING_REDSTONE_ORE:
|
|
|
|
case REDSTONE_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPRedstone();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case IRON_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPIron();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GOLD_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPGold();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DIAMOND_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPDiamond();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LAPIS_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPLapis();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EMERALD_ORE:
|
|
|
|
xp = Config.getInstance().getSmeltingXPEmerald();
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2013-01-26 06:25:14 +01:00
|
|
|
if (Permissions.mining(player)) {
|
2013-01-26 23:01:55 +01:00
|
|
|
SkillTools.xpProcessing(player, profile, SkillType.MINING, xp / 2);
|
2013-01-26 06:25:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if (Permissions.repair(player)) {
|
2013-01-26 23:01:55 +01:00
|
|
|
SkillTools.xpProcessing(player, profile, SkillType.REPAIR, xp / 2);
|
2013-01-26 06:25:14 +01:00
|
|
|
}
|
2013-01-23 22:34:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
protected void handleBonusSmelts() {
|
|
|
|
ItemStack result = event.getResult();
|
|
|
|
|
|
|
|
result.setAmount(result.getAmount() + 1);
|
|
|
|
event.setResult(result);
|
|
|
|
}
|
|
|
|
}
|